diff --git a/gen/Network/Google/Compute.hs b/gen/Network/Google/Compute.hs
--- a/gen/Network/Google/Compute.hs
+++ b/gen/Network/Google/Compute.hs
@@ -34,3584 +34,7196 @@
 
     -- * Resources
 
-    -- ** compute.addresses.aggregatedList
-    , module Network.Google.Resource.Compute.Addresses.AggregatedList
-
-    -- ** compute.addresses.delete
-    , module Network.Google.Resource.Compute.Addresses.Delete
-
-    -- ** compute.addresses.get
-    , module Network.Google.Resource.Compute.Addresses.Get
-
-    -- ** compute.addresses.insert
-    , module Network.Google.Resource.Compute.Addresses.Insert
-
-    -- ** compute.addresses.list
-    , module Network.Google.Resource.Compute.Addresses.List
-
-    -- ** compute.autoscalers.aggregatedList
-    , module Network.Google.Resource.Compute.Autoscalers.AggregatedList
-
-    -- ** compute.autoscalers.delete
-    , module Network.Google.Resource.Compute.Autoscalers.Delete
-
-    -- ** compute.autoscalers.get
-    , module Network.Google.Resource.Compute.Autoscalers.Get
-
-    -- ** compute.autoscalers.insert
-    , module Network.Google.Resource.Compute.Autoscalers.Insert
-
-    -- ** compute.autoscalers.list
-    , module Network.Google.Resource.Compute.Autoscalers.List
-
-    -- ** compute.autoscalers.patch
-    , module Network.Google.Resource.Compute.Autoscalers.Patch
-
-    -- ** compute.autoscalers.update
-    , module Network.Google.Resource.Compute.Autoscalers.Update
-
-    -- ** compute.backendServices.aggregatedList
-    , module Network.Google.Resource.Compute.BackendServices.AggregatedList
-
-    -- ** compute.backendServices.delete
-    , module Network.Google.Resource.Compute.BackendServices.Delete
-
-    -- ** compute.backendServices.get
-    , module Network.Google.Resource.Compute.BackendServices.Get
-
-    -- ** compute.backendServices.getHealth
-    , module Network.Google.Resource.Compute.BackendServices.GetHealth
-
-    -- ** compute.backendServices.insert
-    , module Network.Google.Resource.Compute.BackendServices.Insert
-
-    -- ** compute.backendServices.list
-    , module Network.Google.Resource.Compute.BackendServices.List
-
-    -- ** compute.backendServices.patch
-    , module Network.Google.Resource.Compute.BackendServices.Patch
-
-    -- ** compute.backendServices.update
-    , module Network.Google.Resource.Compute.BackendServices.Update
-
-    -- ** compute.diskTypes.aggregatedList
-    , module Network.Google.Resource.Compute.DiskTypes.AggregatedList
-
-    -- ** compute.diskTypes.get
-    , module Network.Google.Resource.Compute.DiskTypes.Get
-
-    -- ** compute.diskTypes.list
-    , module Network.Google.Resource.Compute.DiskTypes.List
-
-    -- ** compute.disks.aggregatedList
-    , module Network.Google.Resource.Compute.Disks.AggregatedList
-
-    -- ** compute.disks.createSnapshot
-    , module Network.Google.Resource.Compute.Disks.CreateSnapshot
-
-    -- ** compute.disks.delete
-    , module Network.Google.Resource.Compute.Disks.Delete
-
-    -- ** compute.disks.get
-    , module Network.Google.Resource.Compute.Disks.Get
-
-    -- ** compute.disks.insert
-    , module Network.Google.Resource.Compute.Disks.Insert
-
-    -- ** compute.disks.list
-    , module Network.Google.Resource.Compute.Disks.List
-
-    -- ** compute.disks.resize
-    , module Network.Google.Resource.Compute.Disks.Resize
-
-    -- ** compute.firewalls.delete
-    , module Network.Google.Resource.Compute.Firewalls.Delete
-
-    -- ** compute.firewalls.get
-    , module Network.Google.Resource.Compute.Firewalls.Get
-
-    -- ** compute.firewalls.insert
-    , module Network.Google.Resource.Compute.Firewalls.Insert
-
-    -- ** compute.firewalls.list
-    , module Network.Google.Resource.Compute.Firewalls.List
-
-    -- ** compute.firewalls.patch
-    , module Network.Google.Resource.Compute.Firewalls.Patch
-
-    -- ** compute.firewalls.update
-    , module Network.Google.Resource.Compute.Firewalls.Update
-
-    -- ** compute.forwardingRules.aggregatedList
-    , module Network.Google.Resource.Compute.ForwardingRules.AggregatedList
-
-    -- ** compute.forwardingRules.delete
-    , module Network.Google.Resource.Compute.ForwardingRules.Delete
-
-    -- ** compute.forwardingRules.get
-    , module Network.Google.Resource.Compute.ForwardingRules.Get
-
-    -- ** compute.forwardingRules.insert
-    , module Network.Google.Resource.Compute.ForwardingRules.Insert
-
-    -- ** compute.forwardingRules.list
-    , module Network.Google.Resource.Compute.ForwardingRules.List
-
-    -- ** compute.forwardingRules.setTarget
-    , module Network.Google.Resource.Compute.ForwardingRules.SetTarget
-
-    -- ** compute.globalAddresses.delete
-    , module Network.Google.Resource.Compute.GlobalAddresses.Delete
-
-    -- ** compute.globalAddresses.get
-    , module Network.Google.Resource.Compute.GlobalAddresses.Get
-
-    -- ** compute.globalAddresses.insert
-    , module Network.Google.Resource.Compute.GlobalAddresses.Insert
-
-    -- ** compute.globalAddresses.list
-    , module Network.Google.Resource.Compute.GlobalAddresses.List
-
-    -- ** compute.globalForwardingRules.delete
-    , module Network.Google.Resource.Compute.GlobalForwardingRules.Delete
-
-    -- ** compute.globalForwardingRules.get
-    , module Network.Google.Resource.Compute.GlobalForwardingRules.Get
-
-    -- ** compute.globalForwardingRules.insert
-    , module Network.Google.Resource.Compute.GlobalForwardingRules.Insert
-
-    -- ** compute.globalForwardingRules.list
-    , module Network.Google.Resource.Compute.GlobalForwardingRules.List
-
-    -- ** compute.globalForwardingRules.setTarget
-    , module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
-
-    -- ** compute.globalOperations.aggregatedList
-    , module Network.Google.Resource.Compute.GlobalOperations.AggregatedList
-
-    -- ** compute.globalOperations.delete
-    , module Network.Google.Resource.Compute.GlobalOperations.Delete
-
-    -- ** compute.globalOperations.get
-    , module Network.Google.Resource.Compute.GlobalOperations.Get
-
-    -- ** compute.globalOperations.list
-    , module Network.Google.Resource.Compute.GlobalOperations.List
-
-    -- ** compute.healthChecks.delete
-    , module Network.Google.Resource.Compute.HealthChecks.Delete
-
-    -- ** compute.healthChecks.get
-    , module Network.Google.Resource.Compute.HealthChecks.Get
-
-    -- ** compute.healthChecks.insert
-    , module Network.Google.Resource.Compute.HealthChecks.Insert
-
-    -- ** compute.healthChecks.list
-    , module Network.Google.Resource.Compute.HealthChecks.List
-
-    -- ** compute.healthChecks.patch
-    , module Network.Google.Resource.Compute.HealthChecks.Patch
-
-    -- ** compute.healthChecks.update
-    , module Network.Google.Resource.Compute.HealthChecks.Update
-
-    -- ** compute.httpHealthChecks.delete
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.Delete
-
-    -- ** compute.httpHealthChecks.get
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.Get
-
-    -- ** compute.httpHealthChecks.insert
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.Insert
-
-    -- ** compute.httpHealthChecks.list
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.List
-
-    -- ** compute.httpHealthChecks.patch
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.Patch
-
-    -- ** compute.httpHealthChecks.update
-    , module Network.Google.Resource.Compute.HTTPHealthChecks.Update
-
-    -- ** compute.httpsHealthChecks.delete
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
-
-    -- ** compute.httpsHealthChecks.get
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Get
-
-    -- ** compute.httpsHealthChecks.insert
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
-
-    -- ** compute.httpsHealthChecks.list
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.List
-
-    -- ** compute.httpsHealthChecks.patch
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
-
-    -- ** compute.httpsHealthChecks.update
-    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Update
-
-    -- ** compute.images.delete
-    , module Network.Google.Resource.Compute.Images.Delete
-
-    -- ** compute.images.deprecate
-    , module Network.Google.Resource.Compute.Images.Deprecate
-
-    -- ** compute.images.get
-    , module Network.Google.Resource.Compute.Images.Get
-
-    -- ** compute.images.getFromFamily
-    , module Network.Google.Resource.Compute.Images.GetFromFamily
-
-    -- ** compute.images.insert
-    , module Network.Google.Resource.Compute.Images.Insert
-
-    -- ** compute.images.list
-    , module Network.Google.Resource.Compute.Images.List
-
-    -- ** compute.instanceGroupManagers.abandonInstances
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
-
-    -- ** compute.instanceGroupManagers.aggregatedList
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
-
-    -- ** compute.instanceGroupManagers.delete
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.Delete
-
-    -- ** compute.instanceGroupManagers.deleteInstances
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
-
-    -- ** compute.instanceGroupManagers.get
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.Get
-
-    -- ** compute.instanceGroupManagers.insert
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.Insert
-
-    -- ** compute.instanceGroupManagers.list
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.List
-
-    -- ** compute.instanceGroupManagers.listManagedInstances
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
-
-    -- ** compute.instanceGroupManagers.recreateInstances
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
-
-    -- ** compute.instanceGroupManagers.resize
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.Resize
-
-    -- ** compute.instanceGroupManagers.setInstanceTemplate
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
-
-    -- ** compute.instanceGroupManagers.setTargetPools
-    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
-
-    -- ** compute.instanceGroups.addInstances
-    , module Network.Google.Resource.Compute.InstanceGroups.AddInstances
-
-    -- ** compute.instanceGroups.aggregatedList
-    , module Network.Google.Resource.Compute.InstanceGroups.AggregatedList
-
-    -- ** compute.instanceGroups.delete
-    , module Network.Google.Resource.Compute.InstanceGroups.Delete
-
-    -- ** compute.instanceGroups.get
-    , module Network.Google.Resource.Compute.InstanceGroups.Get
-
-    -- ** compute.instanceGroups.insert
-    , module Network.Google.Resource.Compute.InstanceGroups.Insert
-
-    -- ** compute.instanceGroups.list
-    , module Network.Google.Resource.Compute.InstanceGroups.List
-
-    -- ** compute.instanceGroups.listInstances
-    , module Network.Google.Resource.Compute.InstanceGroups.ListInstances
-
-    -- ** compute.instanceGroups.removeInstances
-    , module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
-
-    -- ** compute.instanceGroups.setNamedPorts
-    , module Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
-
-    -- ** compute.instanceTemplates.delete
-    , module Network.Google.Resource.Compute.InstanceTemplates.Delete
-
-    -- ** compute.instanceTemplates.get
-    , module Network.Google.Resource.Compute.InstanceTemplates.Get
-
-    -- ** compute.instanceTemplates.insert
-    , module Network.Google.Resource.Compute.InstanceTemplates.Insert
-
-    -- ** compute.instanceTemplates.list
-    , module Network.Google.Resource.Compute.InstanceTemplates.List
-
-    -- ** compute.instances.addAccessConfig
-    , module Network.Google.Resource.Compute.Instances.AddAccessConfig
-
-    -- ** compute.instances.aggregatedList
-    , module Network.Google.Resource.Compute.Instances.AggregatedList
-
-    -- ** compute.instances.attachDisk
-    , module Network.Google.Resource.Compute.Instances.AttachDisk
-
-    -- ** compute.instances.delete
-    , module Network.Google.Resource.Compute.Instances.Delete
-
-    -- ** compute.instances.deleteAccessConfig
-    , module Network.Google.Resource.Compute.Instances.DeleteAccessConfig
-
-    -- ** compute.instances.detachDisk
-    , module Network.Google.Resource.Compute.Instances.DetachDisk
-
-    -- ** compute.instances.get
-    , module Network.Google.Resource.Compute.Instances.Get
-
-    -- ** compute.instances.getSerialPortOutput
-    , module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
-
-    -- ** compute.instances.insert
-    , module Network.Google.Resource.Compute.Instances.Insert
-
-    -- ** compute.instances.list
-    , module Network.Google.Resource.Compute.Instances.List
-
-    -- ** compute.instances.reset
-    , module Network.Google.Resource.Compute.Instances.Reset
-
-    -- ** compute.instances.setDiskAutoDelete
-    , module Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
-
-    -- ** compute.instances.setMachineType
-    , module Network.Google.Resource.Compute.Instances.SetMachineType
-
-    -- ** compute.instances.setMetadata
-    , module Network.Google.Resource.Compute.Instances.SetMetadata
-
-    -- ** compute.instances.setScheduling
-    , module Network.Google.Resource.Compute.Instances.SetScheduling
-
-    -- ** compute.instances.setServiceAccount
-    , module Network.Google.Resource.Compute.Instances.SetServiceAccount
-
-    -- ** compute.instances.setTags
-    , module Network.Google.Resource.Compute.Instances.SetTags
-
-    -- ** compute.instances.start
-    , module Network.Google.Resource.Compute.Instances.Start
-
-    -- ** compute.instances.startWithEncryptionKey
-    , module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
-
-    -- ** compute.instances.stop
-    , module Network.Google.Resource.Compute.Instances.Stop
-
-    -- ** compute.licenses.get
-    , module Network.Google.Resource.Compute.Licenses.Get
-
-    -- ** compute.machineTypes.aggregatedList
-    , module Network.Google.Resource.Compute.MachineTypes.AggregatedList
-
-    -- ** compute.machineTypes.get
-    , module Network.Google.Resource.Compute.MachineTypes.Get
-
-    -- ** compute.machineTypes.list
-    , module Network.Google.Resource.Compute.MachineTypes.List
-
-    -- ** compute.networks.delete
-    , module Network.Google.Resource.Compute.Networks.Delete
-
-    -- ** compute.networks.get
-    , module Network.Google.Resource.Compute.Networks.Get
-
-    -- ** compute.networks.insert
-    , module Network.Google.Resource.Compute.Networks.Insert
-
-    -- ** compute.networks.list
-    , module Network.Google.Resource.Compute.Networks.List
-
-    -- ** compute.networks.switchToCustomMode
-    , module Network.Google.Resource.Compute.Networks.SwitchToCustomMode
-
-    -- ** compute.projects.get
-    , module Network.Google.Resource.Compute.Projects.Get
-
-    -- ** compute.projects.moveDisk
-    , module Network.Google.Resource.Compute.Projects.MoveDisk
-
-    -- ** compute.projects.moveInstance
-    , module Network.Google.Resource.Compute.Projects.MoveInstance
-
-    -- ** compute.projects.setCommonInstanceMetadata
-    , module Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
-
-    -- ** compute.projects.setUsageExportBucket
-    , module Network.Google.Resource.Compute.Projects.SetUsageExportBucket
-
-    -- ** compute.regionAutoscalers.delete
-    , module Network.Google.Resource.Compute.RegionAutoscalers.Delete
-
-    -- ** compute.regionAutoscalers.get
-    , module Network.Google.Resource.Compute.RegionAutoscalers.Get
-
-    -- ** compute.regionAutoscalers.insert
-    , module Network.Google.Resource.Compute.RegionAutoscalers.Insert
-
-    -- ** compute.regionAutoscalers.list
-    , module Network.Google.Resource.Compute.RegionAutoscalers.List
-
-    -- ** compute.regionAutoscalers.patch
-    , module Network.Google.Resource.Compute.RegionAutoscalers.Patch
-
-    -- ** compute.regionAutoscalers.update
-    , module Network.Google.Resource.Compute.RegionAutoscalers.Update
-
-    -- ** compute.regionBackendServices.delete
-    , module Network.Google.Resource.Compute.RegionBackendServices.Delete
-
-    -- ** compute.regionBackendServices.get
-    , module Network.Google.Resource.Compute.RegionBackendServices.Get
-
-    -- ** compute.regionBackendServices.getHealth
-    , module Network.Google.Resource.Compute.RegionBackendServices.GetHealth
-
-    -- ** compute.regionBackendServices.insert
-    , module Network.Google.Resource.Compute.RegionBackendServices.Insert
-
-    -- ** compute.regionBackendServices.list
-    , module Network.Google.Resource.Compute.RegionBackendServices.List
-
-    -- ** compute.regionBackendServices.patch
-    , module Network.Google.Resource.Compute.RegionBackendServices.Patch
-
-    -- ** compute.regionBackendServices.update
-    , module Network.Google.Resource.Compute.RegionBackendServices.Update
-
-    -- ** compute.regionInstanceGroupManagers.abandonInstances
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
-
-    -- ** compute.regionInstanceGroupManagers.delete
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete
-
-    -- ** compute.regionInstanceGroupManagers.deleteInstances
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
-
-    -- ** compute.regionInstanceGroupManagers.get
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get
-
-    -- ** compute.regionInstanceGroupManagers.insert
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
-
-    -- ** compute.regionInstanceGroupManagers.list
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.List
-
-    -- ** compute.regionInstanceGroupManagers.listManagedInstances
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances
-
-    -- ** compute.regionInstanceGroupManagers.recreateInstances
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
-
-    -- ** compute.regionInstanceGroupManagers.resize
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
-
-    -- ** compute.regionInstanceGroupManagers.setInstanceTemplate
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate
-
-    -- ** compute.regionInstanceGroupManagers.setTargetPools
-    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools
-
-    -- ** compute.regionInstanceGroups.get
-    , module Network.Google.Resource.Compute.RegionInstanceGroups.Get
-
-    -- ** compute.regionInstanceGroups.list
-    , module Network.Google.Resource.Compute.RegionInstanceGroups.List
-
-    -- ** compute.regionInstanceGroups.listInstances
-    , module Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances
-
-    -- ** compute.regionInstanceGroups.setNamedPorts
-    , module Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts
-
-    -- ** compute.regionOperations.delete
-    , module Network.Google.Resource.Compute.RegionOperations.Delete
-
-    -- ** compute.regionOperations.get
-    , module Network.Google.Resource.Compute.RegionOperations.Get
-
-    -- ** compute.regionOperations.list
-    , module Network.Google.Resource.Compute.RegionOperations.List
-
-    -- ** compute.regions.get
-    , module Network.Google.Resource.Compute.Regions.Get
-
-    -- ** compute.regions.list
-    , module Network.Google.Resource.Compute.Regions.List
-
-    -- ** compute.routers.aggregatedList
-    , module Network.Google.Resource.Compute.Routers.AggregatedList
-
-    -- ** compute.routers.delete
-    , module Network.Google.Resource.Compute.Routers.Delete
-
-    -- ** compute.routers.get
-    , module Network.Google.Resource.Compute.Routers.Get
-
-    -- ** compute.routers.getRouterStatus
-    , module Network.Google.Resource.Compute.Routers.GetRouterStatus
-
-    -- ** compute.routers.insert
-    , module Network.Google.Resource.Compute.Routers.Insert
-
-    -- ** compute.routers.list
-    , module Network.Google.Resource.Compute.Routers.List
-
-    -- ** compute.routers.patch
-    , module Network.Google.Resource.Compute.Routers.Patch
-
-    -- ** compute.routers.preview
-    , module Network.Google.Resource.Compute.Routers.Preview
-
-    -- ** compute.routers.update
-    , module Network.Google.Resource.Compute.Routers.Update
-
-    -- ** compute.routes.delete
-    , module Network.Google.Resource.Compute.Routes.Delete
-
-    -- ** compute.routes.get
-    , module Network.Google.Resource.Compute.Routes.Get
-
-    -- ** compute.routes.insert
-    , module Network.Google.Resource.Compute.Routes.Insert
-
-    -- ** compute.routes.list
-    , module Network.Google.Resource.Compute.Routes.List
-
-    -- ** compute.snapshots.delete
-    , module Network.Google.Resource.Compute.Snapshots.Delete
-
-    -- ** compute.snapshots.get
-    , module Network.Google.Resource.Compute.Snapshots.Get
-
-    -- ** compute.snapshots.list
-    , module Network.Google.Resource.Compute.Snapshots.List
-
-    -- ** compute.sslCertificates.delete
-    , module Network.Google.Resource.Compute.SSLCertificates.Delete
-
-    -- ** compute.sslCertificates.get
-    , module Network.Google.Resource.Compute.SSLCertificates.Get
-
-    -- ** compute.sslCertificates.insert
-    , module Network.Google.Resource.Compute.SSLCertificates.Insert
-
-    -- ** compute.sslCertificates.list
-    , module Network.Google.Resource.Compute.SSLCertificates.List
-
-    -- ** compute.subnetworks.aggregatedList
-    , module Network.Google.Resource.Compute.Subnetworks.AggregatedList
-
-    -- ** compute.subnetworks.delete
-    , module Network.Google.Resource.Compute.Subnetworks.Delete
-
-    -- ** compute.subnetworks.expandIpCidrRange
-    , module Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange
-
-    -- ** compute.subnetworks.get
-    , module Network.Google.Resource.Compute.Subnetworks.Get
-
-    -- ** compute.subnetworks.insert
-    , module Network.Google.Resource.Compute.Subnetworks.Insert
-
-    -- ** compute.subnetworks.list
-    , module Network.Google.Resource.Compute.Subnetworks.List
-
-    -- ** compute.targetHttpProxies.delete
-    , module Network.Google.Resource.Compute.TargetHTTPProxies.Delete
-
-    -- ** compute.targetHttpProxies.get
-    , module Network.Google.Resource.Compute.TargetHTTPProxies.Get
-
-    -- ** compute.targetHttpProxies.insert
-    , module Network.Google.Resource.Compute.TargetHTTPProxies.Insert
-
-    -- ** compute.targetHttpProxies.list
-    , module Network.Google.Resource.Compute.TargetHTTPProxies.List
-
-    -- ** compute.targetHttpProxies.setUrlMap
-    , module Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
-
-    -- ** compute.targetHttpsProxies.delete
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
-
-    -- ** compute.targetHttpsProxies.get
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Get
-
-    -- ** compute.targetHttpsProxies.insert
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
-
-    -- ** compute.targetHttpsProxies.list
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.List
-
-    -- ** compute.targetHttpsProxies.setSslCertificates
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
-
-    -- ** compute.targetHttpsProxies.setUrlMap
-    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
-
-    -- ** compute.targetInstances.aggregatedList
-    , module Network.Google.Resource.Compute.TargetInstances.AggregatedList
-
-    -- ** compute.targetInstances.delete
-    , module Network.Google.Resource.Compute.TargetInstances.Delete
-
-    -- ** compute.targetInstances.get
-    , module Network.Google.Resource.Compute.TargetInstances.Get
-
-    -- ** compute.targetInstances.insert
-    , module Network.Google.Resource.Compute.TargetInstances.Insert
-
-    -- ** compute.targetInstances.list
-    , module Network.Google.Resource.Compute.TargetInstances.List
-
-    -- ** compute.targetPools.addHealthCheck
-    , module Network.Google.Resource.Compute.TargetPools.AddHealthCheck
-
-    -- ** compute.targetPools.addInstance
-    , module Network.Google.Resource.Compute.TargetPools.AddInstance
-
-    -- ** compute.targetPools.aggregatedList
-    , module Network.Google.Resource.Compute.TargetPools.AggregatedList
-
-    -- ** compute.targetPools.delete
-    , module Network.Google.Resource.Compute.TargetPools.Delete
-
-    -- ** compute.targetPools.get
-    , module Network.Google.Resource.Compute.TargetPools.Get
-
-    -- ** compute.targetPools.getHealth
-    , module Network.Google.Resource.Compute.TargetPools.GetHealth
-
-    -- ** compute.targetPools.insert
-    , module Network.Google.Resource.Compute.TargetPools.Insert
-
-    -- ** compute.targetPools.list
-    , module Network.Google.Resource.Compute.TargetPools.List
-
-    -- ** compute.targetPools.removeHealthCheck
-    , module Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
-
-    -- ** compute.targetPools.removeInstance
-    , module Network.Google.Resource.Compute.TargetPools.RemoveInstance
-
-    -- ** compute.targetPools.setBackup
-    , module Network.Google.Resource.Compute.TargetPools.SetBackup
-
-    -- ** compute.targetSslProxies.delete
-    , module Network.Google.Resource.Compute.TargetSSLProxies.Delete
-
-    -- ** compute.targetSslProxies.get
-    , module Network.Google.Resource.Compute.TargetSSLProxies.Get
-
-    -- ** compute.targetSslProxies.insert
-    , module Network.Google.Resource.Compute.TargetSSLProxies.Insert
-
-    -- ** compute.targetSslProxies.list
-    , module Network.Google.Resource.Compute.TargetSSLProxies.List
-
-    -- ** compute.targetSslProxies.setBackendService
-    , module Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService
-
-    -- ** compute.targetSslProxies.setProxyHeader
-    , module Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader
-
-    -- ** compute.targetSslProxies.setSslCertificates
-    , module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates
-
-    -- ** compute.targetVpnGateways.aggregatedList
-    , module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
-
-    -- ** compute.targetVpnGateways.delete
-    , module Network.Google.Resource.Compute.TargetVPNGateways.Delete
-
-    -- ** compute.targetVpnGateways.get
-    , module Network.Google.Resource.Compute.TargetVPNGateways.Get
-
-    -- ** compute.targetVpnGateways.insert
-    , module Network.Google.Resource.Compute.TargetVPNGateways.Insert
-
-    -- ** compute.targetVpnGateways.list
-    , module Network.Google.Resource.Compute.TargetVPNGateways.List
-
-    -- ** compute.urlMaps.delete
-    , module Network.Google.Resource.Compute.URLMaps.Delete
-
-    -- ** compute.urlMaps.get
-    , module Network.Google.Resource.Compute.URLMaps.Get
-
-    -- ** compute.urlMaps.insert
-    , module Network.Google.Resource.Compute.URLMaps.Insert
-
-    -- ** compute.urlMaps.invalidateCache
-    , module Network.Google.Resource.Compute.URLMaps.InvalidateCache
-
-    -- ** compute.urlMaps.list
-    , module Network.Google.Resource.Compute.URLMaps.List
-
-    -- ** compute.urlMaps.patch
-    , module Network.Google.Resource.Compute.URLMaps.Patch
-
-    -- ** compute.urlMaps.update
-    , module Network.Google.Resource.Compute.URLMaps.Update
-
-    -- ** compute.urlMaps.validate
-    , module Network.Google.Resource.Compute.URLMaps.Validate
-
-    -- ** compute.vpnTunnels.aggregatedList
-    , module Network.Google.Resource.Compute.VPNTunnels.AggregatedList
-
-    -- ** compute.vpnTunnels.delete
-    , module Network.Google.Resource.Compute.VPNTunnels.Delete
-
-    -- ** compute.vpnTunnels.get
-    , module Network.Google.Resource.Compute.VPNTunnels.Get
-
-    -- ** compute.vpnTunnels.insert
-    , module Network.Google.Resource.Compute.VPNTunnels.Insert
-
-    -- ** compute.vpnTunnels.list
-    , module Network.Google.Resource.Compute.VPNTunnels.List
-
-    -- ** compute.zoneOperations.delete
-    , module Network.Google.Resource.Compute.ZoneOperations.Delete
-
-    -- ** compute.zoneOperations.get
-    , module Network.Google.Resource.Compute.ZoneOperations.Get
-
-    -- ** compute.zoneOperations.list
-    , module Network.Google.Resource.Compute.ZoneOperations.List
-
-    -- ** compute.zones.get
-    , module Network.Google.Resource.Compute.Zones.Get
-
-    -- ** compute.zones.list
-    , module Network.Google.Resource.Compute.Zones.List
-
-    -- * Types
-
-    -- ** TargetHTTPSProxyList
-    , TargetHTTPSProxyList
-    , targetHTTPSProxyList
-    , thplNextPageToken
-    , thplKind
-    , thplItems
-    , thplSelfLink
-    , thplId
-
-    -- ** RoutersScopedList
-    , RoutersScopedList
-    , routersScopedList
-    , rslRouters
-    , rslWarning
-
-    -- ** RouterStatusResponse
-    , RouterStatusResponse
-    , routerStatusResponse
-    , rsrKind
-    , rsrResult
-
-    -- ** RegionInstanceGroupManagersDeleteInstancesRequest
-    , RegionInstanceGroupManagersDeleteInstancesRequest
-    , regionInstanceGroupManagersDeleteInstancesRequest
-    , rigmdirInstances
-
-    -- ** AddressesScopedList
-    , AddressesScopedList
-    , addressesScopedList
-    , aslAddresses
-    , aslWarning
-
-    -- ** OperationWarningsItemDataItem
-    , OperationWarningsItemDataItem
-    , operationWarningsItemDataItem
-    , owidiValue
-    , owidiKey
-
-    -- ** SchedulingOnHostMaintenance
-    , SchedulingOnHostMaintenance (..)
-
-    -- ** RegionInstanceGroupsListInstancesRequest
-    , RegionInstanceGroupsListInstancesRequest
-    , regionInstanceGroupsListInstancesRequest
-    , riglirInstanceState
-    , riglirPortName
-
-    -- ** AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
-    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
-
-    -- ** InstanceGroupManagersAbandonInstancesRequest
-    , InstanceGroupManagersAbandonInstancesRequest
-    , instanceGroupManagersAbandonInstancesRequest
-    , igmairInstances
-
-    -- ** MachineTypeAggregatedListItems
-    , MachineTypeAggregatedListItems
-    , machineTypeAggregatedListItems
-    , mtaliAddtional
-
-    -- ** DiskTypeAggregatedListItems
-    , DiskTypeAggregatedListItems
-    , diskTypeAggregatedListItems
-    , dtaliAddtional
-
-    -- ** RouterAggregatedList
-    , RouterAggregatedList
-    , routerAggregatedList
-    , ralNextPageToken
-    , ralKind
-    , ralItems
-    , ralSelfLink
-    , ralId
-
-    -- ** FirewallList
-    , FirewallList
-    , firewallList
-    , flNextPageToken
-    , flKind
-    , flItems
-    , flSelfLink
-    , flId
-
-    -- ** InstancesScopedListWarning
-    , InstancesScopedListWarning
-    , instancesScopedListWarning
-    , islwData
-    , islwCode
-    , islwMessage
-
-    -- ** RegionInstanceGroupManagersRecreateRequest
-    , RegionInstanceGroupManagersRecreateRequest
-    , regionInstanceGroupManagersRecreateRequest
-    , rigmrrInstances
-
-    -- ** BackendServicesScopedListWarning
-    , BackendServicesScopedListWarning
-    , backendServicesScopedListWarning
-    , bsslwData
-    , bsslwCode
-    , bsslwMessage
-
-    -- ** InstanceGroupList
-    , InstanceGroupList
-    , instanceGroupList
-    , iglNextPageToken
-    , iglKind
-    , iglItems
-    , iglSelfLink
-    , iglId
-
-    -- ** InstancesSetMachineTypeRequest
-    , InstancesSetMachineTypeRequest
-    , instancesSetMachineTypeRequest
-    , ismtrMachineType
-
-    -- ** CustomerEncryptionKey
-    , CustomerEncryptionKey
-    , customerEncryptionKey
-    , cekSha256
-    , cekRawKey
-
-    -- ** AutoscalerAggregatedListItems
-    , AutoscalerAggregatedListItems
-    , autoscalerAggregatedListItems
-    , aaliAddtional
-
-    -- ** InstanceGroupManagersSetInstanceTemplateRequest
-    , InstanceGroupManagersSetInstanceTemplateRequest
-    , instanceGroupManagersSetInstanceTemplateRequest
-    , igmsitrInstanceTemplate
-
-    -- ** DeprecationStatus
-    , DeprecationStatus
-    , deprecationStatus
-    , dsState
-    , dsDeleted
-    , dsReplacement
-    , dsObsolete
-    , dsDeprecated
-
-    -- ** OperationWarningsItemCode
-    , OperationWarningsItemCode (..)
-
-    -- ** Snapshot
-    , Snapshot
-    , snapshot
-    , sStorageBytesStatus
-    , sStatus
-    , sDiskSizeGb
-    , sSourceDiskId
-    , sKind
-    , sSourceDiskEncryptionKey
-    , sStorageBytes
-    , sSelfLink
-    , sSnapshotEncryptionKey
-    , sName
-    , sCreationTimestamp
-    , sId
-    , sLicenses
-    , sSourceDisk
-    , sDescription
-
-    -- ** RouterStatus
-    , RouterStatus
-    , routerStatus
-    , rsBGPPeerStatus
-    , rsNetwork
-    , rsBestRoutes
-
-    -- ** AutoscalingPolicyCustomMetricUtilization
-    , AutoscalingPolicyCustomMetricUtilization
-    , autoscalingPolicyCustomMetricUtilization
-    , apcmuUtilizationTarget
-    , apcmuMetric
-    , apcmuUtilizationTargetType
-
-    -- ** ForwardingRuleList
-    , ForwardingRuleList
-    , forwardingRuleList
-    , frlNextPageToken
-    , frlKind
-    , frlItems
-    , frlSelfLink
-    , frlId
-
-    -- ** VPNTunnelsScopedList
-    , VPNTunnelsScopedList
-    , vpnTunnelsScopedList
-    , vtslVPNTunnels
-    , vtslWarning
-
-    -- ** BackendServiceProtocol
-    , BackendServiceProtocol (..)
-
-    -- ** InstanceGroupsSetNamedPortsRequest
-    , InstanceGroupsSetNamedPortsRequest
-    , instanceGroupsSetNamedPortsRequest
-    , igsnprFingerprint
-    , igsnprNamedPorts
-
-    -- ** OperationList
-    , OperationList
-    , operationList
-    , olNextPageToken
-    , olKind
-    , olItems
-    , olSelfLink
-    , olId
-
-    -- ** DiskList
-    , DiskList
-    , diskList
-    , dlNextPageToken
-    , dlKind
-    , dlItems
-    , dlSelfLink
-    , dlId
-
-    -- ** TargetPoolsAddInstanceRequest
-    , TargetPoolsAddInstanceRequest
-    , targetPoolsAddInstanceRequest
-    , tpairInstances
-
-    -- ** RegionAutoscalerList
-    , RegionAutoscalerList
-    , regionAutoscalerList
-    , rNextPageToken
-    , rKind
-    , rItems
-    , rSelfLink
-    , rId
-
-    -- ** InstanceGroupsAddInstancesRequest
-    , InstanceGroupsAddInstancesRequest
-    , instanceGroupsAddInstancesRequest
-    , igairInstances
-
-    -- ** InstanceGroupManagerList
-    , InstanceGroupManagerList
-    , instanceGroupManagerList
-    , igmlNextPageToken
-    , igmlKind
-    , igmlItems
-    , igmlSelfLink
-    , igmlId
-
-    -- ** SubnetworksScopedListWarning
-    , SubnetworksScopedListWarning
-    , subnetworksScopedListWarning
-    , sslwData
-    , sslwCode
-    , sslwMessage
-
-    -- ** AttachedDiskType
-    , AttachedDiskType (..)
-
-    -- ** Image
-    , Image
-    , image
-    , iStatus
-    , iImageEncryptionKey
-    , iDiskSizeGb
-    , iSourceType
-    , iSourceDiskId
-    , iKind
-    , iSourceDiskEncryptionKey
-    , iGuestOSFeatures
-    , iArchiveSizeBytes
-    , iFamily
-    , iRawDisk
-    , iSelfLink
-    , iName
-    , iCreationTimestamp
-    , iId
-    , iLicenses
-    , iSourceDisk
-    , iDescription
-    , iDeprecated
-
-    -- ** URLMap
-    , URLMap
-    , urlMap
-    , umTests
-    , umKind
-    , umFingerprint
-    , umDefaultService
-    , umSelfLink
-    , umName
-    , umCreationTimestamp
-    , umPathMatchers
-    , umId
-    , umHostRules
-    , umDescription
-
-    -- ** InstanceGroupAggregatedListItems
-    , InstanceGroupAggregatedListItems
-    , instanceGroupAggregatedListItems
-    , igaliAddtional
-
-    -- ** TargetPoolList
-    , TargetPoolList
-    , targetPoolList
-    , tplNextPageToken
-    , tplKind
-    , tplItems
-    , tplSelfLink
-    , tplId
-
-    -- ** TargetInstanceAggregatedList
-    , TargetInstanceAggregatedList
-    , targetInstanceAggregatedList
-    , tialNextPageToken
-    , tialKind
-    , tialItems
-    , tialSelfLink
-    , tialId
-
-    -- ** DisksScopedList
-    , DisksScopedList
-    , disksScopedList
-    , dslWarning
-    , dslDisks
-
-    -- ** InstanceGroupManagersScopedList
-    , InstanceGroupManagersScopedList
-    , instanceGroupManagersScopedList
-    , igmslWarning
-    , igmslInstanceGroupManagers
-
-    -- ** HealthCheck
-    , HealthCheck
-    , healthCheck
-    , hcHealthyThreshold
-    , hcTCPHealthCheck
-    , hcKind
-    , hcSSLHealthCheck
-    , hcSelfLink
-    , hcCheckIntervalSec
-    , hcName
-    , hcCreationTimestamp
-    , hcHTTPHealthCheck
-    , hcId
-    , hcType
-    , hcTimeoutSec
-    , hcDescription
-    , hcUnhealthyThreshold
-    , hcHTTPSHealthCheck
-
-    -- ** TargetSSLProxyProxyHeader
-    , TargetSSLProxyProxyHeader (..)
-
-    -- ** DiskAggregatedList
-    , DiskAggregatedList
-    , diskAggregatedList
-    , dalNextPageToken
-    , dalKind
-    , dalItems
-    , dalSelfLink
-    , dalId
-
-    -- ** InstanceWithNamedPorts
-    , InstanceWithNamedPorts
-    , instanceWithNamedPorts
-    , iwnpStatus
-    , iwnpNamedPorts
-    , iwnpInstance
-
-    -- ** ForwardingRulesScopedList
-    , ForwardingRulesScopedList
-    , forwardingRulesScopedList
-    , frslWarning
-    , frslForwardingRules
-
-    -- ** InstanceReference
-    , InstanceReference
-    , instanceReference
-    , iInstance
-
-    -- ** OperationAggregatedList
-    , OperationAggregatedList
-    , operationAggregatedList
-    , oalNextPageToken
-    , oalKind
-    , oalItems
-    , oalSelfLink
-    , oalId
-
-    -- ** OperationsScopedList
-    , OperationsScopedList
-    , operationsScopedList
-    , oslWarning
-    , oslOperations
-
-    -- ** NamedPort
-    , NamedPort
-    , namedPort
-    , npName
-    , npPort
-
-    -- ** RegionInstanceGroupsListInstancesRequestInstanceState
-    , RegionInstanceGroupsListInstancesRequestInstanceState (..)
-
-    -- ** TargetInstanceList
-    , TargetInstanceList
-    , targetInstanceList
-    , tilNextPageToken
-    , tilKind
-    , tilItems
-    , tilSelfLink
-    , tilId
-
-    -- ** InstanceGroupManagerAggregatedList
-    , InstanceGroupManagerAggregatedList
-    , instanceGroupManagerAggregatedList
-    , igmalNextPageToken
-    , igmalKind
-    , igmalItems
-    , igmalSelfLink
-    , igmalId
-
-    -- ** ImageSourceType
-    , ImageSourceType (..)
-
-    -- ** TargetPoolsScopedList
-    , TargetPoolsScopedList
-    , targetPoolsScopedList
-    , tpslWarning
-    , tpslTargetPools
-
-    -- ** ForwardingRuleAggregatedList
-    , ForwardingRuleAggregatedList
-    , forwardingRuleAggregatedList
-    , fralNextPageToken
-    , fralKind
-    , fralItems
-    , fralSelfLink
-    , fralId
-
-    -- ** TargetReference
-    , TargetReference
-    , targetReference
-    , trTarget
-
-    -- ** TargetPoolAggregatedList
-    , TargetPoolAggregatedList
-    , targetPoolAggregatedList
-    , tpalNextPageToken
-    , tpalKind
-    , tpalItems
-    , tpalSelfLink
-    , tpalId
-
-    -- ** OperationsScopedListWarningDataItem
-    , OperationsScopedListWarningDataItem
-    , operationsScopedListWarningDataItem
-    , oslwdiValue
-    , oslwdiKey
-
-    -- ** BackendServiceSessionAffinity
-    , BackendServiceSessionAffinity (..)
-
-    -- ** TargetPool
-    , TargetPool
-    , targetPool
-    , tpSessionAffinity
-    , tpBackupPool
-    , tpKind
-    , tpSelfLink
-    , tpName
-    , tpCreationTimestamp
-    , tpInstances
-    , tpId
-    , tpFailoverRatio
-    , tpRegion
-    , tpDescription
-    , tpHealthChecks
-
-    -- ** ImageList
-    , ImageList
-    , imageList
-    , ilNextPageToken
-    , ilKind
-    , ilItems
-    , ilSelfLink
-    , ilId
-
-    -- ** VPNTunnelsScopedListWarning
-    , VPNTunnelsScopedListWarning
-    , vpnTunnelsScopedListWarning
-    , vtslwData
-    , vtslwCode
-    , vtslwMessage
-
-    -- ** ForwardingRulesScopedListWarningCode
-    , ForwardingRulesScopedListWarningCode (..)
-
-    -- ** OperationsScopedListWarningCode
-    , OperationsScopedListWarningCode (..)
-
-    -- ** TargetSSLProxiesSetBackendServiceRequest
-    , TargetSSLProxiesSetBackendServiceRequest
-    , targetSSLProxiesSetBackendServiceRequest
-    , tspsbsrService
-
-    -- ** ForwardingRule
-    , ForwardingRule
-    , forwardingRule
-    , frIPAddress
-    , frLoadBalancingScheme
-    , frKind
-    , frNetwork
-    , frPortRange
-    , frSelfLink
-    , frName
-    , frIPProtocol
-    , frCreationTimestamp
-    , frSubnetwork
-    , frPorts
-    , frId
-    , frRegion
-    , frDescription
-    , frTarget
-    , frBackendService
-
-    -- ** URLMapList
-    , URLMapList
-    , urlMapList
-    , umlNextPageToken
-    , umlKind
-    , umlItems
-    , umlSelfLink
-    , umlId
-
-    -- ** ForwardingRulesScopedListWarningDataItem
-    , ForwardingRulesScopedListWarningDataItem
-    , forwardingRulesScopedListWarningDataItem
-    , frslwdiValue
-    , frslwdiKey
-
-    -- ** InstanceGroupManagersScopedListWarningDataItem
-    , InstanceGroupManagersScopedListWarningDataItem
-    , instanceGroupManagersScopedListWarningDataItem
-    , igmslwdiValue
-    , igmslwdiKey
-
-    -- ** SubnetworksScopedList
-    , SubnetworksScopedList
-    , subnetworksScopedList
-    , sslSubnetworks
-    , sslWarning
-
-    -- ** DisksScopedListWarningCode
-    , DisksScopedListWarningCode (..)
-
-    -- ** Project
-    , Project
-    , project
-    , pKind
-    , pUsageExportLocation
-    , pSelfLink
-    , pName
-    , pDefaultServiceAccount
-    , pCreationTimestamp
-    , pEnabledFeatures
-    , pQuotas
-    , pId
-    , pDescription
-    , pCommonInstanceMetadata
-
-    -- ** RegionInstanceGroupManagersListInstancesResponse
-    , RegionInstanceGroupManagersListInstancesResponse
-    , regionInstanceGroupManagersListInstancesResponse
-    , rigmlirManagedInstances
-
-    -- ** Operation
-    , Operation
-    , operation
-    , oTargetId
-    , oStatus
-    , oInsertTime
-    , oProgress
-    , oStartTime
-    , oKind
-    , oError
-    , oHTTPErrorMessage
-    , oZone
-    , oWarnings
-    , oHTTPErrorStatusCode
-    , oUser
-    , oSelfLink
-    , oName
-    , oStatusMessage
-    , oCreationTimestamp
-    , oEndTime
-    , oId
-    , oOperationType
-    , oRegion
-    , oDescription
-    , oTargetLink
-    , oClientOperationId
-
-    -- ** DisksScopedListWarningDataItem
-    , DisksScopedListWarningDataItem
-    , disksScopedListWarningDataItem
-    , dslwdiValue
-    , dslwdiKey
-
-    -- ** InstanceGroupManagersScopedListWarningCode
-    , InstanceGroupManagersScopedListWarningCode (..)
-
-    -- ** Disk
-    , Disk
-    , disk
-    , dStatus
-    , dSourceSnapshotId
-    , dLastAttachTimestamp
-    , dUsers
-    , dSourceImage
-    , dDiskEncryptionKey
-    , dSizeGb
-    , dKind
-    , dLastDetachTimestamp
-    , dZone
-    , dSelfLink
-    , dName
-    , dSourceImageId
-    , dCreationTimestamp
-    , dSourceImageEncryptionKey
-    , dId
-    , dLicenses
-    , dOptions
-    , dType
-    , dDescription
-    , dSourceSnapshotEncryptionKey
-    , dSourceSnapshot
-
-    -- ** DiskMoveRequest
-    , DiskMoveRequest
-    , diskMoveRequest
-    , dmrTargetDisk
-    , dmrDestinationZone
-
-    -- ** AutoscalingPolicyLoadBalancingUtilization
-    , AutoscalingPolicyLoadBalancingUtilization
-    , autoscalingPolicyLoadBalancingUtilization
-    , aplbuUtilizationTarget
-
-    -- ** TargetPoolsScopedListWarningDataItem
-    , TargetPoolsScopedListWarningDataItem
-    , targetPoolsScopedListWarningDataItem
-    , tpslwdiValue
-    , tpslwdiKey
-
-    -- ** InstanceGroupManager
-    , InstanceGroupManager
-    , instanceGroupManager
-    , igmKind
-    , igmFingerprint
-    , igmBaseInstanceName
-    , igmZone
-    , igmInstanceTemplate
-    , igmTargetSize
-    , igmSelfLink
-    , igmCurrentActions
-    , igmName
-    , igmCreationTimestamp
-    , igmId
-    , igmRegion
-    , igmTargetPools
-    , igmDescription
-    , igmInstanceGroup
-    , igmNamedPorts
-
-    -- ** RegionInstanceGroupsListInstances
-    , RegionInstanceGroupsListInstances
-    , regionInstanceGroupsListInstances
-    , rigliNextPageToken
-    , rigliKind
-    , rigliItems
-    , rigliSelfLink
-    , rigliId
-
-    -- ** TCPHealthCheck
-    , TCPHealthCheck
-    , tcpHealthCheck
-    , thcResponse
-    , thcProxyHeader
-    , thcPortName
-    , thcPort
-    , thcRequest
-
-    -- ** TargetPoolsScopedListWarningCode
-    , TargetPoolsScopedListWarningCode (..)
-
-    -- ** SSLHealthCheckProxyHeader
-    , SSLHealthCheckProxyHeader (..)
-
-    -- ** TargetVPNGatewayStatus
-    , TargetVPNGatewayStatus (..)
-
-    -- ** InstanceGroupsRemoveInstancesRequest
-    , InstanceGroupsRemoveInstancesRequest
-    , instanceGroupsRemoveInstancesRequest
-    , igrirInstances
-
-    -- ** SnapshotStatus
-    , SnapshotStatus (..)
-
-    -- ** RouteWarningsItemDataItem
-    , RouteWarningsItemDataItem
-    , routeWarningsItemDataItem
-    , rwidiValue
-    , rwidiKey
-
-    -- ** TargetInstancesScopedListWarningCode
-    , TargetInstancesScopedListWarningCode (..)
-
-    -- ** BackendServiceAggregatedListItems
-    , BackendServiceAggregatedListItems
-    , backendServiceAggregatedListItems
-    , bsaliAddtional
-
-    -- ** InstanceAggregatedListItems
-    , InstanceAggregatedListItems
-    , instanceAggregatedListItems
-    , ialiAddtional
-
-    -- ** AutoscalersScopedListWarning
-    , AutoscalersScopedListWarning
-    , autoscalersScopedListWarning
-    , aslwData
-    , aslwCode
-    , aslwMessage
-
-    -- ** HealthCheckList
-    , HealthCheckList
-    , healthCheckList
-    , hclNextPageToken
-    , hclKind
-    , hclItems
-    , hclSelfLink
-    , hclId
-
-    -- ** ManagedInstanceLastAttemptErrors
-    , ManagedInstanceLastAttemptErrors
-    , managedInstanceLastAttemptErrors
-    , milaeErrors
-
-    -- ** GuestOSFeatureType
-    , GuestOSFeatureType (..)
-
-    -- ** RouteWarningsItemCode
-    , RouteWarningsItemCode (..)
-
-    -- ** TargetPoolsRemoveInstanceRequest
-    , TargetPoolsRemoveInstanceRequest
-    , targetPoolsRemoveInstanceRequest
-    , tprirInstances
-
-    -- ** TargetInstancesScopedListWarningDataItem
-    , TargetInstancesScopedListWarningDataItem
-    , targetInstancesScopedListWarningDataItem
-    , tislwdiValue
-    , tislwdiKey
-
-    -- ** MachineTypesScopedListWarning
-    , MachineTypesScopedListWarning
-    , machineTypesScopedListWarning
-    , mtslwData
-    , mtslwCode
-    , mtslwMessage
-
-    -- ** TargetInstance
-    , TargetInstance
-    , targetInstance
-    , tiKind
-    , tiNATPolicy
-    , tiZone
-    , tiSelfLink
-    , tiName
-    , tiCreationTimestamp
-    , tiId
-    , tiDescription
-    , tiInstance
-
-    -- ** TargetPoolInstanceHealth
-    , TargetPoolInstanceHealth
-    , targetPoolInstanceHealth
-    , tpihKind
-    , tpihHealthStatus
-
-    -- ** SnapshotStorageBytesStatus
-    , SnapshotStorageBytesStatus (..)
-
-    -- ** InstanceGroupManagersListManagedInstancesResponse
-    , InstanceGroupManagersListManagedInstancesResponse
-    , instanceGroupManagersListManagedInstancesResponse
-    , igmlmirManagedInstances
-
-    -- ** InstanceProperties
-    , InstanceProperties
-    , instanceProperties
-    , ipServiceAccounts
-    , ipNetworkInterfaces
-    , ipMachineType
-    , ipMetadata
-    , ipScheduling
-    , ipDisks
-    , ipCanIPForward
-    , ipDescription
-    , ipTags
-
-    -- ** DiskTypesScopedListWarning
-    , DiskTypesScopedListWarning
-    , diskTypesScopedListWarning
-    , dtslwData
-    , dtslwCode
-    , dtslwMessage
-
-    -- ** AddressesScopedListWarningCode
-    , AddressesScopedListWarningCode (..)
-
-    -- ** AttachedDiskInitializeParams
-    , AttachedDiskInitializeParams
-    , attachedDiskInitializeParams
-    , adipSourceImage
-    , adipDiskSizeGb
-    , adipDiskName
-    , adipSourceImageEncryptionKey
-    , adipDiskType
-
-    -- ** AddressesScopedListWarningDataItem
-    , AddressesScopedListWarningDataItem
-    , addressesScopedListWarningDataItem
-    , aslwdiValue
-    , aslwdiKey
-
-    -- ** ImageStatus
-    , ImageStatus (..)
-
-    -- ** NetworkInterface
-    , NetworkInterface
-    , networkInterface
-    , niKind
-    , niNetwork
-    , niName
-    , niNetworkIP
-    , niSubnetwork
-    , niAccessConfigs
-
-    -- ** TargetPoolsRemoveHealthCheckRequest
-    , TargetPoolsRemoveHealthCheckRequest
-    , targetPoolsRemoveHealthCheckRequest
-    , tprhcrHealthChecks
-
-    -- ** RegionInstanceGroupManagersSetTargetPoolsRequest
-    , RegionInstanceGroupManagersSetTargetPoolsRequest
-    , regionInstanceGroupManagersSetTargetPoolsRequest
-    , rigmstprFingerprint
-    , rigmstprTargetPools
-
-    -- ** TargetSSLProxyList
-    , TargetSSLProxyList
-    , targetSSLProxyList
-    , tsplNextPageToken
-    , tsplKind
-    , tsplItems
-    , tsplSelfLink
-    , tsplId
-
-    -- ** CustomerEncryptionKeyProtectedDisk
-    , CustomerEncryptionKeyProtectedDisk
-    , customerEncryptionKeyProtectedDisk
-    , cekpdDiskEncryptionKey
-    , cekpdSource
-
-    -- ** HealthStatusHealthState
-    , HealthStatusHealthState (..)
-
-    -- ** InstanceTemplateList
-    , InstanceTemplateList
-    , instanceTemplateList
-    , itlNextPageToken
-    , itlKind
-    , itlItems
-    , itlSelfLink
-    , itlId
-
-    -- ** RouteList
-    , RouteList
-    , routeList
-    , rlNextPageToken
-    , rlKind
-    , rlItems
-    , rlSelfLink
-    , rlId
-
-    -- ** DeprecationStatusState
-    , DeprecationStatusState (..)
-
-    -- ** Router
-    , Router
-    , router
-    , rouBGPPeers
-    , rouBGP
-    , rouKind
-    , rouNetwork
-    , rouInterfaces
-    , rouSelfLink
-    , rouName
-    , rouCreationTimestamp
-    , rouId
-    , rouRegion
-    , rouDescription
-
-    -- ** RoutersScopedListWarningCode
-    , RoutersScopedListWarningCode (..)
-
-    -- ** RoutersScopedListWarningDataItem
-    , RoutersScopedListWarningDataItem
-    , routersScopedListWarningDataItem
-    , rslwdiValue
-    , rslwdiKey
-
-    -- ** ManagedInstanceCurrentAction
-    , ManagedInstanceCurrentAction (..)
-
-    -- ** TargetVPNGatewayList
-    , TargetVPNGatewayList
-    , targetVPNGatewayList
-    , tvglNextPageToken
-    , tvglKind
-    , tvglItems
-    , tvglSelfLink
-    , tvglId
-
-    -- ** TargetInstanceNATPolicy
-    , TargetInstanceNATPolicy (..)
-
-    -- ** SSLCertificateList
-    , SSLCertificateList
-    , sslCertificateList
-    , sclNextPageToken
-    , sclKind
-    , sclItems
-    , sclSelfLink
-    , sclId
-
-    -- ** FirewallAllowedItem
-    , FirewallAllowedItem
-    , firewallAllowedItem
-    , faiIPProtocol
-    , faiPorts
-
-    -- ** BackendServiceAggregatedList
-    , BackendServiceAggregatedList
-    , backendServiceAggregatedList
-    , bsalNextPageToken
-    , bsalKind
-    , bsalItems
-    , bsalSelfLink
-    , bsalId
-
-    -- ** Network
-    , Network
-    , network
-    , nAutoCreateSubnetworks
-    , nKind
-    , nSubnetworks
-    , nIPv4Range
-    , nSelfLink
-    , nName
-    , nCreationTimestamp
-    , nId
-    , nGatewayIPv4
-    , nDescription
-
-    -- ** RoutersScopedListWarning
-    , RoutersScopedListWarning
-    , routersScopedListWarning
-    , rslwData
-    , rslwCode
-    , rslwMessage
-
-    -- ** AccessConfigType
-    , AccessConfigType (..)
-
-    -- ** AddressesScopedListWarning
-    , AddressesScopedListWarning
-    , addressesScopedListWarning
-    , aData
-    , aCode
-    , aMessage
-
-    -- ** ImageRawDisk
-    , ImageRawDisk
-    , imageRawDisk
-    , irdContainerType
-    , irdSource
-    , irdSha1Checksum
-
-    -- ** InstanceAggregatedList
-    , InstanceAggregatedList
-    , instanceAggregatedList
-    , ialNextPageToken
-    , ialKind
-    , ialItems
-    , ialSelfLink
-    , ialId
-
-    -- ** SSLHealthCheck
-    , SSLHealthCheck
-    , sslHealthCheck
-    , shcResponse
-    , shcProxyHeader
-    , shcPortName
-    , shcPort
-    , shcRequest
-
-    -- ** Address
-    , Address
-    , address
-    , aStatus
-    , aUsers
-    , aKind
-    , aAddress
-    , aSelfLink
-    , aName
-    , aCreationTimestamp
-    , aId
-    , aRegion
-    , aDescription
-
-    -- ** Zone
-    , Zone
-    , zone
-    , zStatus
-    , zKind
-    , zSelfLink
-    , zName
-    , zCreationTimestamp
-    , zId
-    , zRegion
-    , zDescription
-    , zDeprecated
-
-    -- ** RouterBGP
-    , RouterBGP
-    , routerBGP
-    , rbASN
-
-    -- ** BackendServicesScopedList
-    , BackendServicesScopedList
-    , backendServicesScopedList
-    , bsslWarning
-    , bsslBackendServices
-
-    -- ** InstanceGroupManagersRecreateInstancesRequest
-    , InstanceGroupManagersRecreateInstancesRequest
-    , instanceGroupManagersRecreateInstancesRequest
-    , igmrirInstances
-
-    -- ** TargetSSLProxiesSetSSLCertificatesRequest
-    , TargetSSLProxiesSetSSLCertificatesRequest
-    , targetSSLProxiesSetSSLCertificatesRequest
-    , tspsscrSSLCertificates
-
-    -- ** InstancesScopedList
-    , InstancesScopedList
-    , instancesScopedList
-    , islWarning
-    , islInstances
-
-    -- ** BackendServiceLoadBalancingScheme
-    , BackendServiceLoadBalancingScheme (..)
-
-    -- ** HealthCheckReference
-    , HealthCheckReference
-    , healthCheckReference
-    , hcrHealthCheck
-
-    -- ** TargetInstanceAggregatedListItems
-    , TargetInstanceAggregatedListItems
-    , targetInstanceAggregatedListItems
-    , tialiAddtional
-
-    -- ** InstanceGroupAggregatedList
-    , InstanceGroupAggregatedList
-    , instanceGroupAggregatedList
-    , igalNextPageToken
-    , igalKind
-    , igalItems
-    , igalSelfLink
-    , igalId
-
-    -- ** OperationStatus
-    , OperationStatus (..)
-
-    -- ** Route
-    , Route
-    , route
-    , rrPriority
-    , rrKind
-    , rrNextHopGateway
-    , rrNextHopNetwork
-    , rrNetwork
-    , rrWarnings
-    , rrNextHopIP
-    , rrDestRange
-    , rrSelfLink
-    , rrName
-    , rrCreationTimestamp
-    , rrId
-    , rrNextHopVPNTunnel
-    , rrDescription
-    , rrTags
-    , rrNextHopInstance
-
-    -- ** TargetVPNGatewaysScopedListWarningDataItem
-    , TargetVPNGatewaysScopedListWarningDataItem
-    , targetVPNGatewaysScopedListWarningDataItem
-    , tvgslwdiValue
-    , tvgslwdiKey
-
-    -- ** TargetVPNGatewaysScopedListWarningCode
-    , TargetVPNGatewaysScopedListWarningCode (..)
-
-    -- ** TargetHTTPSProxiesSetSSLCertificatesRequest
-    , TargetHTTPSProxiesSetSSLCertificatesRequest
-    , targetHTTPSProxiesSetSSLCertificatesRequest
-    , thpsscrSSLCertificates
-
-    -- ** InstanceTemplate
-    , InstanceTemplate
-    , instanceTemplate
-    , itKind
-    , itSelfLink
-    , itName
-    , itCreationTimestamp
-    , itId
-    , itDescription
-    , itProperties
-
-    -- ** RouterList
-    , RouterList
-    , routerList
-    , rllNextPageToken
-    , rllKind
-    , rllItems
-    , rllSelfLink
-    , rllId
-
-    -- ** TargetSSLProxy
-    , TargetSSLProxy
-    , targetSSLProxy
-    , tspSSLCertificates
-    , tspService
-    , tspKind
-    , tspSelfLink
-    , tspName
-    , tspCreationTimestamp
-    , tspId
-    , tspProxyHeader
-    , tspDescription
-
-    -- ** TargetVPNGateway
-    , TargetVPNGateway
-    , targetVPNGateway
-    , tvgStatus
-    , tvgKind
-    , tvgNetwork
-    , tvgSelfLink
-    , tvgName
-    , tvgCreationTimestamp
-    , tvgId
-    , tvgRegion
-    , tvgTunnels
-    , tvgDescription
-    , tvgForwardingRules
-
-    -- ** DiskStatus
-    , DiskStatus (..)
-
-    -- ** ManagedInstanceInstanceStatus
-    , ManagedInstanceInstanceStatus (..)
-
-    -- ** HTTPHealthCheckProxyHeader
-    , HTTPHealthCheckProxyHeader (..)
-
-    -- ** URLMapsValidateResponse
-    , URLMapsValidateResponse
-    , urlMapsValidateResponse
-    , umvrResult
-
-    -- ** SSLCertificate
-    , SSLCertificate
-    , sslCertificate
-    , scPrivateKey
-    , scKind
-    , scSelfLink
-    , scName
-    , scCreationTimestamp
-    , scId
-    , scCertificate
-    , scDescription
-
-    -- ** RouterStatusBGPPeerStatus
-    , RouterStatusBGPPeerStatus
-    , routerStatusBGPPeerStatus
-    , rsbpsStatus
-    , rsbpsIPAddress
-    , rsbpsState
-    , rsbpsPeerIPAddress
-    , rsbpsUptime
-    , rsbpsNumLearnedRoutes
-    , rsbpsName
-    , rsbpsUptimeSeconds
-    , rsbpsAdvertisedRoutes
-    , rsbpsLinkedVPNTunnel
-
-    -- ** URLMapReference
-    , URLMapReference
-    , urlMapReference
-    , umrURLMap
-
-    -- ** AttachedDiskMode
-    , AttachedDiskMode (..)
-
-    -- ** TargetPoolsAddHealthCheckRequest
-    , TargetPoolsAddHealthCheckRequest
-    , targetPoolsAddHealthCheckRequest
-    , tpahcrHealthChecks
-
-    -- ** DiskAggregatedListItems
-    , DiskAggregatedListItems
-    , diskAggregatedListItems
-    , daliAddtional
-
-    -- ** UsageExportLocation
-    , UsageExportLocation
-    , usageExportLocation
-    , uelReportNamePrefix
-    , uelBucketName
-
-    -- ** ZoneList
-    , ZoneList
-    , zoneList
-    , zlNextPageToken
-    , zlKind
-    , zlItems
-    , zlSelfLink
-    , zlId
-
-    -- ** RegionStatus
-    , RegionStatus (..)
-
-    -- ** RouterBGPPeer
-    , RouterBGPPeer
-    , routerBGPPeer
-    , rbpIPAddress
-    , rbpInterfaceName
-    , rbpPeerIPAddress
-    , rbpAdvertisedRoutePriority
-    , rbpPeerASN
-    , rbpName
-
-    -- ** SubnetworksExpandIPCIdRRangeRequest
-    , SubnetworksExpandIPCIdRRangeRequest
-    , subnetworksExpandIPCIdRRangeRequest
-    , seicirrrIPCIdRRange
-
-    -- ** ManagedInstance
-    , ManagedInstance
-    , managedInstance
-    , miLastAttempt
-    , miCurrentAction
-    , miId
-    , miInstanceStatus
-    , miInstance
-
-    -- ** InstanceGroupManagerAggregatedListItems
-    , InstanceGroupManagerAggregatedListItems
-    , instanceGroupManagerAggregatedListItems
-    , igmaliAddtional
-
-    -- ** InstanceGroupManagersDeleteInstancesRequest
-    , InstanceGroupManagersDeleteInstancesRequest
-    , instanceGroupManagersDeleteInstancesRequest
-    , igmdirInstances
-
-    -- ** Backend
-    , Backend
-    , backend
-    , bGroup
-    , bBalancingMode
-    , bMaxUtilization
-    , bMaxRate
-    , bMaxConnections
-    , bMaxConnectionsPerInstance
-    , bMaxRatePerInstance
-    , bDescription
-    , bCapacityScaler
-
-    -- ** TargetVPNGatewaysScopedListWarning
-    , TargetVPNGatewaysScopedListWarning
-    , targetVPNGatewaysScopedListWarning
-    , tvgslwData
-    , tvgslwCode
-    , tvgslwMessage
-
-    -- ** TargetSSLProxiesSetProxyHeaderRequestProxyHeader
-    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)
-
-    -- ** AddressList
-    , AddressList
-    , addressList
-    , alNextPageToken
-    , alKind
-    , alItems
-    , alSelfLink
-    , alId
-
-    -- ** ForwardingRuleAggregatedListItems
-    , ForwardingRuleAggregatedListItems
-    , forwardingRuleAggregatedListItems
-    , fraliAddtional
-
-    -- ** OperationAggregatedListItems
-    , OperationAggregatedListItems
-    , operationAggregatedListItems
-    , oaliAddtional
-
-    -- ** InstanceGroupManagerActionsSummary
-    , InstanceGroupManagerActionsSummary
-    , instanceGroupManagerActionsSummary
-    , igmasDeleting
-    , igmasRestarting
-    , igmasNone
-    , igmasCreating
-    , igmasRefreshing
-    , igmasCreatingWithoutRetries
-    , igmasRecreating
-    , igmasAbandoning
-
-    -- ** VPNTunnelStatus
-    , VPNTunnelStatus (..)
-
-    -- ** ServiceAccount
-    , ServiceAccount
-    , serviceAccount
-    , saEmail
-    , saScopes
-
-    -- ** RegionInstanceGroupManagersAbandonInstancesRequest
-    , RegionInstanceGroupManagersAbandonInstancesRequest
-    , regionInstanceGroupManagersAbandonInstancesRequest
-    , rigmairInstances
-
-    -- ** NetworkList
-    , NetworkList
-    , networkList
-    , nlNextPageToken
-    , nlKind
-    , nlItems
-    , nlSelfLink
-    , nlId
-
-    -- ** InstanceGroupsListInstancesRequest
-    , InstanceGroupsListInstancesRequest
-    , instanceGroupsListInstancesRequest
-    , iglirInstanceState
-
-    -- ** BackendBalancingMode
-    , BackendBalancingMode (..)
-
-    -- ** RegionInstanceGroupList
-    , RegionInstanceGroupList
-    , regionInstanceGroupList
-    , riglNextPageToken
-    , riglKind
-    , riglItems
-    , riglSelfLink
-    , riglId
-
-    -- ** TargetPoolAggregatedListItems
-    , TargetPoolAggregatedListItems
-    , targetPoolAggregatedListItems
-    , tpaliAddtional
-
-    -- ** TargetInstancesScopedList
-    , TargetInstancesScopedList
-    , targetInstancesScopedList
-    , tislWarning
-    , tislTargetInstances
-
-    -- ** AddressAggregatedListItems
-    , AddressAggregatedListItems
-    , addressAggregatedListItems
-    , aAddtional
-
-    -- ** AutoscalerList
-    , AutoscalerList
-    , autoscalerList
-    , autNextPageToken
-    , autKind
-    , autItems
-    , autSelfLink
-    , autId
-
-    -- ** TargetSSLProxiesSetProxyHeaderRequest
-    , TargetSSLProxiesSetProxyHeaderRequest
-    , targetSSLProxiesSetProxyHeaderRequest
-    , tspsphrProxyHeader
-
-    -- ** VPNTunnelAggregatedList
-    , VPNTunnelAggregatedList
-    , vpnTunnelAggregatedList
-    , vtalNextPageToken
-    , vtalKind
-    , vtalItems
-    , vtalSelfLink
-    , vtalId
-
-    -- ** AttachedDisk
-    , AttachedDisk
-    , attachedDisk
-    , adDiskEncryptionKey
-    , adKind
-    , adMode
-    , adBoot
-    , adAutoDelete
-    , adInitializeParams
-    , adDeviceName
-    , adInterface
-    , adSource
-    , adLicenses
-    , adType
-    , adIndex
-
-    -- ** DiskTypeList
-    , DiskTypeList
-    , diskTypeList
-    , dtlNextPageToken
-    , dtlKind
-    , dtlItems
-    , dtlSelfLink
-    , dtlId
-
-    -- ** RegionInstanceGroupsSetNamedPortsRequest
-    , RegionInstanceGroupsSetNamedPortsRequest
-    , regionInstanceGroupsSetNamedPortsRequest
-    , rigsnprFingerprint
-    , rigsnprNamedPorts
-
-    -- ** MachineTypeList
-    , MachineTypeList
-    , machineTypeList
-    , mtlNextPageToken
-    , mtlKind
-    , mtlItems
-    , mtlSelfLink
-    , mtlId
-
-    -- ** TargetHTTPProxyList
-    , TargetHTTPProxyList
-    , targetHTTPProxyList
-    , thttpplNextPageToken
-    , thttpplKind
-    , thttpplItems
-    , thttpplSelfLink
-    , thttpplId
-
-    -- ** RegionInstanceGroupManagerList
-    , RegionInstanceGroupManagerList
-    , regionInstanceGroupManagerList
-    , rigmlNextPageToken
-    , rigmlKind
-    , rigmlItems
-    , rigmlSelfLink
-    , rigmlId
-
-    -- ** ForwardingRuleIPProtocol
-    , ForwardingRuleIPProtocol (..)
-
-    -- ** DiskTypesScopedList
-    , DiskTypesScopedList
-    , diskTypesScopedList
-    , dtslDiskTypes
-    , dtslWarning
-
-    -- ** AddressStatus
-    , AddressStatus (..)
-
-    -- ** DiskTypeAggregatedList
-    , DiskTypeAggregatedList
-    , diskTypeAggregatedList
-    , dtalNextPageToken
-    , dtalKind
-    , dtalItems
-    , dtalSelfLink
-    , dtalId
-
-    -- ** HTTPHealthCheck
-    , HTTPHealthCheck
-    , hTTPHealthCheck
-    , httphcRequestPath
-    , httphcHost
-    , httphcProxyHeader
-    , httphcPortName
-    , httphcPort
-
-    -- ** BackendServiceGroupHealth
-    , BackendServiceGroupHealth
-    , backendServiceGroupHealth
-    , bsghKind
-    , bsghHealthStatus
-
-    -- ** InstanceGroupsListInstancesRequestInstanceState
-    , InstanceGroupsListInstancesRequestInstanceState (..)
-
-    -- ** AutoscalersScopedList
-    , AutoscalersScopedList
-    , autoscalersScopedList
-    , aAutoscalers
-    , aWarning
-
-    -- ** AutoscalerAggregatedList
-    , AutoscalerAggregatedList
-    , autoscalerAggregatedList
-    , aalNextPageToken
-    , aalKind
-    , aalItems
-    , aalSelfLink
-    , aalId
-
-    -- ** RouterAggregatedListItems
-    , RouterAggregatedListItems
-    , routerAggregatedListItems
-    , raliAddtional
-
-    -- ** HTTPSHealthCheckProxyHeader
-    , HTTPSHealthCheckProxyHeader (..)
-
-    -- ** AutoscalingPolicy
-    , AutoscalingPolicy
-    , autoscalingPolicy
-    , apCustomMetricUtilizations
-    , apMaxNumReplicas
-    , apCPUUtilization
-    , apLoadBalancingUtilization
-    , apMinNumReplicas
-    , apCoolDownPeriodSec
-
-    -- ** RegionList
-    , RegionList
-    , regionList
-    , regNextPageToken
-    , regKind
-    , regItems
-    , regSelfLink
-    , regId
-
-    -- ** AttachedDiskInterface
-    , AttachedDiskInterface (..)
-
-    -- ** HealthCheckType
-    , HealthCheckType (..)
-
-    -- ** ZoneStatus
-    , ZoneStatus (..)
-
-    -- ** VPNTunnelList
-    , VPNTunnelList
-    , vpnTunnelList
-    , vtlNextPageToken
-    , vtlKind
-    , vtlItems
-    , vtlSelfLink
-    , vtlId
-
-    -- ** MachineTypeScratchDisksItem
-    , MachineTypeScratchDisksItem
-    , machineTypeScratchDisksItem
-    , mtsdiDiskGb
-
-    -- ** SubnetworksScopedListWarningDataItem
-    , SubnetworksScopedListWarningDataItem
-    , subnetworksScopedListWarningDataItem
-    , sslwdiValue
-    , sslwdiKey
-
-    -- ** MachineTypesScopedList
-    , MachineTypesScopedList
-    , machineTypesScopedList
-    , mtslMachineTypes
-    , mtslWarning
-
-    -- ** SubnetworksScopedListWarningCode
-    , SubnetworksScopedListWarningCode (..)
-
-    -- ** Subnetwork
-    , Subnetwork
-    , subnetwork
-    , subKind
-    , subNetwork
-    , subGatewayAddress
-    , subSelfLink
-    , subName
-    , subCreationTimestamp
-    , subIPCIdRRange
-    , subId
-    , subRegion
-    , subDescription
-
-    -- ** MachineTypeAggregatedList
-    , MachineTypeAggregatedList
-    , machineTypeAggregatedList
-    , mtalNextPageToken
-    , mtalKind
-    , mtalItems
-    , mtalSelfLink
-    , mtalId
-
-    -- ** QuotaMetric
-    , QuotaMetric (..)
-
-    -- ** DiskType
-    , DiskType
-    , diskType
-    , dtKind
-    , dtZone
-    , dtSelfLink
-    , dtName
-    , dtCreationTimestamp
-    , dtId
-    , dtValidDiskSize
-    , dtDescription
-    , dtDefaultDiskSizeGb
-    , dtDeprecated
-
-    -- ** URLMapValidationResult
-    , URLMapValidationResult
-    , urlMapValidationResult
-    , umvrLoadErrors
-    , umvrLoadSucceeded
-    , umvrTestPassed
-    , umvrTestFailures
-
-    -- ** Metadata
-    , Metadata
-    , metadata
-    , mKind
-    , mFingerprint
-    , mItems
-
-    -- ** RouteWarningsItem
-    , RouteWarningsItem
-    , routeWarningsItem
-    , rwiData
-    , rwiCode
-    , rwiMessage
-
-    -- ** MachineTypesScopedListWarningDataItem
-    , MachineTypesScopedListWarningDataItem
-    , machineTypesScopedListWarningDataItem
-    , mtslwdiValue
-    , mtslwdiKey
-
-    -- ** InstanceStatus
-    , InstanceStatus (..)
-
-    -- ** MachineTypesScopedListWarningCode
-    , MachineTypesScopedListWarningCode (..)
-
-    -- ** InstancesSetServiceAccountRequest
-    , InstancesSetServiceAccountRequest
-    , instancesSetServiceAccountRequest
-    , issarEmail
-    , issarScopes
-
-    -- ** DiskTypesScopedListWarningDataItem
-    , DiskTypesScopedListWarningDataItem
-    , diskTypesScopedListWarningDataItem
-    , dtslwdiValue
-    , dtslwdiKey
-
-    -- ** TargetHTTPProxy
-    , TargetHTTPProxy
-    , targetHTTPProxy
-    , thttppURLMap
-    , thttppKind
-    , thttppSelfLink
-    , thttppName
-    , thttppCreationTimestamp
-    , thttppId
-    , thttppDescription
-
-    -- ** MachineType
-    , MachineType
-    , machineType
-    , mtIsSharedCPU
-    , mtKind
-    , mtImageSpaceGb
-    , mtZone
-    , mtSelfLink
-    , mtName
-    , mtCreationTimestamp
-    , mtScratchDisks
-    , mtId
-    , mtGuestCPUs
-    , mtMaximumPersistentDisksSizeGb
-    , mtMaximumPersistentDisks
-    , mtMemoryMb
-    , mtDescription
-    , mtDeprecated
-
-    -- ** DiskTypesScopedListWarningCode
-    , DiskTypesScopedListWarningCode (..)
-
-    -- ** OperationError
-    , OperationError
-    , operationError
-    , oeErrors
-
-    -- ** TargetInstancesScopedListWarning
-    , TargetInstancesScopedListWarning
-    , targetInstancesScopedListWarning
-    , tislwData
-    , tislwCode
-    , tislwMessage
-
-    -- ** SubnetworkAggregatedList
-    , SubnetworkAggregatedList
-    , subnetworkAggregatedList
-    , salNextPageToken
-    , salKind
-    , salItems
-    , salSelfLink
-    , salId
-
-    -- ** DisksResizeRequest
-    , DisksResizeRequest
-    , disksResizeRequest
-    , drrSizeGb
-
-    -- ** AutoscalersScopedListWarningDataItem
-    , AutoscalersScopedListWarningDataItem
-    , autoscalersScopedListWarningDataItem
-    , aValue
-    , aKey
-
-    -- ** AutoscalersScopedListWarningCode
-    , AutoscalersScopedListWarningCode (..)
-
-    -- ** ForwardingRuleLoadBalancingScheme
-    , ForwardingRuleLoadBalancingScheme (..)
-
-    -- ** RegionInstanceGroupManagersSetTemplateRequest
-    , RegionInstanceGroupManagersSetTemplateRequest
-    , regionInstanceGroupManagersSetTemplateRequest
-    , rigmstrInstanceTemplate
-
-    -- ** InstanceGroupsListInstances
-    , InstanceGroupsListInstances
-    , instanceGroupsListInstances
-    , igliNextPageToken
-    , igliKind
-    , igliItems
-    , igliSelfLink
-    , igliId
-
-    -- ** Autoscaler
-    , Autoscaler
-    , autoscaler
-    , aaKind
-    , aaZone
-    , aaSelfLink
-    , aaName
-    , aaCreationTimestamp
-    , aaAutoscalingPolicy
-    , aaId
-    , aaRegion
-    , aaDescription
-    , aaTarget
-
-    -- ** DisksScopedListWarning
-    , DisksScopedListWarning
-    , disksScopedListWarning
-    , dslwData
-    , dslwCode
-    , dslwMessage
-
-    -- ** TargetVPNGatewayAggregatedListItems
-    , TargetVPNGatewayAggregatedListItems
-    , targetVPNGatewayAggregatedListItems
-    , tvgaliAddtional
-
-    -- ** RouterStatusBGPPeerStatusStatus
-    , RouterStatusBGPPeerStatusStatus (..)
-
-    -- ** TargetPoolsScopedListWarning
-    , TargetPoolsScopedListWarning
-    , targetPoolsScopedListWarning
-    , tpslwData
-    , tpslwCode
-    , tpslwMessage
-
-    -- ** HealthStatus
-    , HealthStatus
-    , healthStatus
-    , hsIPAddress
-    , hsHealthState
-    , hsPort
-    , hsInstance
-
-    -- ** Region
-    , Region
-    , region
-    , regeStatus
-    , regeZones
-    , regeKind
-    , regeSelfLink
-    , regeName
-    , regeCreationTimestamp
-    , regeQuotas
-    , regeId
-    , regeDescription
-    , regeDeprecated
-
-    -- ** GuestOSFeature
-    , GuestOSFeature
-    , guestOSFeature
-    , gofType
-
-    -- ** VPNTunnel
-    , VPNTunnel
-    , vpnTunnel
-    , vtDetailedStatus
-    , vtStatus
-    , vtLocalTrafficSelector
-    , vtKind
-    , vtPeerIP
-    , vtRouter
-    , vtTargetVPNGateway
-    , vtRemoteTrafficSelector
-    , vtSelfLink
-    , vtSharedSecret
-    , vtName
-    , vtCreationTimestamp
-    , vtSharedSecretHash
-    , vtId
-    , vtIkeVersion
-    , vtRegion
-    , vtDescription
-
-    -- ** VPNTunnelsScopedListWarningCode
-    , VPNTunnelsScopedListWarningCode (..)
-
-    -- ** OperationsScopedListWarning
-    , OperationsScopedListWarning
-    , operationsScopedListWarning
-    , oslwData
-    , oslwCode
-    , oslwMessage
-
-    -- ** Scheduling
-    , Scheduling
-    , scheduling
-    , sAutomaticRestart
-    , sOnHostMaintenance
-    , sPreemptible
-
-    -- ** VPNTunnelsScopedListWarningDataItem
-    , VPNTunnelsScopedListWarningDataItem
-    , vpnTunnelsScopedListWarningDataItem
-    , vtslwdiValue
-    , vtslwdiKey
-
-    -- ** SubnetworkList
-    , SubnetworkList
-    , subnetworkList
-    , slNextPageToken
-    , slKind
-    , slItems
-    , slSelfLink
-    , slId
-
-    -- ** ForwardingRulesScopedListWarning
-    , ForwardingRulesScopedListWarning
-    , forwardingRulesScopedListWarning
-    , frslwData
-    , frslwCode
-    , frslwMessage
-
-    -- ** HTTPHealthCheckList
-    , HTTPHealthCheckList
-    , hTTPHealthCheckList
-    , httphclNextPageToken
-    , httphclKind
-    , httphclItems
-    , httphclSelfLink
-    , httphclId
-
-    -- ** InstanceGroupManagersScopedListWarning
-    , InstanceGroupManagersScopedListWarning
-    , instanceGroupManagersScopedListWarning
-    , igmslwData
-    , igmslwCode
-    , igmslwMessage
-
-    -- ** URLMapsValidateRequest
-    , URLMapsValidateRequest
-    , urlMapsValidateRequest
-    , umvrResource
-
-    -- ** InstanceGroupManagersSetTargetPoolsRequest
-    , InstanceGroupManagersSetTargetPoolsRequest
-    , instanceGroupManagersSetTargetPoolsRequest
-    , igmstprFingerprint
-    , igmstprTargetPools
-
-    -- ** HTTPSHealthCheckList
-    , HTTPSHealthCheckList
-    , httpsHealthCheckList
-    , hhclNextPageToken
-    , hhclKind
-    , hhclItems
-    , hhclSelfLink
-    , hhclId
-
-    -- ** OperationErrorErrorsItem
-    , OperationErrorErrorsItem
-    , operationErrorErrorsItem
-    , oeeiLocation
-    , oeeiCode
-    , oeeiMessage
-
-    -- ** License
-    , License
-    , license
-    , lChargesUseFee
-    , lKind
-    , lSelfLink
-    , lName
-
-    -- ** PathRule
-    , PathRule
-    , pathRule
-    , prService
-    , prPaths
-
-    -- ** InstanceList
-    , InstanceList
-    , instanceList
-    , insNextPageToken
-    , insKind
-    , insItems
-    , insSelfLink
-    , insId
-
-    -- ** SubnetworkAggregatedListItems
-    , SubnetworkAggregatedListItems
-    , subnetworkAggregatedListItems
-    , saliAddtional
-
-    -- ** ManagedInstanceLastAttempt
-    , ManagedInstanceLastAttempt
-    , managedInstanceLastAttempt
-    , milaErrors
-
-    -- ** BackendServiceList
-    , BackendServiceList
-    , backendServiceList
-    , bslNextPageToken
-    , bslKind
-    , bslItems
-    , bslSelfLink
-    , bslId
-
-    -- ** InstanceGroupsScopedListWarning
-    , InstanceGroupsScopedListWarning
-    , instanceGroupsScopedListWarning
-    , igslwData
-    , igslwCode
-    , igslwMessage
-
-    -- ** AutoscalingPolicyCPUUtilization
-    , AutoscalingPolicyCPUUtilization
-    , autoscalingPolicyCPUUtilization
-    , apcuUtilizationTarget
-
-    -- ** InstanceGroupsScopedListWarningCode
-    , InstanceGroupsScopedListWarningCode (..)
-
-    -- ** InstanceGroupsScopedListWarningDataItem
-    , InstanceGroupsScopedListWarningDataItem
-    , instanceGroupsScopedListWarningDataItem
-    , igslwdiValue
-    , igslwdiKey
-
-    -- ** ResourceGroupReference
-    , ResourceGroupReference
-    , resourceGroupReference
-    , rgrGroup
-
-    -- ** Firewall
-    , Firewall
-    , firewall
-    , fSourceTags
-    , fKind
-    , fTargetTags
-    , fNetwork
-    , fSourceRanges
-    , fSelfLink
-    , fName
-    , fCreationTimestamp
-    , fId
-    , fAllowed
-    , fDescription
-
-    -- ** HostRule
-    , HostRule
-    , hostRule
-    , hrHosts
-    , hrDescription
-    , hrPathMatcher
-
-    -- ** Quota
-    , Quota
-    , quota
-    , qMetric
-    , qLimit
-    , qUsage
-
-    -- ** InstanceGroup
-    , InstanceGroup
-    , instanceGroup
-    , iiSize
-    , iiKind
-    , iiFingerprint
-    , iiNetwork
-    , iiZone
-    , iiSelfLink
-    , iiName
-    , iiCreationTimestamp
-    , iiSubnetwork
-    , iiId
-    , iiRegion
-    , iiDescription
-    , iiNamedPorts
-
-    -- ** RouterInterface
-    , RouterInterface
-    , routerInterface
-    , riName
-    , riIPRange
-    , riLinkedVPNTunnel
-
-    -- ** InstanceWithNamedPortsStatus
-    , InstanceWithNamedPortsStatus (..)
-
-    -- ** TCPHealthCheckProxyHeader
-    , TCPHealthCheckProxyHeader (..)
-
-    -- ** SnapshotList
-    , SnapshotList
-    , snapshotList
-    , snaNextPageToken
-    , snaKind
-    , snaItems
-    , snaSelfLink
-    , snaId
-
-    -- ** TestFailure
-    , TestFailure
-    , testFailure
-    , tfPath
-    , tfExpectedService
-    , tfHost
-    , tfActualService
-
-    -- ** SerialPortOutput
-    , SerialPortOutput
-    , serialPortOutput
-    , spoNext
-    , spoContents
-    , spoKind
-    , spoStart
-    , spoSelfLink
-
-    -- ** TargetVPNGatewayAggregatedList
-    , TargetVPNGatewayAggregatedList
-    , targetVPNGatewayAggregatedList
-    , tvgalNextPageToken
-    , tvgalKind
-    , tvgalItems
-    , tvgalSelfLink
-    , tvgalId
-
-    -- ** MetadataItemsItem
-    , MetadataItemsItem
-    , metadataItemsItem
-    , miiValue
-    , miiKey
-
-    -- ** TargetHTTPSProxy
-    , TargetHTTPSProxy
-    , targetHTTPSProxy
-    , thpURLMap
-    , thpSSLCertificates
-    , thpKind
-    , thpSelfLink
-    , thpName
-    , thpCreationTimestamp
-    , thpId
-    , thpDescription
-
-    -- ** ConnectionDraining
-    , ConnectionDraining
-    , connectionDraining
-    , cdDrainingTimeoutSec
-
-    -- ** CacheInvalidationRule
-    , CacheInvalidationRule
-    , cacheInvalidationRule
-    , cirPath
-    , cirHost
-
-    -- ** TargetVPNGatewaysScopedList
-    , TargetVPNGatewaysScopedList
-    , targetVPNGatewaysScopedList
-    , tvgslTargetVPNGateways
-    , tvgslWarning
-
-    -- ** AccessConfig
-    , AccessConfig
-    , accessConfig
-    , acKind
-    , acName
-    , acNATIP
-    , acType
-
-    -- ** ManagedInstanceLastAttemptErrorsErrorsItem
-    , ManagedInstanceLastAttemptErrorsErrorsItem
-    , managedInstanceLastAttemptErrorsErrorsItem
-    , milaeeiLocation
-    , milaeeiCode
-    , milaeeiMessage
-
-    -- ** InstancesScopedListWarningCode
-    , InstancesScopedListWarningCode (..)
-
-    -- ** InstancesScopedListWarningDataItem
-    , InstancesScopedListWarningDataItem
-    , instancesScopedListWarningDataItem
-    , islwdiValue
-    , islwdiKey
-
-    -- ** BackendServicesScopedListWarningDataItem
-    , BackendServicesScopedListWarningDataItem
-    , backendServicesScopedListWarningDataItem
-    , bsslwdiValue
-    , bsslwdiKey
-
-    -- ** BackendService
-    , BackendService
-    , backendService
-    , bsSessionAffinity
-    , bsBackends
-    , bsAffinityCookieTtlSec
-    , bsLoadBalancingScheme
-    , bsKind
-    , bsEnableCDN
-    , bsFingerprint
-    , bsProtocol
-    , bsSelfLink
-    , bsName
-    , bsCreationTimestamp
-    , bsId
-    , bsRegion
-    , bsConnectionDraining
-    , bsTimeoutSec
-    , bsDescription
-    , bsPortName
-    , bsHealthChecks
-    , bsPort
-
-    -- ** InstanceMoveRequest
-    , InstanceMoveRequest
-    , instanceMoveRequest
-    , imrTargetInstance
-    , imrDestinationZone
-
-    -- ** BackendServicesScopedListWarningCode
-    , BackendServicesScopedListWarningCode (..)
-
-    -- ** TargetPoolSessionAffinity
-    , TargetPoolSessionAffinity (..)
-
-    -- ** InstanceGroupsScopedList
-    , InstanceGroupsScopedList
-    , instanceGroupsScopedList
-    , igslWarning
-    , igslInstanceGroups
-
-    -- ** InstancesStartWithEncryptionKeyRequest
-    , InstancesStartWithEncryptionKeyRequest
-    , instancesStartWithEncryptionKeyRequest
-    , iswekrDisks
-
-    -- ** HTTPSHealthCheck
-    , HTTPSHealthCheck
-    , httpsHealthCheck
-    , hhcRequestPath
-    , hhcHost
-    , hhcProxyHeader
-    , hhcPortName
-    , hhcPort
-
-    -- ** ImageRawDiskContainerType
-    , ImageRawDiskContainerType (..)
-
-    -- ** VPNTunnelAggregatedListItems
-    , VPNTunnelAggregatedListItems
-    , vpnTunnelAggregatedListItems
-    , vtaliAddtional
-
-    -- ** Tags
-    , Tags
-    , tags
-    , tFingerprint
-    , tItems
-
-    -- ** AddressAggregatedList
-    , AddressAggregatedList
-    , addressAggregatedList
-    , addNextPageToken
-    , addKind
-    , addItems
-    , addSelfLink
-    , addId
-
-    -- ** OperationWarningsItem
-    , OperationWarningsItem
-    , operationWarningsItem
-    , owiData
-    , owiCode
-    , owiMessage
-
-    -- ** URLMapTest
-    , URLMapTest
-    , urlMapTest
-    , umtPath
-    , umtService
-    , umtHost
-    , umtDescription
-
-    -- ** RoutersPreviewResponse
-    , RoutersPreviewResponse
-    , routersPreviewResponse
-    , rprResource
-
-    -- ** Instance
-    , Instance
-    , instance'
-    , insnStatus
-    , insnServiceAccounts
-    , insnNetworkInterfaces
-    , insnKind
-    , insnZone
-    , insnCPUPlatform
-    , insnSelfLink
-    , insnName
-    , insnStatusMessage
-    , insnCreationTimestamp
-    , insnMachineType
-    , insnMetadata
-    , insnId
-    , insnScheduling
-    , insnDisks
-    , insnCanIPForward
-    , insnDescription
-    , insnTags
-
-    -- ** PathMatcher
-    , PathMatcher
-    , pathMatcher
-    , pmDefaultService
-    , pmName
-    , pmPathRules
-    , pmDescription
-    ) where
-
-import           Network.Google.Compute.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.Compute.Addresses.AggregatedList
-import           Network.Google.Resource.Compute.Addresses.Delete
-import           Network.Google.Resource.Compute.Addresses.Get
-import           Network.Google.Resource.Compute.Addresses.Insert
-import           Network.Google.Resource.Compute.Addresses.List
-import           Network.Google.Resource.Compute.Autoscalers.AggregatedList
-import           Network.Google.Resource.Compute.Autoscalers.Delete
-import           Network.Google.Resource.Compute.Autoscalers.Get
-import           Network.Google.Resource.Compute.Autoscalers.Insert
-import           Network.Google.Resource.Compute.Autoscalers.List
-import           Network.Google.Resource.Compute.Autoscalers.Patch
-import           Network.Google.Resource.Compute.Autoscalers.Update
-import           Network.Google.Resource.Compute.BackendServices.AggregatedList
-import           Network.Google.Resource.Compute.BackendServices.Delete
-import           Network.Google.Resource.Compute.BackendServices.Get
-import           Network.Google.Resource.Compute.BackendServices.GetHealth
-import           Network.Google.Resource.Compute.BackendServices.Insert
-import           Network.Google.Resource.Compute.BackendServices.List
-import           Network.Google.Resource.Compute.BackendServices.Patch
-import           Network.Google.Resource.Compute.BackendServices.Update
-import           Network.Google.Resource.Compute.Disks.AggregatedList
-import           Network.Google.Resource.Compute.Disks.CreateSnapshot
-import           Network.Google.Resource.Compute.Disks.Delete
-import           Network.Google.Resource.Compute.Disks.Get
-import           Network.Google.Resource.Compute.Disks.Insert
-import           Network.Google.Resource.Compute.Disks.List
-import           Network.Google.Resource.Compute.Disks.Resize
-import           Network.Google.Resource.Compute.DiskTypes.AggregatedList
-import           Network.Google.Resource.Compute.DiskTypes.Get
-import           Network.Google.Resource.Compute.DiskTypes.List
-import           Network.Google.Resource.Compute.Firewalls.Delete
-import           Network.Google.Resource.Compute.Firewalls.Get
-import           Network.Google.Resource.Compute.Firewalls.Insert
-import           Network.Google.Resource.Compute.Firewalls.List
-import           Network.Google.Resource.Compute.Firewalls.Patch
-import           Network.Google.Resource.Compute.Firewalls.Update
-import           Network.Google.Resource.Compute.ForwardingRules.AggregatedList
-import           Network.Google.Resource.Compute.ForwardingRules.Delete
-import           Network.Google.Resource.Compute.ForwardingRules.Get
-import           Network.Google.Resource.Compute.ForwardingRules.Insert
-import           Network.Google.Resource.Compute.ForwardingRules.List
-import           Network.Google.Resource.Compute.ForwardingRules.SetTarget
-import           Network.Google.Resource.Compute.GlobalAddresses.Delete
-import           Network.Google.Resource.Compute.GlobalAddresses.Get
-import           Network.Google.Resource.Compute.GlobalAddresses.Insert
-import           Network.Google.Resource.Compute.GlobalAddresses.List
-import           Network.Google.Resource.Compute.GlobalForwardingRules.Delete
-import           Network.Google.Resource.Compute.GlobalForwardingRules.Get
-import           Network.Google.Resource.Compute.GlobalForwardingRules.Insert
-import           Network.Google.Resource.Compute.GlobalForwardingRules.List
-import           Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
-import           Network.Google.Resource.Compute.GlobalOperations.AggregatedList
-import           Network.Google.Resource.Compute.GlobalOperations.Delete
-import           Network.Google.Resource.Compute.GlobalOperations.Get
-import           Network.Google.Resource.Compute.GlobalOperations.List
-import           Network.Google.Resource.Compute.HealthChecks.Delete
-import           Network.Google.Resource.Compute.HealthChecks.Get
-import           Network.Google.Resource.Compute.HealthChecks.Insert
-import           Network.Google.Resource.Compute.HealthChecks.List
-import           Network.Google.Resource.Compute.HealthChecks.Patch
-import           Network.Google.Resource.Compute.HealthChecks.Update
-import           Network.Google.Resource.Compute.HTTPHealthChecks.Delete
-import           Network.Google.Resource.Compute.HTTPHealthChecks.Get
-import           Network.Google.Resource.Compute.HTTPHealthChecks.Insert
-import           Network.Google.Resource.Compute.HTTPHealthChecks.List
-import           Network.Google.Resource.Compute.HTTPHealthChecks.Patch
-import           Network.Google.Resource.Compute.HTTPHealthChecks.Update
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.Get
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.List
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
-import           Network.Google.Resource.Compute.HTTPSHealthChecks.Update
-import           Network.Google.Resource.Compute.Images.Delete
-import           Network.Google.Resource.Compute.Images.Deprecate
-import           Network.Google.Resource.Compute.Images.Get
-import           Network.Google.Resource.Compute.Images.GetFromFamily
-import           Network.Google.Resource.Compute.Images.Insert
-import           Network.Google.Resource.Compute.Images.List
-import           Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
-import           Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
-import           Network.Google.Resource.Compute.InstanceGroupManagers.Delete
-import           Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
-import           Network.Google.Resource.Compute.InstanceGroupManagers.Get
-import           Network.Google.Resource.Compute.InstanceGroupManagers.Insert
-import           Network.Google.Resource.Compute.InstanceGroupManagers.List
-import           Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
-import           Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
-import           Network.Google.Resource.Compute.InstanceGroupManagers.Resize
-import           Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
-import           Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
-import           Network.Google.Resource.Compute.InstanceGroups.AddInstances
-import           Network.Google.Resource.Compute.InstanceGroups.AggregatedList
-import           Network.Google.Resource.Compute.InstanceGroups.Delete
-import           Network.Google.Resource.Compute.InstanceGroups.Get
-import           Network.Google.Resource.Compute.InstanceGroups.Insert
-import           Network.Google.Resource.Compute.InstanceGroups.List
-import           Network.Google.Resource.Compute.InstanceGroups.ListInstances
-import           Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
-import           Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
-import           Network.Google.Resource.Compute.Instances.AddAccessConfig
-import           Network.Google.Resource.Compute.Instances.AggregatedList
-import           Network.Google.Resource.Compute.Instances.AttachDisk
-import           Network.Google.Resource.Compute.Instances.Delete
-import           Network.Google.Resource.Compute.Instances.DeleteAccessConfig
-import           Network.Google.Resource.Compute.Instances.DetachDisk
-import           Network.Google.Resource.Compute.Instances.Get
-import           Network.Google.Resource.Compute.Instances.GetSerialPortOutput
-import           Network.Google.Resource.Compute.Instances.Insert
-import           Network.Google.Resource.Compute.Instances.List
-import           Network.Google.Resource.Compute.Instances.Reset
-import           Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
-import           Network.Google.Resource.Compute.Instances.SetMachineType
-import           Network.Google.Resource.Compute.Instances.SetMetadata
-import           Network.Google.Resource.Compute.Instances.SetScheduling
-import           Network.Google.Resource.Compute.Instances.SetServiceAccount
-import           Network.Google.Resource.Compute.Instances.SetTags
-import           Network.Google.Resource.Compute.Instances.Start
-import           Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
-import           Network.Google.Resource.Compute.Instances.Stop
-import           Network.Google.Resource.Compute.InstanceTemplates.Delete
-import           Network.Google.Resource.Compute.InstanceTemplates.Get
-import           Network.Google.Resource.Compute.InstanceTemplates.Insert
-import           Network.Google.Resource.Compute.InstanceTemplates.List
-import           Network.Google.Resource.Compute.Licenses.Get
-import           Network.Google.Resource.Compute.MachineTypes.AggregatedList
-import           Network.Google.Resource.Compute.MachineTypes.Get
-import           Network.Google.Resource.Compute.MachineTypes.List
-import           Network.Google.Resource.Compute.Networks.Delete
-import           Network.Google.Resource.Compute.Networks.Get
-import           Network.Google.Resource.Compute.Networks.Insert
-import           Network.Google.Resource.Compute.Networks.List
-import           Network.Google.Resource.Compute.Networks.SwitchToCustomMode
-import           Network.Google.Resource.Compute.Projects.Get
-import           Network.Google.Resource.Compute.Projects.MoveDisk
-import           Network.Google.Resource.Compute.Projects.MoveInstance
-import           Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
-import           Network.Google.Resource.Compute.Projects.SetUsageExportBucket
-import           Network.Google.Resource.Compute.RegionAutoscalers.Delete
-import           Network.Google.Resource.Compute.RegionAutoscalers.Get
-import           Network.Google.Resource.Compute.RegionAutoscalers.Insert
-import           Network.Google.Resource.Compute.RegionAutoscalers.List
-import           Network.Google.Resource.Compute.RegionAutoscalers.Patch
-import           Network.Google.Resource.Compute.RegionAutoscalers.Update
-import           Network.Google.Resource.Compute.RegionBackendServices.Delete
-import           Network.Google.Resource.Compute.RegionBackendServices.Get
-import           Network.Google.Resource.Compute.RegionBackendServices.GetHealth
-import           Network.Google.Resource.Compute.RegionBackendServices.Insert
-import           Network.Google.Resource.Compute.RegionBackendServices.List
-import           Network.Google.Resource.Compute.RegionBackendServices.Patch
-import           Network.Google.Resource.Compute.RegionBackendServices.Update
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.List
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate
-import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools
-import           Network.Google.Resource.Compute.RegionInstanceGroups.Get
-import           Network.Google.Resource.Compute.RegionInstanceGroups.List
-import           Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances
-import           Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts
-import           Network.Google.Resource.Compute.RegionOperations.Delete
-import           Network.Google.Resource.Compute.RegionOperations.Get
-import           Network.Google.Resource.Compute.RegionOperations.List
-import           Network.Google.Resource.Compute.Regions.Get
-import           Network.Google.Resource.Compute.Regions.List
-import           Network.Google.Resource.Compute.Routers.AggregatedList
-import           Network.Google.Resource.Compute.Routers.Delete
-import           Network.Google.Resource.Compute.Routers.Get
-import           Network.Google.Resource.Compute.Routers.GetRouterStatus
-import           Network.Google.Resource.Compute.Routers.Insert
-import           Network.Google.Resource.Compute.Routers.List
-import           Network.Google.Resource.Compute.Routers.Patch
-import           Network.Google.Resource.Compute.Routers.Preview
-import           Network.Google.Resource.Compute.Routers.Update
-import           Network.Google.Resource.Compute.Routes.Delete
-import           Network.Google.Resource.Compute.Routes.Get
-import           Network.Google.Resource.Compute.Routes.Insert
-import           Network.Google.Resource.Compute.Routes.List
-import           Network.Google.Resource.Compute.Snapshots.Delete
-import           Network.Google.Resource.Compute.Snapshots.Get
-import           Network.Google.Resource.Compute.Snapshots.List
-import           Network.Google.Resource.Compute.SSLCertificates.Delete
-import           Network.Google.Resource.Compute.SSLCertificates.Get
-import           Network.Google.Resource.Compute.SSLCertificates.Insert
-import           Network.Google.Resource.Compute.SSLCertificates.List
-import           Network.Google.Resource.Compute.Subnetworks.AggregatedList
-import           Network.Google.Resource.Compute.Subnetworks.Delete
-import           Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange
-import           Network.Google.Resource.Compute.Subnetworks.Get
-import           Network.Google.Resource.Compute.Subnetworks.Insert
-import           Network.Google.Resource.Compute.Subnetworks.List
-import           Network.Google.Resource.Compute.TargetHTTPProxies.Delete
-import           Network.Google.Resource.Compute.TargetHTTPProxies.Get
-import           Network.Google.Resource.Compute.TargetHTTPProxies.Insert
-import           Network.Google.Resource.Compute.TargetHTTPProxies.List
-import           Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.Get
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.List
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
-import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
-import           Network.Google.Resource.Compute.TargetInstances.AggregatedList
-import           Network.Google.Resource.Compute.TargetInstances.Delete
-import           Network.Google.Resource.Compute.TargetInstances.Get
-import           Network.Google.Resource.Compute.TargetInstances.Insert
-import           Network.Google.Resource.Compute.TargetInstances.List
-import           Network.Google.Resource.Compute.TargetPools.AddHealthCheck
-import           Network.Google.Resource.Compute.TargetPools.AddInstance
-import           Network.Google.Resource.Compute.TargetPools.AggregatedList
-import           Network.Google.Resource.Compute.TargetPools.Delete
-import           Network.Google.Resource.Compute.TargetPools.Get
-import           Network.Google.Resource.Compute.TargetPools.GetHealth
-import           Network.Google.Resource.Compute.TargetPools.Insert
-import           Network.Google.Resource.Compute.TargetPools.List
-import           Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
-import           Network.Google.Resource.Compute.TargetPools.RemoveInstance
-import           Network.Google.Resource.Compute.TargetPools.SetBackup
-import           Network.Google.Resource.Compute.TargetSSLProxies.Delete
-import           Network.Google.Resource.Compute.TargetSSLProxies.Get
-import           Network.Google.Resource.Compute.TargetSSLProxies.Insert
-import           Network.Google.Resource.Compute.TargetSSLProxies.List
-import           Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService
-import           Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader
-import           Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates
-import           Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
-import           Network.Google.Resource.Compute.TargetVPNGateways.Delete
-import           Network.Google.Resource.Compute.TargetVPNGateways.Get
-import           Network.Google.Resource.Compute.TargetVPNGateways.Insert
-import           Network.Google.Resource.Compute.TargetVPNGateways.List
-import           Network.Google.Resource.Compute.URLMaps.Delete
-import           Network.Google.Resource.Compute.URLMaps.Get
-import           Network.Google.Resource.Compute.URLMaps.Insert
-import           Network.Google.Resource.Compute.URLMaps.InvalidateCache
-import           Network.Google.Resource.Compute.URLMaps.List
-import           Network.Google.Resource.Compute.URLMaps.Patch
-import           Network.Google.Resource.Compute.URLMaps.Update
-import           Network.Google.Resource.Compute.URLMaps.Validate
-import           Network.Google.Resource.Compute.VPNTunnels.AggregatedList
-import           Network.Google.Resource.Compute.VPNTunnels.Delete
-import           Network.Google.Resource.Compute.VPNTunnels.Get
-import           Network.Google.Resource.Compute.VPNTunnels.Insert
-import           Network.Google.Resource.Compute.VPNTunnels.List
-import           Network.Google.Resource.Compute.ZoneOperations.Delete
-import           Network.Google.Resource.Compute.ZoneOperations.Get
-import           Network.Google.Resource.Compute.ZoneOperations.List
-import           Network.Google.Resource.Compute.Zones.Get
-import           Network.Google.Resource.Compute.Zones.List
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Compute Engine API service.
-type ComputeAPI =
-     ImagesInsertResource :<|> ImagesListResource :<|>
-       ImagesGetResource
-       :<|> ImagesGetFromFamilyResource
-       :<|> ImagesDeprecateResource
-       :<|> ImagesDeleteResource
-       :<|> URLMapsInsertResource
-       :<|> URLMapsListResource
-       :<|> URLMapsPatchResource
-       :<|> URLMapsGetResource
-       :<|> URLMapsInvalidateCacheResource
-       :<|> URLMapsValidateResource
-       :<|> URLMapsDeleteResource
-       :<|> URLMapsUpdateResource
-       :<|> RoutesInsertResource
-       :<|> RoutesListResource
-       :<|> RoutesGetResource
-       :<|> RoutesDeleteResource
-       :<|> RegionBackendServicesInsertResource
-       :<|> RegionBackendServicesListResource
-       :<|> RegionBackendServicesGetHealthResource
-       :<|> RegionBackendServicesPatchResource
-       :<|> RegionBackendServicesGetResource
-       :<|> RegionBackendServicesDeleteResource
-       :<|> RegionBackendServicesUpdateResource
-       :<|> InstanceTemplatesInsertResource
-       :<|> InstanceTemplatesListResource
-       :<|> InstanceTemplatesGetResource
-       :<|> InstanceTemplatesDeleteResource
-       :<|> TargetVPNGatewaysAggregatedListResource
-       :<|> TargetVPNGatewaysInsertResource
-       :<|> TargetVPNGatewaysListResource
-       :<|> TargetVPNGatewaysGetResource
-       :<|> TargetVPNGatewaysDeleteResource
-       :<|> SSLCertificatesInsertResource
-       :<|> SSLCertificatesListResource
-       :<|> SSLCertificatesGetResource
-       :<|> SSLCertificatesDeleteResource
-       :<|> ZonesListResource
-       :<|> ZonesGetResource
-       :<|> RegionInstanceGroupsListResource
-       :<|> RegionInstanceGroupsGetResource
-       :<|> RegionInstanceGroupsListInstancesResource
-       :<|> RegionInstanceGroupsSetNamedPortsResource
-       :<|> GlobalForwardingRulesInsertResource
-       :<|> GlobalForwardingRulesListResource
-       :<|> GlobalForwardingRulesGetResource
-       :<|> GlobalForwardingRulesSetTargetResource
-       :<|> GlobalForwardingRulesDeleteResource
-       :<|> NetworksInsertResource
-       :<|> NetworksListResource
-       :<|> NetworksGetResource
-       :<|> NetworksSwitchToCustomModeResource
-       :<|> NetworksDeleteResource
-       :<|> RoutersAggregatedListResource
-       :<|> RoutersInsertResource
-       :<|> RoutersListResource
-       :<|> RoutersPatchResource
-       :<|> RoutersGetResource
-       :<|> RoutersPreviewResource
-       :<|> RoutersDeleteResource
-       :<|> RoutersUpdateResource
-       :<|> RoutersGetRouterStatusResource
-       :<|> AddressesAggregatedListResource
-       :<|> AddressesInsertResource
-       :<|> AddressesListResource
-       :<|> AddressesGetResource
-       :<|> AddressesDeleteResource
-       :<|> GlobalAddressesInsertResource
-       :<|> GlobalAddressesListResource
-       :<|> GlobalAddressesGetResource
-       :<|> GlobalAddressesDeleteResource
-       :<|> RegionsListResource
-       :<|> RegionsGetResource
-       :<|> TargetHTTPProxiesInsertResource
-       :<|> TargetHTTPProxiesListResource
-       :<|> TargetHTTPProxiesSetURLMapResource
-       :<|> TargetHTTPProxiesGetResource
-       :<|> TargetHTTPProxiesDeleteResource
-       :<|> VPNTunnelsAggregatedListResource
-       :<|> VPNTunnelsInsertResource
-       :<|> VPNTunnelsListResource
-       :<|> VPNTunnelsGetResource
-       :<|> VPNTunnelsDeleteResource
-       :<|> AutoscalersAggregatedListResource
-       :<|> AutoscalersInsertResource
-       :<|> AutoscalersListResource
-       :<|> AutoscalersPatchResource
-       :<|> AutoscalersGetResource
-       :<|> AutoscalersDeleteResource
-       :<|> AutoscalersUpdateResource
-       :<|>
-       RegionInstanceGroupManagersSetTargetPoolsResource
-       :<|> RegionInstanceGroupManagersInsertResource
-       :<|> RegionInstanceGroupManagersResizeResource
-       :<|> RegionInstanceGroupManagersListResource
-       :<|>
-       RegionInstanceGroupManagersListManagedInstancesResource
-       :<|>
-       RegionInstanceGroupManagersAbandonInstancesResource
-       :<|>
-       RegionInstanceGroupManagersSetInstanceTemplateResource
-       :<|> RegionInstanceGroupManagersGetResource
-       :<|>
-       RegionInstanceGroupManagersDeleteInstancesResource
-       :<|> RegionInstanceGroupManagersDeleteResource
-       :<|>
-       RegionInstanceGroupManagersRecreateInstancesResource
-       :<|> DiskTypesAggregatedListResource
-       :<|> DiskTypesListResource
-       :<|> DiskTypesGetResource
-       :<|> RegionOperationsListResource
-       :<|> RegionOperationsGetResource
-       :<|> RegionOperationsDeleteResource
-       :<|> MachineTypesAggregatedListResource
-       :<|> MachineTypesListResource
-       :<|> MachineTypesGetResource
-       :<|> HTTPHealthChecksInsertResource
-       :<|> HTTPHealthChecksListResource
-       :<|> HTTPHealthChecksPatchResource
-       :<|> HTTPHealthChecksGetResource
-       :<|> HTTPHealthChecksDeleteResource
-       :<|> HTTPHealthChecksUpdateResource
-       :<|> SubnetworksExpandIPCIdRRangeResource
-       :<|> SubnetworksAggregatedListResource
-       :<|> SubnetworksInsertResource
-       :<|> SubnetworksListResource
-       :<|> SubnetworksGetResource
-       :<|> SubnetworksDeleteResource
-       :<|> SnapshotsListResource
-       :<|> SnapshotsGetResource
-       :<|> SnapshotsDeleteResource
-       :<|> TargetSSLProxiesInsertResource
-       :<|> TargetSSLProxiesListResource
-       :<|> TargetSSLProxiesSetSSLCertificatesResource
-       :<|> TargetSSLProxiesGetResource
-       :<|> TargetSSLProxiesSetBackendServiceResource
-       :<|> TargetSSLProxiesDeleteResource
-       :<|> TargetSSLProxiesSetProxyHeaderResource
-       :<|> HTTPSHealthChecksInsertResource
-       :<|> HTTPSHealthChecksListResource
-       :<|> HTTPSHealthChecksPatchResource
-       :<|> HTTPSHealthChecksGetResource
-       :<|> HTTPSHealthChecksDeleteResource
-       :<|> HTTPSHealthChecksUpdateResource
-       :<|> InstancesAddAccessConfigResource
-       :<|> InstancesAggregatedListResource
-       :<|> InstancesInsertResource
-       :<|> InstancesDetachDiskResource
-       :<|> InstancesListResource
-       :<|> InstancesStartResource
-       :<|> InstancesSetServiceAccountResource
-       :<|> InstancesGetResource
-       :<|> InstancesSetMachineTypeResource
-       :<|> InstancesDeleteAccessConfigResource
-       :<|> InstancesSetMetadataResource
-       :<|> InstancesSetSchedulingResource
-       :<|> InstancesStartWithEncryptionKeyResource
-       :<|> InstancesResetResource
-       :<|> InstancesStopResource
-       :<|> InstancesGetSerialPortOutputResource
-       :<|> InstancesSetTagsResource
-       :<|> InstancesAttachDiskResource
-       :<|> InstancesDeleteResource
-       :<|> InstancesSetDiskAutoDeleteResource
-       :<|> BackendServicesAggregatedListResource
-       :<|> BackendServicesInsertResource
-       :<|> BackendServicesListResource
-       :<|> BackendServicesGetHealthResource
-       :<|> BackendServicesPatchResource
-       :<|> BackendServicesGetResource
-       :<|> BackendServicesDeleteResource
-       :<|> BackendServicesUpdateResource
-       :<|> InstanceGroupsRemoveInstancesResource
-       :<|> InstanceGroupsAggregatedListResource
-       :<|> InstanceGroupsInsertResource
-       :<|> InstanceGroupsListResource
-       :<|> InstanceGroupsAddInstancesResource
-       :<|> InstanceGroupsGetResource
-       :<|> InstanceGroupsListInstancesResource
-       :<|> InstanceGroupsSetNamedPortsResource
-       :<|> InstanceGroupsDeleteResource
-       :<|> FirewallsInsertResource
-       :<|> FirewallsListResource
-       :<|> FirewallsPatchResource
-       :<|> FirewallsGetResource
-       :<|> FirewallsDeleteResource
-       :<|> FirewallsUpdateResource
-       :<|> GlobalOperationsAggregatedListResource
-       :<|> GlobalOperationsListResource
-       :<|> GlobalOperationsGetResource
-       :<|> GlobalOperationsDeleteResource
-       :<|> LicensesGetResource
-       :<|> ZoneOperationsListResource
-       :<|> ZoneOperationsGetResource
-       :<|> ZoneOperationsDeleteResource
-       :<|> TargetHTTPSProxiesInsertResource
-       :<|> TargetHTTPSProxiesListResource
-       :<|> TargetHTTPSProxiesSetURLMapResource
-       :<|> TargetHTTPSProxiesSetSSLCertificatesResource
-       :<|> TargetHTTPSProxiesGetResource
-       :<|> TargetHTTPSProxiesDeleteResource
-       :<|> TargetInstancesAggregatedListResource
-       :<|> TargetInstancesInsertResource
-       :<|> TargetInstancesListResource
-       :<|> TargetInstancesGetResource
-       :<|> TargetInstancesDeleteResource
-       :<|> DisksAggregatedListResource
-       :<|> DisksInsertResource
-       :<|> DisksResizeResource
-       :<|> DisksListResource
-       :<|> DisksGetResource
-       :<|> DisksCreateSnapshotResource
-       :<|> DisksDeleteResource
-       :<|> ForwardingRulesAggregatedListResource
-       :<|> ForwardingRulesInsertResource
-       :<|> ForwardingRulesListResource
-       :<|> ForwardingRulesGetResource
-       :<|> ForwardingRulesSetTargetResource
-       :<|> ForwardingRulesDeleteResource
-       :<|> InstanceGroupManagersSetTargetPoolsResource
-       :<|> InstanceGroupManagersAggregatedListResource
-       :<|> InstanceGroupManagersInsertResource
-       :<|> InstanceGroupManagersResizeResource
-       :<|> InstanceGroupManagersListResource
-       :<|>
-       InstanceGroupManagersListManagedInstancesResource
-       :<|> InstanceGroupManagersAbandonInstancesResource
-       :<|> InstanceGroupManagersSetInstanceTemplateResource
-       :<|> InstanceGroupManagersGetResource
-       :<|> InstanceGroupManagersDeleteInstancesResource
-       :<|> InstanceGroupManagersDeleteResource
-       :<|> InstanceGroupManagersRecreateInstancesResource
-       :<|> RegionAutoscalersInsertResource
-       :<|> RegionAutoscalersListResource
-       :<|> RegionAutoscalersPatchResource
-       :<|> RegionAutoscalersGetResource
-       :<|> RegionAutoscalersDeleteResource
-       :<|> RegionAutoscalersUpdateResource
-       :<|> ProjectsSetUsageExportBucketResource
-       :<|> ProjectsMoveInstanceResource
-       :<|> ProjectsGetResource
-       :<|> ProjectsMoveDiskResource
-       :<|> ProjectsSetCommonInstanceMetadataResource
-       :<|> TargetPoolsAggregatedListResource
-       :<|> TargetPoolsRemoveInstanceResource
-       :<|> TargetPoolsInsertResource
-       :<|> TargetPoolsListResource
-       :<|> TargetPoolsGetHealthResource
-       :<|> TargetPoolsGetResource
-       :<|> TargetPoolsRemoveHealthCheckResource
-       :<|> TargetPoolsSetBackupResource
-       :<|> TargetPoolsAddInstanceResource
-       :<|> TargetPoolsAddHealthCheckResource
-       :<|> TargetPoolsDeleteResource
-       :<|> HealthChecksInsertResource
-       :<|> HealthChecksListResource
-       :<|> HealthChecksPatchResource
-       :<|> HealthChecksGetResource
-       :<|> HealthChecksDeleteResource
-       :<|> HealthChecksUpdateResource
+    -- ** compute.acceleratorTypes.aggregatedList
+    , module Network.Google.Resource.Compute.AcceleratorTypes.AggregatedList
+
+    -- ** compute.acceleratorTypes.get
+    , module Network.Google.Resource.Compute.AcceleratorTypes.Get
+
+    -- ** compute.acceleratorTypes.list
+    , module Network.Google.Resource.Compute.AcceleratorTypes.List
+
+    -- ** compute.addresses.aggregatedList
+    , module Network.Google.Resource.Compute.Addresses.AggregatedList
+
+    -- ** compute.addresses.delete
+    , module Network.Google.Resource.Compute.Addresses.Delete
+
+    -- ** compute.addresses.get
+    , module Network.Google.Resource.Compute.Addresses.Get
+
+    -- ** compute.addresses.insert
+    , module Network.Google.Resource.Compute.Addresses.Insert
+
+    -- ** compute.addresses.list
+    , module Network.Google.Resource.Compute.Addresses.List
+
+    -- ** compute.autoscalers.aggregatedList
+    , module Network.Google.Resource.Compute.Autoscalers.AggregatedList
+
+    -- ** compute.autoscalers.delete
+    , module Network.Google.Resource.Compute.Autoscalers.Delete
+
+    -- ** compute.autoscalers.get
+    , module Network.Google.Resource.Compute.Autoscalers.Get
+
+    -- ** compute.autoscalers.insert
+    , module Network.Google.Resource.Compute.Autoscalers.Insert
+
+    -- ** compute.autoscalers.list
+    , module Network.Google.Resource.Compute.Autoscalers.List
+
+    -- ** compute.autoscalers.patch
+    , module Network.Google.Resource.Compute.Autoscalers.Patch
+
+    -- ** compute.autoscalers.update
+    , module Network.Google.Resource.Compute.Autoscalers.Update
+
+    -- ** compute.backendBuckets.addSignedUrlKey
+    , module Network.Google.Resource.Compute.BackendBuckets.AddSignedURLKey
+
+    -- ** compute.backendBuckets.delete
+    , module Network.Google.Resource.Compute.BackendBuckets.Delete
+
+    -- ** compute.backendBuckets.deleteSignedUrlKey
+    , module Network.Google.Resource.Compute.BackendBuckets.DeleteSignedURLKey
+
+    -- ** compute.backendBuckets.get
+    , module Network.Google.Resource.Compute.BackendBuckets.Get
+
+    -- ** compute.backendBuckets.insert
+    , module Network.Google.Resource.Compute.BackendBuckets.Insert
+
+    -- ** compute.backendBuckets.list
+    , module Network.Google.Resource.Compute.BackendBuckets.List
+
+    -- ** compute.backendBuckets.patch
+    , module Network.Google.Resource.Compute.BackendBuckets.Patch
+
+    -- ** compute.backendBuckets.update
+    , module Network.Google.Resource.Compute.BackendBuckets.Update
+
+    -- ** compute.backendServices.addSignedUrlKey
+    , module Network.Google.Resource.Compute.BackendServices.AddSignedURLKey
+
+    -- ** compute.backendServices.aggregatedList
+    , module Network.Google.Resource.Compute.BackendServices.AggregatedList
+
+    -- ** compute.backendServices.delete
+    , module Network.Google.Resource.Compute.BackendServices.Delete
+
+    -- ** compute.backendServices.deleteSignedUrlKey
+    , module Network.Google.Resource.Compute.BackendServices.DeleteSignedURLKey
+
+    -- ** compute.backendServices.get
+    , module Network.Google.Resource.Compute.BackendServices.Get
+
+    -- ** compute.backendServices.getHealth
+    , module Network.Google.Resource.Compute.BackendServices.GetHealth
+
+    -- ** compute.backendServices.insert
+    , module Network.Google.Resource.Compute.BackendServices.Insert
+
+    -- ** compute.backendServices.list
+    , module Network.Google.Resource.Compute.BackendServices.List
+
+    -- ** compute.backendServices.patch
+    , module Network.Google.Resource.Compute.BackendServices.Patch
+
+    -- ** compute.backendServices.setSecurityPolicy
+    , module Network.Google.Resource.Compute.BackendServices.SetSecurityPolicy
+
+    -- ** compute.backendServices.update
+    , module Network.Google.Resource.Compute.BackendServices.Update
+
+    -- ** compute.diskTypes.aggregatedList
+    , module Network.Google.Resource.Compute.DiskTypes.AggregatedList
+
+    -- ** compute.diskTypes.get
+    , module Network.Google.Resource.Compute.DiskTypes.Get
+
+    -- ** compute.diskTypes.list
+    , module Network.Google.Resource.Compute.DiskTypes.List
+
+    -- ** compute.disks.aggregatedList
+    , module Network.Google.Resource.Compute.Disks.AggregatedList
+
+    -- ** compute.disks.createSnapshot
+    , module Network.Google.Resource.Compute.Disks.CreateSnapshot
+
+    -- ** compute.disks.delete
+    , module Network.Google.Resource.Compute.Disks.Delete
+
+    -- ** compute.disks.get
+    , module Network.Google.Resource.Compute.Disks.Get
+
+    -- ** compute.disks.getIamPolicy
+    , module Network.Google.Resource.Compute.Disks.GetIAMPolicy
+
+    -- ** compute.disks.insert
+    , module Network.Google.Resource.Compute.Disks.Insert
+
+    -- ** compute.disks.list
+    , module Network.Google.Resource.Compute.Disks.List
+
+    -- ** compute.disks.resize
+    , module Network.Google.Resource.Compute.Disks.Resize
+
+    -- ** compute.disks.setIamPolicy
+    , module Network.Google.Resource.Compute.Disks.SetIAMPolicy
+
+    -- ** compute.disks.setLabels
+    , module Network.Google.Resource.Compute.Disks.SetLabels
+
+    -- ** compute.disks.testIamPermissions
+    , module Network.Google.Resource.Compute.Disks.TestIAMPermissions
+
+    -- ** compute.firewalls.delete
+    , module Network.Google.Resource.Compute.Firewalls.Delete
+
+    -- ** compute.firewalls.get
+    , module Network.Google.Resource.Compute.Firewalls.Get
+
+    -- ** compute.firewalls.insert
+    , module Network.Google.Resource.Compute.Firewalls.Insert
+
+    -- ** compute.firewalls.list
+    , module Network.Google.Resource.Compute.Firewalls.List
+
+    -- ** compute.firewalls.patch
+    , module Network.Google.Resource.Compute.Firewalls.Patch
+
+    -- ** compute.firewalls.update
+    , module Network.Google.Resource.Compute.Firewalls.Update
+
+    -- ** compute.forwardingRules.aggregatedList
+    , module Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+
+    -- ** compute.forwardingRules.delete
+    , module Network.Google.Resource.Compute.ForwardingRules.Delete
+
+    -- ** compute.forwardingRules.get
+    , module Network.Google.Resource.Compute.ForwardingRules.Get
+
+    -- ** compute.forwardingRules.insert
+    , module Network.Google.Resource.Compute.ForwardingRules.Insert
+
+    -- ** compute.forwardingRules.list
+    , module Network.Google.Resource.Compute.ForwardingRules.List
+
+    -- ** compute.forwardingRules.setTarget
+    , module Network.Google.Resource.Compute.ForwardingRules.SetTarget
+
+    -- ** compute.globalAddresses.delete
+    , module Network.Google.Resource.Compute.GlobalAddresses.Delete
+
+    -- ** compute.globalAddresses.get
+    , module Network.Google.Resource.Compute.GlobalAddresses.Get
+
+    -- ** compute.globalAddresses.insert
+    , module Network.Google.Resource.Compute.GlobalAddresses.Insert
+
+    -- ** compute.globalAddresses.list
+    , module Network.Google.Resource.Compute.GlobalAddresses.List
+
+    -- ** compute.globalForwardingRules.delete
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+
+    -- ** compute.globalForwardingRules.get
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Get
+
+    -- ** compute.globalForwardingRules.insert
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+
+    -- ** compute.globalForwardingRules.list
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.List
+
+    -- ** compute.globalForwardingRules.setTarget
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+
+    -- ** compute.globalOperations.aggregatedList
+    , module Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+
+    -- ** compute.globalOperations.delete
+    , module Network.Google.Resource.Compute.GlobalOperations.Delete
+
+    -- ** compute.globalOperations.get
+    , module Network.Google.Resource.Compute.GlobalOperations.Get
+
+    -- ** compute.globalOperations.list
+    , module Network.Google.Resource.Compute.GlobalOperations.List
+
+    -- ** compute.healthChecks.delete
+    , module Network.Google.Resource.Compute.HealthChecks.Delete
+
+    -- ** compute.healthChecks.get
+    , module Network.Google.Resource.Compute.HealthChecks.Get
+
+    -- ** compute.healthChecks.insert
+    , module Network.Google.Resource.Compute.HealthChecks.Insert
+
+    -- ** compute.healthChecks.list
+    , module Network.Google.Resource.Compute.HealthChecks.List
+
+    -- ** compute.healthChecks.patch
+    , module Network.Google.Resource.Compute.HealthChecks.Patch
+
+    -- ** compute.healthChecks.update
+    , module Network.Google.Resource.Compute.HealthChecks.Update
+
+    -- ** compute.httpHealthChecks.delete
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+
+    -- ** compute.httpHealthChecks.get
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Get
+
+    -- ** compute.httpHealthChecks.insert
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+
+    -- ** compute.httpHealthChecks.list
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.List
+
+    -- ** compute.httpHealthChecks.patch
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+
+    -- ** compute.httpHealthChecks.update
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Update
+
+    -- ** compute.httpsHealthChecks.delete
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+
+    -- ** compute.httpsHealthChecks.get
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+
+    -- ** compute.httpsHealthChecks.insert
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+
+    -- ** compute.httpsHealthChecks.list
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.List
+
+    -- ** compute.httpsHealthChecks.patch
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+
+    -- ** compute.httpsHealthChecks.update
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+
+    -- ** compute.images.delete
+    , module Network.Google.Resource.Compute.Images.Delete
+
+    -- ** compute.images.deprecate
+    , module Network.Google.Resource.Compute.Images.Deprecate
+
+    -- ** compute.images.get
+    , module Network.Google.Resource.Compute.Images.Get
+
+    -- ** compute.images.getFromFamily
+    , module Network.Google.Resource.Compute.Images.GetFromFamily
+
+    -- ** compute.images.getIamPolicy
+    , module Network.Google.Resource.Compute.Images.GetIAMPolicy
+
+    -- ** compute.images.insert
+    , module Network.Google.Resource.Compute.Images.Insert
+
+    -- ** compute.images.list
+    , module Network.Google.Resource.Compute.Images.List
+
+    -- ** compute.images.setIamPolicy
+    , module Network.Google.Resource.Compute.Images.SetIAMPolicy
+
+    -- ** compute.images.setLabels
+    , module Network.Google.Resource.Compute.Images.SetLabels
+
+    -- ** compute.images.testIamPermissions
+    , module Network.Google.Resource.Compute.Images.TestIAMPermissions
+
+    -- ** compute.instanceGroupManagers.abandonInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+
+    -- ** compute.instanceGroupManagers.aggregatedList
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+
+    -- ** compute.instanceGroupManagers.delete
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+
+    -- ** compute.instanceGroupManagers.deleteInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+
+    -- ** compute.instanceGroupManagers.get
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Get
+
+    -- ** compute.instanceGroupManagers.insert
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+
+    -- ** compute.instanceGroupManagers.list
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.List
+
+    -- ** compute.instanceGroupManagers.listManagedInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+
+    -- ** compute.instanceGroupManagers.patch
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Patch
+
+    -- ** compute.instanceGroupManagers.recreateInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+
+    -- ** compute.instanceGroupManagers.resize
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+
+    -- ** compute.instanceGroupManagers.setInstanceTemplate
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+
+    -- ** compute.instanceGroupManagers.setTargetPools
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+
+    -- ** compute.instanceGroups.addInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.AddInstances
+
+    -- ** compute.instanceGroups.aggregatedList
+    , module Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+
+    -- ** compute.instanceGroups.delete
+    , module Network.Google.Resource.Compute.InstanceGroups.Delete
+
+    -- ** compute.instanceGroups.get
+    , module Network.Google.Resource.Compute.InstanceGroups.Get
+
+    -- ** compute.instanceGroups.insert
+    , module Network.Google.Resource.Compute.InstanceGroups.Insert
+
+    -- ** compute.instanceGroups.list
+    , module Network.Google.Resource.Compute.InstanceGroups.List
+
+    -- ** compute.instanceGroups.listInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.ListInstances
+
+    -- ** compute.instanceGroups.removeInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+
+    -- ** compute.instanceGroups.setNamedPorts
+    , module Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+
+    -- ** compute.instanceTemplates.delete
+    , module Network.Google.Resource.Compute.InstanceTemplates.Delete
+
+    -- ** compute.instanceTemplates.get
+    , module Network.Google.Resource.Compute.InstanceTemplates.Get
+
+    -- ** compute.instanceTemplates.getIamPolicy
+    , module Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
+
+    -- ** compute.instanceTemplates.insert
+    , module Network.Google.Resource.Compute.InstanceTemplates.Insert
+
+    -- ** compute.instanceTemplates.list
+    , module Network.Google.Resource.Compute.InstanceTemplates.List
+
+    -- ** compute.instanceTemplates.setIamPolicy
+    , module Network.Google.Resource.Compute.InstanceTemplates.SetIAMPolicy
+
+    -- ** compute.instanceTemplates.testIamPermissions
+    , module Network.Google.Resource.Compute.InstanceTemplates.TestIAMPermissions
+
+    -- ** compute.instances.addAccessConfig
+    , module Network.Google.Resource.Compute.Instances.AddAccessConfig
+
+    -- ** compute.instances.aggregatedList
+    , module Network.Google.Resource.Compute.Instances.AggregatedList
+
+    -- ** compute.instances.attachDisk
+    , module Network.Google.Resource.Compute.Instances.AttachDisk
+
+    -- ** compute.instances.delete
+    , module Network.Google.Resource.Compute.Instances.Delete
+
+    -- ** compute.instances.deleteAccessConfig
+    , module Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+
+    -- ** compute.instances.detachDisk
+    , module Network.Google.Resource.Compute.Instances.DetachDisk
+
+    -- ** compute.instances.get
+    , module Network.Google.Resource.Compute.Instances.Get
+
+    -- ** compute.instances.getIamPolicy
+    , module Network.Google.Resource.Compute.Instances.GetIAMPolicy
+
+    -- ** compute.instances.getSerialPortOutput
+    , module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+
+    -- ** compute.instances.insert
+    , module Network.Google.Resource.Compute.Instances.Insert
+
+    -- ** compute.instances.list
+    , module Network.Google.Resource.Compute.Instances.List
+
+    -- ** compute.instances.listReferrers
+    , module Network.Google.Resource.Compute.Instances.ListReferrers
+
+    -- ** compute.instances.reset
+    , module Network.Google.Resource.Compute.Instances.Reset
+
+    -- ** compute.instances.setDeletionProtection
+    , module Network.Google.Resource.Compute.Instances.SetDeletionProtection
+
+    -- ** compute.instances.setDiskAutoDelete
+    , module Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+
+    -- ** compute.instances.setIamPolicy
+    , module Network.Google.Resource.Compute.Instances.SetIAMPolicy
+
+    -- ** compute.instances.setLabels
+    , module Network.Google.Resource.Compute.Instances.SetLabels
+
+    -- ** compute.instances.setMachineResources
+    , module Network.Google.Resource.Compute.Instances.SetMachineResources
+
+    -- ** compute.instances.setMachineType
+    , module Network.Google.Resource.Compute.Instances.SetMachineType
+
+    -- ** compute.instances.setMetadata
+    , module Network.Google.Resource.Compute.Instances.SetMetadata
+
+    -- ** compute.instances.setMinCpuPlatform
+    , module Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
+
+    -- ** compute.instances.setScheduling
+    , module Network.Google.Resource.Compute.Instances.SetScheduling
+
+    -- ** compute.instances.setServiceAccount
+    , module Network.Google.Resource.Compute.Instances.SetServiceAccount
+
+    -- ** compute.instances.setTags
+    , module Network.Google.Resource.Compute.Instances.SetTags
+
+    -- ** compute.instances.simulateMaintenanceEvent
+    , module Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
+
+    -- ** compute.instances.start
+    , module Network.Google.Resource.Compute.Instances.Start
+
+    -- ** compute.instances.startWithEncryptionKey
+    , module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
+
+    -- ** compute.instances.stop
+    , module Network.Google.Resource.Compute.Instances.Stop
+
+    -- ** compute.instances.testIamPermissions
+    , module Network.Google.Resource.Compute.Instances.TestIAMPermissions
+
+    -- ** compute.instances.updateAccessConfig
+    , module Network.Google.Resource.Compute.Instances.UpdateAccessConfig
+
+    -- ** compute.instances.updateNetworkInterface
+    , module Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
+
+    -- ** compute.interconnectAttachments.aggregatedList
+    , module Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
+
+    -- ** compute.interconnectAttachments.delete
+    , module Network.Google.Resource.Compute.InterconnectAttachments.Delete
+
+    -- ** compute.interconnectAttachments.get
+    , module Network.Google.Resource.Compute.InterconnectAttachments.Get
+
+    -- ** compute.interconnectAttachments.insert
+    , module Network.Google.Resource.Compute.InterconnectAttachments.Insert
+
+    -- ** compute.interconnectAttachments.list
+    , module Network.Google.Resource.Compute.InterconnectAttachments.List
+
+    -- ** compute.interconnectAttachments.patch
+    , module Network.Google.Resource.Compute.InterconnectAttachments.Patch
+
+    -- ** compute.interconnectLocations.get
+    , module Network.Google.Resource.Compute.InterconnectLocations.Get
+
+    -- ** compute.interconnectLocations.list
+    , module Network.Google.Resource.Compute.InterconnectLocations.List
+
+    -- ** compute.interconnects.delete
+    , module Network.Google.Resource.Compute.Interconnects.Delete
+
+    -- ** compute.interconnects.get
+    , module Network.Google.Resource.Compute.Interconnects.Get
+
+    -- ** compute.interconnects.getDiagnostics
+    , module Network.Google.Resource.Compute.Interconnects.GetDiagnostics
+
+    -- ** compute.interconnects.insert
+    , module Network.Google.Resource.Compute.Interconnects.Insert
+
+    -- ** compute.interconnects.list
+    , module Network.Google.Resource.Compute.Interconnects.List
+
+    -- ** compute.interconnects.patch
+    , module Network.Google.Resource.Compute.Interconnects.Patch
+
+    -- ** compute.licenseCodes.get
+    , module Network.Google.Resource.Compute.LicenseCodes.Get
+
+    -- ** compute.licenseCodes.testIamPermissions
+    , module Network.Google.Resource.Compute.LicenseCodes.TestIAMPermissions
+
+    -- ** compute.licenses.delete
+    , module Network.Google.Resource.Compute.Licenses.Delete
+
+    -- ** compute.licenses.get
+    , module Network.Google.Resource.Compute.Licenses.Get
+
+    -- ** compute.licenses.getIamPolicy
+    , module Network.Google.Resource.Compute.Licenses.GetIAMPolicy
+
+    -- ** compute.licenses.insert
+    , module Network.Google.Resource.Compute.Licenses.Insert
+
+    -- ** compute.licenses.list
+    , module Network.Google.Resource.Compute.Licenses.List
+
+    -- ** compute.licenses.setIamPolicy
+    , module Network.Google.Resource.Compute.Licenses.SetIAMPolicy
+
+    -- ** compute.licenses.testIamPermissions
+    , module Network.Google.Resource.Compute.Licenses.TestIAMPermissions
+
+    -- ** compute.machineTypes.aggregatedList
+    , module Network.Google.Resource.Compute.MachineTypes.AggregatedList
+
+    -- ** compute.machineTypes.get
+    , module Network.Google.Resource.Compute.MachineTypes.Get
+
+    -- ** compute.machineTypes.list
+    , module Network.Google.Resource.Compute.MachineTypes.List
+
+    -- ** compute.networks.addPeering
+    , module Network.Google.Resource.Compute.Networks.AddPeering
+
+    -- ** compute.networks.delete
+    , module Network.Google.Resource.Compute.Networks.Delete
+
+    -- ** compute.networks.get
+    , module Network.Google.Resource.Compute.Networks.Get
+
+    -- ** compute.networks.insert
+    , module Network.Google.Resource.Compute.Networks.Insert
+
+    -- ** compute.networks.list
+    , module Network.Google.Resource.Compute.Networks.List
+
+    -- ** compute.networks.patch
+    , module Network.Google.Resource.Compute.Networks.Patch
+
+    -- ** compute.networks.removePeering
+    , module Network.Google.Resource.Compute.Networks.RemovePeering
+
+    -- ** compute.networks.switchToCustomMode
+    , module Network.Google.Resource.Compute.Networks.SwitchToCustomMode
+
+    -- ** compute.nodeGroups.addNodes
+    , module Network.Google.Resource.Compute.NodeGroups.AddNodes
+
+    -- ** compute.nodeGroups.aggregatedList
+    , module Network.Google.Resource.Compute.NodeGroups.AggregatedList
+
+    -- ** compute.nodeGroups.delete
+    , module Network.Google.Resource.Compute.NodeGroups.Delete
+
+    -- ** compute.nodeGroups.deleteNodes
+    , module Network.Google.Resource.Compute.NodeGroups.DeleteNodes
+
+    -- ** compute.nodeGroups.get
+    , module Network.Google.Resource.Compute.NodeGroups.Get
+
+    -- ** compute.nodeGroups.getIamPolicy
+    , module Network.Google.Resource.Compute.NodeGroups.GetIAMPolicy
+
+    -- ** compute.nodeGroups.insert
+    , module Network.Google.Resource.Compute.NodeGroups.Insert
+
+    -- ** compute.nodeGroups.list
+    , module Network.Google.Resource.Compute.NodeGroups.List
+
+    -- ** compute.nodeGroups.listNodes
+    , module Network.Google.Resource.Compute.NodeGroups.ListNodes
+
+    -- ** compute.nodeGroups.setIamPolicy
+    , module Network.Google.Resource.Compute.NodeGroups.SetIAMPolicy
+
+    -- ** compute.nodeGroups.setNodeTemplate
+    , module Network.Google.Resource.Compute.NodeGroups.SetNodeTemplate
+
+    -- ** compute.nodeGroups.testIamPermissions
+    , module Network.Google.Resource.Compute.NodeGroups.TestIAMPermissions
+
+    -- ** compute.nodeTemplates.aggregatedList
+    , module Network.Google.Resource.Compute.NodeTemplates.AggregatedList
+
+    -- ** compute.nodeTemplates.delete
+    , module Network.Google.Resource.Compute.NodeTemplates.Delete
+
+    -- ** compute.nodeTemplates.get
+    , module Network.Google.Resource.Compute.NodeTemplates.Get
+
+    -- ** compute.nodeTemplates.getIamPolicy
+    , module Network.Google.Resource.Compute.NodeTemplates.GetIAMPolicy
+
+    -- ** compute.nodeTemplates.insert
+    , module Network.Google.Resource.Compute.NodeTemplates.Insert
+
+    -- ** compute.nodeTemplates.list
+    , module Network.Google.Resource.Compute.NodeTemplates.List
+
+    -- ** compute.nodeTemplates.setIamPolicy
+    , module Network.Google.Resource.Compute.NodeTemplates.SetIAMPolicy
+
+    -- ** compute.nodeTemplates.testIamPermissions
+    , module Network.Google.Resource.Compute.NodeTemplates.TestIAMPermissions
+
+    -- ** compute.nodeTypes.aggregatedList
+    , module Network.Google.Resource.Compute.NodeTypes.AggregatedList
+
+    -- ** compute.nodeTypes.get
+    , module Network.Google.Resource.Compute.NodeTypes.Get
+
+    -- ** compute.nodeTypes.list
+    , module Network.Google.Resource.Compute.NodeTypes.List
+
+    -- ** compute.projects.disableXpnHost
+    , module Network.Google.Resource.Compute.Projects.DisableXpnHost
+
+    -- ** compute.projects.disableXpnResource
+    , module Network.Google.Resource.Compute.Projects.DisableXpnResource
+
+    -- ** compute.projects.enableXpnHost
+    , module Network.Google.Resource.Compute.Projects.EnableXpnHost
+
+    -- ** compute.projects.enableXpnResource
+    , module Network.Google.Resource.Compute.Projects.EnableXpnResource
+
+    -- ** compute.projects.get
+    , module Network.Google.Resource.Compute.Projects.Get
+
+    -- ** compute.projects.getXpnHost
+    , module Network.Google.Resource.Compute.Projects.GetXpnHost
+
+    -- ** compute.projects.getXpnResources
+    , module Network.Google.Resource.Compute.Projects.GetXpnResources
+
+    -- ** compute.projects.listXpnHosts
+    , module Network.Google.Resource.Compute.Projects.ListXpnHosts
+
+    -- ** compute.projects.moveDisk
+    , module Network.Google.Resource.Compute.Projects.MoveDisk
+
+    -- ** compute.projects.moveInstance
+    , module Network.Google.Resource.Compute.Projects.MoveInstance
+
+    -- ** compute.projects.setCommonInstanceMetadata
+    , module Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+
+    -- ** compute.projects.setDefaultNetworkTier
+    , module Network.Google.Resource.Compute.Projects.SetDefaultNetworkTier
+
+    -- ** compute.projects.setUsageExportBucket
+    , module Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+
+    -- ** compute.regionAutoscalers.delete
+    , module Network.Google.Resource.Compute.RegionAutoscalers.Delete
+
+    -- ** compute.regionAutoscalers.get
+    , module Network.Google.Resource.Compute.RegionAutoscalers.Get
+
+    -- ** compute.regionAutoscalers.insert
+    , module Network.Google.Resource.Compute.RegionAutoscalers.Insert
+
+    -- ** compute.regionAutoscalers.list
+    , module Network.Google.Resource.Compute.RegionAutoscalers.List
+
+    -- ** compute.regionAutoscalers.patch
+    , module Network.Google.Resource.Compute.RegionAutoscalers.Patch
+
+    -- ** compute.regionAutoscalers.update
+    , module Network.Google.Resource.Compute.RegionAutoscalers.Update
+
+    -- ** compute.regionBackendServices.delete
+    , module Network.Google.Resource.Compute.RegionBackendServices.Delete
+
+    -- ** compute.regionBackendServices.get
+    , module Network.Google.Resource.Compute.RegionBackendServices.Get
+
+    -- ** compute.regionBackendServices.getHealth
+    , module Network.Google.Resource.Compute.RegionBackendServices.GetHealth
+
+    -- ** compute.regionBackendServices.insert
+    , module Network.Google.Resource.Compute.RegionBackendServices.Insert
+
+    -- ** compute.regionBackendServices.list
+    , module Network.Google.Resource.Compute.RegionBackendServices.List
+
+    -- ** compute.regionBackendServices.patch
+    , module Network.Google.Resource.Compute.RegionBackendServices.Patch
+
+    -- ** compute.regionBackendServices.update
+    , module Network.Google.Resource.Compute.RegionBackendServices.Update
+
+    -- ** compute.regionCommitments.aggregatedList
+    , module Network.Google.Resource.Compute.RegionCommitments.AggregatedList
+
+    -- ** compute.regionCommitments.get
+    , module Network.Google.Resource.Compute.RegionCommitments.Get
+
+    -- ** compute.regionCommitments.insert
+    , module Network.Google.Resource.Compute.RegionCommitments.Insert
+
+    -- ** compute.regionCommitments.list
+    , module Network.Google.Resource.Compute.RegionCommitments.List
+
+    -- ** compute.regionDiskTypes.get
+    , module Network.Google.Resource.Compute.RegionDiskTypes.Get
+
+    -- ** compute.regionDiskTypes.list
+    , module Network.Google.Resource.Compute.RegionDiskTypes.List
+
+    -- ** compute.regionDisks.createSnapshot
+    , module Network.Google.Resource.Compute.RegionDisks.CreateSnapshot
+
+    -- ** compute.regionDisks.delete
+    , module Network.Google.Resource.Compute.RegionDisks.Delete
+
+    -- ** compute.regionDisks.get
+    , module Network.Google.Resource.Compute.RegionDisks.Get
+
+    -- ** compute.regionDisks.insert
+    , module Network.Google.Resource.Compute.RegionDisks.Insert
+
+    -- ** compute.regionDisks.list
+    , module Network.Google.Resource.Compute.RegionDisks.List
+
+    -- ** compute.regionDisks.resize
+    , module Network.Google.Resource.Compute.RegionDisks.Resize
+
+    -- ** compute.regionDisks.setLabels
+    , module Network.Google.Resource.Compute.RegionDisks.SetLabels
+
+    -- ** compute.regionDisks.testIamPermissions
+    , module Network.Google.Resource.Compute.RegionDisks.TestIAMPermissions
+
+    -- ** compute.regionInstanceGroupManagers.abandonInstances
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
+
+    -- ** compute.regionInstanceGroupManagers.delete
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete
+
+    -- ** compute.regionInstanceGroupManagers.deleteInstances
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
+
+    -- ** compute.regionInstanceGroupManagers.get
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get
+
+    -- ** compute.regionInstanceGroupManagers.insert
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
+
+    -- ** compute.regionInstanceGroupManagers.list
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.List
+
+    -- ** compute.regionInstanceGroupManagers.listManagedInstances
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances
+
+    -- ** compute.regionInstanceGroupManagers.patch
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Patch
+
+    -- ** compute.regionInstanceGroupManagers.recreateInstances
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
+
+    -- ** compute.regionInstanceGroupManagers.resize
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
+
+    -- ** compute.regionInstanceGroupManagers.setInstanceTemplate
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate
+
+    -- ** compute.regionInstanceGroupManagers.setTargetPools
+    , module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools
+
+    -- ** compute.regionInstanceGroups.get
+    , module Network.Google.Resource.Compute.RegionInstanceGroups.Get
+
+    -- ** compute.regionInstanceGroups.list
+    , module Network.Google.Resource.Compute.RegionInstanceGroups.List
+
+    -- ** compute.regionInstanceGroups.listInstances
+    , module Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances
+
+    -- ** compute.regionInstanceGroups.setNamedPorts
+    , module Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts
+
+    -- ** compute.regionOperations.delete
+    , module Network.Google.Resource.Compute.RegionOperations.Delete
+
+    -- ** compute.regionOperations.get
+    , module Network.Google.Resource.Compute.RegionOperations.Get
+
+    -- ** compute.regionOperations.list
+    , module Network.Google.Resource.Compute.RegionOperations.List
+
+    -- ** compute.regions.get
+    , module Network.Google.Resource.Compute.Regions.Get
+
+    -- ** compute.regions.list
+    , module Network.Google.Resource.Compute.Regions.List
+
+    -- ** compute.routers.aggregatedList
+    , module Network.Google.Resource.Compute.Routers.AggregatedList
+
+    -- ** compute.routers.delete
+    , module Network.Google.Resource.Compute.Routers.Delete
+
+    -- ** compute.routers.get
+    , module Network.Google.Resource.Compute.Routers.Get
+
+    -- ** compute.routers.getNatMappingInfo
+    , module Network.Google.Resource.Compute.Routers.GetNATMAppingInfo
+
+    -- ** compute.routers.getRouterStatus
+    , module Network.Google.Resource.Compute.Routers.GetRouterStatus
+
+    -- ** compute.routers.insert
+    , module Network.Google.Resource.Compute.Routers.Insert
+
+    -- ** compute.routers.list
+    , module Network.Google.Resource.Compute.Routers.List
+
+    -- ** compute.routers.patch
+    , module Network.Google.Resource.Compute.Routers.Patch
+
+    -- ** compute.routers.preview
+    , module Network.Google.Resource.Compute.Routers.Preview
+
+    -- ** compute.routers.update
+    , module Network.Google.Resource.Compute.Routers.Update
+
+    -- ** compute.routes.delete
+    , module Network.Google.Resource.Compute.Routes.Delete
+
+    -- ** compute.routes.get
+    , module Network.Google.Resource.Compute.Routes.Get
+
+    -- ** compute.routes.insert
+    , module Network.Google.Resource.Compute.Routes.Insert
+
+    -- ** compute.routes.list
+    , module Network.Google.Resource.Compute.Routes.List
+
+    -- ** compute.securityPolicies.addRule
+    , module Network.Google.Resource.Compute.SecurityPolicies.AddRule
+
+    -- ** compute.securityPolicies.delete
+    , module Network.Google.Resource.Compute.SecurityPolicies.Delete
+
+    -- ** compute.securityPolicies.get
+    , module Network.Google.Resource.Compute.SecurityPolicies.Get
+
+    -- ** compute.securityPolicies.getRule
+    , module Network.Google.Resource.Compute.SecurityPolicies.GetRule
+
+    -- ** compute.securityPolicies.insert
+    , module Network.Google.Resource.Compute.SecurityPolicies.Insert
+
+    -- ** compute.securityPolicies.list
+    , module Network.Google.Resource.Compute.SecurityPolicies.List
+
+    -- ** compute.securityPolicies.patch
+    , module Network.Google.Resource.Compute.SecurityPolicies.Patch
+
+    -- ** compute.securityPolicies.patchRule
+    , module Network.Google.Resource.Compute.SecurityPolicies.PatchRule
+
+    -- ** compute.securityPolicies.removeRule
+    , module Network.Google.Resource.Compute.SecurityPolicies.RemoveRule
+
+    -- ** compute.snapshots.delete
+    , module Network.Google.Resource.Compute.Snapshots.Delete
+
+    -- ** compute.snapshots.get
+    , module Network.Google.Resource.Compute.Snapshots.Get
+
+    -- ** compute.snapshots.getIamPolicy
+    , module Network.Google.Resource.Compute.Snapshots.GetIAMPolicy
+
+    -- ** compute.snapshots.list
+    , module Network.Google.Resource.Compute.Snapshots.List
+
+    -- ** compute.snapshots.setIamPolicy
+    , module Network.Google.Resource.Compute.Snapshots.SetIAMPolicy
+
+    -- ** compute.snapshots.setLabels
+    , module Network.Google.Resource.Compute.Snapshots.SetLabels
+
+    -- ** compute.snapshots.testIamPermissions
+    , module Network.Google.Resource.Compute.Snapshots.TestIAMPermissions
+
+    -- ** compute.sslCertificates.delete
+    , module Network.Google.Resource.Compute.SSLCertificates.Delete
+
+    -- ** compute.sslCertificates.get
+    , module Network.Google.Resource.Compute.SSLCertificates.Get
+
+    -- ** compute.sslCertificates.insert
+    , module Network.Google.Resource.Compute.SSLCertificates.Insert
+
+    -- ** compute.sslCertificates.list
+    , module Network.Google.Resource.Compute.SSLCertificates.List
+
+    -- ** compute.sslPolicies.delete
+    , module Network.Google.Resource.Compute.SSLPolicies.Delete
+
+    -- ** compute.sslPolicies.get
+    , module Network.Google.Resource.Compute.SSLPolicies.Get
+
+    -- ** compute.sslPolicies.insert
+    , module Network.Google.Resource.Compute.SSLPolicies.Insert
+
+    -- ** compute.sslPolicies.list
+    , module Network.Google.Resource.Compute.SSLPolicies.List
+
+    -- ** compute.sslPolicies.listAvailableFeatures
+    , module Network.Google.Resource.Compute.SSLPolicies.ListAvailableFeatures
+
+    -- ** compute.sslPolicies.patch
+    , module Network.Google.Resource.Compute.SSLPolicies.Patch
+
+    -- ** compute.subnetworks.aggregatedList
+    , module Network.Google.Resource.Compute.Subnetworks.AggregatedList
+
+    -- ** compute.subnetworks.delete
+    , module Network.Google.Resource.Compute.Subnetworks.Delete
+
+    -- ** compute.subnetworks.expandIpCidrRange
+    , module Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange
+
+    -- ** compute.subnetworks.get
+    , module Network.Google.Resource.Compute.Subnetworks.Get
+
+    -- ** compute.subnetworks.getIamPolicy
+    , module Network.Google.Resource.Compute.Subnetworks.GetIAMPolicy
+
+    -- ** compute.subnetworks.insert
+    , module Network.Google.Resource.Compute.Subnetworks.Insert
+
+    -- ** compute.subnetworks.list
+    , module Network.Google.Resource.Compute.Subnetworks.List
+
+    -- ** compute.subnetworks.listUsable
+    , module Network.Google.Resource.Compute.Subnetworks.ListUsable
+
+    -- ** compute.subnetworks.patch
+    , module Network.Google.Resource.Compute.Subnetworks.Patch
+
+    -- ** compute.subnetworks.setIamPolicy
+    , module Network.Google.Resource.Compute.Subnetworks.SetIAMPolicy
+
+    -- ** compute.subnetworks.setPrivateIpGoogleAccess
+    , module Network.Google.Resource.Compute.Subnetworks.SetPrivateIPGoogleAccess
+
+    -- ** compute.subnetworks.testIamPermissions
+    , module Network.Google.Resource.Compute.Subnetworks.TestIAMPermissions
+
+    -- ** compute.targetHttpProxies.delete
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+
+    -- ** compute.targetHttpProxies.get
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Get
+
+    -- ** compute.targetHttpProxies.insert
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+
+    -- ** compute.targetHttpProxies.list
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.List
+
+    -- ** compute.targetHttpProxies.setUrlMap
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+
+    -- ** compute.targetHttpsProxies.delete
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+
+    -- ** compute.targetHttpsProxies.get
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+
+    -- ** compute.targetHttpsProxies.insert
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+
+    -- ** compute.targetHttpsProxies.list
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.List
+
+    -- ** compute.targetHttpsProxies.setQuicOverride
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetQuicOverride
+
+    -- ** compute.targetHttpsProxies.setSslCertificates
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+
+    -- ** compute.targetHttpsProxies.setSslPolicy
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLPolicy
+
+    -- ** compute.targetHttpsProxies.setUrlMap
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+
+    -- ** compute.targetInstances.aggregatedList
+    , module Network.Google.Resource.Compute.TargetInstances.AggregatedList
+
+    -- ** compute.targetInstances.delete
+    , module Network.Google.Resource.Compute.TargetInstances.Delete
+
+    -- ** compute.targetInstances.get
+    , module Network.Google.Resource.Compute.TargetInstances.Get
+
+    -- ** compute.targetInstances.insert
+    , module Network.Google.Resource.Compute.TargetInstances.Insert
+
+    -- ** compute.targetInstances.list
+    , module Network.Google.Resource.Compute.TargetInstances.List
+
+    -- ** compute.targetPools.addHealthCheck
+    , module Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+
+    -- ** compute.targetPools.addInstance
+    , module Network.Google.Resource.Compute.TargetPools.AddInstance
+
+    -- ** compute.targetPools.aggregatedList
+    , module Network.Google.Resource.Compute.TargetPools.AggregatedList
+
+    -- ** compute.targetPools.delete
+    , module Network.Google.Resource.Compute.TargetPools.Delete
+
+    -- ** compute.targetPools.get
+    , module Network.Google.Resource.Compute.TargetPools.Get
+
+    -- ** compute.targetPools.getHealth
+    , module Network.Google.Resource.Compute.TargetPools.GetHealth
+
+    -- ** compute.targetPools.insert
+    , module Network.Google.Resource.Compute.TargetPools.Insert
+
+    -- ** compute.targetPools.list
+    , module Network.Google.Resource.Compute.TargetPools.List
+
+    -- ** compute.targetPools.removeHealthCheck
+    , module Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+
+    -- ** compute.targetPools.removeInstance
+    , module Network.Google.Resource.Compute.TargetPools.RemoveInstance
+
+    -- ** compute.targetPools.setBackup
+    , module Network.Google.Resource.Compute.TargetPools.SetBackup
+
+    -- ** compute.targetSslProxies.delete
+    , module Network.Google.Resource.Compute.TargetSSLProxies.Delete
+
+    -- ** compute.targetSslProxies.get
+    , module Network.Google.Resource.Compute.TargetSSLProxies.Get
+
+    -- ** compute.targetSslProxies.insert
+    , module Network.Google.Resource.Compute.TargetSSLProxies.Insert
+
+    -- ** compute.targetSslProxies.list
+    , module Network.Google.Resource.Compute.TargetSSLProxies.List
+
+    -- ** compute.targetSslProxies.setBackendService
+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService
+
+    -- ** compute.targetSslProxies.setProxyHeader
+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader
+
+    -- ** compute.targetSslProxies.setSslCertificates
+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates
+
+    -- ** compute.targetSslProxies.setSslPolicy
+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLPolicy
+
+    -- ** compute.targetTcpProxies.delete
+    , module Network.Google.Resource.Compute.TargetTCPProxies.Delete
+
+    -- ** compute.targetTcpProxies.get
+    , module Network.Google.Resource.Compute.TargetTCPProxies.Get
+
+    -- ** compute.targetTcpProxies.insert
+    , module Network.Google.Resource.Compute.TargetTCPProxies.Insert
+
+    -- ** compute.targetTcpProxies.list
+    , module Network.Google.Resource.Compute.TargetTCPProxies.List
+
+    -- ** compute.targetTcpProxies.setBackendService
+    , module Network.Google.Resource.Compute.TargetTCPProxies.SetBackendService
+
+    -- ** compute.targetTcpProxies.setProxyHeader
+    , module Network.Google.Resource.Compute.TargetTCPProxies.SetProxyHeader
+
+    -- ** compute.targetVpnGateways.aggregatedList
+    , module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+
+    -- ** compute.targetVpnGateways.delete
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Delete
+
+    -- ** compute.targetVpnGateways.get
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Get
+
+    -- ** compute.targetVpnGateways.insert
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Insert
+
+    -- ** compute.targetVpnGateways.list
+    , module Network.Google.Resource.Compute.TargetVPNGateways.List
+
+    -- ** compute.urlMaps.delete
+    , module Network.Google.Resource.Compute.URLMaps.Delete
+
+    -- ** compute.urlMaps.get
+    , module Network.Google.Resource.Compute.URLMaps.Get
+
+    -- ** compute.urlMaps.insert
+    , module Network.Google.Resource.Compute.URLMaps.Insert
+
+    -- ** compute.urlMaps.invalidateCache
+    , module Network.Google.Resource.Compute.URLMaps.InvalidateCache
+
+    -- ** compute.urlMaps.list
+    , module Network.Google.Resource.Compute.URLMaps.List
+
+    -- ** compute.urlMaps.patch
+    , module Network.Google.Resource.Compute.URLMaps.Patch
+
+    -- ** compute.urlMaps.update
+    , module Network.Google.Resource.Compute.URLMaps.Update
+
+    -- ** compute.urlMaps.validate
+    , module Network.Google.Resource.Compute.URLMaps.Validate
+
+    -- ** compute.vpnTunnels.aggregatedList
+    , module Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+
+    -- ** compute.vpnTunnels.delete
+    , module Network.Google.Resource.Compute.VPNTunnels.Delete
+
+    -- ** compute.vpnTunnels.get
+    , module Network.Google.Resource.Compute.VPNTunnels.Get
+
+    -- ** compute.vpnTunnels.insert
+    , module Network.Google.Resource.Compute.VPNTunnels.Insert
+
+    -- ** compute.vpnTunnels.list
+    , module Network.Google.Resource.Compute.VPNTunnels.List
+
+    -- ** compute.zoneOperations.delete
+    , module Network.Google.Resource.Compute.ZoneOperations.Delete
+
+    -- ** compute.zoneOperations.get
+    , module Network.Google.Resource.Compute.ZoneOperations.Get
+
+    -- ** compute.zoneOperations.list
+    , module Network.Google.Resource.Compute.ZoneOperations.List
+
+    -- ** compute.zones.get
+    , module Network.Google.Resource.Compute.Zones.Get
+
+    -- ** compute.zones.list
+    , module Network.Google.Resource.Compute.Zones.List
+
+    -- * Types
+
+    -- ** HTTPSHealthCheckListWarningCode
+    , HTTPSHealthCheckListWarningCode (..)
+
+    -- ** InstanceAggregatedListWarning
+    , InstanceAggregatedListWarning
+    , instanceAggregatedListWarning
+    , ialwData
+    , ialwCode
+    , ialwMessage
+
+    -- ** TargetHTTPSProxyList
+    , TargetHTTPSProxyList
+    , targetHTTPSProxyList
+    , thplNextPageToken
+    , thplKind
+    , thplItems
+    , thplSelfLink
+    , thplWarning
+    , thplId
+
+    -- ** RoutersScopedList
+    , RoutersScopedList
+    , routersScopedList
+    , rslRouters
+    , rslWarning
+
+    -- ** RouterStatusResponse
+    , RouterStatusResponse
+    , routerStatusResponse
+    , rsrKind
+    , rsrResult
+
+    -- ** RegionInstanceGroupManagersDeleteInstancesRequest
+    , RegionInstanceGroupManagersDeleteInstancesRequest
+    , regionInstanceGroupManagersDeleteInstancesRequest
+    , rigmdirInstances
+
+    -- ** InterconnectDiagnosticsLinkLACPStatus
+    , InterconnectDiagnosticsLinkLACPStatus
+    , interconnectDiagnosticsLinkLACPStatus
+    , idllacpsState
+    , idllacpsNeighborSystemId
+    , idllacpsGoogleSystemId
+
+    -- ** InterconnectAttachmentState
+    , InterconnectAttachmentState (..)
+
+    -- ** AddressesScopedList
+    , AddressesScopedList
+    , addressesScopedList
+    , aslAddresses
+    , aslWarning
+
+    -- ** OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- ** SchedulingOnHostMaintenance
+    , SchedulingOnHostMaintenance (..)
+
+    -- ** RegionInstanceGroupsListInstancesRequest
+    , RegionInstanceGroupsListInstancesRequest
+    , regionInstanceGroupsListInstancesRequest
+    , riglirInstanceState
+    , riglirPortName
+
+    -- ** BackendServiceAggregatedListWarning
+    , BackendServiceAggregatedListWarning
+    , backendServiceAggregatedListWarning
+    , bsalwData
+    , bsalwCode
+    , bsalwMessage
+
+    -- ** SSLPolicy
+    , SSLPolicy
+    , sslPolicy
+    , spKind
+    , spFingerprint
+    , spProFile
+    , spWarnings
+    , spCustomFeatures
+    , spSelfLink
+    , spName
+    , spCreationTimestamp
+    , spEnabledFeatures
+    , spId
+    , spMinTLSVersion
+    , spDescription
+
+    -- ** AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
+
+    -- ** BackendServiceListWarningDataItem
+    , BackendServiceListWarningDataItem
+    , backendServiceListWarningDataItem
+    , bslwdiValue
+    , bslwdiKey
+
+    -- ** FirewallDeniedItem
+    , FirewallDeniedItem
+    , firewallDeniedItem
+    , fdiIPProtocol
+    , fdiPorts
+
+    -- ** InstanceGroupManagersAbandonInstancesRequest
+    , InstanceGroupManagersAbandonInstancesRequest
+    , instanceGroupManagersAbandonInstancesRequest
+    , igmairInstances
+
+    -- ** MachineTypeAggregatedListItems
+    , MachineTypeAggregatedListItems
+    , machineTypeAggregatedListItems
+    , mtaliAddtional
+
+    -- ** BackendServiceListWarningCode
+    , BackendServiceListWarningCode (..)
+
+    -- ** DiskTypeAggregatedListItems
+    , DiskTypeAggregatedListItems
+    , diskTypeAggregatedListItems
+    , dtaliAddtional
+
+    -- ** InstancesSetLabelsRequest
+    , InstancesSetLabelsRequest
+    , instancesSetLabelsRequest
+    , islrLabels
+    , islrLabelFingerprint
+
+    -- ** RouterAggregatedList
+    , RouterAggregatedList
+    , routerAggregatedList
+    , ralNextPageToken
+    , ralKind
+    , ralItems
+    , ralSelfLink
+    , ralWarning
+    , ralId
+
+    -- ** FirewallList
+    , FirewallList
+    , firewallList
+    , flNextPageToken
+    , flKind
+    , flItems
+    , flSelfLink
+    , flWarning
+    , flId
+
+    -- ** InstancesScopedListWarning
+    , InstancesScopedListWarning
+    , instancesScopedListWarning
+    , islwData
+    , islwCode
+    , islwMessage
+
+    -- ** RegionInstanceGroupManagersRecreateRequest
+    , RegionInstanceGroupManagersRecreateRequest
+    , regionInstanceGroupManagersRecreateRequest
+    , rigmrrInstances
+
+    -- ** InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- ** InstanceListWarningCode
+    , InstanceListWarningCode (..)
+
+    -- ** TargetHTTPSProxyQuicOverride
+    , TargetHTTPSProxyQuicOverride (..)
+
+    -- ** BackendServicesScopedListWarning
+    , BackendServicesScopedListWarning
+    , backendServicesScopedListWarning
+    , bsslwData
+    , bsslwCode
+    , bsslwMessage
+
+    -- ** SecurityPolicyRuleMatcher
+    , SecurityPolicyRuleMatcher
+    , securityPolicyRuleMatcher
+    , sprmVersionedExpr
+    , sprmConfig
+
+    -- ** InstanceGroupList
+    , InstanceGroupList
+    , instanceGroupList
+    , iglNextPageToken
+    , iglKind
+    , iglItems
+    , iglSelfLink
+    , iglWarning
+    , iglId
+
+    -- ** InstancesSetMachineTypeRequest
+    , InstancesSetMachineTypeRequest
+    , instancesSetMachineTypeRequest
+    , ismtrMachineType
+
+    -- ** VMEndpointNATMAppings
+    , VMEndpointNATMAppings
+    , vMEndpointNATMAppings
+    , vmenatmaInstanceName
+    , vmenatmaInterfaceNATMAppings
+
+    -- ** CustomerEncryptionKey
+    , CustomerEncryptionKey
+    , customerEncryptionKey
+    , cekKmsKeyName
+    , cekSha256
+    , cekRawKey
+
+    -- ** AutoscalerAggregatedListItems
+    , AutoscalerAggregatedListItems
+    , autoscalerAggregatedListItems
+    , aaliAddtional
+
+    -- ** InstanceListWarningDataItem
+    , InstanceListWarningDataItem
+    , instanceListWarningDataItem
+    , ilwdiValue
+    , ilwdiKey
+
+    -- ** InstanceGroupManagersSetInstanceTemplateRequest
+    , InstanceGroupManagersSetInstanceTemplateRequest
+    , instanceGroupManagersSetInstanceTemplateRequest
+    , igmsitrInstanceTemplate
+
+    -- ** RouterNATNATIPAllocateOption
+    , RouterNATNATIPAllocateOption (..)
+
+    -- ** DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- ** HTTPSHealthCheckListWarningDataItem
+    , HTTPSHealthCheckListWarningDataItem
+    , httpsHealthCheckListWarningDataItem
+    , hhclwdiValue
+    , hhclwdiKey
+
+    -- ** OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- ** Snapshot
+    , Snapshot
+    , snapshot
+    , sStorageBytesStatus
+    , sStatus
+    , sDiskSizeGb
+    , sSourceDiskId
+    , sKind
+    , sSourceDiskEncryptionKey
+    , sStorageBytes
+    , sSelfLink
+    , sSnapshotEncryptionKey
+    , sName
+    , sCreationTimestamp
+    , sLicenseCodes
+    , sId
+    , sLabels
+    , sLicenses
+    , sSourceDisk
+    , sLabelFingerprint
+    , sDescription
+
+    -- ** RouterStatus
+    , RouterStatus
+    , routerStatus
+    , rsBestRoutesForRouter
+    , rsBGPPeerStatus
+    , rsNetwork
+    , rsNATStatus
+    , rsBestRoutes
+
+    -- ** AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- ** NodeGroupAggregatedListWarningCode
+    , NodeGroupAggregatedListWarningCode (..)
+
+    -- ** ForwardingRuleList
+    , ForwardingRuleList
+    , forwardingRuleList
+    , frlNextPageToken
+    , frlKind
+    , frlItems
+    , frlSelfLink
+    , frlWarning
+    , frlId
+
+    -- ** NodeGroup
+    , NodeGroup
+    , nodeGroup
+    , ngStatus
+    , ngSize
+    , ngKind
+    , ngZone
+    , ngSelfLink
+    , ngName
+    , ngCreationTimestamp
+    , ngId
+    , ngNodeTemplate
+    , ngDescription
+
+    -- ** VPNTunnelsScopedList
+    , VPNTunnelsScopedList
+    , vpnTunnelsScopedList
+    , vtslVPNTunnels
+    , vtslWarning
+
+    -- ** SubnetworkSecondaryRange
+    , SubnetworkSecondaryRange
+    , subnetworkSecondaryRange
+    , ssrRangeName
+    , ssrIPCIdRRange
+
+    -- ** NodeTypesScopedList
+    , NodeTypesScopedList
+    , nodeTypesScopedList
+    , ntslNodeTypes
+    , ntslWarning
+
+    -- ** BackendServiceProtocol
+    , BackendServiceProtocol (..)
+
+    -- ** RegionInstanceGroupsListInstancesWarning
+    , RegionInstanceGroupsListInstancesWarning
+    , regionInstanceGroupsListInstancesWarning
+    , rigliwData
+    , rigliwCode
+    , rigliwMessage
+
+    -- ** AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+    , acExemptedMembers
+
+    -- ** BackendBucketListWarningCode
+    , BackendBucketListWarningCode (..)
+
+    -- ** AcceleratorTypeAggregatedListWarningDataItem
+    , AcceleratorTypeAggregatedListWarningDataItem
+    , acceleratorTypeAggregatedListWarningDataItem
+    , atalwdiValue
+    , atalwdiKey
+
+    -- ** InstanceGroupsSetNamedPortsRequest
+    , InstanceGroupsSetNamedPortsRequest
+    , instanceGroupsSetNamedPortsRequest
+    , igsnprFingerprint
+    , igsnprNamedPorts
+
+    -- ** AcceleratorTypesScopedListWarningCode
+    , AcceleratorTypesScopedListWarningCode (..)
+
+    -- ** NodeTemplateNodeAffinityLabels
+    , NodeTemplateNodeAffinityLabels
+    , nodeTemplateNodeAffinityLabels
+    , ntnalAddtional
+
+    -- ** OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olWarning
+    , olId
+
+    -- ** NodeGroupListWarning
+    , NodeGroupListWarning
+    , nodeGroupListWarning
+    , nglwData
+    , nglwCode
+    , nglwMessage
+
+    -- ** DiskList
+    , DiskList
+    , diskList
+    , dlNextPageToken
+    , dlKind
+    , dlItems
+    , dlSelfLink
+    , dlWarning
+    , dlId
+
+    -- ** NodeGroupsScopedListWarningCode
+    , NodeGroupsScopedListWarningCode (..)
+
+    -- ** TargetPoolsAddInstanceRequest
+    , TargetPoolsAddInstanceRequest
+    , targetPoolsAddInstanceRequest
+    , tpairInstances
+
+    -- ** NodeGroupsDeleteNodesRequest
+    , NodeGroupsDeleteNodesRequest
+    , nodeGroupsDeleteNodesRequest
+    , ngdnrNodes
+
+    -- ** RegionAutoscalerList
+    , RegionAutoscalerList
+    , regionAutoscalerList
+    , rNextPageToken
+    , rKind
+    , rItems
+    , rSelfLink
+    , rWarning
+    , rId
+
+    -- ** HealthCheckListWarningDataItem
+    , HealthCheckListWarningDataItem
+    , healthCheckListWarningDataItem
+    , hclwdiValue
+    , hclwdiKey
+
+    -- ** NodeGroupAggregatedListWarningDataItem
+    , NodeGroupAggregatedListWarningDataItem
+    , nodeGroupAggregatedListWarningDataItem
+    , ngalwdiValue
+    , ngalwdiKey
+
+    -- ** InstanceGroupsAddInstancesRequest
+    , InstanceGroupsAddInstancesRequest
+    , instanceGroupsAddInstancesRequest
+    , igairInstances
+
+    -- ** NodeGroupNode
+    , NodeGroupNode
+    , nodeGroupNode
+    , ngnStatus
+    , ngnName
+    , ngnInstances
+    , ngnNodeType
+
+    -- ** TargetTCPProxiesSetProxyHeaderRequestProxyHeader
+    , TargetTCPProxiesSetProxyHeaderRequestProxyHeader (..)
+
+    -- ** InstanceGroupManagerList
+    , InstanceGroupManagerList
+    , instanceGroupManagerList
+    , igmlNextPageToken
+    , igmlKind
+    , igmlItems
+    , igmlSelfLink
+    , igmlWarning
+    , igmlId
+
+    -- ** SubnetworksScopedListWarning
+    , SubnetworksScopedListWarning
+    , subnetworksScopedListWarning
+    , sslwData
+    , sslwCode
+    , sslwMessage
+
+    -- ** NodeGroupsSetNodeTemplateRequest
+    , NodeGroupsSetNodeTemplateRequest
+    , nodeGroupsSetNodeTemplateRequest
+    , ngsntrNodeTemplate
+
+    -- ** AcceleratorTypeListWarning
+    , AcceleratorTypeListWarning
+    , acceleratorTypeListWarning
+    , atlwData
+    , atlwCode
+    , atlwMessage
+
+    -- ** AttachedDiskType
+    , AttachedDiskType (..)
+
+    -- ** Image
+    , Image
+    , image
+    , iStatus
+    , iSourceSnapshotId
+    , iImageEncryptionKey
+    , iSourceImage
+    , iDiskSizeGb
+    , iSourceType
+    , iSourceDiskId
+    , iKind
+    , iSourceDiskEncryptionKey
+    , iGuestOSFeatures
+    , iArchiveSizeBytes
+    , iFamily
+    , iRawDisk
+    , iSelfLink
+    , iName
+    , iSourceImageId
+    , iCreationTimestamp
+    , iSourceImageEncryptionKey
+    , iLicenseCodes
+    , iId
+    , iLabels
+    , iLicenses
+    , iSourceDisk
+    , iLabelFingerprint
+    , iDescription
+    , iSourceSnapshotEncryptionKey
+    , iDeprecated
+    , iSourceSnapshot
+
+    -- ** RouterBGPPeerManagementType
+    , RouterBGPPeerManagementType (..)
+
+    -- ** RouterNATSubnetworkToNATSourceIPRangesToNATItem
+    , RouterNATSubnetworkToNATSourceIPRangesToNATItem (..)
+
+    -- ** AcceleratorTypeAggregatedListWarningCode
+    , AcceleratorTypeAggregatedListWarningCode (..)
+
+    -- ** NetworksAddPeeringRequest
+    , NetworksAddPeeringRequest
+    , networksAddPeeringRequest
+    , naprPeerNetwork
+    , naprName
+    , naprAutoCreateRoutes
+
+    -- ** NodeTemplatesScopedList
+    , NodeTemplatesScopedList
+    , nodeTemplatesScopedList
+    , nNodeTemplates
+    , nWarning
+
+    -- ** URLMapListWarning
+    , URLMapListWarning
+    , urlMapListWarning
+    , umlwData
+    , umlwCode
+    , umlwMessage
+
+    -- ** NodeGroupsScopedListWarningDataItem
+    , NodeGroupsScopedListWarningDataItem
+    , nodeGroupsScopedListWarningDataItem
+    , ngslwdiValue
+    , ngslwdiKey
+
+    -- ** URLMap
+    , URLMap
+    , urlMap
+    , umTests
+    , umKind
+    , umFingerprint
+    , umDefaultService
+    , umSelfLink
+    , umName
+    , umCreationTimestamp
+    , umPathMatchers
+    , umId
+    , umHostRules
+    , umDescription
+
+    -- ** ImageListWarning
+    , ImageListWarning
+    , imageListWarning
+    , ilwData
+    , ilwCode
+    , ilwMessage
+
+    -- ** HealthCheckListWarningCode
+    , HealthCheckListWarningCode (..)
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- ** SSLPolicyReference
+    , SSLPolicyReference
+    , sslPolicyReference
+    , sprSSLPolicy
+
+    -- ** InstanceGroupAggregatedListItems
+    , InstanceGroupAggregatedListItems
+    , instanceGroupAggregatedListItems
+    , igaliAddtional
+
+    -- ** TargetPoolList
+    , TargetPoolList
+    , targetPoolList
+    , tplNextPageToken
+    , tplKind
+    , tplItems
+    , tplSelfLink
+    , tplWarning
+    , tplId
+
+    -- ** SSLPolicyProFile
+    , SSLPolicyProFile (..)
+
+    -- ** AcceleratorType
+    , AcceleratorType
+    , acceleratorType
+    , atKind
+    , atZone
+    , atMaximumCardsPerInstance
+    , atSelfLink
+    , atName
+    , atCreationTimestamp
+    , atId
+    , atDescription
+    , atDeprecated
+
+    -- ** BackendBucketListWarningDataItem
+    , BackendBucketListWarningDataItem
+    , backendBucketListWarningDataItem
+    , bblwdiValue
+    , bblwdiKey
+
+    -- ** AcceleratorTypesScopedListWarningDataItem
+    , AcceleratorTypesScopedListWarningDataItem
+    , acceleratorTypesScopedListWarningDataItem
+    , atslwdiValue
+    , atslwdiKey
+
+    -- ** InterconnectOutageNotificationSource
+    , InterconnectOutageNotificationSource (..)
+
+    -- ** RegionDiskTypeList
+    , RegionDiskTypeList
+    , regionDiskTypeList
+    , rdtlNextPageToken
+    , rdtlKind
+    , rdtlItems
+    , rdtlSelfLink
+    , rdtlWarning
+    , rdtlId
+
+    -- ** TargetInstanceAggregatedList
+    , TargetInstanceAggregatedList
+    , targetInstanceAggregatedList
+    , tialNextPageToken
+    , tialKind
+    , tialItems
+    , tialSelfLink
+    , tialWarning
+    , tialId
+
+    -- ** NodeGroupsListNodesWarningDataItem
+    , NodeGroupsListNodesWarningDataItem
+    , nodeGroupsListNodesWarningDataItem
+    , nglnwdiValue
+    , nglnwdiKey
+
+    -- ** UsableSubnetworksAggregatedList
+    , UsableSubnetworksAggregatedList
+    , usableSubnetworksAggregatedList
+    , usalNextPageToken
+    , usalKind
+    , usalItems
+    , usalSelfLink
+    , usalWarning
+    , usalId
+
+    -- ** InterconnectLinkType
+    , InterconnectLinkType (..)
+
+    -- ** DisksScopedList
+    , DisksScopedList
+    , disksScopedList
+    , dslWarning
+    , dslDisks
+
+    -- ** InterconnectLocationListWarningDataItem
+    , InterconnectLocationListWarningDataItem
+    , interconnectLocationListWarningDataItem
+    , illwdiValue
+    , illwdiKey
+
+    -- ** InstanceGroupManagersScopedList
+    , InstanceGroupManagersScopedList
+    , instanceGroupManagersScopedList
+    , igmslWarning
+    , igmslInstanceGroupManagers
+
+    -- ** SubnetworkListWarning
+    , SubnetworkListWarning
+    , subnetworkListWarning
+    , slwData
+    , slwCode
+    , slwMessage
+
+    -- ** HealthCheck
+    , HealthCheck
+    , healthCheck
+    , hcHealthyThreshold
+    , hcTCPHealthCheck
+    , hcKind
+    , hcSSLHealthCheck
+    , hcSelfLink
+    , hcCheckIntervalSec
+    , hcName
+    , hcCreationTimestamp
+    , hcHTTPHealthCheck
+    , hcId
+    , hcType
+    , hcTimeoutSec
+    , hcDescription
+    , hcUnhealthyThreshold
+    , hcHTTPSHealthCheck
+
+    -- ** TargetSSLProxyProxyHeader
+    , TargetSSLProxyProxyHeader (..)
+
+    -- ** HTTPHealthCheckListWarning
+    , HTTPHealthCheckListWarning
+    , hTTPHealthCheckListWarning
+    , httphclwData
+    , httphclwCode
+    , httphclwMessage
+
+    -- ** SSLPoliciesListWarning
+    , SSLPoliciesListWarning
+    , sslPoliciesListWarning
+    , splwData
+    , splwCode
+    , splwMessage
+
+    -- ** CommitmentAggregatedListItems
+    , CommitmentAggregatedListItems
+    , commitmentAggregatedListItems
+    , caliAddtional
+
+    -- ** DiskAggregatedList
+    , DiskAggregatedList
+    , diskAggregatedList
+    , dalNextPageToken
+    , dalKind
+    , dalItems
+    , dalSelfLink
+    , dalWarning
+    , dalId
+
+    -- ** InstanceGroupsListInstancesWarningDataItem
+    , InstanceGroupsListInstancesWarningDataItem
+    , instanceGroupsListInstancesWarningDataItem
+    , igliwdiValue
+    , igliwdiKey
+
+    -- ** InstanceWithNamedPorts
+    , InstanceWithNamedPorts
+    , instanceWithNamedPorts
+    , iwnpStatus
+    , iwnpNamedPorts
+    , iwnpInstance
+
+    -- ** InterconnectListWarning
+    , InterconnectListWarning
+    , interconnectListWarning
+    , iData
+    , iCode
+    , iMessage
+
+    -- ** ForwardingRulesScopedList
+    , ForwardingRulesScopedList
+    , forwardingRulesScopedList
+    , frslWarning
+    , frslForwardingRules
+
+    -- ** RouterBGPAdvertiseMode
+    , RouterBGPAdvertiseMode (..)
+
+    -- ** NodeGroupsListNodesWarningCode
+    , NodeGroupsListNodesWarningCode (..)
+
+    -- ** InstanceReference
+    , InstanceReference
+    , instanceReference
+    , iInstance
+
+    -- ** InterconnectDiagnosticsLinkOpticalPowerState
+    , InterconnectDiagnosticsLinkOpticalPowerState (..)
+
+    -- ** OperationAggregatedList
+    , OperationAggregatedList
+    , operationAggregatedList
+    , oalNextPageToken
+    , oalKind
+    , oalItems
+    , oalSelfLink
+    , oalWarning
+    , oalId
+
+    -- ** OperationsScopedList
+    , OperationsScopedList
+    , operationsScopedList
+    , oslWarning
+    , oslOperations
+
+    -- ** NamedPort
+    , NamedPort
+    , namedPort
+    , npName
+    , npPort
+
+    -- ** InterconnectLocationListWarningCode
+    , InterconnectLocationListWarningCode (..)
+
+    -- ** InstanceGroupsListInstancesWarningCode
+    , InstanceGroupsListInstancesWarningCode (..)
+
+    -- ** RegionInstanceGroupsListInstancesRequestInstanceState
+    , RegionInstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- ** SubnetworkAggregatedListWarningDataItem
+    , SubnetworkAggregatedListWarningDataItem
+    , subnetworkAggregatedListWarningDataItem
+    , salwdiValue
+    , salwdiKey
+
+    -- ** ProjectXpnProjectStatus
+    , ProjectXpnProjectStatus (..)
+
+    -- ** InterconnectDiagnosticsLinkStatus
+    , InterconnectDiagnosticsLinkStatus
+    , interconnectDiagnosticsLinkStatus
+    , idlsLacpStatus
+    , idlsReceivingOpticalPower
+    , idlsGoogleDemarc
+    , idlsCircuitId
+    , idlsArpCaches
+    , idlsTransmittingOpticalPower
+
+    -- ** TargetInstanceList
+    , TargetInstanceList
+    , targetInstanceList
+    , tilNextPageToken
+    , tilKind
+    , tilItems
+    , tilSelfLink
+    , tilWarning
+    , tilId
+
+    -- ** TargetTCPProxyListWarning
+    , TargetTCPProxyListWarning
+    , targetTCPProxyListWarning
+    , ttplwData
+    , ttplwCode
+    , ttplwMessage
+
+    -- ** InstanceGroupManagerAggregatedList
+    , InstanceGroupManagerAggregatedList
+    , instanceGroupManagerAggregatedList
+    , igmalNextPageToken
+    , igmalKind
+    , igmalItems
+    , igmalSelfLink
+    , igmalWarning
+    , igmalId
+
+    -- ** BackendBucket
+    , BackendBucket
+    , backendBucket
+    , bbKind
+    , bbEnableCdn
+    , bbBucketName
+    , bbCdnPolicy
+    , bbSelfLink
+    , bbName
+    , bbCreationTimestamp
+    , bbId
+    , bbDescription
+
+    -- ** AccessConfigNetworkTier
+    , AccessConfigNetworkTier (..)
+
+    -- ** ProjectsEnableXpnResourceRequest
+    , ProjectsEnableXpnResourceRequest
+    , projectsEnableXpnResourceRequest
+    , pexrrXpnResource
+
+    -- ** ConditionSys
+    , ConditionSys (..)
+
+    -- ** ImageSourceType
+    , ImageSourceType (..)
+
+    -- ** TargetPoolsScopedList
+    , TargetPoolsScopedList
+    , targetPoolsScopedList
+    , tpslWarning
+    , tpslTargetPools
+
+    -- ** InterconnectAttachmentAggregatedListItems
+    , InterconnectAttachmentAggregatedListItems
+    , interconnectAttachmentAggregatedListItems
+    , iaaliAddtional
+
+    -- ** LogConfigCounterOptions
+    , LogConfigCounterOptions
+    , logConfigCounterOptions
+    , lccoField
+    , lccoMetric
+
+    -- ** SubnetworkAggregatedListWarningCode
+    , SubnetworkAggregatedListWarningCode (..)
+
+    -- ** InstancesSetMinCPUPlatformRequest
+    , InstancesSetMinCPUPlatformRequest
+    , instancesSetMinCPUPlatformRequest
+    , ismcprMinCPUPlatform
+
+    -- ** ForwardingRuleAggregatedList
+    , ForwardingRuleAggregatedList
+    , forwardingRuleAggregatedList
+    , fralNextPageToken
+    , fralKind
+    , fralItems
+    , fralSelfLink
+    , fralWarning
+    , fralId
+
+    -- ** TargetReference
+    , TargetReference
+    , targetReference
+    , trTarget
+
+    -- ** TargetPoolAggregatedList
+    , TargetPoolAggregatedList
+    , targetPoolAggregatedList
+    , tpalNextPageToken
+    , tpalKind
+    , tpalItems
+    , tpalSelfLink
+    , tpalWarning
+    , tpalId
+
+    -- ** OperationsScopedListWarningDataItem
+    , OperationsScopedListWarningDataItem
+    , operationsScopedListWarningDataItem
+    , oslwdiValue
+    , oslwdiKey
+
+    -- ** BackendServiceSessionAffinity
+    , BackendServiceSessionAffinity (..)
+
+    -- ** GlobalSetLabelsRequest
+    , GlobalSetLabelsRequest
+    , globalSetLabelsRequest
+    , gslrLabels
+    , gslrLabelFingerprint
+
+    -- ** TargetPool
+    , TargetPool
+    , targetPool
+    , tpSessionAffinity
+    , tpBackupPool
+    , tpKind
+    , tpSelfLink
+    , tpName
+    , tpCreationTimestamp
+    , tpInstances
+    , tpId
+    , tpFailoverRatio
+    , tpRegion
+    , tpDescription
+    , tpHealthChecks
+
+    -- ** ImageList
+    , ImageList
+    , imageList
+    , ilNextPageToken
+    , ilKind
+    , ilItems
+    , ilSelfLink
+    , ilWarning
+    , ilId
+
+    -- ** OperationAggregatedListWarningDataItem
+    , OperationAggregatedListWarningDataItem
+    , operationAggregatedListWarningDataItem
+    , oalwdiValue
+    , oalwdiKey
+
+    -- ** ForwardingRuleListWarning
+    , ForwardingRuleListWarning
+    , forwardingRuleListWarning
+    , frlwData
+    , frlwCode
+    , frlwMessage
+
+    -- ** VPNTunnelsScopedListWarning
+    , VPNTunnelsScopedListWarning
+    , vpnTunnelsScopedListWarning
+    , vtslwData
+    , vtslwCode
+    , vtslwMessage
+
+    -- ** RegionDisksResizeRequest
+    , RegionDisksResizeRequest
+    , regionDisksResizeRequest
+    , rdrrSizeGb
+
+    -- ** NodeTypesScopedListWarning
+    , NodeTypesScopedListWarning
+    , nodeTypesScopedListWarning
+    , ntslwData
+    , ntslwCode
+    , ntslwMessage
+
+    -- ** NodeTemplateNodeTypeFlexibility
+    , NodeTemplateNodeTypeFlexibility
+    , nodeTemplateNodeTypeFlexibility
+    , ntntfMemory
+    , ntntfCPUs
+    , ntntfLocalSsd
+
+    -- ** ForwardingRulesScopedListWarningCode
+    , ForwardingRulesScopedListWarningCode (..)
+
+    -- ** LicenseResourceRequirements
+    , LicenseResourceRequirements
+    , licenseResourceRequirements
+    , lrrMinMemoryMb
+    , lrrMinGuestCPUCount
+
+    -- ** RegionDiskTypeListWarning
+    , RegionDiskTypeListWarning
+    , regionDiskTypeListWarning
+    , rdtlwData
+    , rdtlwCode
+    , rdtlwMessage
+
+    -- ** OperationsScopedListWarningCode
+    , OperationsScopedListWarningCode (..)
+
+    -- ** OperationAggregatedListWarningCode
+    , OperationAggregatedListWarningCode (..)
+
+    -- ** TargetSSLProxiesSetBackendServiceRequest
+    , TargetSSLProxiesSetBackendServiceRequest
+    , targetSSLProxiesSetBackendServiceRequest
+    , tspsbsrService
+
+    -- ** ForwardingRule
+    , ForwardingRule
+    , forwardingRule
+    , frNetworkTier
+    , frIPAddress
+    , frLoadBalancingScheme
+    , frKind
+    , frIPVersion
+    , frNetwork
+    , frPortRange
+    , frSelfLink
+    , frName
+    , frIPProtocol
+    , frCreationTimestamp
+    , frSubnetwork
+    , frPorts
+    , frId
+    , frRegion
+    , frDescription
+    , frTarget
+    , frBackendService
+
+    -- ** URLMapList
+    , URLMapList
+    , urlMapList
+    , umlNextPageToken
+    , umlKind
+    , umlItems
+    , umlSelfLink
+    , umlWarning
+    , umlId
+
+    -- ** ForwardingRulesScopedListWarningDataItem
+    , ForwardingRulesScopedListWarningDataItem
+    , forwardingRulesScopedListWarningDataItem
+    , frslwdiValue
+    , frslwdiKey
+
+    -- ** TargetInstanceAggregatedListWarning
+    , TargetInstanceAggregatedListWarning
+    , targetInstanceAggregatedListWarning
+    , tialwData
+    , tialwCode
+    , tialwMessage
+
+    -- ** InstanceGroupManagersScopedListWarningDataItem
+    , InstanceGroupManagersScopedListWarningDataItem
+    , instanceGroupManagersScopedListWarningDataItem
+    , igmslwdiValue
+    , igmslwdiKey
+
+    -- ** SubnetworksScopedList
+    , SubnetworksScopedList
+    , subnetworksScopedList
+    , sslSubnetworks
+    , sslWarning
+
+    -- ** DiskAggregatedListWarningCode
+    , DiskAggregatedListWarningCode (..)
+
+    -- ** AcceleratorTypeList
+    , AcceleratorTypeList
+    , acceleratorTypeList
+    , atlNextPageToken
+    , atlKind
+    , atlItems
+    , atlSelfLink
+    , atlWarning
+    , atlId
+
+    -- ** DiskAggregatedListWarningDataItem
+    , DiskAggregatedListWarningDataItem
+    , diskAggregatedListWarningDataItem
+    , dalwdiValue
+    , dalwdiKey
+
+    -- ** TargetPoolListWarning
+    , TargetPoolListWarning
+    , targetPoolListWarning
+    , tplwData
+    , tplwCode
+    , tplwMessage
+
+    -- ** UsableSubnetworksAggregatedListWarningCode
+    , UsableSubnetworksAggregatedListWarningCode (..)
+
+    -- ** NodeTemplatesScopedListWarning
+    , NodeTemplatesScopedListWarning
+    , nodeTemplatesScopedListWarning
+    , nData
+    , nCode
+    , nMessage
+
+    -- ** TargetPoolAggregatedListWarningDataItem
+    , TargetPoolAggregatedListWarningDataItem
+    , targetPoolAggregatedListWarningDataItem
+    , tpalwdiValue
+    , tpalwdiKey
+
+    -- ** DisksScopedListWarningCode
+    , DisksScopedListWarningCode (..)
+
+    -- ** Project
+    , Project
+    , project
+    , pXpnProjectStatus
+    , pKind
+    , pUsageExportLocation
+    , pSelfLink
+    , pName
+    , pDefaultServiceAccount
+    , pDefaultNetworkTier
+    , pCreationTimestamp
+    , pEnabledFeatures
+    , pQuotas
+    , pId
+    , pDescription
+    , pCommonInstanceMetadata
+
+    -- ** RegionInstanceGroupManagersListInstancesResponse
+    , RegionInstanceGroupManagersListInstancesResponse
+    , regionInstanceGroupManagersListInstancesResponse
+    , rigmlirManagedInstances
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oDescription
+    , oTargetLink
+    , oClientOperationId
+
+    -- ** DisksScopedListWarningDataItem
+    , DisksScopedListWarningDataItem
+    , disksScopedListWarningDataItem
+    , dslwdiValue
+    , dslwdiKey
+
+    -- ** InstanceGroupManagersScopedListWarningCode
+    , InstanceGroupManagersScopedListWarningCode (..)
+
+    -- ** Disk
+    , Disk
+    , disk
+    , dStatus
+    , dSourceSnapshotId
+    , dLastAttachTimestamp
+    , dUsers
+    , dSourceImage
+    , dReplicaZones
+    , dDiskEncryptionKey
+    , dSizeGb
+    , dKind
+    , dLastDetachTimestamp
+    , dGuestOSFeatures
+    , dZone
+    , dSelfLink
+    , dName
+    , dSourceImageId
+    , dCreationTimestamp
+    , dSourceImageEncryptionKey
+    , dLicenseCodes
+    , dId
+    , dLabels
+    , dLicenses
+    , dRegion
+    , dOptions
+    , dPhysicalBlockSizeBytes
+    , dType
+    , dLabelFingerprint
+    , dDescription
+    , dSourceSnapshotEncryptionKey
+    , dSourceSnapshot
+
+    -- ** UsableSubnetworksAggregatedListWarningDataItem
+    , UsableSubnetworksAggregatedListWarningDataItem
+    , usableSubnetworksAggregatedListWarningDataItem
+    , usalwdiValue
+    , usalwdiKey
+
+    -- ** NodeGroupList
+    , NodeGroupList
+    , nodeGroupList
+    , nglNextPageToken
+    , nglKind
+    , nglItems
+    , nglSelfLink
+    , nglWarning
+    , nglId
+
+    -- ** SSLPolicyWarningsItemCode
+    , SSLPolicyWarningsItemCode (..)
+
+    -- ** DiskMoveRequest
+    , DiskMoveRequest
+    , diskMoveRequest
+    , dmrTargetDisk
+    , dmrDestinationZone
+
+    -- ** ForwardingRuleAggregatedListWarningCode
+    , ForwardingRuleAggregatedListWarningCode (..)
+
+    -- ** SSLPolicyWarningsItemDataItem
+    , SSLPolicyWarningsItemDataItem
+    , sslPolicyWarningsItemDataItem
+    , spwidiValue
+    , spwidiKey
+
+    -- ** AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- ** TargetPoolAggregatedListWarningCode
+    , TargetPoolAggregatedListWarningCode (..)
+
+    -- ** ForwardingRuleAggregatedListWarningDataItem
+    , ForwardingRuleAggregatedListWarningDataItem
+    , forwardingRuleAggregatedListWarningDataItem
+    , fralwdiValue
+    , fralwdiKey
+
+    -- ** TargetPoolsScopedListWarningDataItem
+    , TargetPoolsScopedListWarningDataItem
+    , targetPoolsScopedListWarningDataItem
+    , tpslwdiValue
+    , tpslwdiKey
+
+    -- ** InstanceGroupManager
+    , InstanceGroupManager
+    , instanceGroupManager
+    , igmKind
+    , igmFingerprint
+    , igmBaseInstanceName
+    , igmZone
+    , igmInstanceTemplate
+    , igmTargetSize
+    , igmSelfLink
+    , igmCurrentActions
+    , igmName
+    , igmCreationTimestamp
+    , igmDistributionPolicy
+    , igmId
+    , igmRegion
+    , igmTargetPools
+    , igmDescription
+    , igmInstanceGroup
+    , igmNamedPorts
+
+    -- ** InstanceGroupManagerListWarning
+    , InstanceGroupManagerListWarning
+    , instanceGroupManagerListWarning
+    , igmlwData
+    , igmlwCode
+    , igmlwMessage
+
+    -- ** RegionInstanceGroupsListInstances
+    , RegionInstanceGroupsListInstances
+    , regionInstanceGroupsListInstances
+    , rigliNextPageToken
+    , rigliKind
+    , rigliItems
+    , rigliSelfLink
+    , rigliWarning
+    , rigliId
+
+    -- ** DiskListWarning
+    , DiskListWarning
+    , diskListWarning
+    , dlwData
+    , dlwCode
+    , dlwMessage
+
+    -- ** TCPHealthCheck
+    , TCPHealthCheck
+    , tcpHealthCheck
+    , thcResponse
+    , thcProxyHeader
+    , thcPortName
+    , thcPort
+    , thcRequest
+
+    -- ** InstanceGroupManagerAggregatedListWarningDataItem
+    , InstanceGroupManagerAggregatedListWarningDataItem
+    , instanceGroupManagerAggregatedListWarningDataItem
+    , igmalwdiValue
+    , igmalwdiKey
+
+    -- ** TestPermissionsResponse
+    , TestPermissionsResponse
+    , testPermissionsResponse
+    , tprPermissions
+
+    -- ** TargetPoolsScopedListWarningCode
+    , TargetPoolsScopedListWarningCode (..)
+
+    -- ** RegionAutoscalerListWarning
+    , RegionAutoscalerListWarning
+    , regionAutoscalerListWarning
+    , ralwData
+    , ralwCode
+    , ralwMessage
+
+    -- ** TargetInstanceListWarningCode
+    , TargetInstanceListWarningCode (..)
+
+    -- ** InterconnectLocationRegionInfoLocationPresence
+    , InterconnectLocationRegionInfoLocationPresence (..)
+
+    -- ** SSLHealthCheckProxyHeader
+    , SSLHealthCheckProxyHeader (..)
+
+    -- ** TargetVPNGatewayStatus
+    , TargetVPNGatewayStatus (..)
+
+    -- ** TargetInstanceListWarningDataItem
+    , TargetInstanceListWarningDataItem
+    , targetInstanceListWarningDataItem
+    , tilwdiValue
+    , tilwdiKey
+
+    -- ** InstanceGroupManagerAggregatedListWarningCode
+    , InstanceGroupManagerAggregatedListWarningCode (..)
+
+    -- ** OperationListWarning
+    , OperationListWarning
+    , operationListWarning
+    , olwData
+    , olwCode
+    , olwMessage
+
+    -- ** InstanceGroupsRemoveInstancesRequest
+    , InstanceGroupsRemoveInstancesRequest
+    , instanceGroupsRemoveInstancesRequest
+    , igrirInstances
+
+    -- ** InterconnectAttachmentPartnerMetadata
+    , InterconnectAttachmentPartnerMetadata
+    , interconnectAttachmentPartnerMetadata
+    , iapmPortalURL
+    , iapmInterconnectName
+    , iapmPartnerName
+
+    -- ** SnapshotStatus
+    , SnapshotStatus (..)
+
+    -- ** SecurityPolicyRuleMatcherVersionedExpr
+    , SecurityPolicyRuleMatcherVersionedExpr (..)
+
+    -- ** MachineTypeListWarningDataItem
+    , MachineTypeListWarningDataItem
+    , machineTypeListWarningDataItem
+    , mtlwdiValue
+    , mtlwdiKey
+
+    -- ** NetworksRemovePeeringRequest
+    , NetworksRemovePeeringRequest
+    , networksRemovePeeringRequest
+    , nrprName
+
+    -- ** TargetHTTPProxyListWarningDataItem
+    , TargetHTTPProxyListWarningDataItem
+    , targetHTTPProxyListWarningDataItem
+    , thttpplwdiValue
+    , thttpplwdiKey
+
+    -- ** MachineTypeAggregatedListWarning
+    , MachineTypeAggregatedListWarning
+    , machineTypeAggregatedListWarning
+    , mtalwData
+    , mtalwCode
+    , mtalwMessage
+
+    -- ** AutoscalerListWarningCode
+    , AutoscalerListWarningCode (..)
+
+    -- ** NodeTemplateAggregatedListWarningDataItem
+    , NodeTemplateAggregatedListWarningDataItem
+    , nodeTemplateAggregatedListWarningDataItem
+    , ntalwdiValue
+    , ntalwdiKey
+
+    -- ** BackendBucketList
+    , BackendBucketList
+    , backendBucketList
+    , bblNextPageToken
+    , bblKind
+    , bblItems
+    , bblSelfLink
+    , bblWarning
+    , bblId
+
+    -- ** InterconnectAttachmentPrivateInfo
+    , InterconnectAttachmentPrivateInfo
+    , interconnectAttachmentPrivateInfo
+    , iapiTag8021q
+
+    -- ** AcceleratorTypesScopedList
+    , AcceleratorTypesScopedList
+    , acceleratorTypesScopedList
+    , atslAcceleratorTypes
+    , atslWarning
+
+    -- ** BackendServiceCdnPolicy
+    , BackendServiceCdnPolicy
+    , backendServiceCdnPolicy
+    , bscpSignedURLCacheMaxAgeSec
+    , bscpSignedURLKeyNames
+    , bscpCacheKeyPolicy
+
+    -- ** DiskTypeListWarningCode
+    , DiskTypeListWarningCode (..)
+
+    -- ** RouteWarningsItemDataItem
+    , RouteWarningsItemDataItem
+    , routeWarningsItemDataItem
+    , rwidiValue
+    , rwidiKey
+
+    -- ** NodeGroupAggregatedList
+    , NodeGroupAggregatedList
+    , nodeGroupAggregatedList
+    , ngalNextPageToken
+    , ngalKind
+    , ngalItems
+    , ngalSelfLink
+    , ngalWarning
+    , ngalId
+
+    -- ** AddressPurpose
+    , AddressPurpose (..)
+
+    -- ** NodeTypeAggregatedListWarningCode
+    , NodeTypeAggregatedListWarningCode (..)
+
+    -- ** TargetInstancesScopedListWarningCode
+    , TargetInstancesScopedListWarningCode (..)
+
+    -- ** VPNTunnelListWarning
+    , VPNTunnelListWarning
+    , vpnTunnelListWarning
+    , vtlwData
+    , vtlwCode
+    , vtlwMessage
+
+    -- ** BackendServiceAggregatedListItems
+    , BackendServiceAggregatedListItems
+    , backendServiceAggregatedListItems
+    , bsaliAddtional
+
+    -- ** VPNTunnelAggregatedListWarningCode
+    , VPNTunnelAggregatedListWarningCode (..)
+
+    -- ** InstanceAggregatedListItems
+    , InstanceAggregatedListItems
+    , instanceAggregatedListItems
+    , ialiAddtional
+
+    -- ** AutoscalersScopedListWarning
+    , AutoscalersScopedListWarning
+    , autoscalersScopedListWarning
+    , aslwData
+    , aslwCode
+    , aslwMessage
+
+    -- ** DiskInstantiationConfig
+    , DiskInstantiationConfig
+    , diskInstantiationConfig
+    , dicAutoDelete
+    , dicInstantiateFrom
+    , dicCustomImage
+    , dicDeviceName
+
+    -- ** DiskTypeAggregatedListWarning
+    , DiskTypeAggregatedListWarning
+    , diskTypeAggregatedListWarning
+    , dtalwData
+    , dtalwCode
+    , dtalwMessage
+
+    -- ** DiskTypeListWarningDataItem
+    , DiskTypeListWarningDataItem
+    , diskTypeListWarningDataItem
+    , dtlwdiValue
+    , dtlwdiKey
+
+    -- ** SecurityPolicyRule
+    , SecurityPolicyRule
+    , securityPolicyRule
+    , sprPriority
+    , sprKind
+    , sprAction
+    , sprPreview
+    , sprMatch
+    , sprDescription
+
+    -- ** InterconnectsGetDiagnosticsResponse
+    , InterconnectsGetDiagnosticsResponse
+    , interconnectsGetDiagnosticsResponse
+    , igdrResult
+
+    -- ** VPNTunnelAggregatedListWarningDataItem
+    , VPNTunnelAggregatedListWarningDataItem
+    , vpnTunnelAggregatedListWarningDataItem
+    , vtalwdiValue
+    , vtalwdiKey
+
+    -- ** FirewallLogConfig
+    , FirewallLogConfig
+    , firewallLogConfig
+    , flcEnable
+
+    -- ** TargetHTTPProxyListWarningCode
+    , TargetHTTPProxyListWarningCode (..)
+
+    -- ** RouterNAT
+    , RouterNAT
+    , routerNAT
+    , rnatNATIPAllocateOption
+    , rnatICMPIdleTimeoutSec
+    , rnatUdpIdleTimeoutSec
+    , rnatNATIPs
+    , rnatSubnetworks
+    , rnatMinPortsPerVM
+    , rnatName
+    , rnatSourceSubnetworkIPRangesToNAT
+    , rnatTCPEstablishedIdleTimeoutSec
+    , rnatTCPTransitoryIdleTimeoutSec
+
+    -- ** AutoscalerAggregatedListWarning
+    , AutoscalerAggregatedListWarning
+    , autoscalerAggregatedListWarning
+    , aalwData
+    , aalwCode
+    , aalwMessage
+
+    -- ** AutoscalerListWarningDataItem
+    , AutoscalerListWarningDataItem
+    , autoscalerListWarningDataItem
+    , alwdiValue
+    , alwdiKey
+
+    -- ** MachineTypeListWarningCode
+    , MachineTypeListWarningCode (..)
+
+    -- ** NodeTypeListWarning
+    , NodeTypeListWarning
+    , nodeTypeListWarning
+    , ntlwData
+    , ntlwCode
+    , ntlwMessage
+
+    -- ** HealthCheckList
+    , HealthCheckList
+    , healthCheckList
+    , hclNextPageToken
+    , hclKind
+    , hclItems
+    , hclSelfLink
+    , hclWarning
+    , hclId
+
+    -- ** ManagedInstanceLastAttemptErrors
+    , ManagedInstanceLastAttemptErrors
+    , managedInstanceLastAttemptErrors
+    , milaeErrors
+
+    -- ** GuestOSFeatureType
+    , GuestOSFeatureType (..)
+
+    -- ** RouteWarningsItemCode
+    , RouteWarningsItemCode (..)
+
+    -- ** RouterStatusNATStatus
+    , RouterStatusNATStatus
+    , routerStatusNATStatus
+    , rsnatsUserAllocatedNATIPResources
+    , rsnatsName
+    , rsnatsAutoAllocatedNATIPs
+    , rsnatsMinExtraNATIPsNeeded
+    , rsnatsNumVMEndpointsWithNATMAppings
+    , rsnatsUserAllocatedNATIPs
+
+    -- ** TargetPoolsRemoveInstanceRequest
+    , TargetPoolsRemoveInstanceRequest
+    , targetPoolsRemoveInstanceRequest
+    , tprirInstances
+
+    -- ** NodeTypeAggregatedListWarningDataItem
+    , NodeTypeAggregatedListWarningDataItem
+    , nodeTypeAggregatedListWarningDataItem
+    , nValue
+    , nKey
+
+    -- ** TargetInstancesScopedListWarningDataItem
+    , TargetInstancesScopedListWarningDataItem
+    , targetInstancesScopedListWarningDataItem
+    , tislwdiValue
+    , tislwdiKey
+
+    -- ** MachineTypesScopedListWarning
+    , MachineTypesScopedListWarning
+    , machineTypesScopedListWarning
+    , mtslwData
+    , mtslwCode
+    , mtslwMessage
+
+    -- ** ZoneSetLabelsRequest
+    , ZoneSetLabelsRequest
+    , zoneSetLabelsRequest
+    , zslrLabels
+    , zslrLabelFingerprint
+
+    -- ** TargetInstance
+    , TargetInstance
+    , targetInstance
+    , tiKind
+    , tiNATPolicy
+    , tiZone
+    , tiSelfLink
+    , tiName
+    , tiCreationTimestamp
+    , tiId
+    , tiDescription
+    , tiInstance
+
+    -- ** TargetPoolInstanceHealth
+    , TargetPoolInstanceHealth
+    , targetPoolInstanceHealth
+    , tpihKind
+    , tpihHealthStatus
+
+    -- ** RouterBGPPeerAdvertiseMode
+    , RouterBGPPeerAdvertiseMode (..)
+
+    -- ** RegionInstanceGroupManagerListWarningCode
+    , RegionInstanceGroupManagerListWarningCode (..)
+
+    -- ** AcceleratorTypeAggregatedList
+    , AcceleratorTypeAggregatedList
+    , acceleratorTypeAggregatedList
+    , atalNextPageToken
+    , atalKind
+    , atalItems
+    , atalSelfLink
+    , atalWarning
+    , atalId
+
+    -- ** SnapshotStorageBytesStatus
+    , SnapshotStorageBytesStatus (..)
+
+    -- ** NetworkRoutingConfig
+    , NetworkRoutingConfig
+    , networkRoutingConfig
+    , nrcRoutingMode
+
+    -- ** NodeTemplateListWarning
+    , NodeTemplateListWarning
+    , nodeTemplateListWarning
+    , nodData
+    , nodCode
+    , nodMessage
+
+    -- ** InstanceGroupManagersListManagedInstancesResponse
+    , InstanceGroupManagersListManagedInstancesResponse
+    , instanceGroupManagersListManagedInstancesResponse
+    , igmlmirManagedInstances
+
+    -- ** InstanceProperties
+    , InstanceProperties
+    , instanceProperties
+    , ipServiceAccounts
+    , ipNetworkInterfaces
+    , ipGuestAccelerators
+    , ipMachineType
+    , ipMetadata
+    , ipLabels
+    , ipScheduling
+    , ipMinCPUPlatform
+    , ipDisks
+    , ipCanIPForward
+    , ipDescription
+    , ipTags
+
+    -- ** ProjectsListXpnHostsRequest
+    , ProjectsListXpnHostsRequest
+    , projectsListXpnHostsRequest
+    , plxhrOrganization
+
+    -- ** RegionListWarning
+    , RegionListWarning
+    , regionListWarning
+    , rlwData
+    , rlwCode
+    , rlwMessage
+
+    -- ** NodeTemplateAggregatedListWarningCode
+    , NodeTemplateAggregatedListWarningCode (..)
+
+    -- ** NodeGroupsScopedList
+    , NodeGroupsScopedList
+    , nodeGroupsScopedList
+    , ngslNodeGroups
+    , ngslWarning
+
+    -- ** DiskTypesScopedListWarning
+    , DiskTypesScopedListWarning
+    , diskTypesScopedListWarning
+    , dtslwData
+    , dtslwCode
+    , dtslwMessage
+
+    -- ** RegionInstanceGroupManagerListWarningDataItem
+    , RegionInstanceGroupManagerListWarningDataItem
+    , regionInstanceGroupManagerListWarningDataItem
+    , rigmlwdiValue
+    , rigmlwdiKey
+
+    -- ** RuleAction
+    , RuleAction (..)
+
+    -- ** AddressesScopedListWarningCode
+    , AddressesScopedListWarningCode (..)
+
+    -- ** AttachedDiskInitializeParams
+    , AttachedDiskInitializeParams
+    , attachedDiskInitializeParams
+    , adipSourceImage
+    , adipDiskSizeGb
+    , adipDiskName
+    , adipSourceImageEncryptionKey
+    , adipDiskType
+    , adipLabels
+    , adipDescription
+
+    -- ** UsableSubnetworkSecondaryRange
+    , UsableSubnetworkSecondaryRange
+    , usableSubnetworkSecondaryRange
+    , ussrRangeName
+    , ussrIPCIdRRange
+
+    -- ** AddressesScopedListWarningDataItem
+    , AddressesScopedListWarningDataItem
+    , addressesScopedListWarningDataItem
+    , aslwdiValue
+    , aslwdiKey
+
+    -- ** ImageStatus
+    , ImageStatus (..)
+
+    -- ** InstanceGroupListWarningCode
+    , InstanceGroupListWarningCode (..)
+
+    -- ** InstanceGroupListWarningDataItem
+    , InstanceGroupListWarningDataItem
+    , instanceGroupListWarningDataItem
+    , iglwdiValue
+    , iglwdiKey
+
+    -- ** NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niKind
+    , niFingerprint
+    , niAliasIPRanges
+    , niNetwork
+    , niName
+    , niNetworkIP
+    , niSubnetwork
+    , niAccessConfigs
+
+    -- ** FirewallListWarningCode
+    , FirewallListWarningCode (..)
+
+    -- ** RouterListWarning
+    , RouterListWarning
+    , routerListWarning
+    , rData
+    , rCode
+    , rMessage
+
+    -- ** FirewallListWarningDataItem
+    , FirewallListWarningDataItem
+    , firewallListWarningDataItem
+    , flwdiValue
+    , flwdiKey
+
+    -- ** InterconnectAttachmentType
+    , InterconnectAttachmentType (..)
+
+    -- ** TargetPoolsRemoveHealthCheckRequest
+    , TargetPoolsRemoveHealthCheckRequest
+    , targetPoolsRemoveHealthCheckRequest
+    , tprhcrHealthChecks
+
+    -- ** AutoscalerStatusDetailsType
+    , AutoscalerStatusDetailsType (..)
+
+    -- ** FirewallDirection
+    , FirewallDirection (..)
+
+    -- ** NodeGroupNodeStatus
+    , NodeGroupNodeStatus (..)
+
+    -- ** TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride
+    , TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride (..)
+
+    -- ** RegionInstanceGroupManagersSetTargetPoolsRequest
+    , RegionInstanceGroupManagersSetTargetPoolsRequest
+    , regionInstanceGroupManagersSetTargetPoolsRequest
+    , rigmstprFingerprint
+    , rigmstprTargetPools
+
+    -- ** BackendBucketCdnPolicy
+    , BackendBucketCdnPolicy
+    , backendBucketCdnPolicy
+    , bbcpSignedURLCacheMaxAgeSec
+    , bbcpSignedURLKeyNames
+
+    -- ** TargetSSLProxyList
+    , TargetSSLProxyList
+    , targetSSLProxyList
+    , tsplNextPageToken
+    , tsplKind
+    , tsplItems
+    , tsplSelfLink
+    , tsplWarning
+    , tsplId
+
+    -- ** CustomerEncryptionKeyProtectedDisk
+    , CustomerEncryptionKeyProtectedDisk
+    , customerEncryptionKeyProtectedDisk
+    , cekpdDiskEncryptionKey
+    , cekpdSource
+
+    -- ** HealthStatusHealthState
+    , HealthStatusHealthState (..)
+
+    -- ** InstanceTemplateList
+    , InstanceTemplateList
+    , instanceTemplateList
+    , itlNextPageToken
+    , itlKind
+    , itlItems
+    , itlSelfLink
+    , itlWarning
+    , itlId
+
+    -- ** Reference
+    , Reference
+    , reference
+    , refKind
+    , refReferrer
+    , refReferenceType
+    , refTarget
+
+    -- ** InstanceGroupAggregatedListWarning
+    , InstanceGroupAggregatedListWarning
+    , instanceGroupAggregatedListWarning
+    , igalwData
+    , igalwCode
+    , igalwMessage
+
+    -- ** RouteList
+    , RouteList
+    , routeList
+    , rlNextPageToken
+    , rlKind
+    , rlItems
+    , rlSelfLink
+    , rlWarning
+    , rlId
+
+    -- ** DeprecationStatusState
+    , DeprecationStatusState (..)
+
+    -- ** InstanceListReferrers
+    , InstanceListReferrers
+    , instanceListReferrers
+    , ilrNextPageToken
+    , ilrKind
+    , ilrItems
+    , ilrSelfLink
+    , ilrWarning
+    , ilrId
+
+    -- ** NodeGroupStatus
+    , NodeGroupStatus (..)
+
+    -- ** Router
+    , Router
+    , router
+    , rouBGPPeers
+    , rouBGP
+    , rouKind
+    , rouNetwork
+    , rouInterfaces
+    , rouSelfLink
+    , rouName
+    , rouCreationTimestamp
+    , rouId
+    , rouRegion
+    , rouNATs
+    , rouDescription
+
+    -- ** RouterAggregatedListWarningCode
+    , RouterAggregatedListWarningCode (..)
+
+    -- ** RoutersScopedListWarningCode
+    , RoutersScopedListWarningCode (..)
+
+    -- ** RouterAggregatedListWarningDataItem
+    , RouterAggregatedListWarningDataItem
+    , routerAggregatedListWarningDataItem
+    , ralwdiValue
+    , ralwdiKey
+
+    -- ** TargetHTTPSProxyListWarningCode
+    , TargetHTTPSProxyListWarningCode (..)
+
+    -- ** RoutersScopedListWarningDataItem
+    , RoutersScopedListWarningDataItem
+    , routersScopedListWarningDataItem
+    , rslwdiValue
+    , rslwdiKey
+
+    -- ** SubnetworksSetPrivateIPGoogleAccessRequest
+    , SubnetworksSetPrivateIPGoogleAccessRequest
+    , subnetworksSetPrivateIPGoogleAccessRequest
+    , sspigarPrivateIPGoogleAccess
+
+    -- ** TargetHTTPSProxyListWarningDataItem
+    , TargetHTTPSProxyListWarningDataItem
+    , targetHTTPSProxyListWarningDataItem
+    , thplwdiValue
+    , thplwdiKey
+
+    -- ** InterconnectDiagnosticsLinkLACPStatusState
+    , InterconnectDiagnosticsLinkLACPStatusState (..)
+
+    -- ** ManagedInstanceCurrentAction
+    , ManagedInstanceCurrentAction (..)
+
+    -- ** TargetVPNGatewayList
+    , TargetVPNGatewayList
+    , targetVPNGatewayList
+    , tvglNextPageToken
+    , tvglKind
+    , tvglItems
+    , tvglSelfLink
+    , tvglWarning
+    , tvglId
+
+    -- ** TargetInstanceNATPolicy
+    , TargetInstanceNATPolicy (..)
+
+    -- ** SSLCertificateList
+    , SSLCertificateList
+    , sslCertificateList
+    , sclNextPageToken
+    , sclKind
+    , sclItems
+    , sclSelfLink
+    , sclWarning
+    , sclId
+
+    -- ** FirewallAllowedItem
+    , FirewallAllowedItem
+    , firewallAllowedItem
+    , faiIPProtocol
+    , faiPorts
+
+    -- ** RouterAdvertisedIPRange
+    , RouterAdvertisedIPRange
+    , routerAdvertisedIPRange
+    , rairRange
+    , rairDescription
+
+    -- ** RouterListWarningDataItem
+    , RouterListWarningDataItem
+    , routerListWarningDataItem
+    , rlwdiValue
+    , rlwdiKey
+
+    -- ** Rule
+    , Rule
+    , rule
+    , rAction
+    , rNotIns
+    , rIns
+    , rLogConfigs
+    , rConditions
+    , rPermissions
+    , rDescription
+
+    -- ** BackendServiceAggregatedList
+    , BackendServiceAggregatedList
+    , backendServiceAggregatedList
+    , bsalNextPageToken
+    , bsalKind
+    , bsalItems
+    , bsalSelfLink
+    , bsalWarning
+    , bsalId
+
+    -- ** Network
+    , Network
+    , network
+    , nAutoCreateSubnetworks
+    , nKind
+    , nRoutingConfig
+    , nSubnetworks
+    , nIPv4Range
+    , nSelfLink
+    , nName
+    , nCreationTimestamp
+    , nId
+    , nGatewayIPv4
+    , nDescription
+    , nPeerings
+
+    -- ** RoutersScopedListWarning
+    , RoutersScopedListWarning
+    , routersScopedListWarning
+    , rslwData
+    , rslwCode
+    , rslwMessage
+
+    -- ** UsableSubnetwork
+    , UsableSubnetwork
+    , usableSubnetwork
+    , usNetwork
+    , usSecondaryIPRanges
+    , usIPCIdRRange
+    , usSubnetwork
+
+    -- ** RouterBGPPeerAdvertisedGroupsItem
+    , RouterBGPPeerAdvertisedGroupsItem (..)
+
+    -- ** AccessConfigType
+    , AccessConfigType (..)
+
+    -- ** TargetHTTPSProxyListWarning
+    , TargetHTTPSProxyListWarning
+    , targetHTTPSProxyListWarning
+    , thplwData
+    , thplwCode
+    , thplwMessage
+
+    -- ** AddressesScopedListWarning
+    , AddressesScopedListWarning
+    , addressesScopedListWarning
+    , aData
+    , aCode
+    , aMessage
+
+    -- ** SecurityPolicy
+    , SecurityPolicy
+    , securityPolicy
+    , secRules
+    , secKind
+    , secFingerprint
+    , secSelfLink
+    , secName
+    , secCreationTimestamp
+    , secId
+    , secDescription
+
+    -- ** InstanceGroupAggregatedListWarningDataItem
+    , InstanceGroupAggregatedListWarningDataItem
+    , instanceGroupAggregatedListWarningDataItem
+    , igalwdiValue
+    , igalwdiKey
+
+    -- ** ForwardingRuleIPVersion
+    , ForwardingRuleIPVersion (..)
+
+    -- ** RouterListWarningCode
+    , RouterListWarningCode (..)
+
+    -- ** ImageRawDisk
+    , ImageRawDisk
+    , imageRawDisk
+    , irdContainerType
+    , irdSource
+    , irdSha1Checksum
+
+    -- ** InstanceAggregatedList
+    , InstanceAggregatedList
+    , instanceAggregatedList
+    , ialNextPageToken
+    , ialKind
+    , ialItems
+    , ialSelfLink
+    , ialWarning
+    , ialId
+
+    -- ** TargetTCPProxiesSetBackendServiceRequest
+    , TargetTCPProxiesSetBackendServiceRequest
+    , targetTCPProxiesSetBackendServiceRequest
+    , ttpsbsrService
+
+    -- ** SSLHealthCheck
+    , SSLHealthCheck
+    , sslHealthCheck
+    , shcResponse
+    , shcProxyHeader
+    , shcPortName
+    , shcPort
+    , shcRequest
+
+    -- ** Address
+    , Address
+    , address
+    , aPrefixLength
+    , aNetworkTier
+    , aStatus
+    , aUsers
+    , aKind
+    , aIPVersion
+    , aNetwork
+    , aAddress
+    , aPurpose
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aSubnetwork
+    , aId
+    , aRegion
+    , aDescription
+    , aAddressType
+
+    -- ** NodeGroupAggregatedListItems
+    , NodeGroupAggregatedListItems
+    , nodeGroupAggregatedListItems
+    , ngaliAddtional
+
+    -- ** InstanceGroupAggregatedListWarningCode
+    , InstanceGroupAggregatedListWarningCode (..)
+
+    -- ** InstanceGroupListWarning
+    , InstanceGroupListWarning
+    , instanceGroupListWarning
+    , iglwData
+    , iglwCode
+    , iglwMessage
+
+    -- ** AttachedDiskInitializeParamsLabels
+    , AttachedDiskInitializeParamsLabels
+    , attachedDiskInitializeParamsLabels
+    , adiplAddtional
+
+    -- ** Zone
+    , Zone
+    , zone
+    , zStatus
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zAvailableCPUPlatforms
+    , zDescription
+    , zDeprecated
+
+    -- ** RouterBGP
+    , RouterBGP
+    , routerBGP
+    , rbASN
+    , rbAdvertiseMode
+    , rbAdvertisedGroups
+    , rbAdvertisedIPRanges
+
+    -- ** ProjectsSetDefaultNetworkTierRequestNetworkTier
+    , ProjectsSetDefaultNetworkTierRequestNetworkTier (..)
+
+    -- ** FirewallListWarning
+    , FirewallListWarning
+    , firewallListWarning
+    , flwData
+    , flwCode
+    , flwMessage
+
+    -- ** BackendServicesScopedList
+    , BackendServicesScopedList
+    , backendServicesScopedList
+    , bsslWarning
+    , bsslBackendServices
+
+    -- ** InstanceGroupManagersRecreateInstancesRequest
+    , InstanceGroupManagersRecreateInstancesRequest
+    , instanceGroupManagersRecreateInstancesRequest
+    , igmrirInstances
+
+    -- ** TargetSSLProxiesSetSSLCertificatesRequest
+    , TargetSSLProxiesSetSSLCertificatesRequest
+    , targetSSLProxiesSetSSLCertificatesRequest
+    , tspsscrSSLCertificates
+
+    -- ** RouterAggregatedListWarning
+    , RouterAggregatedListWarning
+    , routerAggregatedListWarning
+    , rouData
+    , rouCode
+    , rouMessage
+
+    -- ** InstancesScopedList
+    , InstancesScopedList
+    , instancesScopedList
+    , islWarning
+    , islInstances
+
+    -- ** AcceleratorTypeAggregatedListItems
+    , AcceleratorTypeAggregatedListItems
+    , acceleratorTypeAggregatedListItems
+    , ataliAddtional
+
+    -- ** TargetVPNGatewayAggregatedListWarningDataItem
+    , TargetVPNGatewayAggregatedListWarningDataItem
+    , targetVPNGatewayAggregatedListWarningDataItem
+    , tvgalwdiValue
+    , tvgalwdiKey
+
+    -- ** BackendServiceLoadBalancingScheme
+    , BackendServiceLoadBalancingScheme (..)
+
+    -- ** HealthCheckReference
+    , HealthCheckReference
+    , healthCheckReference
+    , hcrHealthCheck
+
+    -- ** TargetInstanceAggregatedListItems
+    , TargetInstanceAggregatedListItems
+    , targetInstanceAggregatedListItems
+    , tialiAddtional
+
+    -- ** TargetHTTPSProxiesSetQuicOverrideRequest
+    , TargetHTTPSProxiesSetQuicOverrideRequest
+    , targetHTTPSProxiesSetQuicOverrideRequest
+    , thpsqorQuicOverride
+
+    -- ** TargetSSLProxyListWarning
+    , TargetSSLProxyListWarning
+    , targetSSLProxyListWarning
+    , tsplwData
+    , tsplwCode
+    , tsplwMessage
+
+    -- ** InstanceTemplateListWarning
+    , InstanceTemplateListWarning
+    , instanceTemplateListWarning
+    , itlwData
+    , itlwCode
+    , itlwMessage
+
+    -- ** InstanceListReferrersWarning
+    , InstanceListReferrersWarning
+    , instanceListReferrersWarning
+    , ilrwData
+    , ilrwCode
+    , ilrwMessage
+
+    -- ** RouteListWarning
+    , RouteListWarning
+    , routeListWarning
+    , rlwlData
+    , rlwlCode
+    , rlwlMessage
+
+    -- ** TargetTCPProxyProxyHeader
+    , TargetTCPProxyProxyHeader (..)
+
+    -- ** InstanceGroupAggregatedList
+    , InstanceGroupAggregatedList
+    , instanceGroupAggregatedList
+    , igalNextPageToken
+    , igalKind
+    , igalItems
+    , igalSelfLink
+    , igalWarning
+    , igalId
+
+    -- ** TargetVPNGatewayAggregatedListWarningCode
+    , TargetVPNGatewayAggregatedListWarningCode (..)
+
+    -- ** OperationStatus
+    , OperationStatus (..)
+
+    -- ** Route
+    , Route
+    , route
+    , rrNextHopPeering
+    , rrPriority
+    , rrKind
+    , rrNextHopGateway
+    , rrNextHopNetwork
+    , rrNetwork
+    , rrWarnings
+    , rrNextHopIP
+    , rrDestRange
+    , rrSelfLink
+    , rrName
+    , rrCreationTimestamp
+    , rrId
+    , rrNextHopVPNTunnel
+    , rrDescription
+    , rrTags
+    , rrNextHopInstance
+
+    -- ** TargetVPNGatewaysScopedListWarningDataItem
+    , TargetVPNGatewaysScopedListWarningDataItem
+    , targetVPNGatewaysScopedListWarningDataItem
+    , tvgslwdiValue
+    , tvgslwdiKey
+
+    -- ** LogConfigCloudAuditOptionsLogName
+    , LogConfigCloudAuditOptionsLogName (..)
+
+    -- ** LicenseCodeState
+    , LicenseCodeState (..)
+
+    -- ** InterconnectLocationRegionInfo
+    , InterconnectLocationRegionInfo
+    , interconnectLocationRegionInfo
+    , ilriLocationPresence
+    , ilriExpectedRttMs
+    , ilriRegion
+
+    -- ** TargetVPNGatewaysScopedListWarningCode
+    , TargetVPNGatewaysScopedListWarningCode (..)
+
+    -- ** TargetHTTPSProxiesSetSSLCertificatesRequest
+    , TargetHTTPSProxiesSetSSLCertificatesRequest
+    , targetHTTPSProxiesSetSSLCertificatesRequest
+    , thpsscrSSLCertificates
+
+    -- ** InstanceTemplate
+    , InstanceTemplate
+    , instanceTemplate
+    , itSourceInstance
+    , itKind
+    , itSelfLink
+    , itName
+    , itCreationTimestamp
+    , itId
+    , itSourceInstanceParams
+    , itDescription
+    , itProperties
+
+    -- ** XpnResourceId
+    , XpnResourceId
+    , xpnResourceId
+    , xriId
+    , xriType
+
+    -- ** RouterList
+    , RouterList
+    , routerList
+    , rllNextPageToken
+    , rllKind
+    , rllItems
+    , rllSelfLink
+    , rllWarning
+    , rllId
+
+    -- ** TargetSSLProxy
+    , TargetSSLProxy
+    , targetSSLProxy
+    , tspSSLPolicy
+    , tspSSLCertificates
+    , tspService
+    , tspKind
+    , tspSelfLink
+    , tspName
+    , tspCreationTimestamp
+    , tspId
+    , tspProxyHeader
+    , tspDescription
+
+    -- ** SSLCertificateListWarning
+    , SSLCertificateListWarning
+    , sslCertificateListWarning
+    , sclwData
+    , sclwCode
+    , sclwMessage
+
+    -- ** SnapshotListWarningDataItem
+    , SnapshotListWarningDataItem
+    , snapshotListWarningDataItem
+    , slwdiValue
+    , slwdiKey
+
+    -- ** TargetVPNGateway
+    , TargetVPNGateway
+    , targetVPNGateway
+    , tvgStatus
+    , tvgKind
+    , tvgNetwork
+    , tvgSelfLink
+    , tvgName
+    , tvgCreationTimestamp
+    , tvgId
+    , tvgRegion
+    , tvgTunnels
+    , tvgDescription
+    , tvgForwardingRules
+
+    -- ** DiskStatus
+    , DiskStatus (..)
+
+    -- ** ResourceCommitment
+    , ResourceCommitment
+    , resourceCommitment
+    , rcAmount
+    , rcType
+
+    -- ** SnapshotListWarningCode
+    , SnapshotListWarningCode (..)
+
+    -- ** BackendServiceIAP
+    , BackendServiceIAP
+    , backendServiceIAP
+    , bsiapEnabled
+    , bsiapOAuth2ClientSecretSha256
+    , bsiapOAuth2ClientSecret
+    , bsiapOAuth2ClientId
+
+    -- ** TargetVPNGatewayListWarning
+    , TargetVPNGatewayListWarning
+    , targetVPNGatewayListWarning
+    , tvglwData
+    , tvglwCode
+    , tvglwMessage
+
+    -- ** InterconnectAttachmentEdgeAvailabilityDomain
+    , InterconnectAttachmentEdgeAvailabilityDomain (..)
+
+    -- ** ManagedInstanceInstanceStatus
+    , ManagedInstanceInstanceStatus (..)
+
+    -- ** HTTPHealthCheckProxyHeader
+    , HTTPHealthCheckProxyHeader (..)
+
+    -- ** VMEndpointNATMAppingsListWarningDataItem
+    , VMEndpointNATMAppingsListWarningDataItem
+    , vMEndpointNATMAppingsListWarningDataItem
+    , vmenatmalwdiValue
+    , vmenatmalwdiKey
+
+    -- ** InterconnectLocationContinent
+    , InterconnectLocationContinent (..)
+
+    -- ** URLMapsValidateResponse
+    , URLMapsValidateResponse
+    , urlMapsValidateResponse
+    , umvrResult
+
+    -- ** SSLCertificate
+    , SSLCertificate
+    , sslCertificate
+    , scPrivateKey
+    , scKind
+    , scSelfLink
+    , scName
+    , scCreationTimestamp
+    , scId
+    , scCertificate
+    , scDescription
+
+    -- ** VMEndpointNATMAppingsListWarningCode
+    , VMEndpointNATMAppingsListWarningCode (..)
+
+    -- ** RouterStatusBGPPeerStatus
+    , RouterStatusBGPPeerStatus
+    , routerStatusBGPPeerStatus
+    , rsbpsStatus
+    , rsbpsIPAddress
+    , rsbpsState
+    , rsbpsPeerIPAddress
+    , rsbpsUptime
+    , rsbpsNumLearnedRoutes
+    , rsbpsName
+    , rsbpsUptimeSeconds
+    , rsbpsAdvertisedRoutes
+    , rsbpsLinkedVPNTunnel
+
+    -- ** NodeTemplateStatus
+    , NodeTemplateStatus (..)
+
+    -- ** URLMapReference
+    , URLMapReference
+    , urlMapReference
+    , umrURLMap
+
+    -- ** AttachedDiskMode
+    , AttachedDiskMode (..)
+
+    -- ** TargetPoolsAddHealthCheckRequest
+    , TargetPoolsAddHealthCheckRequest
+    , targetPoolsAddHealthCheckRequest
+    , tpahcrHealthChecks
+
+    -- ** CommitmentsScopedList
+    , CommitmentsScopedList
+    , commitmentsScopedList
+    , cslWarning
+    , cslCommitments
+
+    -- ** TargetVPNGatewayListWarningCode
+    , TargetVPNGatewayListWarningCode (..)
+
+    -- ** DiskAggregatedListItems
+    , DiskAggregatedListItems
+    , diskAggregatedListItems
+    , daliAddtional
+
+    -- ** TargetVPNGatewayAggregatedListWarning
+    , TargetVPNGatewayAggregatedListWarning
+    , targetVPNGatewayAggregatedListWarning
+    , tvgalwData
+    , tvgalwCode
+    , tvgalwMessage
+
+    -- ** UsageExportLocation
+    , UsageExportLocation
+    , usageExportLocation
+    , uelReportNamePrefix
+    , uelBucketName
+
+    -- ** InstanceTemplateListWarningCode
+    , InstanceTemplateListWarningCode (..)
+
+    -- ** ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlWarning
+    , zlId
+
+    -- ** SSLCertificateListWarningDataItem
+    , SSLCertificateListWarningDataItem
+    , sslCertificateListWarningDataItem
+    , sclwdiValue
+    , sclwdiKey
+
+    -- ** TargetSSLProxyListWarningCode
+    , TargetSSLProxyListWarningCode (..)
+
+    -- ** DistributionPolicyZoneConfiguration
+    , DistributionPolicyZoneConfiguration
+    , distributionPolicyZoneConfiguration
+    , dpzcZone
+
+    -- ** RegionStatus
+    , RegionStatus (..)
+
+    -- ** TargetTCPProxiesSetProxyHeaderRequest
+    , TargetTCPProxiesSetProxyHeaderRequest
+    , targetTCPProxiesSetProxyHeaderRequest
+    , ttpsphrProxyHeader
+
+    -- ** InterconnectAttachmentBandwidth
+    , InterconnectAttachmentBandwidth (..)
+
+    -- ** RouterBGPPeer
+    , RouterBGPPeer
+    , routerBGPPeer
+    , rbpIPAddress
+    , rbpInterfaceName
+    , rbpPeerIPAddress
+    , rbpAdvertisedRoutePriority
+    , rbpPeerASN
+    , rbpAdvertiseMode
+    , rbpName
+    , rbpAdvertisedGroups
+    , rbpManagementType
+    , rbpAdvertisedIPRanges
+
+    -- ** SubnetworksExpandIPCIdRRangeRequest
+    , SubnetworksExpandIPCIdRRangeRequest
+    , subnetworksExpandIPCIdRRangeRequest
+    , seicirrrIPCIdRRange
+
+    -- ** ManagedInstance
+    , ManagedInstance
+    , managedInstance
+    , miLastAttempt
+    , miCurrentAction
+    , miId
+    , miInstanceStatus
+    , miInstance
+
+    -- ** InstanceGroupManagerAggregatedListItems
+    , InstanceGroupManagerAggregatedListItems
+    , instanceGroupManagerAggregatedListItems
+    , igmaliAddtional
+
+    -- ** InstanceGroupManagersDeleteInstancesRequest
+    , InstanceGroupManagersDeleteInstancesRequest
+    , instanceGroupManagersDeleteInstancesRequest
+    , igmdirInstances
+
+    -- ** Backend
+    , Backend
+    , backend
+    , bGroup
+    , bBalancingMode
+    , bMaxUtilization
+    , bMaxRate
+    , bMaxConnections
+    , bMaxConnectionsPerInstance
+    , bMaxRatePerInstance
+    , bDescription
+    , bCapacityScaler
+
+    -- ** TargetVPNGatewaysScopedListWarning
+    , TargetVPNGatewaysScopedListWarning
+    , targetVPNGatewaysScopedListWarning
+    , tvgslwData
+    , tvgslwCode
+    , tvgslwMessage
+
+    -- ** TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)
+
+    -- ** AddressList
+    , AddressList
+    , addressList
+    , alNextPageToken
+    , alKind
+    , alItems
+    , alSelfLink
+    , alWarning
+    , alId
+
+    -- ** TargetVPNGatewayListWarningDataItem
+    , TargetVPNGatewayListWarningDataItem
+    , targetVPNGatewayListWarningDataItem
+    , tvglwdiValue
+    , tvglwdiKey
+
+    -- ** ForwardingRuleAggregatedListItems
+    , ForwardingRuleAggregatedListItems
+    , forwardingRuleAggregatedListItems
+    , fraliAddtional
+
+    -- ** InterconnectAttachmentAggregatedList
+    , InterconnectAttachmentAggregatedList
+    , interconnectAttachmentAggregatedList
+    , iaalNextPageToken
+    , iaalKind
+    , iaalItems
+    , iaalSelfLink
+    , iaalWarning
+    , iaalId
+
+    -- ** InstanceListReferrersWarningCode
+    , InstanceListReferrersWarningCode (..)
+
+    -- ** ConditionOp
+    , ConditionOp (..)
+
+    -- ** RouteListWarningCode
+    , RouteListWarningCode (..)
+
+    -- ** OperationAggregatedListItems
+    , OperationAggregatedListItems
+    , operationAggregatedListItems
+    , oaliAddtional
+
+    -- ** InstanceGroupManagerActionsSummary
+    , InstanceGroupManagerActionsSummary
+    , instanceGroupManagerActionsSummary
+    , igmasDeleting
+    , igmasRestarting
+    , igmasNone
+    , igmasCreating
+    , igmasVerifying
+    , igmasRefreshing
+    , igmasCreatingWithoutRetries
+    , igmasRecreating
+    , igmasAbandoning
+
+    -- ** XpnHostList
+    , XpnHostList
+    , xpnHostList
+    , xhlNextPageToken
+    , xhlKind
+    , xhlItems
+    , xhlSelfLink
+    , xhlWarning
+    , xhlId
+
+    -- ** VPNTunnelStatus
+    , VPNTunnelStatus (..)
+
+    -- ** InstanceTemplateListWarningDataItem
+    , InstanceTemplateListWarningDataItem
+    , instanceTemplateListWarningDataItem
+    , itlwdiValue
+    , itlwdiKey
+
+    -- ** SSLCertificateListWarningCode
+    , SSLCertificateListWarningCode (..)
+
+    -- ** ServiceAccount
+    , ServiceAccount
+    , serviceAccount
+    , saEmail
+    , saScopes
+
+    -- ** SnapshotListWarning
+    , SnapshotListWarning
+    , snapshotListWarning
+    , sData
+    , sCode
+    , sMessage
+
+    -- ** RegionInstanceGroupManagersAbandonInstancesRequest
+    , RegionInstanceGroupManagersAbandonInstancesRequest
+    , regionInstanceGroupManagersAbandonInstancesRequest
+    , rigmairInstances
+
+    -- ** NetworkList
+    , NetworkList
+    , networkList
+    , nlNextPageToken
+    , nlKind
+    , nlItems
+    , nlSelfLink
+    , nlWarning
+    , nlId
+
+    -- ** NetworkPeering
+    , NetworkPeering
+    , networkPeering
+    , netState
+    , netStateDetails
+    , netNetwork
+    , netName
+    , netAutoCreateRoutes
+
+    -- ** TargetSSLProxyListWarningDataItem
+    , TargetSSLProxyListWarningDataItem
+    , targetSSLProxyListWarningDataItem
+    , tsplwdiValue
+    , tsplwdiKey
+
+    -- ** InstanceGroupsListInstancesRequest
+    , InstanceGroupsListInstancesRequest
+    , instanceGroupsListInstancesRequest
+    , iglirInstanceState
+
+    -- ** DiskInstantiationConfigInstantiateFrom
+    , DiskInstantiationConfigInstantiateFrom (..)
+
+    -- ** InstanceListReferrersWarningDataItem
+    , InstanceListReferrersWarningDataItem
+    , instanceListReferrersWarningDataItem
+    , ilrwdiValue
+    , ilrwdiKey
+
+    -- ** RouteListWarningDataItem
+    , RouteListWarningDataItem
+    , routeListWarningDataItem
+    , rValue
+    , rKey
+
+    -- ** InterconnectAttachmentsScopedList
+    , InterconnectAttachmentsScopedList
+    , interconnectAttachmentsScopedList
+    , iaslWarning
+    , iaslInterconnectAttachments
+
+    -- ** SecurityPolicyList
+    , SecurityPolicyList
+    , securityPolicyList
+    , splNextPageToken
+    , splKind
+    , splItems
+    , splWarning
+    , splId
+
+    -- ** BackendBalancingMode
+    , BackendBalancingMode (..)
+
+    -- ** RouterBGPAdvertisedGroupsItem
+    , RouterBGPAdvertisedGroupsItem (..)
+
+    -- ** CommitmentAggregatedList
+    , CommitmentAggregatedList
+    , commitmentAggregatedList
+    , calNextPageToken
+    , calKind
+    , calItems
+    , calSelfLink
+    , calWarning
+    , calId
+
+    -- ** RegionInstanceGroupList
+    , RegionInstanceGroupList
+    , regionInstanceGroupList
+    , riglNextPageToken
+    , riglKind
+    , riglItems
+    , riglSelfLink
+    , riglWarning
+    , riglId
+
+    -- ** VMEndpointNATMAppingsListWarning
+    , VMEndpointNATMAppingsListWarning
+    , vMEndpointNATMAppingsListWarning
+    , vmenatmalwData
+    , vmenatmalwCode
+    , vmenatmalwMessage
+
+    -- ** TargetPoolAggregatedListItems
+    , TargetPoolAggregatedListItems
+    , targetPoolAggregatedListItems
+    , tpaliAddtional
+
+    -- ** NodeGroupsAddNodesRequest
+    , NodeGroupsAddNodesRequest
+    , nodeGroupsAddNodesRequest
+    , nganrAdditionalNodeCount
+
+    -- ** NodeTypeAggregatedList
+    , NodeTypeAggregatedList
+    , nodeTypeAggregatedList
+    , ntalNextPageToken
+    , ntalKind
+    , ntalItems
+    , ntalSelfLink
+    , ntalWarning
+    , ntalId
+
+    -- ** TargetInstancesScopedList
+    , TargetInstancesScopedList
+    , targetInstancesScopedList
+    , tislWarning
+    , tislTargetInstances
+
+    -- ** NetworkRoutingConfigRoutingMode
+    , NetworkRoutingConfigRoutingMode (..)
+
+    -- ** SubnetworkListWarningCode
+    , SubnetworkListWarningCode (..)
+
+    -- ** SubnetworkListWarningDataItem
+    , SubnetworkListWarningDataItem
+    , subnetworkListWarningDataItem
+    , sValue
+    , sKey
+
+    -- ** ProjectsDisableXpnResourceRequest
+    , ProjectsDisableXpnResourceRequest
+    , projectsDisableXpnResourceRequest
+    , pdxrrXpnResource
+
+    -- ** CommitmentStatus
+    , CommitmentStatus (..)
+
+    -- ** AddressAggregatedListItems
+    , AddressAggregatedListItems
+    , addressAggregatedListItems
+    , aAddtional
+
+    -- ** InterconnectListWarningCode
+    , InterconnectListWarningCode (..)
+
+    -- ** AutoscalerList
+    , AutoscalerList
+    , autoscalerList
+    , autNextPageToken
+    , autKind
+    , autItems
+    , autSelfLink
+    , autWarning
+    , autId
+
+    -- ** SSLPolicyMinTLSVersion
+    , SSLPolicyMinTLSVersion (..)
+
+    -- ** InterconnectListWarningDataItem
+    , InterconnectListWarningDataItem
+    , interconnectListWarningDataItem
+    , iValue
+    , iKey
+
+    -- ** SubnetworkAggregatedListWarning
+    , SubnetworkAggregatedListWarning
+    , subnetworkAggregatedListWarning
+    , salwData
+    , salwCode
+    , salwMessage
+
+    -- ** InterconnectLocation
+    , InterconnectLocation
+    , interconnectLocation
+    , intFacilityProviderFacilityId
+    , intRegionInfos
+    , intKind
+    , intAddress
+    , intFacilityProvider
+    , intSelfLink
+    , intPeeringdbFacilityId
+    , intName
+    , intCity
+    , intAvailabilityZone
+    , intCreationTimestamp
+    , intId
+    , intContinent
+    , intDescription
+
+    -- ** TargetSSLProxiesSetProxyHeaderRequest
+    , TargetSSLProxiesSetProxyHeaderRequest
+    , targetSSLProxiesSetProxyHeaderRequest
+    , tspsphrProxyHeader
+
+    -- ** HTTPHealthCheckListWarningCode
+    , HTTPHealthCheckListWarningCode (..)
+
+    -- ** SSLPoliciesListWarningCode
+    , SSLPoliciesListWarningCode (..)
+
+    -- ** VPNTunnelAggregatedList
+    , VPNTunnelAggregatedList
+    , vpnTunnelAggregatedList
+    , vtalNextPageToken
+    , vtalKind
+    , vtalItems
+    , vtalSelfLink
+    , vtalWarning
+    , vtalId
+
+    -- ** SSLPoliciesListWarningDataItem
+    , SSLPoliciesListWarningDataItem
+    , sslPoliciesListWarningDataItem
+    , splwdiValue
+    , splwdiKey
+
+    -- ** InterconnectCircuitInfo
+    , InterconnectCircuitInfo
+    , interconnectCircuitInfo
+    , iciGoogleCircuitId
+    , iciCustomerDemarcId
+    , iciGoogleDemarcId
+
+    -- ** AttachedDisk
+    , AttachedDisk
+    , attachedDisk
+    , adDiskEncryptionKey
+    , adKind
+    , adMode
+    , adGuestOSFeatures
+    , adBoot
+    , adAutoDelete
+    , adInitializeParams
+    , adDeviceName
+    , adInterface
+    , adSource
+    , adLicenses
+    , adType
+    , adIndex
+
+    -- ** HTTPHealthCheckListWarningDataItem
+    , HTTPHealthCheckListWarningDataItem
+    , hTTPHealthCheckListWarningDataItem
+    , httphclwdiValue
+    , httphclwdiKey
+
+    -- ** InterconnectAttachmentOperationalStatus
+    , InterconnectAttachmentOperationalStatus (..)
+
+    -- ** DiskTypeList
+    , DiskTypeList
+    , diskTypeList
+    , dtlNextPageToken
+    , dtlKind
+    , dtlItems
+    , dtlSelfLink
+    , dtlWarning
+    , dtlId
+
+    -- ** TargetTCPProxyListWarningCode
+    , TargetTCPProxyListWarningCode (..)
+
+    -- ** RegionInstanceGroupsSetNamedPortsRequest
+    , RegionInstanceGroupsSetNamedPortsRequest
+    , regionInstanceGroupsSetNamedPortsRequest
+    , rigsnprFingerprint
+    , rigsnprNamedPorts
+
+    -- ** TestPermissionsRequest
+    , TestPermissionsRequest
+    , testPermissionsRequest
+    , tPermissions
+
+    -- ** TargetTCPProxyListWarningDataItem
+    , TargetTCPProxyListWarningDataItem
+    , targetTCPProxyListWarningDataItem
+    , ttplwdiValue
+    , ttplwdiKey
+
+    -- ** ProjectsGetXpnResources
+    , ProjectsGetXpnResources
+    , projectsGetXpnResources
+    , pgxrNextPageToken
+    , pgxrKind
+    , pgxrResources
+
+    -- ** MachineTypeList
+    , MachineTypeList
+    , machineTypeList
+    , mtlNextPageToken
+    , mtlKind
+    , mtlItems
+    , mtlSelfLink
+    , mtlWarning
+    , mtlId
+
+    -- ** TargetHTTPProxyList
+    , TargetHTTPProxyList
+    , targetHTTPProxyList
+    , thttpplNextPageToken
+    , thttpplKind
+    , thttpplItems
+    , thttpplSelfLink
+    , thttpplWarning
+    , thttpplId
+
+    -- ** NodeGroupsListNodesWarning
+    , NodeGroupsListNodesWarning
+    , nodeGroupsListNodesWarning
+    , nglnwData
+    , nglnwCode
+    , nglnwMessage
+
+    -- ** NodeTemplateAggregatedList
+    , NodeTemplateAggregatedList
+    , nodeTemplateAggregatedList
+    , nodNextPageToken
+    , nodKind
+    , nodItems
+    , nodSelfLink
+    , nodWarning
+    , nodId
+
+    -- ** InterconnectLocationListWarning
+    , InterconnectLocationListWarning
+    , interconnectLocationListWarning
+    , illwData
+    , illwCode
+    , illwMessage
+
+    -- ** InstanceGroupsListInstancesWarning
+    , InstanceGroupsListInstancesWarning
+    , instanceGroupsListInstancesWarning
+    , igliwData
+    , igliwCode
+    , igliwMessage
+
+    -- ** RegionInstanceGroupManagerList
+    , RegionInstanceGroupManagerList
+    , regionInstanceGroupManagerList
+    , rigmlNextPageToken
+    , rigmlKind
+    , rigmlItems
+    , rigmlSelfLink
+    , rigmlWarning
+    , rigmlId
+
+    -- ** AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- ** ForwardingRuleIPProtocol
+    , ForwardingRuleIPProtocol (..)
+
+    -- ** DiskTypesScopedList
+    , DiskTypesScopedList
+    , diskTypesScopedList
+    , dtslDiskTypes
+    , dtslWarning
+
+    -- ** LogConfigCloudAuditOptions
+    , LogConfigCloudAuditOptions
+    , logConfigCloudAuditOptions
+    , lccaoAuthorizationLoggingOptions
+    , lccaoLogName
+
+    -- ** ImageListWarningCode
+    , ImageListWarningCode (..)
+
+    -- ** AddressStatus
+    , AddressStatus (..)
+
+    -- ** ProjectsSetDefaultNetworkTierRequest
+    , ProjectsSetDefaultNetworkTierRequest
+    , projectsSetDefaultNetworkTierRequest
+    , psdntrNetworkTier
+
+    -- ** ImageListWarningDataItem
+    , ImageListWarningDataItem
+    , imageListWarningDataItem
+    , imaValue
+    , imaKey
+
+    -- ** AcceleratorTypeListWarningDataItem
+    , AcceleratorTypeListWarningDataItem
+    , acceleratorTypeListWarningDataItem
+    , atlwdiValue
+    , atlwdiKey
+
+    -- ** InterconnectOutageNotification
+    , InterconnectOutageNotification
+    , interconnectOutageNotification
+    , ionState
+    , ionAffectedCircuits
+    , ionStartTime
+    , ionIssueType
+    , ionName
+    , ionEndTime
+    , ionSource
+    , ionDescription
+
+    -- ** NodeTemplateList
+    , NodeTemplateList
+    , nodeTemplateList
+    , ntlNextPageToken
+    , ntlKind
+    , ntlItems
+    , ntlSelfLink
+    , ntlWarning
+    , ntlId
+
+    -- ** AcceleratorTypeListWarningCode
+    , AcceleratorTypeListWarningCode (..)
+
+    -- ** DiskTypeAggregatedList
+    , DiskTypeAggregatedList
+    , diskTypeAggregatedList
+    , dtalNextPageToken
+    , dtalKind
+    , dtalItems
+    , dtalSelfLink
+    , dtalWarning
+    , dtalId
+
+    -- ** HTTPHealthCheck
+    , HTTPHealthCheck
+    , hTTPHealthCheck
+    , httphcResponse
+    , httphcRequestPath
+    , httphcHost
+    , httphcProxyHeader
+    , httphcPortName
+    , httphcPort
+
+    -- ** URLMapListWarningDataItem
+    , URLMapListWarningDataItem
+    , urlMapListWarningDataItem
+    , umlwdiValue
+    , umlwdiKey
+
+    -- ** AddressNetworkTier
+    , AddressNetworkTier (..)
+
+    -- ** RouterNATSubnetworkToNAT
+    , RouterNATSubnetworkToNAT
+    , routerNATSubnetworkToNAT
+    , rnatstnatSourceIPRangesToNAT
+    , rnatstnatName
+    , rnatstnatSecondaryIPRangeNames
+
+    -- ** BackendServiceGroupHealth
+    , BackendServiceGroupHealth
+    , backendServiceGroupHealth
+    , bsghKind
+    , bsghHealthStatus
+
+    -- ** URLMapListWarningCode
+    , URLMapListWarningCode (..)
+
+    -- ** InstanceGroupsListInstancesRequestInstanceState
+    , InstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- ** AutoscalersScopedList
+    , AutoscalersScopedList
+    , autoscalersScopedList
+    , aAutoscalers
+    , aWarning
+
+    -- ** LogConfigDataAccessOptions
+    , LogConfigDataAccessOptions
+    , logConfigDataAccessOptions
+    , lcdaoLogMode
+
+    -- ** AutoscalerAggregatedList
+    , AutoscalerAggregatedList
+    , autoscalerAggregatedList
+    , aalNextPageToken
+    , aalKind
+    , aalItems
+    , aalSelfLink
+    , aalWarning
+    , aalId
+
+    -- ** RouterAggregatedListItems
+    , RouterAggregatedListItems
+    , routerAggregatedListItems
+    , raliAddtional
+
+    -- ** AcceleratorTypesScopedListWarning
+    , AcceleratorTypesScopedListWarning
+    , acceleratorTypesScopedListWarning
+    , atslwData
+    , atslwCode
+    , atslwMessage
+
+    -- ** TargetTCPProxy
+    , TargetTCPProxy
+    , targetTCPProxy
+    , ttpService
+    , ttpKind
+    , ttpSelfLink
+    , ttpName
+    , ttpCreationTimestamp
+    , ttpId
+    , ttpProxyHeader
+    , ttpDescription
+
+    -- ** SchedulingNodeAffinityOperator
+    , SchedulingNodeAffinityOperator (..)
+
+    -- ** BackendBucketListWarning
+    , BackendBucketListWarning
+    , backendBucketListWarning
+    , bblwData
+    , bblwCode
+    , bblwMessage
+
+    -- ** ProjectDefaultNetworkTier
+    , ProjectDefaultNetworkTier (..)
+
+    -- ** ImageLabels
+    , ImageLabels
+    , imageLabels
+    , iAddtional
+
+    -- ** NodeGroupListWarningCode
+    , NodeGroupListWarningCode (..)
+
+    -- ** DistributionPolicy
+    , DistributionPolicy
+    , distributionPolicy
+    , dpZones
+
+    -- ** RouterNATSourceSubnetworkIPRangesToNAT
+    , RouterNATSourceSubnetworkIPRangesToNAT (..)
+
+    -- ** NodeGroupListWarningDataItem
+    , NodeGroupListWarningDataItem
+    , nodeGroupListWarningDataItem
+    , nglwdiValue
+    , nglwdiKey
+
+    -- ** HTTPSHealthCheckProxyHeader
+    , HTTPSHealthCheckProxyHeader (..)
+
+    -- ** AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- ** NodeGroupAggregatedListWarning
+    , NodeGroupAggregatedListWarning
+    , nodeGroupAggregatedListWarning
+    , ngalwData
+    , ngalwCode
+    , ngalwMessage
+
+    -- ** RegionList
+    , RegionList
+    , regionList
+    , regNextPageToken
+    , regKind
+    , regItems
+    , regSelfLink
+    , regWarning
+    , regId
+
+    -- ** AttachedDiskInterface
+    , AttachedDiskInterface (..)
+
+    -- ** SchedulingNodeAffinity
+    , SchedulingNodeAffinity
+    , schedulingNodeAffinity
+    , snaOperator
+    , snaValues
+    , snaKey
+
+    -- ** HealthCheckType
+    , HealthCheckType (..)
+
+    -- ** RegionInstanceGroupsListInstancesWarningCode
+    , RegionInstanceGroupsListInstancesWarningCode (..)
+
+    -- ** ZoneStatus
+    , ZoneStatus (..)
+
+    -- ** VPNTunnelList
+    , VPNTunnelList
+    , vpnTunnelList
+    , vtlNextPageToken
+    , vtlKind
+    , vtlItems
+    , vtlSelfLink
+    , vtlWarning
+    , vtlId
+
+    -- ** AcceleratorTypeAggregatedListWarning
+    , AcceleratorTypeAggregatedListWarning
+    , acceleratorTypeAggregatedListWarning
+    , atalwData
+    , atalwCode
+    , atalwMessage
+
+    -- ** RegionInstanceGroupsListInstancesWarningDataItem
+    , RegionInstanceGroupsListInstancesWarningDataItem
+    , regionInstanceGroupsListInstancesWarningDataItem
+    , rigliwdiValue
+    , rigliwdiKey
+
+    -- ** Interconnect
+    , Interconnect
+    , interconnect
+    , iiState
+    , iiInterconnectType
+    , iiLocation
+    , iiPeerIPAddress
+    , iiKind
+    , iiExpectedOutages
+    , iiProvisionedLinkCount
+    , iiCustomerName
+    , iiRequestedLinkCount
+    , iiOperationalStatus
+    , iiSelfLink
+    , iiName
+    , iiGoogleReferenceId
+    , iiCreationTimestamp
+    , iiAdminEnabled
+    , iiId
+    , iiInterconnectAttachments
+    , iiLinkType
+    , iiGoogleIPAddress
+    , iiDescription
+    , iiNocContactEmail
+    , iiCircuitInfos
+
+    -- ** MachineTypeScratchDisksItem
+    , MachineTypeScratchDisksItem
+    , machineTypeScratchDisksItem
+    , mtsdiDiskGb
+
+    -- ** SubnetworksScopedListWarningDataItem
+    , SubnetworksScopedListWarningDataItem
+    , subnetworksScopedListWarningDataItem
+    , sslwdiValue
+    , sslwdiKey
+
+    -- ** MachineTypesScopedList
+    , MachineTypesScopedList
+    , machineTypesScopedList
+    , mtslMachineTypes
+    , mtslWarning
+
+    -- ** SubnetworksScopedListWarningCode
+    , SubnetworksScopedListWarningCode (..)
+
+    -- ** Subnetwork
+    , Subnetwork
+    , subnetwork
+    , subKind
+    , subFingerprint
+    , subNetwork
+    , subGatewayAddress
+    , subSelfLink
+    , subEnableFlowLogs
+    , subName
+    , subSecondaryIPRanges
+    , subCreationTimestamp
+    , subIPCIdRRange
+    , subId
+    , subRegion
+    , subDescription
+    , subPrivateIPGoogleAccess
+
+    -- ** HealthCheckListWarning
+    , HealthCheckListWarning
+    , healthCheckListWarning
+    , hclwData
+    , hclwCode
+    , hclwMessage
+
+    -- ** MachineTypeAggregatedList
+    , MachineTypeAggregatedList
+    , machineTypeAggregatedList
+    , mtalNextPageToken
+    , mtalKind
+    , mtalItems
+    , mtalSelfLink
+    , mtalWarning
+    , mtalId
+
+    -- ** NodeGroupsScopedListWarning
+    , NodeGroupsScopedListWarning
+    , nodeGroupsScopedListWarning
+    , ngslwData
+    , ngslwCode
+    , ngslwMessage
+
+    -- ** NodeTypeList
+    , NodeTypeList
+    , nodeTypeList
+    , ntltNextPageToken
+    , ntltKind
+    , ntltItems
+    , ntltSelfLink
+    , ntltWarning
+    , ntltId
+
+    -- ** QuotaMetric
+    , QuotaMetric (..)
+
+    -- ** DiskType
+    , DiskType
+    , diskType
+    , dtKind
+    , dtZone
+    , dtSelfLink
+    , dtName
+    , dtCreationTimestamp
+    , dtId
+    , dtRegion
+    , dtValidDiskSize
+    , dtDescription
+    , dtDefaultDiskSizeGb
+    , dtDeprecated
+
+    -- ** NodeTemplateAggregatedListWarning
+    , NodeTemplateAggregatedListWarning
+    , nodeTemplateAggregatedListWarning
+    , ntalwData
+    , ntalwCode
+    , ntalwMessage
+
+    -- ** AutoscalerAggregatedListWarningDataItem
+    , AutoscalerAggregatedListWarningDataItem
+    , autoscalerAggregatedListWarningDataItem
+    , aalwdiValue
+    , aalwdiKey
+
+    -- ** ZoneSetLabelsRequestLabels
+    , ZoneSetLabelsRequestLabels
+    , zoneSetLabelsRequestLabels
+    , zslrlAddtional
+
+    -- ** InterconnectState
+    , InterconnectState (..)
+
+    -- ** NodeTypeListWarningDataItem
+    , NodeTypeListWarningDataItem
+    , nodeTypeListWarningDataItem
+    , ntlwdiValue
+    , ntlwdiKey
+
+    -- ** URLMapValidationResult
+    , URLMapValidationResult
+    , urlMapValidationResult
+    , umvrLoadErrors
+    , umvrLoadSucceeded
+    , umvrTestPassed
+    , umvrTestFailures
+
+    -- ** Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mFingerprint
+    , mItems
+
+    -- ** RouteWarningsItem
+    , RouteWarningsItem
+    , routeWarningsItem
+    , rwiData
+    , rwiCode
+    , rwiMessage
+
+    -- ** NodeGroupsListNodes
+    , NodeGroupsListNodes
+    , nodeGroupsListNodes
+    , nglnNextPageToken
+    , nglnKind
+    , nglnItems
+    , nglnSelfLink
+    , nglnWarning
+    , nglnId
+
+    -- ** InterconnectLocationList
+    , InterconnectLocationList
+    , interconnectLocationList
+    , illNextPageToken
+    , illKind
+    , illItems
+    , illSelfLink
+    , illWarning
+    , illId
+
+    -- ** SSLPoliciesListAvailableFeaturesResponse
+    , SSLPoliciesListAvailableFeaturesResponse
+    , sslPoliciesListAvailableFeaturesResponse
+    , splafrFeatures
+
+    -- ** InstancePropertiesLabels
+    , InstancePropertiesLabels
+    , instancePropertiesLabels
+    , iplAddtional
+
+    -- ** AutoscalerAggregatedListWarningCode
+    , AutoscalerAggregatedListWarningCode (..)
+
+    -- ** AddressIPVersion
+    , AddressIPVersion (..)
+
+    -- ** MachineTypesScopedListWarningDataItem
+    , MachineTypesScopedListWarningDataItem
+    , machineTypesScopedListWarningDataItem
+    , mtslwdiValue
+    , mtslwdiKey
+
+    -- ** InstanceStatus
+    , InstanceStatus (..)
+
+    -- ** NodeTypeListWarningCode
+    , NodeTypeListWarningCode (..)
+
+    -- ** DiskTypeListWarning
+    , DiskTypeListWarning
+    , diskTypeListWarning
+    , dtlwData
+    , dtlwCode
+    , dtlwMessage
+
+    -- ** NodeTemplateListWarningDataItem
+    , NodeTemplateListWarningDataItem
+    , nodeTemplateListWarningDataItem
+    , nodValue
+    , nodKey
+
+    -- ** RegionListWarningDataItem
+    , RegionListWarningDataItem
+    , regionListWarningDataItem
+    , regValue
+    , regKey
+
+    -- ** MachineTypesScopedListWarningCode
+    , MachineTypesScopedListWarningCode (..)
+
+    -- ** InstancesSetMachineResourcesRequest
+    , InstancesSetMachineResourcesRequest
+    , instancesSetMachineResourcesRequest
+    , ismrrGuestAccelerators
+
+    -- ** InstancesSetServiceAccountRequest
+    , InstancesSetServiceAccountRequest
+    , instancesSetServiceAccountRequest
+    , issarEmail
+    , issarScopes
+
+    -- ** SecurityPolicyReference
+    , SecurityPolicyReference
+    , securityPolicyReference
+    , sprSecurityPolicy
+
+    -- ** DiskTypesScopedListWarningDataItem
+    , DiskTypesScopedListWarningDataItem
+    , diskTypesScopedListWarningDataItem
+    , dtslwdiValue
+    , dtslwdiKey
+
+    -- ** NodeTemplateListWarningCode
+    , NodeTemplateListWarningCode (..)
+
+    -- ** VMEndpointNATMAppingsInterfaceNATMAppings
+    , VMEndpointNATMAppingsInterfaceNATMAppings
+    , vMEndpointNATMAppingsInterfaceNATMAppings
+    , vmenatmainatmaSourceAliasIPRange
+    , vmenatmainatmaSourceVirtualIP
+    , vmenatmainatmaNATIPPortRanges
+    , vmenatmainatmaNumTotalNATPorts
+
+    -- ** VPNTunnelAggregatedListWarning
+    , VPNTunnelAggregatedListWarning
+    , vpnTunnelAggregatedListWarning
+    , vtalwData
+    , vtalwCode
+    , vtalwMessage
+
+    -- ** TargetHTTPProxy
+    , TargetHTTPProxy
+    , targetHTTPProxy
+    , thttppURLMap
+    , thttppKind
+    , thttppSelfLink
+    , thttppName
+    , thttppCreationTimestamp
+    , thttppId
+    , thttppDescription
+
+    -- ** MachineType
+    , MachineType
+    , machineType
+    , mtIsSharedCPU
+    , mtKind
+    , mtImageSpaceGb
+    , mtZone
+    , mtSelfLink
+    , mtName
+    , mtCreationTimestamp
+    , mtScratchDisks
+    , mtId
+    , mtGuestCPUs
+    , mtMaximumPersistentDisksSizeGb
+    , mtMaximumPersistentDisks
+    , mtMemoryMb
+    , mtDescription
+    , mtDeprecated
+
+    -- ** AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorType
+
+    -- ** AutoscalerListWarning
+    , AutoscalerListWarning
+    , autoscalerListWarning
+    , alwData
+    , alwCode
+    , alwMessage
+
+    -- ** RegionListWarningCode
+    , RegionListWarningCode (..)
+
+    -- ** RouterInterfaceManagementType
+    , RouterInterfaceManagementType (..)
+
+    -- ** DiskTypesScopedListWarningCode
+    , DiskTypesScopedListWarningCode (..)
+
+    -- ** MachineTypeAggregatedListWarningDataItem
+    , MachineTypeAggregatedListWarningDataItem
+    , machineTypeAggregatedListWarningDataItem
+    , mtalwdiValue
+    , mtalwdiKey
+
+    -- ** OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- ** NodeTypeAggregatedListWarning
+    , NodeTypeAggregatedListWarning
+    , nodeTypeAggregatedListWarning
+    , ntalwtData
+    , ntalwtCode
+    , ntalwtMessage
+
+    -- ** TargetInstancesScopedListWarning
+    , TargetInstancesScopedListWarning
+    , targetInstancesScopedListWarning
+    , tislwData
+    , tislwCode
+    , tislwMessage
+
+    -- ** SubnetworkAggregatedList
+    , SubnetworkAggregatedList
+    , subnetworkAggregatedList
+    , salNextPageToken
+    , salKind
+    , salItems
+    , salSelfLink
+    , salWarning
+    , salId
+
+    -- ** MachineTypeAggregatedListWarningCode
+    , MachineTypeAggregatedListWarningCode (..)
+
+    -- ** VPNTunnelListWarningDataItem
+    , VPNTunnelListWarningDataItem
+    , vpnTunnelListWarningDataItem
+    , vtlwdiValue
+    , vtlwdiKey
+
+    -- ** InterconnectDiagnosticsLinkOpticalPower
+    , InterconnectDiagnosticsLinkOpticalPower
+    , interconnectDiagnosticsLinkOpticalPower
+    , idlopState
+    , idlopValue
+
+    -- ** DisksResizeRequest
+    , DisksResizeRequest
+    , disksResizeRequest
+    , drrSizeGb
+
+    -- ** AutoscalersScopedListWarningDataItem
+    , AutoscalersScopedListWarningDataItem
+    , autoscalersScopedListWarningDataItem
+    , aValue
+    , aKey
+
+    -- ** LogConfigDataAccessOptionsLogMode
+    , LogConfigDataAccessOptionsLogMode (..)
+
+    -- ** InterconnectOutageNotificationState
+    , InterconnectOutageNotificationState (..)
+
+    -- ** ZoneSetPolicyRequest
+    , ZoneSetPolicyRequest
+    , zoneSetPolicyRequest
+    , zsprEtag
+    , zsprBindings
+    , zsprPolicy
+
+    -- ** VPNTunnelListWarningCode
+    , VPNTunnelListWarningCode (..)
+
+    -- ** AutoscalersScopedListWarningCode
+    , AutoscalersScopedListWarningCode (..)
+
+    -- ** DiskTypeAggregatedListWarningDataItem
+    , DiskTypeAggregatedListWarningDataItem
+    , diskTypeAggregatedListWarningDataItem
+    , dtalwdiValue
+    , dtalwdiKey
+
+    -- ** ForwardingRuleLoadBalancingScheme
+    , ForwardingRuleLoadBalancingScheme (..)
+
+    -- ** RegionInstanceGroupManagerListWarning
+    , RegionInstanceGroupManagerListWarning
+    , regionInstanceGroupManagerListWarning
+    , rigmlwData
+    , rigmlwCode
+    , rigmlwMessage
+
+    -- ** RegionInstanceGroupManagersSetTemplateRequest
+    , RegionInstanceGroupManagersSetTemplateRequest
+    , regionInstanceGroupManagersSetTemplateRequest
+    , rigmstrInstanceTemplate
+
+    -- ** InstanceGroupsListInstances
+    , InstanceGroupsListInstances
+    , instanceGroupsListInstances
+    , igliNextPageToken
+    , igliKind
+    , igliItems
+    , igliSelfLink
+    , igliWarning
+    , igliId
+
+    -- ** DiskTypeAggregatedListWarningCode
+    , DiskTypeAggregatedListWarningCode (..)
+
+    -- ** Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aaStatus
+    , aaKind
+    , aaZone
+    , aaStatusDetails
+    , aaSelfLink
+    , aaName
+    , aaCreationTimestamp
+    , aaAutoscalingPolicy
+    , aaId
+    , aaRegion
+    , aaDescription
+    , aaTarget
+
+    -- ** MachineTypeListWarning
+    , MachineTypeListWarning
+    , machineTypeListWarning
+    , mtlwData
+    , mtlwCode
+    , mtlwMessage
+
+    -- ** TargetHTTPProxyListWarning
+    , TargetHTTPProxyListWarning
+    , targetHTTPProxyListWarning
+    , thttpplwData
+    , thttpplwCode
+    , thttpplwMessage
+
+    -- ** DiskAggregatedListWarning
+    , DiskAggregatedListWarning
+    , diskAggregatedListWarning
+    , dalwData
+    , dalwCode
+    , dalwMessage
+
+    -- ** TargetPoolAggregatedListWarning
+    , TargetPoolAggregatedListWarning
+    , targetPoolAggregatedListWarning
+    , tpalwData
+    , tpalwCode
+    , tpalwMessage
+
+    -- ** UsableSubnetworksAggregatedListWarning
+    , UsableSubnetworksAggregatedListWarning
+    , usableSubnetworksAggregatedListWarning
+    , usalwData
+    , usalwCode
+    , usalwMessage
+
+    -- ** DisksScopedListWarning
+    , DisksScopedListWarning
+    , disksScopedListWarning
+    , dslwData
+    , dslwCode
+    , dslwMessage
+
+    -- ** NodeTemplatesScopedListWarningDataItem
+    , NodeTemplatesScopedListWarningDataItem
+    , nodeTemplatesScopedListWarningDataItem
+    , ntslwdiValue
+    , ntslwdiKey
+
+    -- ** TargetVPNGatewayAggregatedListItems
+    , TargetVPNGatewayAggregatedListItems
+    , targetVPNGatewayAggregatedListItems
+    , tvgaliAddtional
+
+    -- ** DiskLabels
+    , DiskLabels
+    , diskLabels
+    , dlAddtional
+
+    -- ** InstanceGroupManagerListWarningDataItem
+    , InstanceGroupManagerListWarningDataItem
+    , instanceGroupManagerListWarningDataItem
+    , igmlwdiValue
+    , igmlwdiKey
+
+    -- ** InterconnectInterconnectType
+    , InterconnectInterconnectType (..)
+
+    -- ** ForwardingRuleAggregatedListWarning
+    , ForwardingRuleAggregatedListWarning
+    , forwardingRuleAggregatedListWarning
+    , fralwData
+    , fralwCode
+    , fralwMessage
+
+    -- ** InstanceGroupManagerListWarningCode
+    , InstanceGroupManagerListWarningCode (..)
+
+    -- ** SSLPolicyWarningsItem
+    , SSLPolicyWarningsItem
+    , sslPolicyWarningsItem
+    , spwiData
+    , spwiCode
+    , spwiMessage
+
+    -- ** RouterStatusBGPPeerStatusStatus
+    , RouterStatusBGPPeerStatusStatus (..)
+
+    -- ** GlobalSetPolicyRequest
+    , GlobalSetPolicyRequest
+    , globalSetPolicyRequest
+    , gsprEtag
+    , gsprBindings
+    , gsprPolicy
+
+    -- ** RegionAutoscalerListWarningDataItem
+    , RegionAutoscalerListWarningDataItem
+    , regionAutoscalerListWarningDataItem
+    , ralwdiaValue
+    , ralwdiaKey
+
+    -- ** DiskListWarningCode
+    , DiskListWarningCode (..)
+
+    -- ** GlobalSetLabelsRequestLabels
+    , GlobalSetLabelsRequestLabels
+    , globalSetLabelsRequestLabels
+    , gslrlAddtional
+
+    -- ** TargetPoolsScopedListWarning
+    , TargetPoolsScopedListWarning
+    , targetPoolsScopedListWarning
+    , tpslwData
+    , tpslwCode
+    , tpslwMessage
+
+    -- ** HealthStatus
+    , HealthStatus
+    , healthStatus
+    , hsIPAddress
+    , hsHealthState
+    , hsPort
+    , hsInstance
+
+    -- ** TargetTCPProxyList
+    , TargetTCPProxyList
+    , targetTCPProxyList
+    , ttplNextPageToken
+    , ttplKind
+    , ttplItems
+    , ttplSelfLink
+    , ttplWarning
+    , ttplId
+
+    -- ** Region
+    , Region
+    , region
+    , regeStatus
+    , regeZones
+    , regeKind
+    , regeSelfLink
+    , regeName
+    , regeCreationTimestamp
+    , regeQuotas
+    , regeId
+    , regeDescription
+    , regeDeprecated
+
+    -- ** RegionAutoscalerListWarningCode
+    , RegionAutoscalerListWarningCode (..)
+
+    -- ** OperationListWarningDataItem
+    , OperationListWarningDataItem
+    , operationListWarningDataItem
+    , olwdiValue
+    , olwdiKey
+
+    -- ** GuestOSFeature
+    , GuestOSFeature
+    , guestOSFeature
+    , gofType
+
+    -- ** VPNTunnel
+    , VPNTunnel
+    , vpnTunnel
+    , vtDetailedStatus
+    , vtStatus
+    , vtLocalTrafficSelector
+    , vtKind
+    , vtPeerIP
+    , vtRouter
+    , vtTargetVPNGateway
+    , vtRemoteTrafficSelector
+    , vtSelfLink
+    , vtSharedSecret
+    , vtName
+    , vtCreationTimestamp
+    , vtSharedSecretHash
+    , vtId
+    , vtIkeVersion
+    , vtRegion
+    , vtDescription
+
+    -- ** InstanceGroupManagerAggregatedListWarning
+    , InstanceGroupManagerAggregatedListWarning
+    , instanceGroupManagerAggregatedListWarning
+    , igmalwData
+    , igmalwCode
+    , igmalwMessage
+
+    -- ** DiskListWarningDataItem
+    , DiskListWarningDataItem
+    , diskListWarningDataItem
+    , dlwdiValue
+    , dlwdiKey
+
+    -- ** CommitmentPlan
+    , CommitmentPlan (..)
+
+    -- ** OperationListWarningCode
+    , OperationListWarningCode (..)
+
+    -- ** SourceInstanceParams
+    , SourceInstanceParams
+    , sourceInstanceParams
+    , sipDiskConfigs
+
+    -- ** AliasIPRange
+    , AliasIPRange
+    , aliasIPRange
+    , airIPCIdRRange
+    , airSubnetworkRangeName
+
+    -- ** ForwardingRuleListWarningCode
+    , ForwardingRuleListWarningCode (..)
+
+    -- ** NodeTypesScopedListWarningDataItem
+    , NodeTypesScopedListWarningDataItem
+    , nodeTypesScopedListWarningDataItem
+    , ntslwditValue
+    , ntslwditKey
+
+    -- ** VPNTunnelsScopedListWarningCode
+    , VPNTunnelsScopedListWarningCode (..)
+
+    -- ** TargetInstanceListWarning
+    , TargetInstanceListWarning
+    , targetInstanceListWarning
+    , tilwData
+    , tilwCode
+    , tilwMessage
+
+    -- ** NodeTypesScopedListWarningCode
+    , NodeTypesScopedListWarningCode (..)
+
+    -- ** NodeType
+    , NodeType
+    , nodeType
+    , ntKind
+    , ntZone
+    , ntCPUPlatform
+    , ntLocalSsdGb
+    , ntSelfLink
+    , ntName
+    , ntCreationTimestamp
+    , ntId
+    , ntGuestCPUs
+    , ntMemoryMb
+    , ntDescription
+    , ntDeprecated
+
+    -- ** AuthorizationLoggingOptions
+    , AuthorizationLoggingOptions
+    , authorizationLoggingOptions
+    , aloPermissionType
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pRules
+    , pVersion
+    , pBindings
+    , pIAMOwned
+
+    -- ** OperationAggregatedListWarning
+    , OperationAggregatedListWarning
+    , operationAggregatedListWarning
+    , oalwData
+    , oalwCode
+    , oalwMessage
+
+    -- ** TargetInstanceAggregatedListWarningDataItem
+    , TargetInstanceAggregatedListWarningDataItem
+    , targetInstanceAggregatedListWarningDataItem
+    , tialwdiValue
+    , tialwdiKey
+
+    -- ** OperationsScopedListWarning
+    , OperationsScopedListWarning
+    , operationsScopedListWarning
+    , oslwData
+    , oslwCode
+    , oslwMessage
+
+    -- ** RegionDiskTypeListWarningDataItem
+    , RegionDiskTypeListWarningDataItem
+    , regionDiskTypeListWarningDataItem
+    , rdtlwdiValue
+    , rdtlwdiKey
+
+    -- ** ForwardingRuleListWarningDataItem
+    , ForwardingRuleListWarningDataItem
+    , forwardingRuleListWarningDataItem
+    , frlwdiValue
+    , frlwdiKey
+
+    -- ** Scheduling
+    , Scheduling
+    , scheduling
+    , sAutomaticRestart
+    , sNodeAffinities
+    , sOnHostMaintenance
+    , sPreemptible
+
+    -- ** TargetInstanceAggregatedListWarningCode
+    , TargetInstanceAggregatedListWarningCode (..)
+
+    -- ** RegionDiskTypeListWarningCode
+    , RegionDiskTypeListWarningCode (..)
+
+    -- ** VPNTunnelsScopedListWarningDataItem
+    , VPNTunnelsScopedListWarningDataItem
+    , vpnTunnelsScopedListWarningDataItem
+    , vtslwdiValue
+    , vtslwdiKey
+
+    -- ** InterconnectList
+    , InterconnectList
+    , interconnectList
+    , intnNextPageToken
+    , intnKind
+    , intnItems
+    , intnSelfLink
+    , intnWarning
+    , intnId
+
+    -- ** TargetPoolListWarningDataItem
+    , TargetPoolListWarningDataItem
+    , targetPoolListWarningDataItem
+    , tplwdiValue
+    , tplwdiKey
+
+    -- ** NodeTemplate
+    , NodeTemplate
+    , nodeTemplate
+    , nttStatus
+    , nttKind
+    , nttSelfLink
+    , nttName
+    , nttStatusMessage
+    , nttCreationTimestamp
+    , nttNodeAffinityLabels
+    , nttId
+    , nttNodeTypeFlexibility
+    , nttNodeType
+    , nttRegion
+    , nttDescription
+
+    -- ** SubnetworkList
+    , SubnetworkList
+    , subnetworkList
+    , slNextPageToken
+    , slKind
+    , slItems
+    , slSelfLink
+    , slWarning
+    , slId
+
+    -- ** AddressAddressType
+    , AddressAddressType (..)
+
+    -- ** TargetPoolListWarningCode
+    , TargetPoolListWarningCode (..)
+
+    -- ** ForwardingRulesScopedListWarning
+    , ForwardingRulesScopedListWarning
+    , forwardingRulesScopedListWarning
+    , frslwData
+    , frslwCode
+    , frslwMessage
+
+    -- ** HTTPHealthCheckList
+    , HTTPHealthCheckList
+    , hTTPHealthCheckList
+    , httphclNextPageToken
+    , httphclKind
+    , httphclItems
+    , httphclSelfLink
+    , httphclWarning
+    , httphclId
+
+    -- ** InstanceGroupManagersScopedListWarning
+    , InstanceGroupManagersScopedListWarning
+    , instanceGroupManagersScopedListWarning
+    , igmslwData
+    , igmslwCode
+    , igmslwMessage
+
+    -- ** SSLPoliciesList
+    , SSLPoliciesList
+    , sslPoliciesList
+    , sslplNextPageToken
+    , sslplKind
+    , sslplItems
+    , sslplSelfLink
+    , sslplWarning
+    , sslplId
+
+    -- ** NodeTemplatesScopedListWarningCode
+    , NodeTemplatesScopedListWarningCode (..)
+
+    -- ** URLMapsValidateRequest
+    , URLMapsValidateRequest
+    , urlMapsValidateRequest
+    , umvrResource
+
+    -- ** InstanceGroupManagersSetTargetPoolsRequest
+    , InstanceGroupManagersSetTargetPoolsRequest
+    , instanceGroupManagersSetTargetPoolsRequest
+    , igmstprFingerprint
+    , igmstprTargetPools
+
+    -- ** NetworkListWarningCode
+    , NetworkListWarningCode (..)
+
+    -- ** Commitment
+    , Commitment
+    , commitment
+    , cStatus
+    , cKind
+    , cPlan
+    , cResources
+    , cEndTimestamp
+    , cSelfLink
+    , cName
+    , cStatusMessage
+    , cCreationTimestamp
+    , cId
+    , cRegion
+    , cStartTimestamp
+    , cDescription
+
+    -- ** HTTPSHealthCheckList
+    , HTTPSHealthCheckList
+    , httpsHealthCheckList
+    , hhclNextPageToken
+    , hhclKind
+    , hhclItems
+    , hhclSelfLink
+    , hhclWarning
+    , hhclId
+
+    -- ** AddressListWarningDataItem
+    , AddressListWarningDataItem
+    , addressListWarningDataItem
+    , addValue
+    , addKey
+
+    -- ** OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- ** CommitmentListWarning
+    , CommitmentListWarning
+    , commitmentListWarning
+    , clwData
+    , clwCode
+    , clwMessage
+
+    -- ** License
+    , License
+    , license
+    , lChargesUseFee
+    , lKind
+    , lResourceRequirements
+    , lTransferable
+    , lSelfLink
+    , lName
+    , lCreationTimestamp
+    , lId
+    , lDescription
+    , lLicenseCode
+
+    -- ** PathRule
+    , PathRule
+    , pathRule
+    , prService
+    , prPaths
+
+    -- ** LicenseCodeLicenseAlias
+    , LicenseCodeLicenseAlias
+    , licenseCodeLicenseAlias
+    , lclaSelfLink
+    , lclaDescription
+
+    -- ** XpnHostListWarningCode
+    , XpnHostListWarningCode (..)
+
+    -- ** InterconnectAttachmentsScopedListWarningDataItem
+    , InterconnectAttachmentsScopedListWarningDataItem
+    , interconnectAttachmentsScopedListWarningDataItem
+    , iaslwdiValue
+    , iaslwdiKey
+
+    -- ** SecurityPolicyListWarningDataItem
+    , SecurityPolicyListWarningDataItem
+    , securityPolicyListWarningDataItem
+    , secValue
+    , secKey
+
+    -- ** InterconnectAttachmentAggregatedListWarningCode
+    , InterconnectAttachmentAggregatedListWarningCode (..)
+
+    -- ** AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- ** CommitmentsScopedListWarningDataItem
+    , CommitmentsScopedListWarningDataItem
+    , commitmentsScopedListWarningDataItem
+    , cslwdiValue
+    , cslwdiKey
+
+    -- ** InterconnectAttachment
+    , InterconnectAttachment
+    , interconnectAttachment
+    , iaState
+    , iaPartnerASN
+    , iaPairingKey
+    , iaKind
+    , iaCustomerRouterIPAddress
+    , iaPartnerMetadata
+    , iaRouter
+    , iaOperationalStatus
+    , iaSelfLink
+    , iaName
+    , iaBandwidth
+    , iaGoogleReferenceId
+    , iaCreationTimestamp
+    , iaEdgeAvailabilityDomain
+    , iaInterconnect
+    , iaAdminEnabled
+    , iaVLANTag8021q
+    , iaCloudRouterIPAddress
+    , iaId
+    , iaCandidateSubnets
+    , iaRegion
+    , iaType
+    , iaDescription
+    , iaPrivateInterconnectInfo
+
+    -- ** InstanceList
+    , InstanceList
+    , instanceList
+    , insNextPageToken
+    , insKind
+    , insItems
+    , insSelfLink
+    , insWarning
+    , insId
+
+    -- ** RegionSetLabelsRequestLabels
+    , RegionSetLabelsRequestLabels
+    , regionSetLabelsRequestLabels
+    , rslrlAddtional
+
+    -- ** NetworkListWarningDataItem
+    , NetworkListWarningDataItem
+    , networkListWarningDataItem
+    , nlwdiValue
+    , nlwdiKey
+
+    -- ** AddressListWarningCode
+    , AddressListWarningCode (..)
+
+    -- ** NetworkPeeringState
+    , NetworkPeeringState (..)
+
+    -- ** CacheKeyPolicy
+    , CacheKeyPolicy
+    , cacheKeyPolicy
+    , ckpQueryStringWhiteList
+    , ckpIncludeHost
+    , ckpIncludeProtocol
+    , ckpQueryStringBlackList
+    , ckpIncludeQueryString
+
+    -- ** ZoneListWarningCode
+    , ZoneListWarningCode (..)
+
+    -- ** CommitmentAggregatedListWarningDataItem
+    , CommitmentAggregatedListWarningDataItem
+    , commitmentAggregatedListWarningDataItem
+    , calwdiValue
+    , calwdiKey
+
+    -- ** RegionInstanceGroupListWarningDataItem
+    , RegionInstanceGroupListWarningDataItem
+    , regionInstanceGroupListWarningDataItem
+    , riglwdiValue
+    , riglwdiKey
+
+    -- ** SubnetworkAggregatedListItems
+    , SubnetworkAggregatedListItems
+    , subnetworkAggregatedListItems
+    , saliAddtional
+
+    -- ** InterconnectAttachmentAggregatedListWarningDataItem
+    , InterconnectAttachmentAggregatedListWarningDataItem
+    , interconnectAttachmentAggregatedListWarningDataItem
+    , iaalwdiValue
+    , iaalwdiKey
+
+    -- ** AuthorizationLoggingOptionsPermissionType
+    , AuthorizationLoggingOptionsPermissionType (..)
+
+    -- ** InterconnectAttachmentListWarning
+    , InterconnectAttachmentListWarning
+    , interconnectAttachmentListWarning
+    , intData
+    , intCode
+    , intMessage
+
+    -- ** InterconnectOutageNotificationIssueType
+    , InterconnectOutageNotificationIssueType (..)
+
+    -- ** CommitmentsScopedListWarningCode
+    , CommitmentsScopedListWarningCode (..)
+
+    -- ** Condition
+    , Condition
+    , condition
+    , cOp
+    , cIAM
+    , cValues
+    , cValue
+    , cSys
+    , cSvc
+
+    -- ** AddressAggregatedListWarning
+    , AddressAggregatedListWarning
+    , addressAggregatedListWarning
+    , addData
+    , addCode
+    , addMessage
+
+    -- ** ManagedInstanceLastAttempt
+    , ManagedInstanceLastAttempt
+    , managedInstanceLastAttempt
+    , milaErrors
+
+    -- ** LicensesListResponseWarning
+    , LicensesListResponseWarning
+    , licensesListResponseWarning
+    , llrwData
+    , llrwCode
+    , llrwMessage
+
+    -- ** AutoscalerStatusDetails
+    , AutoscalerStatusDetails
+    , autoscalerStatusDetails
+    , asdType
+    , asdMessage
+
+    -- ** BackendServiceList
+    , BackendServiceList
+    , backendServiceList
+    , bslNextPageToken
+    , bslKind
+    , bslItems
+    , bslSelfLink
+    , bslWarning
+    , bslId
+
+    -- ** XpnHostListWarningDataItem
+    , XpnHostListWarningDataItem
+    , xpnHostListWarningDataItem
+    , xhlwdiValue
+    , xhlwdiKey
+
+    -- ** InterconnectAttachmentsScopedListWarningCode
+    , InterconnectAttachmentsScopedListWarningCode (..)
+
+    -- ** SecurityPolicyListWarningCode
+    , SecurityPolicyListWarningCode (..)
+
+    -- ** ZoneListWarningDataItem
+    , ZoneListWarningDataItem
+    , zoneListWarningDataItem
+    , zlwdiValue
+    , zlwdiKey
+
+    -- ** RegionSetPolicyRequest
+    , RegionSetPolicyRequest
+    , regionSetPolicyRequest
+    , rsprEtag
+    , rsprBindings
+    , rsprPolicy
+
+    -- ** CommitmentAggregatedListWarningCode
+    , CommitmentAggregatedListWarningCode (..)
+
+    -- ** RegionInstanceGroupListWarningCode
+    , RegionInstanceGroupListWarningCode (..)
+
+    -- ** InstanceGroupsScopedListWarning
+    , InstanceGroupsScopedListWarning
+    , instanceGroupsScopedListWarning
+    , igslwData
+    , igslwCode
+    , igslwMessage
+
+    -- ** AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- ** InstanceGroupsScopedListWarningCode
+    , InstanceGroupsScopedListWarningCode (..)
+
+    -- ** InterconnectOperationalStatus
+    , InterconnectOperationalStatus (..)
+
+    -- ** InstanceGroupsScopedListWarningDataItem
+    , InstanceGroupsScopedListWarningDataItem
+    , instanceGroupsScopedListWarningDataItem
+    , igslwdiValue
+    , igslwdiKey
+
+    -- ** SecurityPolicyRuleMatcherConfig
+    , SecurityPolicyRuleMatcherConfig
+    , securityPolicyRuleMatcherConfig
+    , sprmcSrcIPRanges
+
+    -- ** LicensesListResponseWarningDataItem
+    , LicensesListResponseWarningDataItem
+    , licensesListResponseWarningDataItem
+    , llrwdiValue
+    , llrwdiKey
+
+    -- ** LicensesListResponseWarningCode
+    , LicensesListResponseWarningCode (..)
+
+    -- ** XpnHostListWarning
+    , XpnHostListWarning
+    , xpnHostListWarning
+    , xhlwData
+    , xhlwCode
+    , xhlwMessage
+
+    -- ** ResourceGroupReference
+    , ResourceGroupReference
+    , resourceGroupReference
+    , rgrGroup
+
+    -- ** VMEndpointNATMAppingsList
+    , VMEndpointNATMAppingsList
+    , vMEndpointNATMAppingsList
+    , vmenatmalNextPageToken
+    , vmenatmalKind
+    , vmenatmalResult
+    , vmenatmalSelfLink
+    , vmenatmalWarning
+    , vmenatmalId
+
+    -- ** Firewall
+    , Firewall
+    , firewall
+    , fSourceTags
+    , fSourceServiceAccounts
+    , fPriority
+    , fDirection
+    , fKind
+    , fDisabled
+    , fTargetTags
+    , fNetwork
+    , fSourceRanges
+    , fSelfLink
+    , fName
+    , fDenied
+    , fCreationTimestamp
+    , fId
+    , fAllowed
+    , fDestinationRanges
+    , fLogConfig
+    , fTargetServiceAccounts
+    , fDescription
+
+    -- ** InterconnectAttachmentsScopedListWarning
+    , InterconnectAttachmentsScopedListWarning
+    , interconnectAttachmentsScopedListWarning
+    , iaslwData
+    , iaslwCode
+    , iaslwMessage
+
+    -- ** HostRule
+    , HostRule
+    , hostRule
+    , hrHosts
+    , hrDescription
+    , hrPathMatcher
+
+    -- ** SecurityPolicyListWarning
+    , SecurityPolicyListWarning
+    , securityPolicyListWarning
+    , secData
+    , secCode
+    , secMessage
+
+    -- ** Quota
+    , Quota
+    , quota
+    , qMetric
+    , qLimit
+    , qUsage
+
+    -- ** InstanceGroup
+    , InstanceGroup
+    , instanceGroup
+    , ig1Size
+    , ig1Kind
+    , ig1Fingerprint
+    , ig1Network
+    , ig1Zone
+    , ig1SelfLink
+    , ig1Name
+    , ig1CreationTimestamp
+    , ig1Subnetwork
+    , ig1Id
+    , ig1Region
+    , ig1Description
+    , ig1NamedPorts
+
+    -- ** AddressListWarning
+    , AddressListWarning
+    , addressListWarning
+    , alwlData
+    , alwlCode
+    , alwlMessage
+
+    -- ** RegionSetLabelsRequest
+    , RegionSetLabelsRequest
+    , regionSetLabelsRequest
+    , rslrLabels
+    , rslrLabelFingerprint
+
+    -- ** RouterInterface
+    , RouterInterface
+    , routerInterface
+    , riLinkedInterconnectAttachment
+    , riName
+    , riManagementType
+    , riIPRange
+    , riLinkedVPNTunnel
+
+    -- ** InstanceWithNamedPortsStatus
+    , InstanceWithNamedPortsStatus (..)
+
+    -- ** NetworkListWarning
+    , NetworkListWarning
+    , networkListWarning
+    , nlwData
+    , nlwCode
+    , nlwMessage
+
+    -- ** TCPHealthCheckProxyHeader
+    , TCPHealthCheckProxyHeader (..)
+
+    -- ** SnapshotList
+    , SnapshotList
+    , snapshotList
+    , snaNextPageToken
+    , snaKind
+    , snaItems
+    , snaSelfLink
+    , snaWarning
+    , snaId
+
+    -- ** InterconnectDiagnostics
+    , InterconnectDiagnostics
+    , interconnectDiagnostics
+    , idMACAddress
+    , idArpCaches
+    , idLinks
+
+    -- ** CommitmentListWarningCode
+    , CommitmentListWarningCode (..)
+
+    -- ** LicenseCode
+    , LicenseCode
+    , licenseCode
+    , lcState
+    , lcKind
+    , lcTransferable
+    , lcSelfLink
+    , lcName
+    , lcCreationTimestamp
+    , lcId
+    , lcLicenseAlias
+    , lcDescription
+
+    -- ** TestFailure
+    , TestFailure
+    , testFailure
+    , tfPath
+    , tfExpectedService
+    , tfHost
+    , tfActualService
+
+    -- ** CommitmentListWarningDataItem
+    , CommitmentListWarningDataItem
+    , commitmentListWarningDataItem
+    , clwdiValue
+    , clwdiKey
+
+    -- ** ConditionIAM
+    , ConditionIAM (..)
+
+    -- ** CommitmentsScopedListWarning
+    , CommitmentsScopedListWarning
+    , commitmentsScopedListWarning
+    , cslwData
+    , cslwCode
+    , cslwMessage
+
+    -- ** SerialPortOutput
+    , SerialPortOutput
+    , serialPortOutput
+    , spoNext
+    , spoContents
+    , spoKind
+    , spoStart
+    , spoSelfLink
+
+    -- ** TargetVPNGatewayAggregatedList
+    , TargetVPNGatewayAggregatedList
+    , targetVPNGatewayAggregatedList
+    , tvgalNextPageToken
+    , tvgalKind
+    , tvgalItems
+    , tvgalSelfLink
+    , tvgalWarning
+    , tvgalId
+
+    -- ** InterconnectAttachmentAggregatedListWarning
+    , InterconnectAttachmentAggregatedListWarning
+    , interconnectAttachmentAggregatedListWarning
+    , iaalwData
+    , iaalwCode
+    , iaalwMessage
+
+    -- ** MetadataItemsItem
+    , MetadataItemsItem
+    , metadataItemsItem
+    , miiValue
+    , miiKey
+
+    -- ** SignedURLKey
+    , SignedURLKey
+    , signedURLKey
+    , sukKeyValue
+    , sukKeyName
+
+    -- ** TargetHTTPSProxy
+    , TargetHTTPSProxy
+    , targetHTTPSProxy
+    , thpSSLPolicy
+    , thpURLMap
+    , thpSSLCertificates
+    , thpQuicOverride
+    , thpKind
+    , thpSelfLink
+    , thpName
+    , thpCreationTimestamp
+    , thpId
+    , thpDescription
+
+    -- ** ConnectionDraining
+    , ConnectionDraining
+    , connectionDraining
+    , cdDrainingTimeoutSec
+
+    -- ** InterconnectAttachmentListWarningDataItem
+    , InterconnectAttachmentListWarningDataItem
+    , interconnectAttachmentListWarningDataItem
+    , ialwdiValue
+    , ialwdiKey
+
+    -- ** AddressAggregatedListWarningCode
+    , AddressAggregatedListWarningCode (..)
+
+    -- ** CacheInvalidationRule
+    , CacheInvalidationRule
+    , cacheInvalidationRule
+    , cirPath
+    , cirHost
+
+    -- ** AddressAggregatedListWarningDataItem
+    , AddressAggregatedListWarningDataItem
+    , addressAggregatedListWarningDataItem
+    , aalwdiaValue
+    , aalwdiaKey
+
+    -- ** InterconnectAttachmentListWarningCode
+    , InterconnectAttachmentListWarningCode (..)
+
+    -- ** TargetVPNGatewaysScopedList
+    , TargetVPNGatewaysScopedList
+    , targetVPNGatewaysScopedList
+    , tvgslTargetVPNGateways
+    , tvgslWarning
+
+    -- ** CommitmentAggregatedListWarning
+    , CommitmentAggregatedListWarning
+    , commitmentAggregatedListWarning
+    , calwData
+    , calwCode
+    , calwMessage
+
+    -- ** RegionInstanceGroupListWarning
+    , RegionInstanceGroupListWarning
+    , regionInstanceGroupListWarning
+    , riglwData
+    , riglwCode
+    , riglwMessage
+
+    -- ** AccessConfig
+    , AccessConfig
+    , accessConfig
+    , acNetworkTier
+    , acSetPublicPtr
+    , acKind
+    , acName
+    , acNATIP
+    , acPublicPtrDomainName
+    , acType
+
+    -- ** LogConfig
+    , LogConfig
+    , logConfig
+    , lcCloudAudit
+    , lcDataAccess
+    , lcCounter
+
+    -- ** ZoneListWarning
+    , ZoneListWarning
+    , zoneListWarning
+    , zlwData
+    , zlwCode
+    , zlwMessage
+
+    -- ** ManagedInstanceLastAttemptErrorsErrorsItem
+    , ManagedInstanceLastAttemptErrorsErrorsItem
+    , managedInstanceLastAttemptErrorsErrorsItem
+    , milaeeiLocation
+    , milaeeiCode
+    , milaeeiMessage
+
+    -- ** InstancesScopedListWarningCode
+    , InstancesScopedListWarningCode (..)
+
+    -- ** InstancesScopedListWarningDataItem
+    , InstancesScopedListWarningDataItem
+    , instancesScopedListWarningDataItem
+    , islwdiValue
+    , islwdiKey
+
+    -- ** SnapshotLabels
+    , SnapshotLabels
+    , snapshotLabels
+    , slAddtional
+
+    -- ** BackendServicesScopedListWarningDataItem
+    , BackendServicesScopedListWarningDataItem
+    , backendServicesScopedListWarningDataItem
+    , bsslwdiValue
+    , bsslwdiKey
+
+    -- ** NodeTemplateAggregatedListItems
+    , NodeTemplateAggregatedListItems
+    , nodeTemplateAggregatedListItems
+    , ntaliAddtional
+
+    -- ** BackendService
+    , BackendService
+    , backendService
+    , bsSessionAffinity
+    , bsBackends
+    , bsAffinityCookieTtlSec
+    , bsIap
+    , bsLoadBalancingScheme
+    , bsKind
+    , bsEnableCDN
+    , bsFingerprint
+    , bsProtocol
+    , bsSecurityPolicy
+    , bsCdnPolicy
+    , bsSelfLink
+    , bsName
+    , bsCreationTimestamp
+    , bsId
+    , bsRegion
+    , bsConnectionDraining
+    , bsTimeoutSec
+    , bsDescription
+    , bsPortName
+    , bsHealthChecks
+    , bsPort
+
+    -- ** InstanceListWarning
+    , InstanceListWarning
+    , instanceListWarning
+    , insData
+    , insCode
+    , insMessage
+
+    -- ** InstanceMoveRequest
+    , InstanceMoveRequest
+    , instanceMoveRequest
+    , imrTargetInstance
+    , imrDestinationZone
+
+    -- ** XpnResourceIdType
+    , XpnResourceIdType (..)
+
+    -- ** InterconnectDiagnosticsARPEntry
+    , InterconnectDiagnosticsARPEntry
+    , interconnectDiagnosticsARPEntry
+    , idarpeIPAddress
+    , idarpeMACAddress
+
+    -- ** BackendServicesScopedListWarningCode
+    , BackendServicesScopedListWarningCode (..)
+
+    -- ** CommitmentList
+    , CommitmentList
+    , commitmentList
+    , clNextPageToken
+    , clKind
+    , clItems
+    , clSelfLink
+    , clWarning
+    , clId
+
+    -- ** TargetPoolSessionAffinity
+    , TargetPoolSessionAffinity (..)
+
+    -- ** InstancesSetLabelsRequestLabels
+    , InstancesSetLabelsRequestLabels
+    , instancesSetLabelsRequestLabels
+    , islrlAddtional
+
+    -- ** InstanceGroupsScopedList
+    , InstanceGroupsScopedList
+    , instanceGroupsScopedList
+    , igslWarning
+    , igslInstanceGroups
+
+    -- ** InstancesStartWithEncryptionKeyRequest
+    , InstancesStartWithEncryptionKeyRequest
+    , instancesStartWithEncryptionKeyRequest
+    , iswekrDisks
+
+    -- ** HTTPSHealthCheck
+    , HTTPSHealthCheck
+    , httpsHealthCheck
+    , hhcResponse
+    , hhcRequestPath
+    , hhcHost
+    , hhcProxyHeader
+    , hhcPortName
+    , hhcPort
+
+    -- ** AutoscalerStatus
+    , AutoscalerStatus (..)
+
+    -- ** ImageRawDiskContainerType
+    , ImageRawDiskContainerType (..)
+
+    -- ** InstanceAggregatedListWarningCode
+    , InstanceAggregatedListWarningCode (..)
+
+    -- ** VPNTunnelAggregatedListItems
+    , VPNTunnelAggregatedListItems
+    , vpnTunnelAggregatedListItems
+    , vtaliAddtional
+
+    -- ** ResourceCommitmentType
+    , ResourceCommitmentType (..)
+
+    -- ** InstanceAggregatedListWarningDataItem
+    , InstanceAggregatedListWarningDataItem
+    , instanceAggregatedListWarningDataItem
+    , insValue
+    , insKey
+
+    -- ** Tags
+    , Tags
+    , tags
+    , tFingerprint
+    , tItems
+
+    -- ** AddressAggregatedList
+    , AddressAggregatedList
+    , addressAggregatedList
+    , addNextPageToken
+    , addKind
+    , addItems
+    , addSelfLink
+    , addWarning
+    , addId
+
+    -- ** InterconnectAttachmentList
+    , InterconnectAttachmentList
+    , interconnectAttachmentList
+    , ialaNextPageToken
+    , ialaKind
+    , ialaItems
+    , ialaSelfLink
+    , ialaWarning
+    , ialaId
+
+    -- ** OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- ** ForwardingRuleNetworkTier
+    , ForwardingRuleNetworkTier (..)
+
+    -- ** URLMapTest
+    , URLMapTest
+    , urlMapTest
+    , umtPath
+    , umtService
+    , umtHost
+    , umtDescription
+
+    -- ** HTTPSHealthCheckListWarning
+    , HTTPSHealthCheckListWarning
+    , httpsHealthCheckListWarning
+    , hhclwData
+    , hhclwCode
+    , hhclwMessage
+
+    -- ** NodeTypeAggregatedListItems
+    , NodeTypeAggregatedListItems
+    , nodeTypeAggregatedListItems
+    , nAddtional
+
+    -- ** RoutersPreviewResponse
+    , RoutersPreviewResponse
+    , routersPreviewResponse
+    , rprResource
+
+    -- ** LicensesListResponse
+    , LicensesListResponse
+    , licensesListResponse
+    , llrNextPageToken
+    , llrItems
+    , llrSelfLink
+    , llrWarning
+    , llrId
+
+    -- ** BackendServiceAggregatedListWarningDataItem
+    , BackendServiceAggregatedListWarningDataItem
+    , backendServiceAggregatedListWarningDataItem
+    , bsalwdiValue
+    , bsalwdiKey
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , i1Status
+    , i1ServiceAccounts
+    , i1DeletionProtection
+    , i1NetworkInterfaces
+    , i1Kind
+    , i1Zone
+    , i1CPUPlatform
+    , i1SelfLink
+    , i1GuestAccelerators
+    , i1Name
+    , i1StatusMessage
+    , i1CreationTimestamp
+    , i1MachineType
+    , i1Metadata
+    , i1Id
+    , i1Labels
+    , i1StartRestricted
+    , i1Scheduling
+    , i1MinCPUPlatform
+    , i1Disks
+    , i1CanIPForward
+    , i1LabelFingerprint
+    , i1Description
+    , i1Tags
+
+    -- ** PathMatcher
+    , PathMatcher
+    , pathMatcher
+    , pmDefaultService
+    , pmName
+    , pmPathRules
+    , pmDescription
+
+    -- ** BackendServiceListWarning
+    , BackendServiceListWarning
+    , backendServiceListWarning
+    , bslwData
+    , bslwCode
+    , bslwMessage
+
+    -- ** BackendServiceAggregatedListWarningCode
+    , BackendServiceAggregatedListWarningCode (..)
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.Compute.AcceleratorTypes.AggregatedList
+import           Network.Google.Resource.Compute.AcceleratorTypes.Get
+import           Network.Google.Resource.Compute.AcceleratorTypes.List
+import           Network.Google.Resource.Compute.Addresses.AggregatedList
+import           Network.Google.Resource.Compute.Addresses.Delete
+import           Network.Google.Resource.Compute.Addresses.Get
+import           Network.Google.Resource.Compute.Addresses.Insert
+import           Network.Google.Resource.Compute.Addresses.List
+import           Network.Google.Resource.Compute.Autoscalers.AggregatedList
+import           Network.Google.Resource.Compute.Autoscalers.Delete
+import           Network.Google.Resource.Compute.Autoscalers.Get
+import           Network.Google.Resource.Compute.Autoscalers.Insert
+import           Network.Google.Resource.Compute.Autoscalers.List
+import           Network.Google.Resource.Compute.Autoscalers.Patch
+import           Network.Google.Resource.Compute.Autoscalers.Update
+import           Network.Google.Resource.Compute.BackendBuckets.AddSignedURLKey
+import           Network.Google.Resource.Compute.BackendBuckets.Delete
+import           Network.Google.Resource.Compute.BackendBuckets.DeleteSignedURLKey
+import           Network.Google.Resource.Compute.BackendBuckets.Get
+import           Network.Google.Resource.Compute.BackendBuckets.Insert
+import           Network.Google.Resource.Compute.BackendBuckets.List
+import           Network.Google.Resource.Compute.BackendBuckets.Patch
+import           Network.Google.Resource.Compute.BackendBuckets.Update
+import           Network.Google.Resource.Compute.BackendServices.AddSignedURLKey
+import           Network.Google.Resource.Compute.BackendServices.AggregatedList
+import           Network.Google.Resource.Compute.BackendServices.Delete
+import           Network.Google.Resource.Compute.BackendServices.DeleteSignedURLKey
+import           Network.Google.Resource.Compute.BackendServices.Get
+import           Network.Google.Resource.Compute.BackendServices.GetHealth
+import           Network.Google.Resource.Compute.BackendServices.Insert
+import           Network.Google.Resource.Compute.BackendServices.List
+import           Network.Google.Resource.Compute.BackendServices.Patch
+import           Network.Google.Resource.Compute.BackendServices.SetSecurityPolicy
+import           Network.Google.Resource.Compute.BackendServices.Update
+import           Network.Google.Resource.Compute.Disks.AggregatedList
+import           Network.Google.Resource.Compute.Disks.CreateSnapshot
+import           Network.Google.Resource.Compute.Disks.Delete
+import           Network.Google.Resource.Compute.Disks.Get
+import           Network.Google.Resource.Compute.Disks.GetIAMPolicy
+import           Network.Google.Resource.Compute.Disks.Insert
+import           Network.Google.Resource.Compute.Disks.List
+import           Network.Google.Resource.Compute.Disks.Resize
+import           Network.Google.Resource.Compute.Disks.SetIAMPolicy
+import           Network.Google.Resource.Compute.Disks.SetLabels
+import           Network.Google.Resource.Compute.Disks.TestIAMPermissions
+import           Network.Google.Resource.Compute.DiskTypes.AggregatedList
+import           Network.Google.Resource.Compute.DiskTypes.Get
+import           Network.Google.Resource.Compute.DiskTypes.List
+import           Network.Google.Resource.Compute.Firewalls.Delete
+import           Network.Google.Resource.Compute.Firewalls.Get
+import           Network.Google.Resource.Compute.Firewalls.Insert
+import           Network.Google.Resource.Compute.Firewalls.List
+import           Network.Google.Resource.Compute.Firewalls.Patch
+import           Network.Google.Resource.Compute.Firewalls.Update
+import           Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+import           Network.Google.Resource.Compute.ForwardingRules.Delete
+import           Network.Google.Resource.Compute.ForwardingRules.Get
+import           Network.Google.Resource.Compute.ForwardingRules.Insert
+import           Network.Google.Resource.Compute.ForwardingRules.List
+import           Network.Google.Resource.Compute.ForwardingRules.SetTarget
+import           Network.Google.Resource.Compute.GlobalAddresses.Delete
+import           Network.Google.Resource.Compute.GlobalAddresses.Get
+import           Network.Google.Resource.Compute.GlobalAddresses.Insert
+import           Network.Google.Resource.Compute.GlobalAddresses.List
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Get
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+import           Network.Google.Resource.Compute.GlobalForwardingRules.List
+import           Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+import           Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+import           Network.Google.Resource.Compute.GlobalOperations.Delete
+import           Network.Google.Resource.Compute.GlobalOperations.Get
+import           Network.Google.Resource.Compute.GlobalOperations.List
+import           Network.Google.Resource.Compute.HealthChecks.Delete
+import           Network.Google.Resource.Compute.HealthChecks.Get
+import           Network.Google.Resource.Compute.HealthChecks.Insert
+import           Network.Google.Resource.Compute.HealthChecks.List
+import           Network.Google.Resource.Compute.HealthChecks.Patch
+import           Network.Google.Resource.Compute.HealthChecks.Update
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Get
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+import           Network.Google.Resource.Compute.HTTPHealthChecks.List
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Update
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.List
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+import           Network.Google.Resource.Compute.Images.Delete
+import           Network.Google.Resource.Compute.Images.Deprecate
+import           Network.Google.Resource.Compute.Images.Get
+import           Network.Google.Resource.Compute.Images.GetFromFamily
+import           Network.Google.Resource.Compute.Images.GetIAMPolicy
+import           Network.Google.Resource.Compute.Images.Insert
+import           Network.Google.Resource.Compute.Images.List
+import           Network.Google.Resource.Compute.Images.SetIAMPolicy
+import           Network.Google.Resource.Compute.Images.SetLabels
+import           Network.Google.Resource.Compute.Images.TestIAMPermissions
+import           Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+import           Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Get
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+import           Network.Google.Resource.Compute.InstanceGroupManagers.List
+import           Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Patch
+import           Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+import           Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+import           Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+import           Network.Google.Resource.Compute.InstanceGroups.AddInstances
+import           Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+import           Network.Google.Resource.Compute.InstanceGroups.Delete
+import           Network.Google.Resource.Compute.InstanceGroups.Get
+import           Network.Google.Resource.Compute.InstanceGroups.Insert
+import           Network.Google.Resource.Compute.InstanceGroups.List
+import           Network.Google.Resource.Compute.InstanceGroups.ListInstances
+import           Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+import           Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+import           Network.Google.Resource.Compute.Instances.AddAccessConfig
+import           Network.Google.Resource.Compute.Instances.AggregatedList
+import           Network.Google.Resource.Compute.Instances.AttachDisk
+import           Network.Google.Resource.Compute.Instances.Delete
+import           Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+import           Network.Google.Resource.Compute.Instances.DetachDisk
+import           Network.Google.Resource.Compute.Instances.Get
+import           Network.Google.Resource.Compute.Instances.GetIAMPolicy
+import           Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+import           Network.Google.Resource.Compute.Instances.Insert
+import           Network.Google.Resource.Compute.Instances.List
+import           Network.Google.Resource.Compute.Instances.ListReferrers
+import           Network.Google.Resource.Compute.Instances.Reset
+import           Network.Google.Resource.Compute.Instances.SetDeletionProtection
+import           Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+import           Network.Google.Resource.Compute.Instances.SetIAMPolicy
+import           Network.Google.Resource.Compute.Instances.SetLabels
+import           Network.Google.Resource.Compute.Instances.SetMachineResources
+import           Network.Google.Resource.Compute.Instances.SetMachineType
+import           Network.Google.Resource.Compute.Instances.SetMetadata
+import           Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
+import           Network.Google.Resource.Compute.Instances.SetScheduling
+import           Network.Google.Resource.Compute.Instances.SetServiceAccount
+import           Network.Google.Resource.Compute.Instances.SetTags
+import           Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
+import           Network.Google.Resource.Compute.Instances.Start
+import           Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
+import           Network.Google.Resource.Compute.Instances.Stop
+import           Network.Google.Resource.Compute.Instances.TestIAMPermissions
+import           Network.Google.Resource.Compute.Instances.UpdateAccessConfig
+import           Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
+import           Network.Google.Resource.Compute.InstanceTemplates.Delete
+import           Network.Google.Resource.Compute.InstanceTemplates.Get
+import           Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
+import           Network.Google.Resource.Compute.InstanceTemplates.Insert
+import           Network.Google.Resource.Compute.InstanceTemplates.List
+import           Network.Google.Resource.Compute.InstanceTemplates.SetIAMPolicy
+import           Network.Google.Resource.Compute.InstanceTemplates.TestIAMPermissions
+import           Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
+import           Network.Google.Resource.Compute.InterconnectAttachments.Delete
+import           Network.Google.Resource.Compute.InterconnectAttachments.Get
+import           Network.Google.Resource.Compute.InterconnectAttachments.Insert
+import           Network.Google.Resource.Compute.InterconnectAttachments.List
+import           Network.Google.Resource.Compute.InterconnectAttachments.Patch
+import           Network.Google.Resource.Compute.InterconnectLocations.Get
+import           Network.Google.Resource.Compute.InterconnectLocations.List
+import           Network.Google.Resource.Compute.Interconnects.Delete
+import           Network.Google.Resource.Compute.Interconnects.Get
+import           Network.Google.Resource.Compute.Interconnects.GetDiagnostics
+import           Network.Google.Resource.Compute.Interconnects.Insert
+import           Network.Google.Resource.Compute.Interconnects.List
+import           Network.Google.Resource.Compute.Interconnects.Patch
+import           Network.Google.Resource.Compute.LicenseCodes.Get
+import           Network.Google.Resource.Compute.LicenseCodes.TestIAMPermissions
+import           Network.Google.Resource.Compute.Licenses.Delete
+import           Network.Google.Resource.Compute.Licenses.Get
+import           Network.Google.Resource.Compute.Licenses.GetIAMPolicy
+import           Network.Google.Resource.Compute.Licenses.Insert
+import           Network.Google.Resource.Compute.Licenses.List
+import           Network.Google.Resource.Compute.Licenses.SetIAMPolicy
+import           Network.Google.Resource.Compute.Licenses.TestIAMPermissions
+import           Network.Google.Resource.Compute.MachineTypes.AggregatedList
+import           Network.Google.Resource.Compute.MachineTypes.Get
+import           Network.Google.Resource.Compute.MachineTypes.List
+import           Network.Google.Resource.Compute.Networks.AddPeering
+import           Network.Google.Resource.Compute.Networks.Delete
+import           Network.Google.Resource.Compute.Networks.Get
+import           Network.Google.Resource.Compute.Networks.Insert
+import           Network.Google.Resource.Compute.Networks.List
+import           Network.Google.Resource.Compute.Networks.Patch
+import           Network.Google.Resource.Compute.Networks.RemovePeering
+import           Network.Google.Resource.Compute.Networks.SwitchToCustomMode
+import           Network.Google.Resource.Compute.NodeGroups.AddNodes
+import           Network.Google.Resource.Compute.NodeGroups.AggregatedList
+import           Network.Google.Resource.Compute.NodeGroups.Delete
+import           Network.Google.Resource.Compute.NodeGroups.DeleteNodes
+import           Network.Google.Resource.Compute.NodeGroups.Get
+import           Network.Google.Resource.Compute.NodeGroups.GetIAMPolicy
+import           Network.Google.Resource.Compute.NodeGroups.Insert
+import           Network.Google.Resource.Compute.NodeGroups.List
+import           Network.Google.Resource.Compute.NodeGroups.ListNodes
+import           Network.Google.Resource.Compute.NodeGroups.SetIAMPolicy
+import           Network.Google.Resource.Compute.NodeGroups.SetNodeTemplate
+import           Network.Google.Resource.Compute.NodeGroups.TestIAMPermissions
+import           Network.Google.Resource.Compute.NodeTemplates.AggregatedList
+import           Network.Google.Resource.Compute.NodeTemplates.Delete
+import           Network.Google.Resource.Compute.NodeTemplates.Get
+import           Network.Google.Resource.Compute.NodeTemplates.GetIAMPolicy
+import           Network.Google.Resource.Compute.NodeTemplates.Insert
+import           Network.Google.Resource.Compute.NodeTemplates.List
+import           Network.Google.Resource.Compute.NodeTemplates.SetIAMPolicy
+import           Network.Google.Resource.Compute.NodeTemplates.TestIAMPermissions
+import           Network.Google.Resource.Compute.NodeTypes.AggregatedList
+import           Network.Google.Resource.Compute.NodeTypes.Get
+import           Network.Google.Resource.Compute.NodeTypes.List
+import           Network.Google.Resource.Compute.Projects.DisableXpnHost
+import           Network.Google.Resource.Compute.Projects.DisableXpnResource
+import           Network.Google.Resource.Compute.Projects.EnableXpnHost
+import           Network.Google.Resource.Compute.Projects.EnableXpnResource
+import           Network.Google.Resource.Compute.Projects.Get
+import           Network.Google.Resource.Compute.Projects.GetXpnHost
+import           Network.Google.Resource.Compute.Projects.GetXpnResources
+import           Network.Google.Resource.Compute.Projects.ListXpnHosts
+import           Network.Google.Resource.Compute.Projects.MoveDisk
+import           Network.Google.Resource.Compute.Projects.MoveInstance
+import           Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+import           Network.Google.Resource.Compute.Projects.SetDefaultNetworkTier
+import           Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+import           Network.Google.Resource.Compute.RegionAutoscalers.Delete
+import           Network.Google.Resource.Compute.RegionAutoscalers.Get
+import           Network.Google.Resource.Compute.RegionAutoscalers.Insert
+import           Network.Google.Resource.Compute.RegionAutoscalers.List
+import           Network.Google.Resource.Compute.RegionAutoscalers.Patch
+import           Network.Google.Resource.Compute.RegionAutoscalers.Update
+import           Network.Google.Resource.Compute.RegionBackendServices.Delete
+import           Network.Google.Resource.Compute.RegionBackendServices.Get
+import           Network.Google.Resource.Compute.RegionBackendServices.GetHealth
+import           Network.Google.Resource.Compute.RegionBackendServices.Insert
+import           Network.Google.Resource.Compute.RegionBackendServices.List
+import           Network.Google.Resource.Compute.RegionBackendServices.Patch
+import           Network.Google.Resource.Compute.RegionBackendServices.Update
+import           Network.Google.Resource.Compute.RegionCommitments.AggregatedList
+import           Network.Google.Resource.Compute.RegionCommitments.Get
+import           Network.Google.Resource.Compute.RegionCommitments.Insert
+import           Network.Google.Resource.Compute.RegionCommitments.List
+import           Network.Google.Resource.Compute.RegionDisks.CreateSnapshot
+import           Network.Google.Resource.Compute.RegionDisks.Delete
+import           Network.Google.Resource.Compute.RegionDisks.Get
+import           Network.Google.Resource.Compute.RegionDisks.Insert
+import           Network.Google.Resource.Compute.RegionDisks.List
+import           Network.Google.Resource.Compute.RegionDisks.Resize
+import           Network.Google.Resource.Compute.RegionDisks.SetLabels
+import           Network.Google.Resource.Compute.RegionDisks.TestIAMPermissions
+import           Network.Google.Resource.Compute.RegionDiskTypes.Get
+import           Network.Google.Resource.Compute.RegionDiskTypes.List
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.List
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Patch
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate
+import           Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools
+import           Network.Google.Resource.Compute.RegionInstanceGroups.Get
+import           Network.Google.Resource.Compute.RegionInstanceGroups.List
+import           Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances
+import           Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts
+import           Network.Google.Resource.Compute.RegionOperations.Delete
+import           Network.Google.Resource.Compute.RegionOperations.Get
+import           Network.Google.Resource.Compute.RegionOperations.List
+import           Network.Google.Resource.Compute.Regions.Get
+import           Network.Google.Resource.Compute.Regions.List
+import           Network.Google.Resource.Compute.Routers.AggregatedList
+import           Network.Google.Resource.Compute.Routers.Delete
+import           Network.Google.Resource.Compute.Routers.Get
+import           Network.Google.Resource.Compute.Routers.GetNATMAppingInfo
+import           Network.Google.Resource.Compute.Routers.GetRouterStatus
+import           Network.Google.Resource.Compute.Routers.Insert
+import           Network.Google.Resource.Compute.Routers.List
+import           Network.Google.Resource.Compute.Routers.Patch
+import           Network.Google.Resource.Compute.Routers.Preview
+import           Network.Google.Resource.Compute.Routers.Update
+import           Network.Google.Resource.Compute.Routes.Delete
+import           Network.Google.Resource.Compute.Routes.Get
+import           Network.Google.Resource.Compute.Routes.Insert
+import           Network.Google.Resource.Compute.Routes.List
+import           Network.Google.Resource.Compute.SecurityPolicies.AddRule
+import           Network.Google.Resource.Compute.SecurityPolicies.Delete
+import           Network.Google.Resource.Compute.SecurityPolicies.Get
+import           Network.Google.Resource.Compute.SecurityPolicies.GetRule
+import           Network.Google.Resource.Compute.SecurityPolicies.Insert
+import           Network.Google.Resource.Compute.SecurityPolicies.List
+import           Network.Google.Resource.Compute.SecurityPolicies.Patch
+import           Network.Google.Resource.Compute.SecurityPolicies.PatchRule
+import           Network.Google.Resource.Compute.SecurityPolicies.RemoveRule
+import           Network.Google.Resource.Compute.Snapshots.Delete
+import           Network.Google.Resource.Compute.Snapshots.Get
+import           Network.Google.Resource.Compute.Snapshots.GetIAMPolicy
+import           Network.Google.Resource.Compute.Snapshots.List
+import           Network.Google.Resource.Compute.Snapshots.SetIAMPolicy
+import           Network.Google.Resource.Compute.Snapshots.SetLabels
+import           Network.Google.Resource.Compute.Snapshots.TestIAMPermissions
+import           Network.Google.Resource.Compute.SSLCertificates.Delete
+import           Network.Google.Resource.Compute.SSLCertificates.Get
+import           Network.Google.Resource.Compute.SSLCertificates.Insert
+import           Network.Google.Resource.Compute.SSLCertificates.List
+import           Network.Google.Resource.Compute.SSLPolicies.Delete
+import           Network.Google.Resource.Compute.SSLPolicies.Get
+import           Network.Google.Resource.Compute.SSLPolicies.Insert
+import           Network.Google.Resource.Compute.SSLPolicies.List
+import           Network.Google.Resource.Compute.SSLPolicies.ListAvailableFeatures
+import           Network.Google.Resource.Compute.SSLPolicies.Patch
+import           Network.Google.Resource.Compute.Subnetworks.AggregatedList
+import           Network.Google.Resource.Compute.Subnetworks.Delete
+import           Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange
+import           Network.Google.Resource.Compute.Subnetworks.Get
+import           Network.Google.Resource.Compute.Subnetworks.GetIAMPolicy
+import           Network.Google.Resource.Compute.Subnetworks.Insert
+import           Network.Google.Resource.Compute.Subnetworks.List
+import           Network.Google.Resource.Compute.Subnetworks.ListUsable
+import           Network.Google.Resource.Compute.Subnetworks.Patch
+import           Network.Google.Resource.Compute.Subnetworks.SetIAMPolicy
+import           Network.Google.Resource.Compute.Subnetworks.SetPrivateIPGoogleAccess
+import           Network.Google.Resource.Compute.Subnetworks.TestIAMPermissions
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Get
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+import           Network.Google.Resource.Compute.TargetHTTPProxies.List
+import           Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.List
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetQuicOverride
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLPolicy
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+import           Network.Google.Resource.Compute.TargetInstances.AggregatedList
+import           Network.Google.Resource.Compute.TargetInstances.Delete
+import           Network.Google.Resource.Compute.TargetInstances.Get
+import           Network.Google.Resource.Compute.TargetInstances.Insert
+import           Network.Google.Resource.Compute.TargetInstances.List
+import           Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+import           Network.Google.Resource.Compute.TargetPools.AddInstance
+import           Network.Google.Resource.Compute.TargetPools.AggregatedList
+import           Network.Google.Resource.Compute.TargetPools.Delete
+import           Network.Google.Resource.Compute.TargetPools.Get
+import           Network.Google.Resource.Compute.TargetPools.GetHealth
+import           Network.Google.Resource.Compute.TargetPools.Insert
+import           Network.Google.Resource.Compute.TargetPools.List
+import           Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+import           Network.Google.Resource.Compute.TargetPools.RemoveInstance
+import           Network.Google.Resource.Compute.TargetPools.SetBackup
+import           Network.Google.Resource.Compute.TargetSSLProxies.Delete
+import           Network.Google.Resource.Compute.TargetSSLProxies.Get
+import           Network.Google.Resource.Compute.TargetSSLProxies.Insert
+import           Network.Google.Resource.Compute.TargetSSLProxies.List
+import           Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService
+import           Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader
+import           Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates
+import           Network.Google.Resource.Compute.TargetSSLProxies.SetSSLPolicy
+import           Network.Google.Resource.Compute.TargetTCPProxies.Delete
+import           Network.Google.Resource.Compute.TargetTCPProxies.Get
+import           Network.Google.Resource.Compute.TargetTCPProxies.Insert
+import           Network.Google.Resource.Compute.TargetTCPProxies.List
+import           Network.Google.Resource.Compute.TargetTCPProxies.SetBackendService
+import           Network.Google.Resource.Compute.TargetTCPProxies.SetProxyHeader
+import           Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+import           Network.Google.Resource.Compute.TargetVPNGateways.Delete
+import           Network.Google.Resource.Compute.TargetVPNGateways.Get
+import           Network.Google.Resource.Compute.TargetVPNGateways.Insert
+import           Network.Google.Resource.Compute.TargetVPNGateways.List
+import           Network.Google.Resource.Compute.URLMaps.Delete
+import           Network.Google.Resource.Compute.URLMaps.Get
+import           Network.Google.Resource.Compute.URLMaps.Insert
+import           Network.Google.Resource.Compute.URLMaps.InvalidateCache
+import           Network.Google.Resource.Compute.URLMaps.List
+import           Network.Google.Resource.Compute.URLMaps.Patch
+import           Network.Google.Resource.Compute.URLMaps.Update
+import           Network.Google.Resource.Compute.URLMaps.Validate
+import           Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+import           Network.Google.Resource.Compute.VPNTunnels.Delete
+import           Network.Google.Resource.Compute.VPNTunnels.Get
+import           Network.Google.Resource.Compute.VPNTunnels.Insert
+import           Network.Google.Resource.Compute.VPNTunnels.List
+import           Network.Google.Resource.Compute.ZoneOperations.Delete
+import           Network.Google.Resource.Compute.ZoneOperations.Get
+import           Network.Google.Resource.Compute.ZoneOperations.List
+import           Network.Google.Resource.Compute.Zones.Get
+import           Network.Google.Resource.Compute.Zones.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Compute Engine API service.
+type ComputeAPI =
+     ImagesInsertResource :<|> ImagesListResource :<|>
+       ImagesGetIAMPolicyResource
+       :<|> ImagesGetResource
+       :<|> ImagesGetFromFamilyResource
+       :<|> ImagesSetIAMPolicyResource
+       :<|> ImagesSetLabelsResource
+       :<|> ImagesDeprecateResource
+       :<|> ImagesTestIAMPermissionsResource
+       :<|> ImagesDeleteResource
+       :<|> AcceleratorTypesAggregatedListResource
+       :<|> AcceleratorTypesListResource
+       :<|> AcceleratorTypesGetResource
+       :<|> URLMapsInsertResource
+       :<|> URLMapsListResource
+       :<|> URLMapsPatchResource
+       :<|> URLMapsGetResource
+       :<|> URLMapsInvalidateCacheResource
+       :<|> URLMapsValidateResource
+       :<|> URLMapsDeleteResource
+       :<|> URLMapsUpdateResource
+       :<|> NodeGroupsAggregatedListResource
+       :<|> NodeGroupsInsertResource
+       :<|> NodeGroupsListResource
+       :<|> NodeGroupsAddNodesResource
+       :<|> NodeGroupsGetIAMPolicyResource
+       :<|> NodeGroupsGetResource
+       :<|> NodeGroupsSetIAMPolicyResource
+       :<|> NodeGroupsDeleteNodesResource
+       :<|> NodeGroupsSetNodeTemplateResource
+       :<|> NodeGroupsTestIAMPermissionsResource
+       :<|> NodeGroupsDeleteResource
+       :<|> NodeGroupsListNodesResource
+       :<|> TargetTCPProxiesInsertResource
+       :<|> TargetTCPProxiesListResource
+       :<|> TargetTCPProxiesGetResource
+       :<|> TargetTCPProxiesSetBackendServiceResource
+       :<|> TargetTCPProxiesDeleteResource
+       :<|> TargetTCPProxiesSetProxyHeaderResource
+       :<|> RoutesInsertResource
+       :<|> RoutesListResource
+       :<|> RoutesGetResource
+       :<|> RoutesDeleteResource
+       :<|> RegionBackendServicesInsertResource
+       :<|> RegionBackendServicesListResource
+       :<|> RegionBackendServicesGetHealthResource
+       :<|> RegionBackendServicesPatchResource
+       :<|> RegionBackendServicesGetResource
+       :<|> RegionBackendServicesDeleteResource
+       :<|> RegionBackendServicesUpdateResource
+       :<|> InstanceTemplatesInsertResource
+       :<|> InstanceTemplatesListResource
+       :<|> InstanceTemplatesGetIAMPolicyResource
+       :<|> InstanceTemplatesGetResource
+       :<|> InstanceTemplatesSetIAMPolicyResource
+       :<|> InstanceTemplatesTestIAMPermissionsResource
+       :<|> InstanceTemplatesDeleteResource
+       :<|> TargetVPNGatewaysAggregatedListResource
+       :<|> TargetVPNGatewaysInsertResource
+       :<|> TargetVPNGatewaysListResource
+       :<|> TargetVPNGatewaysGetResource
+       :<|> TargetVPNGatewaysDeleteResource
+       :<|> SSLCertificatesInsertResource
+       :<|> SSLCertificatesListResource
+       :<|> SSLCertificatesGetResource
+       :<|> SSLCertificatesDeleteResource
+       :<|> ZonesListResource
+       :<|> ZonesGetResource
+       :<|> RegionInstanceGroupsListResource
+       :<|> RegionInstanceGroupsGetResource
+       :<|> RegionInstanceGroupsListInstancesResource
+       :<|> RegionInstanceGroupsSetNamedPortsResource
+       :<|> GlobalForwardingRulesInsertResource
+       :<|> GlobalForwardingRulesListResource
+       :<|> GlobalForwardingRulesGetResource
+       :<|> GlobalForwardingRulesSetTargetResource
+       :<|> GlobalForwardingRulesDeleteResource
+       :<|> NetworksInsertResource
+       :<|> NetworksListResource
+       :<|> NetworksPatchResource
+       :<|> NetworksGetResource
+       :<|> NetworksSwitchToCustomModeResource
+       :<|> NetworksRemovePeeringResource
+       :<|> NetworksAddPeeringResource
+       :<|> NetworksDeleteResource
+       :<|> RoutersGetNATMAppingInfoResource
+       :<|> RoutersAggregatedListResource
+       :<|> RoutersInsertResource
+       :<|> RoutersListResource
+       :<|> RoutersPatchResource
+       :<|> RoutersGetResource
+       :<|> RoutersPreviewResource
+       :<|> RoutersDeleteResource
+       :<|> RoutersUpdateResource
+       :<|> RoutersGetRouterStatusResource
+       :<|> SecurityPoliciesInsertResource
+       :<|> SecurityPoliciesListResource
+       :<|> SecurityPoliciesRemoveRuleResource
+       :<|> SecurityPoliciesPatchRuleResource
+       :<|> SecurityPoliciesGetRuleResource
+       :<|> SecurityPoliciesPatchResource
+       :<|> SecurityPoliciesGetResource
+       :<|> SecurityPoliciesAddRuleResource
+       :<|> SecurityPoliciesDeleteResource
+       :<|> AddressesAggregatedListResource
+       :<|> AddressesInsertResource
+       :<|> AddressesListResource
+       :<|> AddressesGetResource
+       :<|> AddressesDeleteResource
+       :<|> RegionCommitmentsAggregatedListResource
+       :<|> RegionCommitmentsInsertResource
+       :<|> RegionCommitmentsListResource
+       :<|> RegionCommitmentsGetResource
+       :<|> NodeTypesAggregatedListResource
+       :<|> NodeTypesListResource
+       :<|> NodeTypesGetResource
+       :<|> GlobalAddressesInsertResource
+       :<|> GlobalAddressesListResource
+       :<|> GlobalAddressesGetResource
+       :<|> GlobalAddressesDeleteResource
+       :<|> RegionsListResource
+       :<|> RegionsGetResource
+       :<|> NodeTemplatesAggregatedListResource
+       :<|> NodeTemplatesInsertResource
+       :<|> NodeTemplatesListResource
+       :<|> NodeTemplatesGetIAMPolicyResource
+       :<|> NodeTemplatesGetResource
+       :<|> NodeTemplatesSetIAMPolicyResource
+       :<|> NodeTemplatesTestIAMPermissionsResource
+       :<|> NodeTemplatesDeleteResource
+       :<|> TargetHTTPProxiesInsertResource
+       :<|> TargetHTTPProxiesListResource
+       :<|> TargetHTTPProxiesSetURLMapResource
+       :<|> TargetHTTPProxiesGetResource
+       :<|> TargetHTTPProxiesDeleteResource
+       :<|> VPNTunnelsAggregatedListResource
+       :<|> VPNTunnelsInsertResource
+       :<|> VPNTunnelsListResource
+       :<|> VPNTunnelsGetResource
+       :<|> VPNTunnelsDeleteResource
+       :<|> RegionDisksInsertResource
+       :<|> RegionDisksResizeResource
+       :<|> RegionDisksListResource
+       :<|> RegionDisksGetResource
+       :<|> RegionDisksSetLabelsResource
+       :<|> RegionDisksCreateSnapshotResource
+       :<|> RegionDisksTestIAMPermissionsResource
+       :<|> RegionDisksDeleteResource
+       :<|> AutoscalersAggregatedListResource
+       :<|> AutoscalersInsertResource
+       :<|> AutoscalersListResource
+       :<|> AutoscalersPatchResource
+       :<|> AutoscalersGetResource
+       :<|> AutoscalersDeleteResource
+       :<|> AutoscalersUpdateResource
+       :<|>
+       RegionInstanceGroupManagersSetTargetPoolsResource
+       :<|> RegionInstanceGroupManagersInsertResource
+       :<|> RegionInstanceGroupManagersResizeResource
+       :<|> RegionInstanceGroupManagersListResource
+       :<|>
+       RegionInstanceGroupManagersListManagedInstancesResource
+       :<|>
+       RegionInstanceGroupManagersAbandonInstancesResource
+       :<|>
+       RegionInstanceGroupManagersSetInstanceTemplateResource
+       :<|> RegionInstanceGroupManagersPatchResource
+       :<|> RegionInstanceGroupManagersGetResource
+       :<|>
+       RegionInstanceGroupManagersDeleteInstancesResource
+       :<|> RegionInstanceGroupManagersDeleteResource
+       :<|>
+       RegionInstanceGroupManagersRecreateInstancesResource
+       :<|> DiskTypesAggregatedListResource
+       :<|> DiskTypesListResource
+       :<|> DiskTypesGetResource
+       :<|> RegionOperationsListResource
+       :<|> RegionOperationsGetResource
+       :<|> RegionOperationsDeleteResource
+       :<|> MachineTypesAggregatedListResource
+       :<|> MachineTypesListResource
+       :<|> MachineTypesGetResource
+       :<|> HTTPHealthChecksInsertResource
+       :<|> HTTPHealthChecksListResource
+       :<|> HTTPHealthChecksPatchResource
+       :<|> HTTPHealthChecksGetResource
+       :<|> HTTPHealthChecksDeleteResource
+       :<|> HTTPHealthChecksUpdateResource
+       :<|> SubnetworksExpandIPCIdRRangeResource
+       :<|> SubnetworksAggregatedListResource
+       :<|> SubnetworksInsertResource
+       :<|> SubnetworksListResource
+       :<|> SubnetworksGetIAMPolicyResource
+       :<|> SubnetworksPatchResource
+       :<|> SubnetworksGetResource
+       :<|> SubnetworksSetIAMPolicyResource
+       :<|> SubnetworksTestIAMPermissionsResource
+       :<|> SubnetworksSetPrivateIPGoogleAccessResource
+       :<|> SubnetworksListUsableResource
+       :<|> SubnetworksDeleteResource
+       :<|> InterconnectsInsertResource
+       :<|> InterconnectsGetDiagnosticsResource
+       :<|> InterconnectsListResource
+       :<|> InterconnectsPatchResource
+       :<|> InterconnectsGetResource
+       :<|> InterconnectsDeleteResource
+       :<|> InterconnectLocationsListResource
+       :<|> InterconnectLocationsGetResource
+       :<|> SnapshotsListResource
+       :<|> SnapshotsGetIAMPolicyResource
+       :<|> SnapshotsGetResource
+       :<|> SnapshotsSetIAMPolicyResource
+       :<|> SnapshotsSetLabelsResource
+       :<|> SnapshotsTestIAMPermissionsResource
+       :<|> SnapshotsDeleteResource
+       :<|> TargetSSLProxiesInsertResource
+       :<|> TargetSSLProxiesListResource
+       :<|> TargetSSLProxiesSetSSLCertificatesResource
+       :<|> TargetSSLProxiesGetResource
+       :<|> TargetSSLProxiesSetBackendServiceResource
+       :<|> TargetSSLProxiesSetSSLPolicyResource
+       :<|> TargetSSLProxiesDeleteResource
+       :<|> TargetSSLProxiesSetProxyHeaderResource
+       :<|> HTTPSHealthChecksInsertResource
+       :<|> HTTPSHealthChecksListResource
+       :<|> HTTPSHealthChecksPatchResource
+       :<|> HTTPSHealthChecksGetResource
+       :<|> HTTPSHealthChecksDeleteResource
+       :<|> HTTPSHealthChecksUpdateResource
+       :<|> SSLPoliciesListAvailableFeaturesResource
+       :<|> SSLPoliciesInsertResource
+       :<|> SSLPoliciesListResource
+       :<|> SSLPoliciesPatchResource
+       :<|> SSLPoliciesGetResource
+       :<|> SSLPoliciesDeleteResource
+       :<|> InstancesAddAccessConfigResource
+       :<|> InstancesSimulateMaintenanceEventResource
+       :<|> InstancesAggregatedListResource
+       :<|> InstancesInsertResource
+       :<|> InstancesListReferrersResource
+       :<|> InstancesDetachDiskResource
+       :<|> InstancesListResource
+       :<|> InstancesSetDeletionProtectionResource
+       :<|> InstancesStartResource
+       :<|> InstancesGetIAMPolicyResource
+       :<|> InstancesSetServiceAccountResource
+       :<|> InstancesGetResource
+       :<|> InstancesSetMachineResourcesResource
+       :<|> InstancesSetIAMPolicyResource
+       :<|> InstancesSetLabelsResource
+       :<|> InstancesSetMachineTypeResource
+       :<|> InstancesUpdateAccessConfigResource
+       :<|> InstancesDeleteAccessConfigResource
+       :<|> InstancesSetMetadataResource
+       :<|> InstancesSetSchedulingResource
+       :<|> InstancesStartWithEncryptionKeyResource
+       :<|> InstancesUpdateNetworkInterfaceResource
+       :<|> InstancesResetResource
+       :<|> InstancesStopResource
+       :<|> InstancesGetSerialPortOutputResource
+       :<|> InstancesTestIAMPermissionsResource
+       :<|> InstancesSetTagsResource
+       :<|> InstancesAttachDiskResource
+       :<|> InstancesDeleteResource
+       :<|> InstancesSetDiskAutoDeleteResource
+       :<|> InstancesSetMinCPUPlatformResource
+       :<|> BackendServicesAddSignedURLKeyResource
+       :<|> BackendServicesAggregatedListResource
+       :<|> BackendServicesInsertResource
+       :<|> BackendServicesListResource
+       :<|> BackendServicesGetHealthResource
+       :<|> BackendServicesPatchResource
+       :<|> BackendServicesGetResource
+       :<|> BackendServicesSetSecurityPolicyResource
+       :<|> BackendServicesDeleteSignedURLKeyResource
+       :<|> BackendServicesDeleteResource
+       :<|> BackendServicesUpdateResource
+       :<|> LicenseCodesGetResource
+       :<|> LicenseCodesTestIAMPermissionsResource
+       :<|> InstanceGroupsRemoveInstancesResource
+       :<|> InstanceGroupsAggregatedListResource
+       :<|> InstanceGroupsInsertResource
+       :<|> InstanceGroupsListResource
+       :<|> InstanceGroupsAddInstancesResource
+       :<|> InstanceGroupsGetResource
+       :<|> InstanceGroupsListInstancesResource
+       :<|> InstanceGroupsSetNamedPortsResource
+       :<|> InstanceGroupsDeleteResource
+       :<|> FirewallsInsertResource
+       :<|> FirewallsListResource
+       :<|> FirewallsPatchResource
+       :<|> FirewallsGetResource
+       :<|> FirewallsDeleteResource
+       :<|> FirewallsUpdateResource
+       :<|> GlobalOperationsAggregatedListResource
+       :<|> GlobalOperationsListResource
+       :<|> GlobalOperationsGetResource
+       :<|> GlobalOperationsDeleteResource
+       :<|> LicensesInsertResource
+       :<|> LicensesListResource
+       :<|> LicensesGetIAMPolicyResource
+       :<|> LicensesGetResource
+       :<|> LicensesSetIAMPolicyResource
+       :<|> LicensesTestIAMPermissionsResource
+       :<|> LicensesDeleteResource
+       :<|> ZoneOperationsListResource
+       :<|> ZoneOperationsGetResource
+       :<|> ZoneOperationsDeleteResource
+       :<|> InterconnectAttachmentsAggregatedListResource
+       :<|> InterconnectAttachmentsInsertResource
+       :<|> InterconnectAttachmentsListResource
+       :<|> InterconnectAttachmentsPatchResource
+       :<|> InterconnectAttachmentsGetResource
+       :<|> InterconnectAttachmentsDeleteResource
+       :<|> TargetHTTPSProxiesInsertResource
+       :<|> TargetHTTPSProxiesListResource
+       :<|> TargetHTTPSProxiesSetURLMapResource
+       :<|> TargetHTTPSProxiesSetSSLCertificatesResource
+       :<|> TargetHTTPSProxiesSetQuicOverrideResource
+       :<|> TargetHTTPSProxiesGetResource
+       :<|> TargetHTTPSProxiesSetSSLPolicyResource
+       :<|> TargetHTTPSProxiesDeleteResource
+       :<|> TargetInstancesAggregatedListResource
+       :<|> TargetInstancesInsertResource
+       :<|> TargetInstancesListResource
+       :<|> TargetInstancesGetResource
+       :<|> TargetInstancesDeleteResource
+       :<|> DisksAggregatedListResource
+       :<|> DisksInsertResource
+       :<|> DisksResizeResource
+       :<|> DisksListResource
+       :<|> DisksGetIAMPolicyResource
+       :<|> DisksGetResource
+       :<|> DisksSetIAMPolicyResource
+       :<|> DisksSetLabelsResource
+       :<|> DisksCreateSnapshotResource
+       :<|> DisksTestIAMPermissionsResource
+       :<|> DisksDeleteResource
+       :<|> ForwardingRulesAggregatedListResource
+       :<|> ForwardingRulesInsertResource
+       :<|> ForwardingRulesListResource
+       :<|> ForwardingRulesGetResource
+       :<|> ForwardingRulesSetTargetResource
+       :<|> ForwardingRulesDeleteResource
+       :<|> InstanceGroupManagersSetTargetPoolsResource
+       :<|> InstanceGroupManagersAggregatedListResource
+       :<|> InstanceGroupManagersInsertResource
+       :<|> InstanceGroupManagersResizeResource
+       :<|> InstanceGroupManagersListResource
+       :<|>
+       InstanceGroupManagersListManagedInstancesResource
+       :<|> InstanceGroupManagersAbandonInstancesResource
+       :<|> InstanceGroupManagersSetInstanceTemplateResource
+       :<|> InstanceGroupManagersPatchResource
+       :<|> InstanceGroupManagersGetResource
+       :<|> InstanceGroupManagersDeleteInstancesResource
+       :<|> InstanceGroupManagersDeleteResource
+       :<|> InstanceGroupManagersRecreateInstancesResource
+       :<|> RegionAutoscalersInsertResource
+       :<|> RegionAutoscalersListResource
+       :<|> RegionAutoscalersPatchResource
+       :<|> RegionAutoscalersGetResource
+       :<|> RegionAutoscalersDeleteResource
+       :<|> RegionAutoscalersUpdateResource
+       :<|> ProjectsEnableXpnHostResource
+       :<|> ProjectsListXpnHostsResource
+       :<|> ProjectsDisableXpnHostResource
+       :<|> ProjectsEnableXpnResourceResource
+       :<|> ProjectsSetUsageExportBucketResource
+       :<|> ProjectsMoveInstanceResource
+       :<|> ProjectsDisableXpnResourceResource
+       :<|> ProjectsGetXpnHostResource
+       :<|> ProjectsGetResource
+       :<|> ProjectsMoveDiskResource
+       :<|> ProjectsSetDefaultNetworkTierResource
+       :<|> ProjectsSetCommonInstanceMetadataResource
+       :<|> ProjectsGetXpnResourcesResource
+       :<|> RegionDiskTypesListResource
+       :<|> RegionDiskTypesGetResource
+       :<|> TargetPoolsAggregatedListResource
+       :<|> TargetPoolsRemoveInstanceResource
+       :<|> TargetPoolsInsertResource
+       :<|> TargetPoolsListResource
+       :<|> TargetPoolsGetHealthResource
+       :<|> TargetPoolsGetResource
+       :<|> TargetPoolsRemoveHealthCheckResource
+       :<|> TargetPoolsSetBackupResource
+       :<|> TargetPoolsAddInstanceResource
+       :<|> TargetPoolsAddHealthCheckResource
+       :<|> TargetPoolsDeleteResource
+       :<|> HealthChecksInsertResource
+       :<|> HealthChecksListResource
+       :<|> HealthChecksPatchResource
+       :<|> HealthChecksGetResource
+       :<|> HealthChecksDeleteResource
+       :<|> HealthChecksUpdateResource
+       :<|> BackendBucketsAddSignedURLKeyResource
+       :<|> BackendBucketsInsertResource
+       :<|> BackendBucketsListResource
+       :<|> BackendBucketsPatchResource
+       :<|> BackendBucketsGetResource
+       :<|> BackendBucketsDeleteSignedURLKeyResource
+       :<|> BackendBucketsDeleteResource
+       :<|> BackendBucketsUpdateResource
diff --git a/gen/Network/Google/Compute/Types.hs b/gen/Network/Google/Compute/Types.hs
--- a/gen/Network/Google/Compute/Types.hs
+++ b/gen/Network/Google/Compute/Types.hs
@@ -27,2298 +27,5195 @@
     , computeReadOnlyScope
     , storageFullControlScope
 
-    -- * TargetHTTPSProxyList
-    , TargetHTTPSProxyList
-    , targetHTTPSProxyList
-    , thplNextPageToken
-    , thplKind
-    , thplItems
-    , thplSelfLink
-    , thplId
-
-    -- * RoutersScopedList
-    , RoutersScopedList
-    , routersScopedList
-    , rslRouters
-    , rslWarning
-
-    -- * RouterStatusResponse
-    , RouterStatusResponse
-    , routerStatusResponse
-    , rsrKind
-    , rsrResult
-
-    -- * RegionInstanceGroupManagersDeleteInstancesRequest
-    , RegionInstanceGroupManagersDeleteInstancesRequest
-    , regionInstanceGroupManagersDeleteInstancesRequest
-    , rigmdirInstances
-
-    -- * AddressesScopedList
-    , AddressesScopedList
-    , addressesScopedList
-    , aslAddresses
-    , aslWarning
-
-    -- * OperationWarningsItemDataItem
-    , OperationWarningsItemDataItem
-    , operationWarningsItemDataItem
-    , owidiValue
-    , owidiKey
-
-    -- * SchedulingOnHostMaintenance
-    , SchedulingOnHostMaintenance (..)
-
-    -- * RegionInstanceGroupsListInstancesRequest
-    , RegionInstanceGroupsListInstancesRequest
-    , regionInstanceGroupsListInstancesRequest
-    , riglirInstanceState
-    , riglirPortName
-
-    -- * AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
-    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
-
-    -- * InstanceGroupManagersAbandonInstancesRequest
-    , InstanceGroupManagersAbandonInstancesRequest
-    , instanceGroupManagersAbandonInstancesRequest
-    , igmairInstances
-
-    -- * MachineTypeAggregatedListItems
-    , MachineTypeAggregatedListItems
-    , machineTypeAggregatedListItems
-    , mtaliAddtional
-
-    -- * DiskTypeAggregatedListItems
-    , DiskTypeAggregatedListItems
-    , diskTypeAggregatedListItems
-    , dtaliAddtional
-
-    -- * RouterAggregatedList
-    , RouterAggregatedList
-    , routerAggregatedList
-    , ralNextPageToken
-    , ralKind
-    , ralItems
-    , ralSelfLink
-    , ralId
-
-    -- * FirewallList
-    , FirewallList
-    , firewallList
-    , flNextPageToken
-    , flKind
-    , flItems
-    , flSelfLink
-    , flId
-
-    -- * InstancesScopedListWarning
-    , InstancesScopedListWarning
-    , instancesScopedListWarning
-    , islwData
-    , islwCode
-    , islwMessage
-
-    -- * RegionInstanceGroupManagersRecreateRequest
-    , RegionInstanceGroupManagersRecreateRequest
-    , regionInstanceGroupManagersRecreateRequest
-    , rigmrrInstances
-
-    -- * BackendServicesScopedListWarning
-    , BackendServicesScopedListWarning
-    , backendServicesScopedListWarning
-    , bsslwData
-    , bsslwCode
-    , bsslwMessage
-
-    -- * InstanceGroupList
-    , InstanceGroupList
-    , instanceGroupList
-    , iglNextPageToken
-    , iglKind
-    , iglItems
-    , iglSelfLink
-    , iglId
-
-    -- * InstancesSetMachineTypeRequest
-    , InstancesSetMachineTypeRequest
-    , instancesSetMachineTypeRequest
-    , ismtrMachineType
-
-    -- * CustomerEncryptionKey
-    , CustomerEncryptionKey
-    , customerEncryptionKey
-    , cekSha256
-    , cekRawKey
-
-    -- * AutoscalerAggregatedListItems
-    , AutoscalerAggregatedListItems
-    , autoscalerAggregatedListItems
-    , aaliAddtional
-
-    -- * InstanceGroupManagersSetInstanceTemplateRequest
-    , InstanceGroupManagersSetInstanceTemplateRequest
-    , instanceGroupManagersSetInstanceTemplateRequest
-    , igmsitrInstanceTemplate
-
-    -- * DeprecationStatus
-    , DeprecationStatus
-    , deprecationStatus
-    , dsState
-    , dsDeleted
-    , dsReplacement
-    , dsObsolete
-    , dsDeprecated
-
-    -- * OperationWarningsItemCode
-    , OperationWarningsItemCode (..)
-
-    -- * Snapshot
-    , Snapshot
-    , snapshot
-    , sStorageBytesStatus
-    , sStatus
-    , sDiskSizeGb
-    , sSourceDiskId
-    , sKind
-    , sSourceDiskEncryptionKey
-    , sStorageBytes
-    , sSelfLink
-    , sSnapshotEncryptionKey
-    , sName
-    , sCreationTimestamp
-    , sId
-    , sLicenses
-    , sSourceDisk
-    , sDescription
-
-    -- * RouterStatus
-    , RouterStatus
-    , routerStatus
-    , rsBGPPeerStatus
-    , rsNetwork
-    , rsBestRoutes
-
-    -- * AutoscalingPolicyCustomMetricUtilization
-    , AutoscalingPolicyCustomMetricUtilization
-    , autoscalingPolicyCustomMetricUtilization
-    , apcmuUtilizationTarget
-    , apcmuMetric
-    , apcmuUtilizationTargetType
-
-    -- * ForwardingRuleList
-    , ForwardingRuleList
-    , forwardingRuleList
-    , frlNextPageToken
-    , frlKind
-    , frlItems
-    , frlSelfLink
-    , frlId
-
-    -- * VPNTunnelsScopedList
-    , VPNTunnelsScopedList
-    , vpnTunnelsScopedList
-    , vtslVPNTunnels
-    , vtslWarning
-
-    -- * BackendServiceProtocol
-    , BackendServiceProtocol (..)
-
-    -- * InstanceGroupsSetNamedPortsRequest
-    , InstanceGroupsSetNamedPortsRequest
-    , instanceGroupsSetNamedPortsRequest
-    , igsnprFingerprint
-    , igsnprNamedPorts
-
-    -- * OperationList
-    , OperationList
-    , operationList
-    , olNextPageToken
-    , olKind
-    , olItems
-    , olSelfLink
-    , olId
-
-    -- * DiskList
-    , DiskList
-    , diskList
-    , dlNextPageToken
-    , dlKind
-    , dlItems
-    , dlSelfLink
-    , dlId
-
-    -- * TargetPoolsAddInstanceRequest
-    , TargetPoolsAddInstanceRequest
-    , targetPoolsAddInstanceRequest
-    , tpairInstances
-
-    -- * RegionAutoscalerList
-    , RegionAutoscalerList
-    , regionAutoscalerList
-    , rNextPageToken
-    , rKind
-    , rItems
-    , rSelfLink
-    , rId
-
-    -- * InstanceGroupsAddInstancesRequest
-    , InstanceGroupsAddInstancesRequest
-    , instanceGroupsAddInstancesRequest
-    , igairInstances
-
-    -- * InstanceGroupManagerList
-    , InstanceGroupManagerList
-    , instanceGroupManagerList
-    , igmlNextPageToken
-    , igmlKind
-    , igmlItems
-    , igmlSelfLink
-    , igmlId
-
-    -- * SubnetworksScopedListWarning
-    , SubnetworksScopedListWarning
-    , subnetworksScopedListWarning
-    , sslwData
-    , sslwCode
-    , sslwMessage
-
-    -- * AttachedDiskType
-    , AttachedDiskType (..)
-
-    -- * Image
-    , Image
-    , image
-    , iStatus
-    , iImageEncryptionKey
-    , iDiskSizeGb
-    , iSourceType
-    , iSourceDiskId
-    , iKind
-    , iSourceDiskEncryptionKey
-    , iGuestOSFeatures
-    , iArchiveSizeBytes
-    , iFamily
-    , iRawDisk
-    , iSelfLink
-    , iName
-    , iCreationTimestamp
-    , iId
-    , iLicenses
-    , iSourceDisk
-    , iDescription
-    , iDeprecated
-
-    -- * URLMap
-    , URLMap
-    , urlMap
-    , umTests
-    , umKind
-    , umFingerprint
-    , umDefaultService
-    , umSelfLink
-    , umName
-    , umCreationTimestamp
-    , umPathMatchers
-    , umId
-    , umHostRules
-    , umDescription
-
-    -- * InstanceGroupAggregatedListItems
-    , InstanceGroupAggregatedListItems
-    , instanceGroupAggregatedListItems
-    , igaliAddtional
-
-    -- * TargetPoolList
-    , TargetPoolList
-    , targetPoolList
-    , tplNextPageToken
-    , tplKind
-    , tplItems
-    , tplSelfLink
-    , tplId
-
-    -- * TargetInstanceAggregatedList
-    , TargetInstanceAggregatedList
-    , targetInstanceAggregatedList
-    , tialNextPageToken
-    , tialKind
-    , tialItems
-    , tialSelfLink
-    , tialId
-
-    -- * DisksScopedList
-    , DisksScopedList
-    , disksScopedList
-    , dslWarning
-    , dslDisks
-
-    -- * InstanceGroupManagersScopedList
-    , InstanceGroupManagersScopedList
-    , instanceGroupManagersScopedList
-    , igmslWarning
-    , igmslInstanceGroupManagers
-
-    -- * HealthCheck
-    , HealthCheck
-    , healthCheck
-    , hcHealthyThreshold
-    , hcTCPHealthCheck
-    , hcKind
-    , hcSSLHealthCheck
-    , hcSelfLink
-    , hcCheckIntervalSec
-    , hcName
-    , hcCreationTimestamp
-    , hcHTTPHealthCheck
-    , hcId
-    , hcType
-    , hcTimeoutSec
-    , hcDescription
-    , hcUnhealthyThreshold
-    , hcHTTPSHealthCheck
-
-    -- * TargetSSLProxyProxyHeader
-    , TargetSSLProxyProxyHeader (..)
-
-    -- * DiskAggregatedList
-    , DiskAggregatedList
-    , diskAggregatedList
-    , dalNextPageToken
-    , dalKind
-    , dalItems
-    , dalSelfLink
-    , dalId
-
-    -- * InstanceWithNamedPorts
-    , InstanceWithNamedPorts
-    , instanceWithNamedPorts
-    , iwnpStatus
-    , iwnpNamedPorts
-    , iwnpInstance
-
-    -- * ForwardingRulesScopedList
-    , ForwardingRulesScopedList
-    , forwardingRulesScopedList
-    , frslWarning
-    , frslForwardingRules
-
-    -- * InstanceReference
-    , InstanceReference
-    , instanceReference
-    , iInstance
-
-    -- * OperationAggregatedList
-    , OperationAggregatedList
-    , operationAggregatedList
-    , oalNextPageToken
-    , oalKind
-    , oalItems
-    , oalSelfLink
-    , oalId
-
-    -- * OperationsScopedList
-    , OperationsScopedList
-    , operationsScopedList
-    , oslWarning
-    , oslOperations
-
-    -- * NamedPort
-    , NamedPort
-    , namedPort
-    , npName
-    , npPort
-
-    -- * RegionInstanceGroupsListInstancesRequestInstanceState
-    , RegionInstanceGroupsListInstancesRequestInstanceState (..)
-
-    -- * TargetInstanceList
-    , TargetInstanceList
-    , targetInstanceList
-    , tilNextPageToken
-    , tilKind
-    , tilItems
-    , tilSelfLink
-    , tilId
-
-    -- * InstanceGroupManagerAggregatedList
-    , InstanceGroupManagerAggregatedList
-    , instanceGroupManagerAggregatedList
-    , igmalNextPageToken
-    , igmalKind
-    , igmalItems
-    , igmalSelfLink
-    , igmalId
-
-    -- * ImageSourceType
-    , ImageSourceType (..)
-
-    -- * TargetPoolsScopedList
-    , TargetPoolsScopedList
-    , targetPoolsScopedList
-    , tpslWarning
-    , tpslTargetPools
-
-    -- * ForwardingRuleAggregatedList
-    , ForwardingRuleAggregatedList
-    , forwardingRuleAggregatedList
-    , fralNextPageToken
-    , fralKind
-    , fralItems
-    , fralSelfLink
-    , fralId
-
-    -- * TargetReference
-    , TargetReference
-    , targetReference
-    , trTarget
-
-    -- * TargetPoolAggregatedList
-    , TargetPoolAggregatedList
-    , targetPoolAggregatedList
-    , tpalNextPageToken
-    , tpalKind
-    , tpalItems
-    , tpalSelfLink
-    , tpalId
-
-    -- * OperationsScopedListWarningDataItem
-    , OperationsScopedListWarningDataItem
-    , operationsScopedListWarningDataItem
-    , oslwdiValue
-    , oslwdiKey
-
-    -- * BackendServiceSessionAffinity
-    , BackendServiceSessionAffinity (..)
-
-    -- * TargetPool
-    , TargetPool
-    , targetPool
-    , tpSessionAffinity
-    , tpBackupPool
-    , tpKind
-    , tpSelfLink
-    , tpName
-    , tpCreationTimestamp
-    , tpInstances
-    , tpId
-    , tpFailoverRatio
-    , tpRegion
-    , tpDescription
-    , tpHealthChecks
-
-    -- * ImageList
-    , ImageList
-    , imageList
-    , ilNextPageToken
-    , ilKind
-    , ilItems
-    , ilSelfLink
-    , ilId
-
-    -- * VPNTunnelsScopedListWarning
-    , VPNTunnelsScopedListWarning
-    , vpnTunnelsScopedListWarning
-    , vtslwData
-    , vtslwCode
-    , vtslwMessage
-
-    -- * ForwardingRulesScopedListWarningCode
-    , ForwardingRulesScopedListWarningCode (..)
-
-    -- * OperationsScopedListWarningCode
-    , OperationsScopedListWarningCode (..)
-
-    -- * TargetSSLProxiesSetBackendServiceRequest
-    , TargetSSLProxiesSetBackendServiceRequest
-    , targetSSLProxiesSetBackendServiceRequest
-    , tspsbsrService
-
-    -- * ForwardingRule
-    , ForwardingRule
-    , forwardingRule
-    , frIPAddress
-    , frLoadBalancingScheme
-    , frKind
-    , frNetwork
-    , frPortRange
-    , frSelfLink
-    , frName
-    , frIPProtocol
-    , frCreationTimestamp
-    , frSubnetwork
-    , frPorts
-    , frId
-    , frRegion
-    , frDescription
-    , frTarget
-    , frBackendService
-
-    -- * URLMapList
-    , URLMapList
-    , urlMapList
-    , umlNextPageToken
-    , umlKind
-    , umlItems
-    , umlSelfLink
-    , umlId
-
-    -- * ForwardingRulesScopedListWarningDataItem
-    , ForwardingRulesScopedListWarningDataItem
-    , forwardingRulesScopedListWarningDataItem
-    , frslwdiValue
-    , frslwdiKey
-
-    -- * InstanceGroupManagersScopedListWarningDataItem
-    , InstanceGroupManagersScopedListWarningDataItem
-    , instanceGroupManagersScopedListWarningDataItem
-    , igmslwdiValue
-    , igmslwdiKey
-
-    -- * SubnetworksScopedList
-    , SubnetworksScopedList
-    , subnetworksScopedList
-    , sslSubnetworks
-    , sslWarning
-
-    -- * DisksScopedListWarningCode
-    , DisksScopedListWarningCode (..)
-
-    -- * Project
-    , Project
-    , project
-    , pKind
-    , pUsageExportLocation
-    , pSelfLink
-    , pName
-    , pDefaultServiceAccount
-    , pCreationTimestamp
-    , pEnabledFeatures
-    , pQuotas
-    , pId
-    , pDescription
-    , pCommonInstanceMetadata
-
-    -- * RegionInstanceGroupManagersListInstancesResponse
-    , RegionInstanceGroupManagersListInstancesResponse
-    , regionInstanceGroupManagersListInstancesResponse
-    , rigmlirManagedInstances
-
-    -- * Operation
-    , Operation
-    , operation
-    , oTargetId
-    , oStatus
-    , oInsertTime
-    , oProgress
-    , oStartTime
-    , oKind
-    , oError
-    , oHTTPErrorMessage
-    , oZone
-    , oWarnings
-    , oHTTPErrorStatusCode
-    , oUser
-    , oSelfLink
-    , oName
-    , oStatusMessage
-    , oCreationTimestamp
-    , oEndTime
-    , oId
-    , oOperationType
-    , oRegion
-    , oDescription
-    , oTargetLink
-    , oClientOperationId
-
-    -- * DisksScopedListWarningDataItem
-    , DisksScopedListWarningDataItem
-    , disksScopedListWarningDataItem
-    , dslwdiValue
-    , dslwdiKey
-
-    -- * InstanceGroupManagersScopedListWarningCode
-    , InstanceGroupManagersScopedListWarningCode (..)
-
-    -- * Disk
-    , Disk
-    , disk
-    , dStatus
-    , dSourceSnapshotId
-    , dLastAttachTimestamp
-    , dUsers
-    , dSourceImage
-    , dDiskEncryptionKey
-    , dSizeGb
-    , dKind
-    , dLastDetachTimestamp
-    , dZone
-    , dSelfLink
-    , dName
-    , dSourceImageId
-    , dCreationTimestamp
-    , dSourceImageEncryptionKey
-    , dId
-    , dLicenses
-    , dOptions
-    , dType
-    , dDescription
-    , dSourceSnapshotEncryptionKey
-    , dSourceSnapshot
-
-    -- * DiskMoveRequest
-    , DiskMoveRequest
-    , diskMoveRequest
-    , dmrTargetDisk
-    , dmrDestinationZone
-
-    -- * AutoscalingPolicyLoadBalancingUtilization
-    , AutoscalingPolicyLoadBalancingUtilization
-    , autoscalingPolicyLoadBalancingUtilization
-    , aplbuUtilizationTarget
-
-    -- * TargetPoolsScopedListWarningDataItem
-    , TargetPoolsScopedListWarningDataItem
-    , targetPoolsScopedListWarningDataItem
-    , tpslwdiValue
-    , tpslwdiKey
-
-    -- * InstanceGroupManager
-    , InstanceGroupManager
-    , instanceGroupManager
-    , igmKind
-    , igmFingerprint
-    , igmBaseInstanceName
-    , igmZone
-    , igmInstanceTemplate
-    , igmTargetSize
-    , igmSelfLink
-    , igmCurrentActions
-    , igmName
-    , igmCreationTimestamp
-    , igmId
-    , igmRegion
-    , igmTargetPools
-    , igmDescription
-    , igmInstanceGroup
-    , igmNamedPorts
-
-    -- * RegionInstanceGroupsListInstances
-    , RegionInstanceGroupsListInstances
-    , regionInstanceGroupsListInstances
-    , rigliNextPageToken
-    , rigliKind
-    , rigliItems
-    , rigliSelfLink
-    , rigliId
-
-    -- * TCPHealthCheck
-    , TCPHealthCheck
-    , tcpHealthCheck
-    , thcResponse
-    , thcProxyHeader
-    , thcPortName
-    , thcPort
-    , thcRequest
-
-    -- * TargetPoolsScopedListWarningCode
-    , TargetPoolsScopedListWarningCode (..)
-
-    -- * SSLHealthCheckProxyHeader
-    , SSLHealthCheckProxyHeader (..)
-
-    -- * TargetVPNGatewayStatus
-    , TargetVPNGatewayStatus (..)
-
-    -- * InstanceGroupsRemoveInstancesRequest
-    , InstanceGroupsRemoveInstancesRequest
-    , instanceGroupsRemoveInstancesRequest
-    , igrirInstances
-
-    -- * SnapshotStatus
-    , SnapshotStatus (..)
-
-    -- * RouteWarningsItemDataItem
-    , RouteWarningsItemDataItem
-    , routeWarningsItemDataItem
-    , rwidiValue
-    , rwidiKey
-
-    -- * TargetInstancesScopedListWarningCode
-    , TargetInstancesScopedListWarningCode (..)
-
-    -- * BackendServiceAggregatedListItems
-    , BackendServiceAggregatedListItems
-    , backendServiceAggregatedListItems
-    , bsaliAddtional
-
-    -- * InstanceAggregatedListItems
-    , InstanceAggregatedListItems
-    , instanceAggregatedListItems
-    , ialiAddtional
-
-    -- * AutoscalersScopedListWarning
-    , AutoscalersScopedListWarning
-    , autoscalersScopedListWarning
-    , aslwData
-    , aslwCode
-    , aslwMessage
-
-    -- * HealthCheckList
-    , HealthCheckList
-    , healthCheckList
-    , hclNextPageToken
-    , hclKind
-    , hclItems
-    , hclSelfLink
-    , hclId
-
-    -- * ManagedInstanceLastAttemptErrors
-    , ManagedInstanceLastAttemptErrors
-    , managedInstanceLastAttemptErrors
-    , milaeErrors
-
-    -- * GuestOSFeatureType
-    , GuestOSFeatureType (..)
-
-    -- * RouteWarningsItemCode
-    , RouteWarningsItemCode (..)
-
-    -- * TargetPoolsRemoveInstanceRequest
-    , TargetPoolsRemoveInstanceRequest
-    , targetPoolsRemoveInstanceRequest
-    , tprirInstances
-
-    -- * TargetInstancesScopedListWarningDataItem
-    , TargetInstancesScopedListWarningDataItem
-    , targetInstancesScopedListWarningDataItem
-    , tislwdiValue
-    , tislwdiKey
-
-    -- * MachineTypesScopedListWarning
-    , MachineTypesScopedListWarning
-    , machineTypesScopedListWarning
-    , mtslwData
-    , mtslwCode
-    , mtslwMessage
-
-    -- * TargetInstance
-    , TargetInstance
-    , targetInstance
-    , tiKind
-    , tiNATPolicy
-    , tiZone
-    , tiSelfLink
-    , tiName
-    , tiCreationTimestamp
-    , tiId
-    , tiDescription
-    , tiInstance
-
-    -- * TargetPoolInstanceHealth
-    , TargetPoolInstanceHealth
-    , targetPoolInstanceHealth
-    , tpihKind
-    , tpihHealthStatus
-
-    -- * SnapshotStorageBytesStatus
-    , SnapshotStorageBytesStatus (..)
-
-    -- * InstanceGroupManagersListManagedInstancesResponse
-    , InstanceGroupManagersListManagedInstancesResponse
-    , instanceGroupManagersListManagedInstancesResponse
-    , igmlmirManagedInstances
-
-    -- * InstanceProperties
-    , InstanceProperties
-    , instanceProperties
-    , ipServiceAccounts
-    , ipNetworkInterfaces
-    , ipMachineType
-    , ipMetadata
-    , ipScheduling
-    , ipDisks
-    , ipCanIPForward
-    , ipDescription
-    , ipTags
-
-    -- * DiskTypesScopedListWarning
-    , DiskTypesScopedListWarning
-    , diskTypesScopedListWarning
-    , dtslwData
-    , dtslwCode
-    , dtslwMessage
-
-    -- * AddressesScopedListWarningCode
-    , AddressesScopedListWarningCode (..)
-
-    -- * AttachedDiskInitializeParams
-    , AttachedDiskInitializeParams
-    , attachedDiskInitializeParams
-    , adipSourceImage
-    , adipDiskSizeGb
-    , adipDiskName
-    , adipSourceImageEncryptionKey
-    , adipDiskType
-
-    -- * AddressesScopedListWarningDataItem
-    , AddressesScopedListWarningDataItem
-    , addressesScopedListWarningDataItem
-    , aslwdiValue
-    , aslwdiKey
-
-    -- * ImageStatus
-    , ImageStatus (..)
-
-    -- * NetworkInterface
-    , NetworkInterface
-    , networkInterface
-    , niKind
-    , niNetwork
-    , niName
-    , niNetworkIP
-    , niSubnetwork
-    , niAccessConfigs
-
-    -- * TargetPoolsRemoveHealthCheckRequest
-    , TargetPoolsRemoveHealthCheckRequest
-    , targetPoolsRemoveHealthCheckRequest
-    , tprhcrHealthChecks
-
-    -- * RegionInstanceGroupManagersSetTargetPoolsRequest
-    , RegionInstanceGroupManagersSetTargetPoolsRequest
-    , regionInstanceGroupManagersSetTargetPoolsRequest
-    , rigmstprFingerprint
-    , rigmstprTargetPools
-
-    -- * TargetSSLProxyList
-    , TargetSSLProxyList
-    , targetSSLProxyList
-    , tsplNextPageToken
-    , tsplKind
-    , tsplItems
-    , tsplSelfLink
-    , tsplId
-
-    -- * CustomerEncryptionKeyProtectedDisk
-    , CustomerEncryptionKeyProtectedDisk
-    , customerEncryptionKeyProtectedDisk
-    , cekpdDiskEncryptionKey
-    , cekpdSource
-
-    -- * HealthStatusHealthState
-    , HealthStatusHealthState (..)
-
-    -- * InstanceTemplateList
-    , InstanceTemplateList
-    , instanceTemplateList
-    , itlNextPageToken
-    , itlKind
-    , itlItems
-    , itlSelfLink
-    , itlId
-
-    -- * RouteList
-    , RouteList
-    , routeList
-    , rlNextPageToken
-    , rlKind
-    , rlItems
-    , rlSelfLink
-    , rlId
-
-    -- * DeprecationStatusState
-    , DeprecationStatusState (..)
-
-    -- * Router
-    , Router
-    , router
-    , rouBGPPeers
-    , rouBGP
-    , rouKind
-    , rouNetwork
-    , rouInterfaces
-    , rouSelfLink
-    , rouName
-    , rouCreationTimestamp
-    , rouId
-    , rouRegion
-    , rouDescription
-
-    -- * RoutersScopedListWarningCode
-    , RoutersScopedListWarningCode (..)
-
-    -- * RoutersScopedListWarningDataItem
-    , RoutersScopedListWarningDataItem
-    , routersScopedListWarningDataItem
-    , rslwdiValue
-    , rslwdiKey
-
-    -- * ManagedInstanceCurrentAction
-    , ManagedInstanceCurrentAction (..)
-
-    -- * TargetVPNGatewayList
-    , TargetVPNGatewayList
-    , targetVPNGatewayList
-    , tvglNextPageToken
-    , tvglKind
-    , tvglItems
-    , tvglSelfLink
-    , tvglId
-
-    -- * TargetInstanceNATPolicy
-    , TargetInstanceNATPolicy (..)
-
-    -- * SSLCertificateList
-    , SSLCertificateList
-    , sslCertificateList
-    , sclNextPageToken
-    , sclKind
-    , sclItems
-    , sclSelfLink
-    , sclId
-
-    -- * FirewallAllowedItem
-    , FirewallAllowedItem
-    , firewallAllowedItem
-    , faiIPProtocol
-    , faiPorts
-
-    -- * BackendServiceAggregatedList
-    , BackendServiceAggregatedList
-    , backendServiceAggregatedList
-    , bsalNextPageToken
-    , bsalKind
-    , bsalItems
-    , bsalSelfLink
-    , bsalId
-
-    -- * Network
-    , Network
-    , network
-    , nAutoCreateSubnetworks
-    , nKind
-    , nSubnetworks
-    , nIPv4Range
-    , nSelfLink
-    , nName
-    , nCreationTimestamp
-    , nId
-    , nGatewayIPv4
-    , nDescription
-
-    -- * RoutersScopedListWarning
-    , RoutersScopedListWarning
-    , routersScopedListWarning
-    , rslwData
-    , rslwCode
-    , rslwMessage
-
-    -- * AccessConfigType
-    , AccessConfigType (..)
-
-    -- * AddressesScopedListWarning
-    , AddressesScopedListWarning
-    , addressesScopedListWarning
-    , aData
-    , aCode
-    , aMessage
-
-    -- * ImageRawDisk
-    , ImageRawDisk
-    , imageRawDisk
-    , irdContainerType
-    , irdSource
-    , irdSha1Checksum
-
-    -- * InstanceAggregatedList
-    , InstanceAggregatedList
-    , instanceAggregatedList
-    , ialNextPageToken
-    , ialKind
-    , ialItems
-    , ialSelfLink
-    , ialId
-
-    -- * SSLHealthCheck
-    , SSLHealthCheck
-    , sslHealthCheck
-    , shcResponse
-    , shcProxyHeader
-    , shcPortName
-    , shcPort
-    , shcRequest
-
-    -- * Address
-    , Address
-    , address
-    , aStatus
-    , aUsers
-    , aKind
-    , aAddress
-    , aSelfLink
-    , aName
-    , aCreationTimestamp
-    , aId
-    , aRegion
-    , aDescription
-
-    -- * Zone
-    , Zone
-    , zone
-    , zStatus
-    , zKind
-    , zSelfLink
-    , zName
-    , zCreationTimestamp
-    , zId
-    , zRegion
-    , zDescription
-    , zDeprecated
-
-    -- * RouterBGP
-    , RouterBGP
-    , routerBGP
-    , rbASN
-
-    -- * BackendServicesScopedList
-    , BackendServicesScopedList
-    , backendServicesScopedList
-    , bsslWarning
-    , bsslBackendServices
-
-    -- * InstanceGroupManagersRecreateInstancesRequest
-    , InstanceGroupManagersRecreateInstancesRequest
-    , instanceGroupManagersRecreateInstancesRequest
-    , igmrirInstances
-
-    -- * TargetSSLProxiesSetSSLCertificatesRequest
-    , TargetSSLProxiesSetSSLCertificatesRequest
-    , targetSSLProxiesSetSSLCertificatesRequest
-    , tspsscrSSLCertificates
-
-    -- * InstancesScopedList
-    , InstancesScopedList
-    , instancesScopedList
-    , islWarning
-    , islInstances
-
-    -- * BackendServiceLoadBalancingScheme
-    , BackendServiceLoadBalancingScheme (..)
-
-    -- * HealthCheckReference
-    , HealthCheckReference
-    , healthCheckReference
-    , hcrHealthCheck
-
-    -- * TargetInstanceAggregatedListItems
-    , TargetInstanceAggregatedListItems
-    , targetInstanceAggregatedListItems
-    , tialiAddtional
-
-    -- * InstanceGroupAggregatedList
-    , InstanceGroupAggregatedList
-    , instanceGroupAggregatedList
-    , igalNextPageToken
-    , igalKind
-    , igalItems
-    , igalSelfLink
-    , igalId
-
-    -- * OperationStatus
-    , OperationStatus (..)
-
-    -- * Route
-    , Route
-    , route
-    , rrPriority
-    , rrKind
-    , rrNextHopGateway
-    , rrNextHopNetwork
-    , rrNetwork
-    , rrWarnings
-    , rrNextHopIP
-    , rrDestRange
-    , rrSelfLink
-    , rrName
-    , rrCreationTimestamp
-    , rrId
-    , rrNextHopVPNTunnel
-    , rrDescription
-    , rrTags
-    , rrNextHopInstance
-
-    -- * TargetVPNGatewaysScopedListWarningDataItem
-    , TargetVPNGatewaysScopedListWarningDataItem
-    , targetVPNGatewaysScopedListWarningDataItem
-    , tvgslwdiValue
-    , tvgslwdiKey
-
-    -- * TargetVPNGatewaysScopedListWarningCode
-    , TargetVPNGatewaysScopedListWarningCode (..)
-
-    -- * TargetHTTPSProxiesSetSSLCertificatesRequest
-    , TargetHTTPSProxiesSetSSLCertificatesRequest
-    , targetHTTPSProxiesSetSSLCertificatesRequest
-    , thpsscrSSLCertificates
-
-    -- * InstanceTemplate
-    , InstanceTemplate
-    , instanceTemplate
-    , itKind
-    , itSelfLink
-    , itName
-    , itCreationTimestamp
-    , itId
-    , itDescription
-    , itProperties
-
-    -- * RouterList
-    , RouterList
-    , routerList
-    , rllNextPageToken
-    , rllKind
-    , rllItems
-    , rllSelfLink
-    , rllId
-
-    -- * TargetSSLProxy
-    , TargetSSLProxy
-    , targetSSLProxy
-    , tspSSLCertificates
-    , tspService
-    , tspKind
-    , tspSelfLink
-    , tspName
-    , tspCreationTimestamp
-    , tspId
-    , tspProxyHeader
-    , tspDescription
-
-    -- * TargetVPNGateway
-    , TargetVPNGateway
-    , targetVPNGateway
-    , tvgStatus
-    , tvgKind
-    , tvgNetwork
-    , tvgSelfLink
-    , tvgName
-    , tvgCreationTimestamp
-    , tvgId
-    , tvgRegion
-    , tvgTunnels
-    , tvgDescription
-    , tvgForwardingRules
-
-    -- * DiskStatus
-    , DiskStatus (..)
-
-    -- * ManagedInstanceInstanceStatus
-    , ManagedInstanceInstanceStatus (..)
-
-    -- * HTTPHealthCheckProxyHeader
-    , HTTPHealthCheckProxyHeader (..)
-
-    -- * URLMapsValidateResponse
-    , URLMapsValidateResponse
-    , urlMapsValidateResponse
-    , umvrResult
-
-    -- * SSLCertificate
-    , SSLCertificate
-    , sslCertificate
-    , scPrivateKey
-    , scKind
-    , scSelfLink
-    , scName
-    , scCreationTimestamp
-    , scId
-    , scCertificate
-    , scDescription
-
-    -- * RouterStatusBGPPeerStatus
-    , RouterStatusBGPPeerStatus
-    , routerStatusBGPPeerStatus
-    , rsbpsStatus
-    , rsbpsIPAddress
-    , rsbpsState
-    , rsbpsPeerIPAddress
-    , rsbpsUptime
-    , rsbpsNumLearnedRoutes
-    , rsbpsName
-    , rsbpsUptimeSeconds
-    , rsbpsAdvertisedRoutes
-    , rsbpsLinkedVPNTunnel
-
-    -- * URLMapReference
-    , URLMapReference
-    , urlMapReference
-    , umrURLMap
-
-    -- * AttachedDiskMode
-    , AttachedDiskMode (..)
-
-    -- * TargetPoolsAddHealthCheckRequest
-    , TargetPoolsAddHealthCheckRequest
-    , targetPoolsAddHealthCheckRequest
-    , tpahcrHealthChecks
-
-    -- * DiskAggregatedListItems
-    , DiskAggregatedListItems
-    , diskAggregatedListItems
-    , daliAddtional
-
-    -- * UsageExportLocation
-    , UsageExportLocation
-    , usageExportLocation
-    , uelReportNamePrefix
-    , uelBucketName
-
-    -- * ZoneList
-    , ZoneList
-    , zoneList
-    , zlNextPageToken
-    , zlKind
-    , zlItems
-    , zlSelfLink
-    , zlId
-
-    -- * RegionStatus
-    , RegionStatus (..)
-
-    -- * RouterBGPPeer
-    , RouterBGPPeer
-    , routerBGPPeer
-    , rbpIPAddress
-    , rbpInterfaceName
-    , rbpPeerIPAddress
-    , rbpAdvertisedRoutePriority
-    , rbpPeerASN
-    , rbpName
-
-    -- * SubnetworksExpandIPCIdRRangeRequest
-    , SubnetworksExpandIPCIdRRangeRequest
-    , subnetworksExpandIPCIdRRangeRequest
-    , seicirrrIPCIdRRange
-
-    -- * ManagedInstance
-    , ManagedInstance
-    , managedInstance
-    , miLastAttempt
-    , miCurrentAction
-    , miId
-    , miInstanceStatus
-    , miInstance
-
-    -- * InstanceGroupManagerAggregatedListItems
-    , InstanceGroupManagerAggregatedListItems
-    , instanceGroupManagerAggregatedListItems
-    , igmaliAddtional
-
-    -- * InstanceGroupManagersDeleteInstancesRequest
-    , InstanceGroupManagersDeleteInstancesRequest
-    , instanceGroupManagersDeleteInstancesRequest
-    , igmdirInstances
-
-    -- * Backend
-    , Backend
-    , backend
-    , bGroup
-    , bBalancingMode
-    , bMaxUtilization
-    , bMaxRate
-    , bMaxConnections
-    , bMaxConnectionsPerInstance
-    , bMaxRatePerInstance
-    , bDescription
-    , bCapacityScaler
-
-    -- * TargetVPNGatewaysScopedListWarning
-    , TargetVPNGatewaysScopedListWarning
-    , targetVPNGatewaysScopedListWarning
-    , tvgslwData
-    , tvgslwCode
-    , tvgslwMessage
-
-    -- * TargetSSLProxiesSetProxyHeaderRequestProxyHeader
-    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)
-
-    -- * AddressList
-    , AddressList
-    , addressList
-    , alNextPageToken
-    , alKind
-    , alItems
-    , alSelfLink
-    , alId
-
-    -- * ForwardingRuleAggregatedListItems
-    , ForwardingRuleAggregatedListItems
-    , forwardingRuleAggregatedListItems
-    , fraliAddtional
-
-    -- * OperationAggregatedListItems
-    , OperationAggregatedListItems
-    , operationAggregatedListItems
-    , oaliAddtional
-
-    -- * InstanceGroupManagerActionsSummary
-    , InstanceGroupManagerActionsSummary
-    , instanceGroupManagerActionsSummary
-    , igmasDeleting
-    , igmasRestarting
-    , igmasNone
-    , igmasCreating
-    , igmasRefreshing
-    , igmasCreatingWithoutRetries
-    , igmasRecreating
-    , igmasAbandoning
-
-    -- * VPNTunnelStatus
-    , VPNTunnelStatus (..)
-
-    -- * ServiceAccount
-    , ServiceAccount
-    , serviceAccount
-    , saEmail
-    , saScopes
-
-    -- * RegionInstanceGroupManagersAbandonInstancesRequest
-    , RegionInstanceGroupManagersAbandonInstancesRequest
-    , regionInstanceGroupManagersAbandonInstancesRequest
-    , rigmairInstances
-
-    -- * NetworkList
-    , NetworkList
-    , networkList
-    , nlNextPageToken
-    , nlKind
-    , nlItems
-    , nlSelfLink
-    , nlId
-
-    -- * InstanceGroupsListInstancesRequest
-    , InstanceGroupsListInstancesRequest
-    , instanceGroupsListInstancesRequest
-    , iglirInstanceState
-
-    -- * BackendBalancingMode
-    , BackendBalancingMode (..)
-
-    -- * RegionInstanceGroupList
-    , RegionInstanceGroupList
-    , regionInstanceGroupList
-    , riglNextPageToken
-    , riglKind
-    , riglItems
-    , riglSelfLink
-    , riglId
-
-    -- * TargetPoolAggregatedListItems
-    , TargetPoolAggregatedListItems
-    , targetPoolAggregatedListItems
-    , tpaliAddtional
-
-    -- * TargetInstancesScopedList
-    , TargetInstancesScopedList
-    , targetInstancesScopedList
-    , tislWarning
-    , tislTargetInstances
-
-    -- * AddressAggregatedListItems
-    , AddressAggregatedListItems
-    , addressAggregatedListItems
-    , aAddtional
-
-    -- * AutoscalerList
-    , AutoscalerList
-    , autoscalerList
-    , autNextPageToken
-    , autKind
-    , autItems
-    , autSelfLink
-    , autId
-
-    -- * TargetSSLProxiesSetProxyHeaderRequest
-    , TargetSSLProxiesSetProxyHeaderRequest
-    , targetSSLProxiesSetProxyHeaderRequest
-    , tspsphrProxyHeader
-
-    -- * VPNTunnelAggregatedList
-    , VPNTunnelAggregatedList
-    , vpnTunnelAggregatedList
-    , vtalNextPageToken
-    , vtalKind
-    , vtalItems
-    , vtalSelfLink
-    , vtalId
-
-    -- * AttachedDisk
-    , AttachedDisk
-    , attachedDisk
-    , adDiskEncryptionKey
-    , adKind
-    , adMode
-    , adBoot
-    , adAutoDelete
-    , adInitializeParams
-    , adDeviceName
-    , adInterface
-    , adSource
-    , adLicenses
-    , adType
-    , adIndex
-
-    -- * DiskTypeList
-    , DiskTypeList
-    , diskTypeList
-    , dtlNextPageToken
-    , dtlKind
-    , dtlItems
-    , dtlSelfLink
-    , dtlId
-
-    -- * RegionInstanceGroupsSetNamedPortsRequest
-    , RegionInstanceGroupsSetNamedPortsRequest
-    , regionInstanceGroupsSetNamedPortsRequest
-    , rigsnprFingerprint
-    , rigsnprNamedPorts
-
-    -- * MachineTypeList
-    , MachineTypeList
-    , machineTypeList
-    , mtlNextPageToken
-    , mtlKind
-    , mtlItems
-    , mtlSelfLink
-    , mtlId
-
-    -- * TargetHTTPProxyList
-    , TargetHTTPProxyList
-    , targetHTTPProxyList
-    , thttpplNextPageToken
-    , thttpplKind
-    , thttpplItems
-    , thttpplSelfLink
-    , thttpplId
-
-    -- * RegionInstanceGroupManagerList
-    , RegionInstanceGroupManagerList
-    , regionInstanceGroupManagerList
-    , rigmlNextPageToken
-    , rigmlKind
-    , rigmlItems
-    , rigmlSelfLink
-    , rigmlId
-
-    -- * ForwardingRuleIPProtocol
-    , ForwardingRuleIPProtocol (..)
-
-    -- * DiskTypesScopedList
-    , DiskTypesScopedList
-    , diskTypesScopedList
-    , dtslDiskTypes
-    , dtslWarning
-
-    -- * AddressStatus
-    , AddressStatus (..)
-
-    -- * DiskTypeAggregatedList
-    , DiskTypeAggregatedList
-    , diskTypeAggregatedList
-    , dtalNextPageToken
-    , dtalKind
-    , dtalItems
-    , dtalSelfLink
-    , dtalId
-
-    -- * HTTPHealthCheck
-    , HTTPHealthCheck
-    , hTTPHealthCheck
-    , httphcRequestPath
-    , httphcHost
-    , httphcProxyHeader
-    , httphcPortName
-    , httphcPort
-
-    -- * BackendServiceGroupHealth
-    , BackendServiceGroupHealth
-    , backendServiceGroupHealth
-    , bsghKind
-    , bsghHealthStatus
-
-    -- * InstanceGroupsListInstancesRequestInstanceState
-    , InstanceGroupsListInstancesRequestInstanceState (..)
-
-    -- * AutoscalersScopedList
-    , AutoscalersScopedList
-    , autoscalersScopedList
-    , aAutoscalers
-    , aWarning
-
-    -- * AutoscalerAggregatedList
-    , AutoscalerAggregatedList
-    , autoscalerAggregatedList
-    , aalNextPageToken
-    , aalKind
-    , aalItems
-    , aalSelfLink
-    , aalId
-
-    -- * RouterAggregatedListItems
-    , RouterAggregatedListItems
-    , routerAggregatedListItems
-    , raliAddtional
-
-    -- * HTTPSHealthCheckProxyHeader
-    , HTTPSHealthCheckProxyHeader (..)
-
-    -- * AutoscalingPolicy
-    , AutoscalingPolicy
-    , autoscalingPolicy
-    , apCustomMetricUtilizations
-    , apMaxNumReplicas
-    , apCPUUtilization
-    , apLoadBalancingUtilization
-    , apMinNumReplicas
-    , apCoolDownPeriodSec
-
-    -- * RegionList
-    , RegionList
-    , regionList
-    , regNextPageToken
-    , regKind
-    , regItems
-    , regSelfLink
-    , regId
-
-    -- * AttachedDiskInterface
-    , AttachedDiskInterface (..)
-
-    -- * HealthCheckType
-    , HealthCheckType (..)
-
-    -- * ZoneStatus
-    , ZoneStatus (..)
-
-    -- * VPNTunnelList
-    , VPNTunnelList
-    , vpnTunnelList
-    , vtlNextPageToken
-    , vtlKind
-    , vtlItems
-    , vtlSelfLink
-    , vtlId
-
-    -- * MachineTypeScratchDisksItem
-    , MachineTypeScratchDisksItem
-    , machineTypeScratchDisksItem
-    , mtsdiDiskGb
-
-    -- * SubnetworksScopedListWarningDataItem
-    , SubnetworksScopedListWarningDataItem
-    , subnetworksScopedListWarningDataItem
-    , sslwdiValue
-    , sslwdiKey
-
-    -- * MachineTypesScopedList
-    , MachineTypesScopedList
-    , machineTypesScopedList
-    , mtslMachineTypes
-    , mtslWarning
-
-    -- * SubnetworksScopedListWarningCode
-    , SubnetworksScopedListWarningCode (..)
-
-    -- * Subnetwork
-    , Subnetwork
-    , subnetwork
-    , subKind
-    , subNetwork
-    , subGatewayAddress
-    , subSelfLink
-    , subName
-    , subCreationTimestamp
-    , subIPCIdRRange
-    , subId
-    , subRegion
-    , subDescription
-
-    -- * MachineTypeAggregatedList
-    , MachineTypeAggregatedList
-    , machineTypeAggregatedList
-    , mtalNextPageToken
-    , mtalKind
-    , mtalItems
-    , mtalSelfLink
-    , mtalId
-
-    -- * QuotaMetric
-    , QuotaMetric (..)
-
-    -- * DiskType
-    , DiskType
-    , diskType
-    , dtKind
-    , dtZone
-    , dtSelfLink
-    , dtName
-    , dtCreationTimestamp
-    , dtId
-    , dtValidDiskSize
-    , dtDescription
-    , dtDefaultDiskSizeGb
-    , dtDeprecated
-
-    -- * URLMapValidationResult
-    , URLMapValidationResult
-    , urlMapValidationResult
-    , umvrLoadErrors
-    , umvrLoadSucceeded
-    , umvrTestPassed
-    , umvrTestFailures
-
-    -- * Metadata
-    , Metadata
-    , metadata
-    , mKind
-    , mFingerprint
-    , mItems
-
-    -- * RouteWarningsItem
-    , RouteWarningsItem
-    , routeWarningsItem
-    , rwiData
-    , rwiCode
-    , rwiMessage
-
-    -- * MachineTypesScopedListWarningDataItem
-    , MachineTypesScopedListWarningDataItem
-    , machineTypesScopedListWarningDataItem
-    , mtslwdiValue
-    , mtslwdiKey
-
-    -- * InstanceStatus
-    , InstanceStatus (..)
-
-    -- * MachineTypesScopedListWarningCode
-    , MachineTypesScopedListWarningCode (..)
-
-    -- * InstancesSetServiceAccountRequest
-    , InstancesSetServiceAccountRequest
-    , instancesSetServiceAccountRequest
-    , issarEmail
-    , issarScopes
-
-    -- * DiskTypesScopedListWarningDataItem
-    , DiskTypesScopedListWarningDataItem
-    , diskTypesScopedListWarningDataItem
-    , dtslwdiValue
-    , dtslwdiKey
-
-    -- * TargetHTTPProxy
-    , TargetHTTPProxy
-    , targetHTTPProxy
-    , thttppURLMap
-    , thttppKind
-    , thttppSelfLink
-    , thttppName
-    , thttppCreationTimestamp
-    , thttppId
-    , thttppDescription
-
-    -- * MachineType
-    , MachineType
-    , machineType
-    , mtIsSharedCPU
-    , mtKind
-    , mtImageSpaceGb
-    , mtZone
-    , mtSelfLink
-    , mtName
-    , mtCreationTimestamp
-    , mtScratchDisks
-    , mtId
-    , mtGuestCPUs
-    , mtMaximumPersistentDisksSizeGb
-    , mtMaximumPersistentDisks
-    , mtMemoryMb
-    , mtDescription
-    , mtDeprecated
-
-    -- * DiskTypesScopedListWarningCode
-    , DiskTypesScopedListWarningCode (..)
-
-    -- * OperationError
-    , OperationError
-    , operationError
-    , oeErrors
-
-    -- * TargetInstancesScopedListWarning
-    , TargetInstancesScopedListWarning
-    , targetInstancesScopedListWarning
-    , tislwData
-    , tislwCode
-    , tislwMessage
-
-    -- * SubnetworkAggregatedList
-    , SubnetworkAggregatedList
-    , subnetworkAggregatedList
-    , salNextPageToken
-    , salKind
-    , salItems
-    , salSelfLink
-    , salId
-
-    -- * DisksResizeRequest
-    , DisksResizeRequest
-    , disksResizeRequest
-    , drrSizeGb
-
-    -- * AutoscalersScopedListWarningDataItem
-    , AutoscalersScopedListWarningDataItem
-    , autoscalersScopedListWarningDataItem
-    , aValue
-    , aKey
-
-    -- * AutoscalersScopedListWarningCode
-    , AutoscalersScopedListWarningCode (..)
-
-    -- * ForwardingRuleLoadBalancingScheme
-    , ForwardingRuleLoadBalancingScheme (..)
-
-    -- * RegionInstanceGroupManagersSetTemplateRequest
-    , RegionInstanceGroupManagersSetTemplateRequest
-    , regionInstanceGroupManagersSetTemplateRequest
-    , rigmstrInstanceTemplate
-
-    -- * InstanceGroupsListInstances
-    , InstanceGroupsListInstances
-    , instanceGroupsListInstances
-    , igliNextPageToken
-    , igliKind
-    , igliItems
-    , igliSelfLink
-    , igliId
-
-    -- * Autoscaler
-    , Autoscaler
-    , autoscaler
-    , aaKind
-    , aaZone
-    , aaSelfLink
-    , aaName
-    , aaCreationTimestamp
-    , aaAutoscalingPolicy
-    , aaId
-    , aaRegion
-    , aaDescription
-    , aaTarget
-
-    -- * DisksScopedListWarning
-    , DisksScopedListWarning
-    , disksScopedListWarning
-    , dslwData
-    , dslwCode
-    , dslwMessage
-
-    -- * TargetVPNGatewayAggregatedListItems
-    , TargetVPNGatewayAggregatedListItems
-    , targetVPNGatewayAggregatedListItems
-    , tvgaliAddtional
-
-    -- * RouterStatusBGPPeerStatusStatus
-    , RouterStatusBGPPeerStatusStatus (..)
-
-    -- * TargetPoolsScopedListWarning
-    , TargetPoolsScopedListWarning
-    , targetPoolsScopedListWarning
-    , tpslwData
-    , tpslwCode
-    , tpslwMessage
-
-    -- * HealthStatus
-    , HealthStatus
-    , healthStatus
-    , hsIPAddress
-    , hsHealthState
-    , hsPort
-    , hsInstance
-
-    -- * Region
-    , Region
-    , region
-    , regeStatus
-    , regeZones
-    , regeKind
-    , regeSelfLink
-    , regeName
-    , regeCreationTimestamp
-    , regeQuotas
-    , regeId
-    , regeDescription
-    , regeDeprecated
-
-    -- * GuestOSFeature
-    , GuestOSFeature
-    , guestOSFeature
-    , gofType
-
-    -- * VPNTunnel
-    , VPNTunnel
-    , vpnTunnel
-    , vtDetailedStatus
-    , vtStatus
-    , vtLocalTrafficSelector
-    , vtKind
-    , vtPeerIP
-    , vtRouter
-    , vtTargetVPNGateway
-    , vtRemoteTrafficSelector
-    , vtSelfLink
-    , vtSharedSecret
-    , vtName
-    , vtCreationTimestamp
-    , vtSharedSecretHash
-    , vtId
-    , vtIkeVersion
-    , vtRegion
-    , vtDescription
-
-    -- * VPNTunnelsScopedListWarningCode
-    , VPNTunnelsScopedListWarningCode (..)
-
-    -- * OperationsScopedListWarning
-    , OperationsScopedListWarning
-    , operationsScopedListWarning
-    , oslwData
-    , oslwCode
-    , oslwMessage
-
-    -- * Scheduling
-    , Scheduling
-    , scheduling
-    , sAutomaticRestart
-    , sOnHostMaintenance
-    , sPreemptible
-
-    -- * VPNTunnelsScopedListWarningDataItem
-    , VPNTunnelsScopedListWarningDataItem
-    , vpnTunnelsScopedListWarningDataItem
-    , vtslwdiValue
-    , vtslwdiKey
-
-    -- * SubnetworkList
-    , SubnetworkList
-    , subnetworkList
-    , slNextPageToken
-    , slKind
-    , slItems
-    , slSelfLink
-    , slId
-
-    -- * ForwardingRulesScopedListWarning
-    , ForwardingRulesScopedListWarning
-    , forwardingRulesScopedListWarning
-    , frslwData
-    , frslwCode
-    , frslwMessage
-
-    -- * HTTPHealthCheckList
-    , HTTPHealthCheckList
-    , hTTPHealthCheckList
-    , httphclNextPageToken
-    , httphclKind
-    , httphclItems
-    , httphclSelfLink
-    , httphclId
-
-    -- * InstanceGroupManagersScopedListWarning
-    , InstanceGroupManagersScopedListWarning
-    , instanceGroupManagersScopedListWarning
-    , igmslwData
-    , igmslwCode
-    , igmslwMessage
-
-    -- * URLMapsValidateRequest
-    , URLMapsValidateRequest
-    , urlMapsValidateRequest
-    , umvrResource
-
-    -- * InstanceGroupManagersSetTargetPoolsRequest
-    , InstanceGroupManagersSetTargetPoolsRequest
-    , instanceGroupManagersSetTargetPoolsRequest
-    , igmstprFingerprint
-    , igmstprTargetPools
-
-    -- * HTTPSHealthCheckList
-    , HTTPSHealthCheckList
-    , httpsHealthCheckList
-    , hhclNextPageToken
-    , hhclKind
-    , hhclItems
-    , hhclSelfLink
-    , hhclId
-
-    -- * OperationErrorErrorsItem
-    , OperationErrorErrorsItem
-    , operationErrorErrorsItem
-    , oeeiLocation
-    , oeeiCode
-    , oeeiMessage
-
-    -- * License
-    , License
-    , license
-    , lChargesUseFee
-    , lKind
-    , lSelfLink
-    , lName
-
-    -- * PathRule
-    , PathRule
-    , pathRule
-    , prService
-    , prPaths
-
-    -- * InstanceList
-    , InstanceList
-    , instanceList
-    , insNextPageToken
-    , insKind
-    , insItems
-    , insSelfLink
-    , insId
-
-    -- * SubnetworkAggregatedListItems
-    , SubnetworkAggregatedListItems
-    , subnetworkAggregatedListItems
-    , saliAddtional
-
-    -- * ManagedInstanceLastAttempt
-    , ManagedInstanceLastAttempt
-    , managedInstanceLastAttempt
-    , milaErrors
-
-    -- * BackendServiceList
-    , BackendServiceList
-    , backendServiceList
-    , bslNextPageToken
-    , bslKind
-    , bslItems
-    , bslSelfLink
-    , bslId
-
-    -- * InstanceGroupsScopedListWarning
-    , InstanceGroupsScopedListWarning
-    , instanceGroupsScopedListWarning
-    , igslwData
-    , igslwCode
-    , igslwMessage
-
-    -- * AutoscalingPolicyCPUUtilization
-    , AutoscalingPolicyCPUUtilization
-    , autoscalingPolicyCPUUtilization
-    , apcuUtilizationTarget
-
-    -- * InstanceGroupsScopedListWarningCode
-    , InstanceGroupsScopedListWarningCode (..)
-
-    -- * InstanceGroupsScopedListWarningDataItem
-    , InstanceGroupsScopedListWarningDataItem
-    , instanceGroupsScopedListWarningDataItem
-    , igslwdiValue
-    , igslwdiKey
-
-    -- * ResourceGroupReference
-    , ResourceGroupReference
-    , resourceGroupReference
-    , rgrGroup
-
-    -- * Firewall
-    , Firewall
-    , firewall
-    , fSourceTags
-    , fKind
-    , fTargetTags
-    , fNetwork
-    , fSourceRanges
-    , fSelfLink
-    , fName
-    , fCreationTimestamp
-    , fId
-    , fAllowed
-    , fDescription
-
-    -- * HostRule
-    , HostRule
-    , hostRule
-    , hrHosts
-    , hrDescription
-    , hrPathMatcher
-
-    -- * Quota
-    , Quota
-    , quota
-    , qMetric
-    , qLimit
-    , qUsage
-
-    -- * InstanceGroup
-    , InstanceGroup
-    , instanceGroup
-    , iiSize
-    , iiKind
-    , iiFingerprint
-    , iiNetwork
-    , iiZone
-    , iiSelfLink
-    , iiName
-    , iiCreationTimestamp
-    , iiSubnetwork
-    , iiId
-    , iiRegion
-    , iiDescription
-    , iiNamedPorts
-
-    -- * RouterInterface
-    , RouterInterface
-    , routerInterface
-    , riName
-    , riIPRange
-    , riLinkedVPNTunnel
-
-    -- * InstanceWithNamedPortsStatus
-    , InstanceWithNamedPortsStatus (..)
-
-    -- * TCPHealthCheckProxyHeader
-    , TCPHealthCheckProxyHeader (..)
-
-    -- * SnapshotList
-    , SnapshotList
-    , snapshotList
-    , snaNextPageToken
-    , snaKind
-    , snaItems
-    , snaSelfLink
-    , snaId
-
-    -- * TestFailure
-    , TestFailure
-    , testFailure
-    , tfPath
-    , tfExpectedService
-    , tfHost
-    , tfActualService
-
-    -- * SerialPortOutput
-    , SerialPortOutput
-    , serialPortOutput
-    , spoNext
-    , spoContents
-    , spoKind
-    , spoStart
-    , spoSelfLink
-
-    -- * TargetVPNGatewayAggregatedList
-    , TargetVPNGatewayAggregatedList
-    , targetVPNGatewayAggregatedList
-    , tvgalNextPageToken
-    , tvgalKind
-    , tvgalItems
-    , tvgalSelfLink
-    , tvgalId
-
-    -- * MetadataItemsItem
-    , MetadataItemsItem
-    , metadataItemsItem
-    , miiValue
-    , miiKey
-
-    -- * TargetHTTPSProxy
-    , TargetHTTPSProxy
-    , targetHTTPSProxy
-    , thpURLMap
-    , thpSSLCertificates
-    , thpKind
-    , thpSelfLink
-    , thpName
-    , thpCreationTimestamp
-    , thpId
-    , thpDescription
-
-    -- * ConnectionDraining
-    , ConnectionDraining
-    , connectionDraining
-    , cdDrainingTimeoutSec
-
-    -- * CacheInvalidationRule
-    , CacheInvalidationRule
-    , cacheInvalidationRule
-    , cirPath
-    , cirHost
-
-    -- * TargetVPNGatewaysScopedList
-    , TargetVPNGatewaysScopedList
-    , targetVPNGatewaysScopedList
-    , tvgslTargetVPNGateways
-    , tvgslWarning
-
-    -- * AccessConfig
-    , AccessConfig
-    , accessConfig
-    , acKind
-    , acName
-    , acNATIP
-    , acType
-
-    -- * ManagedInstanceLastAttemptErrorsErrorsItem
-    , ManagedInstanceLastAttemptErrorsErrorsItem
-    , managedInstanceLastAttemptErrorsErrorsItem
-    , milaeeiLocation
-    , milaeeiCode
-    , milaeeiMessage
-
-    -- * InstancesScopedListWarningCode
-    , InstancesScopedListWarningCode (..)
-
-    -- * InstancesScopedListWarningDataItem
-    , InstancesScopedListWarningDataItem
-    , instancesScopedListWarningDataItem
-    , islwdiValue
-    , islwdiKey
-
-    -- * BackendServicesScopedListWarningDataItem
-    , BackendServicesScopedListWarningDataItem
-    , backendServicesScopedListWarningDataItem
-    , bsslwdiValue
-    , bsslwdiKey
-
-    -- * BackendService
-    , BackendService
-    , backendService
-    , bsSessionAffinity
-    , bsBackends
-    , bsAffinityCookieTtlSec
-    , bsLoadBalancingScheme
-    , bsKind
-    , bsEnableCDN
-    , bsFingerprint
-    , bsProtocol
-    , bsSelfLink
-    , bsName
-    , bsCreationTimestamp
-    , bsId
-    , bsRegion
-    , bsConnectionDraining
-    , bsTimeoutSec
-    , bsDescription
-    , bsPortName
-    , bsHealthChecks
-    , bsPort
-
-    -- * InstanceMoveRequest
-    , InstanceMoveRequest
-    , instanceMoveRequest
-    , imrTargetInstance
-    , imrDestinationZone
-
-    -- * BackendServicesScopedListWarningCode
-    , BackendServicesScopedListWarningCode (..)
-
-    -- * TargetPoolSessionAffinity
-    , TargetPoolSessionAffinity (..)
-
-    -- * InstanceGroupsScopedList
-    , InstanceGroupsScopedList
-    , instanceGroupsScopedList
-    , igslWarning
-    , igslInstanceGroups
-
-    -- * InstancesStartWithEncryptionKeyRequest
-    , InstancesStartWithEncryptionKeyRequest
-    , instancesStartWithEncryptionKeyRequest
-    , iswekrDisks
-
-    -- * HTTPSHealthCheck
-    , HTTPSHealthCheck
-    , httpsHealthCheck
-    , hhcRequestPath
-    , hhcHost
-    , hhcProxyHeader
-    , hhcPortName
-    , hhcPort
-
-    -- * ImageRawDiskContainerType
-    , ImageRawDiskContainerType (..)
-
-    -- * VPNTunnelAggregatedListItems
-    , VPNTunnelAggregatedListItems
-    , vpnTunnelAggregatedListItems
-    , vtaliAddtional
-
-    -- * Tags
-    , Tags
-    , tags
-    , tFingerprint
-    , tItems
-
-    -- * AddressAggregatedList
-    , AddressAggregatedList
-    , addressAggregatedList
-    , addNextPageToken
-    , addKind
-    , addItems
-    , addSelfLink
-    , addId
-
-    -- * OperationWarningsItem
-    , OperationWarningsItem
-    , operationWarningsItem
-    , owiData
-    , owiCode
-    , owiMessage
-
-    -- * URLMapTest
-    , URLMapTest
-    , urlMapTest
-    , umtPath
-    , umtService
-    , umtHost
-    , umtDescription
-
-    -- * RoutersPreviewResponse
-    , RoutersPreviewResponse
-    , routersPreviewResponse
-    , rprResource
-
-    -- * Instance
-    , Instance
-    , instance'
-    , insnStatus
-    , insnServiceAccounts
-    , insnNetworkInterfaces
-    , insnKind
-    , insnZone
-    , insnCPUPlatform
-    , insnSelfLink
-    , insnName
-    , insnStatusMessage
-    , insnCreationTimestamp
-    , insnMachineType
-    , insnMetadata
-    , insnId
-    , insnScheduling
-    , insnDisks
-    , insnCanIPForward
-    , insnDescription
-    , insnTags
-
-    -- * PathMatcher
-    , PathMatcher
-    , pathMatcher
-    , pmDefaultService
-    , pmName
-    , pmPathRules
-    , pmDescription
+    -- * HTTPSHealthCheckListWarningCode
+    , HTTPSHealthCheckListWarningCode (..)
+
+    -- * InstanceAggregatedListWarning
+    , InstanceAggregatedListWarning
+    , instanceAggregatedListWarning
+    , ialwData
+    , ialwCode
+    , ialwMessage
+
+    -- * TargetHTTPSProxyList
+    , TargetHTTPSProxyList
+    , targetHTTPSProxyList
+    , thplNextPageToken
+    , thplKind
+    , thplItems
+    , thplSelfLink
+    , thplWarning
+    , thplId
+
+    -- * RoutersScopedList
+    , RoutersScopedList
+    , routersScopedList
+    , rslRouters
+    , rslWarning
+
+    -- * RouterStatusResponse
+    , RouterStatusResponse
+    , routerStatusResponse
+    , rsrKind
+    , rsrResult
+
+    -- * RegionInstanceGroupManagersDeleteInstancesRequest
+    , RegionInstanceGroupManagersDeleteInstancesRequest
+    , regionInstanceGroupManagersDeleteInstancesRequest
+    , rigmdirInstances
+
+    -- * InterconnectDiagnosticsLinkLACPStatus
+    , InterconnectDiagnosticsLinkLACPStatus
+    , interconnectDiagnosticsLinkLACPStatus
+    , idllacpsState
+    , idllacpsNeighborSystemId
+    , idllacpsGoogleSystemId
+
+    -- * InterconnectAttachmentState
+    , InterconnectAttachmentState (..)
+
+    -- * AddressesScopedList
+    , AddressesScopedList
+    , addressesScopedList
+    , aslAddresses
+    , aslWarning
+
+    -- * OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- * SchedulingOnHostMaintenance
+    , SchedulingOnHostMaintenance (..)
+
+    -- * RegionInstanceGroupsListInstancesRequest
+    , RegionInstanceGroupsListInstancesRequest
+    , regionInstanceGroupsListInstancesRequest
+    , riglirInstanceState
+    , riglirPortName
+
+    -- * BackendServiceAggregatedListWarning
+    , BackendServiceAggregatedListWarning
+    , backendServiceAggregatedListWarning
+    , bsalwData
+    , bsalwCode
+    , bsalwMessage
+
+    -- * SSLPolicy
+    , SSLPolicy
+    , sslPolicy
+    , spKind
+    , spFingerprint
+    , spProFile
+    , spWarnings
+    , spCustomFeatures
+    , spSelfLink
+    , spName
+    , spCreationTimestamp
+    , spEnabledFeatures
+    , spId
+    , spMinTLSVersion
+    , spDescription
+
+    -- * AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
+
+    -- * BackendServiceListWarningDataItem
+    , BackendServiceListWarningDataItem
+    , backendServiceListWarningDataItem
+    , bslwdiValue
+    , bslwdiKey
+
+    -- * FirewallDeniedItem
+    , FirewallDeniedItem
+    , firewallDeniedItem
+    , fdiIPProtocol
+    , fdiPorts
+
+    -- * InstanceGroupManagersAbandonInstancesRequest
+    , InstanceGroupManagersAbandonInstancesRequest
+    , instanceGroupManagersAbandonInstancesRequest
+    , igmairInstances
+
+    -- * MachineTypeAggregatedListItems
+    , MachineTypeAggregatedListItems
+    , machineTypeAggregatedListItems
+    , mtaliAddtional
+
+    -- * BackendServiceListWarningCode
+    , BackendServiceListWarningCode (..)
+
+    -- * DiskTypeAggregatedListItems
+    , DiskTypeAggregatedListItems
+    , diskTypeAggregatedListItems
+    , dtaliAddtional
+
+    -- * InstancesSetLabelsRequest
+    , InstancesSetLabelsRequest
+    , instancesSetLabelsRequest
+    , islrLabels
+    , islrLabelFingerprint
+
+    -- * RouterAggregatedList
+    , RouterAggregatedList
+    , routerAggregatedList
+    , ralNextPageToken
+    , ralKind
+    , ralItems
+    , ralSelfLink
+    , ralWarning
+    , ralId
+
+    -- * FirewallList
+    , FirewallList
+    , firewallList
+    , flNextPageToken
+    , flKind
+    , flItems
+    , flSelfLink
+    , flWarning
+    , flId
+
+    -- * InstancesScopedListWarning
+    , InstancesScopedListWarning
+    , instancesScopedListWarning
+    , islwData
+    , islwCode
+    , islwMessage
+
+    -- * RegionInstanceGroupManagersRecreateRequest
+    , RegionInstanceGroupManagersRecreateRequest
+    , regionInstanceGroupManagersRecreateRequest
+    , rigmrrInstances
+
+    -- * InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- * InstanceListWarningCode
+    , InstanceListWarningCode (..)
+
+    -- * TargetHTTPSProxyQuicOverride
+    , TargetHTTPSProxyQuicOverride (..)
+
+    -- * BackendServicesScopedListWarning
+    , BackendServicesScopedListWarning
+    , backendServicesScopedListWarning
+    , bsslwData
+    , bsslwCode
+    , bsslwMessage
+
+    -- * SecurityPolicyRuleMatcher
+    , SecurityPolicyRuleMatcher
+    , securityPolicyRuleMatcher
+    , sprmVersionedExpr
+    , sprmConfig
+
+    -- * InstanceGroupList
+    , InstanceGroupList
+    , instanceGroupList
+    , iglNextPageToken
+    , iglKind
+    , iglItems
+    , iglSelfLink
+    , iglWarning
+    , iglId
+
+    -- * InstancesSetMachineTypeRequest
+    , InstancesSetMachineTypeRequest
+    , instancesSetMachineTypeRequest
+    , ismtrMachineType
+
+    -- * VMEndpointNATMAppings
+    , VMEndpointNATMAppings
+    , vMEndpointNATMAppings
+    , vmenatmaInstanceName
+    , vmenatmaInterfaceNATMAppings
+
+    -- * CustomerEncryptionKey
+    , CustomerEncryptionKey
+    , customerEncryptionKey
+    , cekKmsKeyName
+    , cekSha256
+    , cekRawKey
+
+    -- * AutoscalerAggregatedListItems
+    , AutoscalerAggregatedListItems
+    , autoscalerAggregatedListItems
+    , aaliAddtional
+
+    -- * InstanceListWarningDataItem
+    , InstanceListWarningDataItem
+    , instanceListWarningDataItem
+    , ilwdiValue
+    , ilwdiKey
+
+    -- * InstanceGroupManagersSetInstanceTemplateRequest
+    , InstanceGroupManagersSetInstanceTemplateRequest
+    , instanceGroupManagersSetInstanceTemplateRequest
+    , igmsitrInstanceTemplate
+
+    -- * RouterNATNATIPAllocateOption
+    , RouterNATNATIPAllocateOption (..)
+
+    -- * DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- * HTTPSHealthCheckListWarningDataItem
+    , HTTPSHealthCheckListWarningDataItem
+    , httpsHealthCheckListWarningDataItem
+    , hhclwdiValue
+    , hhclwdiKey
+
+    -- * OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- * Snapshot
+    , Snapshot
+    , snapshot
+    , sStorageBytesStatus
+    , sStatus
+    , sDiskSizeGb
+    , sSourceDiskId
+    , sKind
+    , sSourceDiskEncryptionKey
+    , sStorageBytes
+    , sSelfLink
+    , sSnapshotEncryptionKey
+    , sName
+    , sCreationTimestamp
+    , sLicenseCodes
+    , sId
+    , sLabels
+    , sLicenses
+    , sSourceDisk
+    , sLabelFingerprint
+    , sDescription
+
+    -- * RouterStatus
+    , RouterStatus
+    , routerStatus
+    , rsBestRoutesForRouter
+    , rsBGPPeerStatus
+    , rsNetwork
+    , rsNATStatus
+    , rsBestRoutes
+
+    -- * AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- * NodeGroupAggregatedListWarningCode
+    , NodeGroupAggregatedListWarningCode (..)
+
+    -- * ForwardingRuleList
+    , ForwardingRuleList
+    , forwardingRuleList
+    , frlNextPageToken
+    , frlKind
+    , frlItems
+    , frlSelfLink
+    , frlWarning
+    , frlId
+
+    -- * NodeGroup
+    , NodeGroup
+    , nodeGroup
+    , ngStatus
+    , ngSize
+    , ngKind
+    , ngZone
+    , ngSelfLink
+    , ngName
+    , ngCreationTimestamp
+    , ngId
+    , ngNodeTemplate
+    , ngDescription
+
+    -- * VPNTunnelsScopedList
+    , VPNTunnelsScopedList
+    , vpnTunnelsScopedList
+    , vtslVPNTunnels
+    , vtslWarning
+
+    -- * SubnetworkSecondaryRange
+    , SubnetworkSecondaryRange
+    , subnetworkSecondaryRange
+    , ssrRangeName
+    , ssrIPCIdRRange
+
+    -- * NodeTypesScopedList
+    , NodeTypesScopedList
+    , nodeTypesScopedList
+    , ntslNodeTypes
+    , ntslWarning
+
+    -- * BackendServiceProtocol
+    , BackendServiceProtocol (..)
+
+    -- * RegionInstanceGroupsListInstancesWarning
+    , RegionInstanceGroupsListInstancesWarning
+    , regionInstanceGroupsListInstancesWarning
+    , rigliwData
+    , rigliwCode
+    , rigliwMessage
+
+    -- * AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+    , acExemptedMembers
+
+    -- * BackendBucketListWarningCode
+    , BackendBucketListWarningCode (..)
+
+    -- * AcceleratorTypeAggregatedListWarningDataItem
+    , AcceleratorTypeAggregatedListWarningDataItem
+    , acceleratorTypeAggregatedListWarningDataItem
+    , atalwdiValue
+    , atalwdiKey
+
+    -- * InstanceGroupsSetNamedPortsRequest
+    , InstanceGroupsSetNamedPortsRequest
+    , instanceGroupsSetNamedPortsRequest
+    , igsnprFingerprint
+    , igsnprNamedPorts
+
+    -- * AcceleratorTypesScopedListWarningCode
+    , AcceleratorTypesScopedListWarningCode (..)
+
+    -- * NodeTemplateNodeAffinityLabels
+    , NodeTemplateNodeAffinityLabels
+    , nodeTemplateNodeAffinityLabels
+    , ntnalAddtional
+
+    -- * OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olWarning
+    , olId
+
+    -- * NodeGroupListWarning
+    , NodeGroupListWarning
+    , nodeGroupListWarning
+    , nglwData
+    , nglwCode
+    , nglwMessage
+
+    -- * DiskList
+    , DiskList
+    , diskList
+    , dlNextPageToken
+    , dlKind
+    , dlItems
+    , dlSelfLink
+    , dlWarning
+    , dlId
+
+    -- * NodeGroupsScopedListWarningCode
+    , NodeGroupsScopedListWarningCode (..)
+
+    -- * TargetPoolsAddInstanceRequest
+    , TargetPoolsAddInstanceRequest
+    , targetPoolsAddInstanceRequest
+    , tpairInstances
+
+    -- * NodeGroupsDeleteNodesRequest
+    , NodeGroupsDeleteNodesRequest
+    , nodeGroupsDeleteNodesRequest
+    , ngdnrNodes
+
+    -- * RegionAutoscalerList
+    , RegionAutoscalerList
+    , regionAutoscalerList
+    , rNextPageToken
+    , rKind
+    , rItems
+    , rSelfLink
+    , rWarning
+    , rId
+
+    -- * HealthCheckListWarningDataItem
+    , HealthCheckListWarningDataItem
+    , healthCheckListWarningDataItem
+    , hclwdiValue
+    , hclwdiKey
+
+    -- * NodeGroupAggregatedListWarningDataItem
+    , NodeGroupAggregatedListWarningDataItem
+    , nodeGroupAggregatedListWarningDataItem
+    , ngalwdiValue
+    , ngalwdiKey
+
+    -- * InstanceGroupsAddInstancesRequest
+    , InstanceGroupsAddInstancesRequest
+    , instanceGroupsAddInstancesRequest
+    , igairInstances
+
+    -- * NodeGroupNode
+    , NodeGroupNode
+    , nodeGroupNode
+    , ngnStatus
+    , ngnName
+    , ngnInstances
+    , ngnNodeType
+
+    -- * TargetTCPProxiesSetProxyHeaderRequestProxyHeader
+    , TargetTCPProxiesSetProxyHeaderRequestProxyHeader (..)
+
+    -- * InstanceGroupManagerList
+    , InstanceGroupManagerList
+    , instanceGroupManagerList
+    , igmlNextPageToken
+    , igmlKind
+    , igmlItems
+    , igmlSelfLink
+    , igmlWarning
+    , igmlId
+
+    -- * SubnetworksScopedListWarning
+    , SubnetworksScopedListWarning
+    , subnetworksScopedListWarning
+    , sslwData
+    , sslwCode
+    , sslwMessage
+
+    -- * NodeGroupsSetNodeTemplateRequest
+    , NodeGroupsSetNodeTemplateRequest
+    , nodeGroupsSetNodeTemplateRequest
+    , ngsntrNodeTemplate
+
+    -- * AcceleratorTypeListWarning
+    , AcceleratorTypeListWarning
+    , acceleratorTypeListWarning
+    , atlwData
+    , atlwCode
+    , atlwMessage
+
+    -- * AttachedDiskType
+    , AttachedDiskType (..)
+
+    -- * Image
+    , Image
+    , image
+    , iStatus
+    , iSourceSnapshotId
+    , iImageEncryptionKey
+    , iSourceImage
+    , iDiskSizeGb
+    , iSourceType
+    , iSourceDiskId
+    , iKind
+    , iSourceDiskEncryptionKey
+    , iGuestOSFeatures
+    , iArchiveSizeBytes
+    , iFamily
+    , iRawDisk
+    , iSelfLink
+    , iName
+    , iSourceImageId
+    , iCreationTimestamp
+    , iSourceImageEncryptionKey
+    , iLicenseCodes
+    , iId
+    , iLabels
+    , iLicenses
+    , iSourceDisk
+    , iLabelFingerprint
+    , iDescription
+    , iSourceSnapshotEncryptionKey
+    , iDeprecated
+    , iSourceSnapshot
+
+    -- * RouterBGPPeerManagementType
+    , RouterBGPPeerManagementType (..)
+
+    -- * RouterNATSubnetworkToNATSourceIPRangesToNATItem
+    , RouterNATSubnetworkToNATSourceIPRangesToNATItem (..)
+
+    -- * AcceleratorTypeAggregatedListWarningCode
+    , AcceleratorTypeAggregatedListWarningCode (..)
+
+    -- * NetworksAddPeeringRequest
+    , NetworksAddPeeringRequest
+    , networksAddPeeringRequest
+    , naprPeerNetwork
+    , naprName
+    , naprAutoCreateRoutes
+
+    -- * NodeTemplatesScopedList
+    , NodeTemplatesScopedList
+    , nodeTemplatesScopedList
+    , nNodeTemplates
+    , nWarning
+
+    -- * URLMapListWarning
+    , URLMapListWarning
+    , urlMapListWarning
+    , umlwData
+    , umlwCode
+    , umlwMessage
+
+    -- * NodeGroupsScopedListWarningDataItem
+    , NodeGroupsScopedListWarningDataItem
+    , nodeGroupsScopedListWarningDataItem
+    , ngslwdiValue
+    , ngslwdiKey
+
+    -- * URLMap
+    , URLMap
+    , urlMap
+    , umTests
+    , umKind
+    , umFingerprint
+    , umDefaultService
+    , umSelfLink
+    , umName
+    , umCreationTimestamp
+    , umPathMatchers
+    , umId
+    , umHostRules
+    , umDescription
+
+    -- * ImageListWarning
+    , ImageListWarning
+    , imageListWarning
+    , ilwData
+    , ilwCode
+    , ilwMessage
+
+    -- * HealthCheckListWarningCode
+    , HealthCheckListWarningCode (..)
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- * SSLPolicyReference
+    , SSLPolicyReference
+    , sslPolicyReference
+    , sprSSLPolicy
+
+    -- * InstanceGroupAggregatedListItems
+    , InstanceGroupAggregatedListItems
+    , instanceGroupAggregatedListItems
+    , igaliAddtional
+
+    -- * TargetPoolList
+    , TargetPoolList
+    , targetPoolList
+    , tplNextPageToken
+    , tplKind
+    , tplItems
+    , tplSelfLink
+    , tplWarning
+    , tplId
+
+    -- * SSLPolicyProFile
+    , SSLPolicyProFile (..)
+
+    -- * AcceleratorType
+    , AcceleratorType
+    , acceleratorType
+    , atKind
+    , atZone
+    , atMaximumCardsPerInstance
+    , atSelfLink
+    , atName
+    , atCreationTimestamp
+    , atId
+    , atDescription
+    , atDeprecated
+
+    -- * BackendBucketListWarningDataItem
+    , BackendBucketListWarningDataItem
+    , backendBucketListWarningDataItem
+    , bblwdiValue
+    , bblwdiKey
+
+    -- * AcceleratorTypesScopedListWarningDataItem
+    , AcceleratorTypesScopedListWarningDataItem
+    , acceleratorTypesScopedListWarningDataItem
+    , atslwdiValue
+    , atslwdiKey
+
+    -- * InterconnectOutageNotificationSource
+    , InterconnectOutageNotificationSource (..)
+
+    -- * RegionDiskTypeList
+    , RegionDiskTypeList
+    , regionDiskTypeList
+    , rdtlNextPageToken
+    , rdtlKind
+    , rdtlItems
+    , rdtlSelfLink
+    , rdtlWarning
+    , rdtlId
+
+    -- * TargetInstanceAggregatedList
+    , TargetInstanceAggregatedList
+    , targetInstanceAggregatedList
+    , tialNextPageToken
+    , tialKind
+    , tialItems
+    , tialSelfLink
+    , tialWarning
+    , tialId
+
+    -- * NodeGroupsListNodesWarningDataItem
+    , NodeGroupsListNodesWarningDataItem
+    , nodeGroupsListNodesWarningDataItem
+    , nglnwdiValue
+    , nglnwdiKey
+
+    -- * UsableSubnetworksAggregatedList
+    , UsableSubnetworksAggregatedList
+    , usableSubnetworksAggregatedList
+    , usalNextPageToken
+    , usalKind
+    , usalItems
+    , usalSelfLink
+    , usalWarning
+    , usalId
+
+    -- * InterconnectLinkType
+    , InterconnectLinkType (..)
+
+    -- * DisksScopedList
+    , DisksScopedList
+    , disksScopedList
+    , dslWarning
+    , dslDisks
+
+    -- * InterconnectLocationListWarningDataItem
+    , InterconnectLocationListWarningDataItem
+    , interconnectLocationListWarningDataItem
+    , illwdiValue
+    , illwdiKey
+
+    -- * InstanceGroupManagersScopedList
+    , InstanceGroupManagersScopedList
+    , instanceGroupManagersScopedList
+    , igmslWarning
+    , igmslInstanceGroupManagers
+
+    -- * SubnetworkListWarning
+    , SubnetworkListWarning
+    , subnetworkListWarning
+    , slwData
+    , slwCode
+    , slwMessage
+
+    -- * HealthCheck
+    , HealthCheck
+    , healthCheck
+    , hcHealthyThreshold
+    , hcTCPHealthCheck
+    , hcKind
+    , hcSSLHealthCheck
+    , hcSelfLink
+    , hcCheckIntervalSec
+    , hcName
+    , hcCreationTimestamp
+    , hcHTTPHealthCheck
+    , hcId
+    , hcType
+    , hcTimeoutSec
+    , hcDescription
+    , hcUnhealthyThreshold
+    , hcHTTPSHealthCheck
+
+    -- * TargetSSLProxyProxyHeader
+    , TargetSSLProxyProxyHeader (..)
+
+    -- * HTTPHealthCheckListWarning
+    , HTTPHealthCheckListWarning
+    , hTTPHealthCheckListWarning
+    , httphclwData
+    , httphclwCode
+    , httphclwMessage
+
+    -- * SSLPoliciesListWarning
+    , SSLPoliciesListWarning
+    , sslPoliciesListWarning
+    , splwData
+    , splwCode
+    , splwMessage
+
+    -- * CommitmentAggregatedListItems
+    , CommitmentAggregatedListItems
+    , commitmentAggregatedListItems
+    , caliAddtional
+
+    -- * DiskAggregatedList
+    , DiskAggregatedList
+    , diskAggregatedList
+    , dalNextPageToken
+    , dalKind
+    , dalItems
+    , dalSelfLink
+    , dalWarning
+    , dalId
+
+    -- * InstanceGroupsListInstancesWarningDataItem
+    , InstanceGroupsListInstancesWarningDataItem
+    , instanceGroupsListInstancesWarningDataItem
+    , igliwdiValue
+    , igliwdiKey
+
+    -- * InstanceWithNamedPorts
+    , InstanceWithNamedPorts
+    , instanceWithNamedPorts
+    , iwnpStatus
+    , iwnpNamedPorts
+    , iwnpInstance
+
+    -- * InterconnectListWarning
+    , InterconnectListWarning
+    , interconnectListWarning
+    , iData
+    , iCode
+    , iMessage
+
+    -- * ForwardingRulesScopedList
+    , ForwardingRulesScopedList
+    , forwardingRulesScopedList
+    , frslWarning
+    , frslForwardingRules
+
+    -- * RouterBGPAdvertiseMode
+    , RouterBGPAdvertiseMode (..)
+
+    -- * NodeGroupsListNodesWarningCode
+    , NodeGroupsListNodesWarningCode (..)
+
+    -- * InstanceReference
+    , InstanceReference
+    , instanceReference
+    , iInstance
+
+    -- * InterconnectDiagnosticsLinkOpticalPowerState
+    , InterconnectDiagnosticsLinkOpticalPowerState (..)
+
+    -- * OperationAggregatedList
+    , OperationAggregatedList
+    , operationAggregatedList
+    , oalNextPageToken
+    , oalKind
+    , oalItems
+    , oalSelfLink
+    , oalWarning
+    , oalId
+
+    -- * OperationsScopedList
+    , OperationsScopedList
+    , operationsScopedList
+    , oslWarning
+    , oslOperations
+
+    -- * NamedPort
+    , NamedPort
+    , namedPort
+    , npName
+    , npPort
+
+    -- * InterconnectLocationListWarningCode
+    , InterconnectLocationListWarningCode (..)
+
+    -- * InstanceGroupsListInstancesWarningCode
+    , InstanceGroupsListInstancesWarningCode (..)
+
+    -- * RegionInstanceGroupsListInstancesRequestInstanceState
+    , RegionInstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- * SubnetworkAggregatedListWarningDataItem
+    , SubnetworkAggregatedListWarningDataItem
+    , subnetworkAggregatedListWarningDataItem
+    , salwdiValue
+    , salwdiKey
+
+    -- * ProjectXpnProjectStatus
+    , ProjectXpnProjectStatus (..)
+
+    -- * InterconnectDiagnosticsLinkStatus
+    , InterconnectDiagnosticsLinkStatus
+    , interconnectDiagnosticsLinkStatus
+    , idlsLacpStatus
+    , idlsReceivingOpticalPower
+    , idlsGoogleDemarc
+    , idlsCircuitId
+    , idlsArpCaches
+    , idlsTransmittingOpticalPower
+
+    -- * TargetInstanceList
+    , TargetInstanceList
+    , targetInstanceList
+    , tilNextPageToken
+    , tilKind
+    , tilItems
+    , tilSelfLink
+    , tilWarning
+    , tilId
+
+    -- * TargetTCPProxyListWarning
+    , TargetTCPProxyListWarning
+    , targetTCPProxyListWarning
+    , ttplwData
+    , ttplwCode
+    , ttplwMessage
+
+    -- * InstanceGroupManagerAggregatedList
+    , InstanceGroupManagerAggregatedList
+    , instanceGroupManagerAggregatedList
+    , igmalNextPageToken
+    , igmalKind
+    , igmalItems
+    , igmalSelfLink
+    , igmalWarning
+    , igmalId
+
+    -- * BackendBucket
+    , BackendBucket
+    , backendBucket
+    , bbKind
+    , bbEnableCdn
+    , bbBucketName
+    , bbCdnPolicy
+    , bbSelfLink
+    , bbName
+    , bbCreationTimestamp
+    , bbId
+    , bbDescription
+
+    -- * AccessConfigNetworkTier
+    , AccessConfigNetworkTier (..)
+
+    -- * ProjectsEnableXpnResourceRequest
+    , ProjectsEnableXpnResourceRequest
+    , projectsEnableXpnResourceRequest
+    , pexrrXpnResource
+
+    -- * ConditionSys
+    , ConditionSys (..)
+
+    -- * ImageSourceType
+    , ImageSourceType (..)
+
+    -- * TargetPoolsScopedList
+    , TargetPoolsScopedList
+    , targetPoolsScopedList
+    , tpslWarning
+    , tpslTargetPools
+
+    -- * InterconnectAttachmentAggregatedListItems
+    , InterconnectAttachmentAggregatedListItems
+    , interconnectAttachmentAggregatedListItems
+    , iaaliAddtional
+
+    -- * LogConfigCounterOptions
+    , LogConfigCounterOptions
+    , logConfigCounterOptions
+    , lccoField
+    , lccoMetric
+
+    -- * SubnetworkAggregatedListWarningCode
+    , SubnetworkAggregatedListWarningCode (..)
+
+    -- * InstancesSetMinCPUPlatformRequest
+    , InstancesSetMinCPUPlatformRequest
+    , instancesSetMinCPUPlatformRequest
+    , ismcprMinCPUPlatform
+
+    -- * ForwardingRuleAggregatedList
+    , ForwardingRuleAggregatedList
+    , forwardingRuleAggregatedList
+    , fralNextPageToken
+    , fralKind
+    , fralItems
+    , fralSelfLink
+    , fralWarning
+    , fralId
+
+    -- * TargetReference
+    , TargetReference
+    , targetReference
+    , trTarget
+
+    -- * TargetPoolAggregatedList
+    , TargetPoolAggregatedList
+    , targetPoolAggregatedList
+    , tpalNextPageToken
+    , tpalKind
+    , tpalItems
+    , tpalSelfLink
+    , tpalWarning
+    , tpalId
+
+    -- * OperationsScopedListWarningDataItem
+    , OperationsScopedListWarningDataItem
+    , operationsScopedListWarningDataItem
+    , oslwdiValue
+    , oslwdiKey
+
+    -- * BackendServiceSessionAffinity
+    , BackendServiceSessionAffinity (..)
+
+    -- * GlobalSetLabelsRequest
+    , GlobalSetLabelsRequest
+    , globalSetLabelsRequest
+    , gslrLabels
+    , gslrLabelFingerprint
+
+    -- * TargetPool
+    , TargetPool
+    , targetPool
+    , tpSessionAffinity
+    , tpBackupPool
+    , tpKind
+    , tpSelfLink
+    , tpName
+    , tpCreationTimestamp
+    , tpInstances
+    , tpId
+    , tpFailoverRatio
+    , tpRegion
+    , tpDescription
+    , tpHealthChecks
+
+    -- * ImageList
+    , ImageList
+    , imageList
+    , ilNextPageToken
+    , ilKind
+    , ilItems
+    , ilSelfLink
+    , ilWarning
+    , ilId
+
+    -- * OperationAggregatedListWarningDataItem
+    , OperationAggregatedListWarningDataItem
+    , operationAggregatedListWarningDataItem
+    , oalwdiValue
+    , oalwdiKey
+
+    -- * ForwardingRuleListWarning
+    , ForwardingRuleListWarning
+    , forwardingRuleListWarning
+    , frlwData
+    , frlwCode
+    , frlwMessage
+
+    -- * VPNTunnelsScopedListWarning
+    , VPNTunnelsScopedListWarning
+    , vpnTunnelsScopedListWarning
+    , vtslwData
+    , vtslwCode
+    , vtslwMessage
+
+    -- * RegionDisksResizeRequest
+    , RegionDisksResizeRequest
+    , regionDisksResizeRequest
+    , rdrrSizeGb
+
+    -- * NodeTypesScopedListWarning
+    , NodeTypesScopedListWarning
+    , nodeTypesScopedListWarning
+    , ntslwData
+    , ntslwCode
+    , ntslwMessage
+
+    -- * NodeTemplateNodeTypeFlexibility
+    , NodeTemplateNodeTypeFlexibility
+    , nodeTemplateNodeTypeFlexibility
+    , ntntfMemory
+    , ntntfCPUs
+    , ntntfLocalSsd
+
+    -- * ForwardingRulesScopedListWarningCode
+    , ForwardingRulesScopedListWarningCode (..)
+
+    -- * LicenseResourceRequirements
+    , LicenseResourceRequirements
+    , licenseResourceRequirements
+    , lrrMinMemoryMb
+    , lrrMinGuestCPUCount
+
+    -- * RegionDiskTypeListWarning
+    , RegionDiskTypeListWarning
+    , regionDiskTypeListWarning
+    , rdtlwData
+    , rdtlwCode
+    , rdtlwMessage
+
+    -- * OperationsScopedListWarningCode
+    , OperationsScopedListWarningCode (..)
+
+    -- * OperationAggregatedListWarningCode
+    , OperationAggregatedListWarningCode (..)
+
+    -- * TargetSSLProxiesSetBackendServiceRequest
+    , TargetSSLProxiesSetBackendServiceRequest
+    , targetSSLProxiesSetBackendServiceRequest
+    , tspsbsrService
+
+    -- * ForwardingRule
+    , ForwardingRule
+    , forwardingRule
+    , frNetworkTier
+    , frIPAddress
+    , frLoadBalancingScheme
+    , frKind
+    , frIPVersion
+    , frNetwork
+    , frPortRange
+    , frSelfLink
+    , frName
+    , frIPProtocol
+    , frCreationTimestamp
+    , frSubnetwork
+    , frPorts
+    , frId
+    , frRegion
+    , frDescription
+    , frTarget
+    , frBackendService
+
+    -- * URLMapList
+    , URLMapList
+    , urlMapList
+    , umlNextPageToken
+    , umlKind
+    , umlItems
+    , umlSelfLink
+    , umlWarning
+    , umlId
+
+    -- * ForwardingRulesScopedListWarningDataItem
+    , ForwardingRulesScopedListWarningDataItem
+    , forwardingRulesScopedListWarningDataItem
+    , frslwdiValue
+    , frslwdiKey
+
+    -- * TargetInstanceAggregatedListWarning
+    , TargetInstanceAggregatedListWarning
+    , targetInstanceAggregatedListWarning
+    , tialwData
+    , tialwCode
+    , tialwMessage
+
+    -- * InstanceGroupManagersScopedListWarningDataItem
+    , InstanceGroupManagersScopedListWarningDataItem
+    , instanceGroupManagersScopedListWarningDataItem
+    , igmslwdiValue
+    , igmslwdiKey
+
+    -- * SubnetworksScopedList
+    , SubnetworksScopedList
+    , subnetworksScopedList
+    , sslSubnetworks
+    , sslWarning
+
+    -- * DiskAggregatedListWarningCode
+    , DiskAggregatedListWarningCode (..)
+
+    -- * AcceleratorTypeList
+    , AcceleratorTypeList
+    , acceleratorTypeList
+    , atlNextPageToken
+    , atlKind
+    , atlItems
+    , atlSelfLink
+    , atlWarning
+    , atlId
+
+    -- * DiskAggregatedListWarningDataItem
+    , DiskAggregatedListWarningDataItem
+    , diskAggregatedListWarningDataItem
+    , dalwdiValue
+    , dalwdiKey
+
+    -- * TargetPoolListWarning
+    , TargetPoolListWarning
+    , targetPoolListWarning
+    , tplwData
+    , tplwCode
+    , tplwMessage
+
+    -- * UsableSubnetworksAggregatedListWarningCode
+    , UsableSubnetworksAggregatedListWarningCode (..)
+
+    -- * NodeTemplatesScopedListWarning
+    , NodeTemplatesScopedListWarning
+    , nodeTemplatesScopedListWarning
+    , nData
+    , nCode
+    , nMessage
+
+    -- * TargetPoolAggregatedListWarningDataItem
+    , TargetPoolAggregatedListWarningDataItem
+    , targetPoolAggregatedListWarningDataItem
+    , tpalwdiValue
+    , tpalwdiKey
+
+    -- * DisksScopedListWarningCode
+    , DisksScopedListWarningCode (..)
+
+    -- * Project
+    , Project
+    , project
+    , pXpnProjectStatus
+    , pKind
+    , pUsageExportLocation
+    , pSelfLink
+    , pName
+    , pDefaultServiceAccount
+    , pDefaultNetworkTier
+    , pCreationTimestamp
+    , pEnabledFeatures
+    , pQuotas
+    , pId
+    , pDescription
+    , pCommonInstanceMetadata
+
+    -- * RegionInstanceGroupManagersListInstancesResponse
+    , RegionInstanceGroupManagersListInstancesResponse
+    , regionInstanceGroupManagersListInstancesResponse
+    , rigmlirManagedInstances
+
+    -- * Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oDescription
+    , oTargetLink
+    , oClientOperationId
+
+    -- * DisksScopedListWarningDataItem
+    , DisksScopedListWarningDataItem
+    , disksScopedListWarningDataItem
+    , dslwdiValue
+    , dslwdiKey
+
+    -- * InstanceGroupManagersScopedListWarningCode
+    , InstanceGroupManagersScopedListWarningCode (..)
+
+    -- * Disk
+    , Disk
+    , disk
+    , dStatus
+    , dSourceSnapshotId
+    , dLastAttachTimestamp
+    , dUsers
+    , dSourceImage
+    , dReplicaZones
+    , dDiskEncryptionKey
+    , dSizeGb
+    , dKind
+    , dLastDetachTimestamp
+    , dGuestOSFeatures
+    , dZone
+    , dSelfLink
+    , dName
+    , dSourceImageId
+    , dCreationTimestamp
+    , dSourceImageEncryptionKey
+    , dLicenseCodes
+    , dId
+    , dLabels
+    , dLicenses
+    , dRegion
+    , dOptions
+    , dPhysicalBlockSizeBytes
+    , dType
+    , dLabelFingerprint
+    , dDescription
+    , dSourceSnapshotEncryptionKey
+    , dSourceSnapshot
+
+    -- * UsableSubnetworksAggregatedListWarningDataItem
+    , UsableSubnetworksAggregatedListWarningDataItem
+    , usableSubnetworksAggregatedListWarningDataItem
+    , usalwdiValue
+    , usalwdiKey
+
+    -- * NodeGroupList
+    , NodeGroupList
+    , nodeGroupList
+    , nglNextPageToken
+    , nglKind
+    , nglItems
+    , nglSelfLink
+    , nglWarning
+    , nglId
+
+    -- * SSLPolicyWarningsItemCode
+    , SSLPolicyWarningsItemCode (..)
+
+    -- * DiskMoveRequest
+    , DiskMoveRequest
+    , diskMoveRequest
+    , dmrTargetDisk
+    , dmrDestinationZone
+
+    -- * ForwardingRuleAggregatedListWarningCode
+    , ForwardingRuleAggregatedListWarningCode (..)
+
+    -- * SSLPolicyWarningsItemDataItem
+    , SSLPolicyWarningsItemDataItem
+    , sslPolicyWarningsItemDataItem
+    , spwidiValue
+    , spwidiKey
+
+    -- * AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- * TargetPoolAggregatedListWarningCode
+    , TargetPoolAggregatedListWarningCode (..)
+
+    -- * ForwardingRuleAggregatedListWarningDataItem
+    , ForwardingRuleAggregatedListWarningDataItem
+    , forwardingRuleAggregatedListWarningDataItem
+    , fralwdiValue
+    , fralwdiKey
+
+    -- * TargetPoolsScopedListWarningDataItem
+    , TargetPoolsScopedListWarningDataItem
+    , targetPoolsScopedListWarningDataItem
+    , tpslwdiValue
+    , tpslwdiKey
+
+    -- * InstanceGroupManager
+    , InstanceGroupManager
+    , instanceGroupManager
+    , igmKind
+    , igmFingerprint
+    , igmBaseInstanceName
+    , igmZone
+    , igmInstanceTemplate
+    , igmTargetSize
+    , igmSelfLink
+    , igmCurrentActions
+    , igmName
+    , igmCreationTimestamp
+    , igmDistributionPolicy
+    , igmId
+    , igmRegion
+    , igmTargetPools
+    , igmDescription
+    , igmInstanceGroup
+    , igmNamedPorts
+
+    -- * InstanceGroupManagerListWarning
+    , InstanceGroupManagerListWarning
+    , instanceGroupManagerListWarning
+    , igmlwData
+    , igmlwCode
+    , igmlwMessage
+
+    -- * RegionInstanceGroupsListInstances
+    , RegionInstanceGroupsListInstances
+    , regionInstanceGroupsListInstances
+    , rigliNextPageToken
+    , rigliKind
+    , rigliItems
+    , rigliSelfLink
+    , rigliWarning
+    , rigliId
+
+    -- * DiskListWarning
+    , DiskListWarning
+    , diskListWarning
+    , dlwData
+    , dlwCode
+    , dlwMessage
+
+    -- * TCPHealthCheck
+    , TCPHealthCheck
+    , tcpHealthCheck
+    , thcResponse
+    , thcProxyHeader
+    , thcPortName
+    , thcPort
+    , thcRequest
+
+    -- * InstanceGroupManagerAggregatedListWarningDataItem
+    , InstanceGroupManagerAggregatedListWarningDataItem
+    , instanceGroupManagerAggregatedListWarningDataItem
+    , igmalwdiValue
+    , igmalwdiKey
+
+    -- * TestPermissionsResponse
+    , TestPermissionsResponse
+    , testPermissionsResponse
+    , tprPermissions
+
+    -- * TargetPoolsScopedListWarningCode
+    , TargetPoolsScopedListWarningCode (..)
+
+    -- * RegionAutoscalerListWarning
+    , RegionAutoscalerListWarning
+    , regionAutoscalerListWarning
+    , ralwData
+    , ralwCode
+    , ralwMessage
+
+    -- * TargetInstanceListWarningCode
+    , TargetInstanceListWarningCode (..)
+
+    -- * InterconnectLocationRegionInfoLocationPresence
+    , InterconnectLocationRegionInfoLocationPresence (..)
+
+    -- * SSLHealthCheckProxyHeader
+    , SSLHealthCheckProxyHeader (..)
+
+    -- * TargetVPNGatewayStatus
+    , TargetVPNGatewayStatus (..)
+
+    -- * TargetInstanceListWarningDataItem
+    , TargetInstanceListWarningDataItem
+    , targetInstanceListWarningDataItem
+    , tilwdiValue
+    , tilwdiKey
+
+    -- * InstanceGroupManagerAggregatedListWarningCode
+    , InstanceGroupManagerAggregatedListWarningCode (..)
+
+    -- * OperationListWarning
+    , OperationListWarning
+    , operationListWarning
+    , olwData
+    , olwCode
+    , olwMessage
+
+    -- * InstanceGroupsRemoveInstancesRequest
+    , InstanceGroupsRemoveInstancesRequest
+    , instanceGroupsRemoveInstancesRequest
+    , igrirInstances
+
+    -- * InterconnectAttachmentPartnerMetadata
+    , InterconnectAttachmentPartnerMetadata
+    , interconnectAttachmentPartnerMetadata
+    , iapmPortalURL
+    , iapmInterconnectName
+    , iapmPartnerName
+
+    -- * SnapshotStatus
+    , SnapshotStatus (..)
+
+    -- * SecurityPolicyRuleMatcherVersionedExpr
+    , SecurityPolicyRuleMatcherVersionedExpr (..)
+
+    -- * MachineTypeListWarningDataItem
+    , MachineTypeListWarningDataItem
+    , machineTypeListWarningDataItem
+    , mtlwdiValue
+    , mtlwdiKey
+
+    -- * NetworksRemovePeeringRequest
+    , NetworksRemovePeeringRequest
+    , networksRemovePeeringRequest
+    , nrprName
+
+    -- * TargetHTTPProxyListWarningDataItem
+    , TargetHTTPProxyListWarningDataItem
+    , targetHTTPProxyListWarningDataItem
+    , thttpplwdiValue
+    , thttpplwdiKey
+
+    -- * MachineTypeAggregatedListWarning
+    , MachineTypeAggregatedListWarning
+    , machineTypeAggregatedListWarning
+    , mtalwData
+    , mtalwCode
+    , mtalwMessage
+
+    -- * AutoscalerListWarningCode
+    , AutoscalerListWarningCode (..)
+
+    -- * NodeTemplateAggregatedListWarningDataItem
+    , NodeTemplateAggregatedListWarningDataItem
+    , nodeTemplateAggregatedListWarningDataItem
+    , ntalwdiValue
+    , ntalwdiKey
+
+    -- * BackendBucketList
+    , BackendBucketList
+    , backendBucketList
+    , bblNextPageToken
+    , bblKind
+    , bblItems
+    , bblSelfLink
+    , bblWarning
+    , bblId
+
+    -- * InterconnectAttachmentPrivateInfo
+    , InterconnectAttachmentPrivateInfo
+    , interconnectAttachmentPrivateInfo
+    , iapiTag8021q
+
+    -- * AcceleratorTypesScopedList
+    , AcceleratorTypesScopedList
+    , acceleratorTypesScopedList
+    , atslAcceleratorTypes
+    , atslWarning
+
+    -- * BackendServiceCdnPolicy
+    , BackendServiceCdnPolicy
+    , backendServiceCdnPolicy
+    , bscpSignedURLCacheMaxAgeSec
+    , bscpSignedURLKeyNames
+    , bscpCacheKeyPolicy
+
+    -- * DiskTypeListWarningCode
+    , DiskTypeListWarningCode (..)
+
+    -- * RouteWarningsItemDataItem
+    , RouteWarningsItemDataItem
+    , routeWarningsItemDataItem
+    , rwidiValue
+    , rwidiKey
+
+    -- * NodeGroupAggregatedList
+    , NodeGroupAggregatedList
+    , nodeGroupAggregatedList
+    , ngalNextPageToken
+    , ngalKind
+    , ngalItems
+    , ngalSelfLink
+    , ngalWarning
+    , ngalId
+
+    -- * AddressPurpose
+    , AddressPurpose (..)
+
+    -- * NodeTypeAggregatedListWarningCode
+    , NodeTypeAggregatedListWarningCode (..)
+
+    -- * TargetInstancesScopedListWarningCode
+    , TargetInstancesScopedListWarningCode (..)
+
+    -- * VPNTunnelListWarning
+    , VPNTunnelListWarning
+    , vpnTunnelListWarning
+    , vtlwData
+    , vtlwCode
+    , vtlwMessage
+
+    -- * BackendServiceAggregatedListItems
+    , BackendServiceAggregatedListItems
+    , backendServiceAggregatedListItems
+    , bsaliAddtional
+
+    -- * VPNTunnelAggregatedListWarningCode
+    , VPNTunnelAggregatedListWarningCode (..)
+
+    -- * InstanceAggregatedListItems
+    , InstanceAggregatedListItems
+    , instanceAggregatedListItems
+    , ialiAddtional
+
+    -- * AutoscalersScopedListWarning
+    , AutoscalersScopedListWarning
+    , autoscalersScopedListWarning
+    , aslwData
+    , aslwCode
+    , aslwMessage
+
+    -- * DiskInstantiationConfig
+    , DiskInstantiationConfig
+    , diskInstantiationConfig
+    , dicAutoDelete
+    , dicInstantiateFrom
+    , dicCustomImage
+    , dicDeviceName
+
+    -- * DiskTypeAggregatedListWarning
+    , DiskTypeAggregatedListWarning
+    , diskTypeAggregatedListWarning
+    , dtalwData
+    , dtalwCode
+    , dtalwMessage
+
+    -- * DiskTypeListWarningDataItem
+    , DiskTypeListWarningDataItem
+    , diskTypeListWarningDataItem
+    , dtlwdiValue
+    , dtlwdiKey
+
+    -- * SecurityPolicyRule
+    , SecurityPolicyRule
+    , securityPolicyRule
+    , sprPriority
+    , sprKind
+    , sprAction
+    , sprPreview
+    , sprMatch
+    , sprDescription
+
+    -- * InterconnectsGetDiagnosticsResponse
+    , InterconnectsGetDiagnosticsResponse
+    , interconnectsGetDiagnosticsResponse
+    , igdrResult
+
+    -- * VPNTunnelAggregatedListWarningDataItem
+    , VPNTunnelAggregatedListWarningDataItem
+    , vpnTunnelAggregatedListWarningDataItem
+    , vtalwdiValue
+    , vtalwdiKey
+
+    -- * FirewallLogConfig
+    , FirewallLogConfig
+    , firewallLogConfig
+    , flcEnable
+
+    -- * TargetHTTPProxyListWarningCode
+    , TargetHTTPProxyListWarningCode (..)
+
+    -- * RouterNAT
+    , RouterNAT
+    , routerNAT
+    , rnatNATIPAllocateOption
+    , rnatICMPIdleTimeoutSec
+    , rnatUdpIdleTimeoutSec
+    , rnatNATIPs
+    , rnatSubnetworks
+    , rnatMinPortsPerVM
+    , rnatName
+    , rnatSourceSubnetworkIPRangesToNAT
+    , rnatTCPEstablishedIdleTimeoutSec
+    , rnatTCPTransitoryIdleTimeoutSec
+
+    -- * AutoscalerAggregatedListWarning
+    , AutoscalerAggregatedListWarning
+    , autoscalerAggregatedListWarning
+    , aalwData
+    , aalwCode
+    , aalwMessage
+
+    -- * AutoscalerListWarningDataItem
+    , AutoscalerListWarningDataItem
+    , autoscalerListWarningDataItem
+    , alwdiValue
+    , alwdiKey
+
+    -- * MachineTypeListWarningCode
+    , MachineTypeListWarningCode (..)
+
+    -- * NodeTypeListWarning
+    , NodeTypeListWarning
+    , nodeTypeListWarning
+    , ntlwData
+    , ntlwCode
+    , ntlwMessage
+
+    -- * HealthCheckList
+    , HealthCheckList
+    , healthCheckList
+    , hclNextPageToken
+    , hclKind
+    , hclItems
+    , hclSelfLink
+    , hclWarning
+    , hclId
+
+    -- * ManagedInstanceLastAttemptErrors
+    , ManagedInstanceLastAttemptErrors
+    , managedInstanceLastAttemptErrors
+    , milaeErrors
+
+    -- * GuestOSFeatureType
+    , GuestOSFeatureType (..)
+
+    -- * RouteWarningsItemCode
+    , RouteWarningsItemCode (..)
+
+    -- * RouterStatusNATStatus
+    , RouterStatusNATStatus
+    , routerStatusNATStatus
+    , rsnatsUserAllocatedNATIPResources
+    , rsnatsName
+    , rsnatsAutoAllocatedNATIPs
+    , rsnatsMinExtraNATIPsNeeded
+    , rsnatsNumVMEndpointsWithNATMAppings
+    , rsnatsUserAllocatedNATIPs
+
+    -- * TargetPoolsRemoveInstanceRequest
+    , TargetPoolsRemoveInstanceRequest
+    , targetPoolsRemoveInstanceRequest
+    , tprirInstances
+
+    -- * NodeTypeAggregatedListWarningDataItem
+    , NodeTypeAggregatedListWarningDataItem
+    , nodeTypeAggregatedListWarningDataItem
+    , nValue
+    , nKey
+
+    -- * TargetInstancesScopedListWarningDataItem
+    , TargetInstancesScopedListWarningDataItem
+    , targetInstancesScopedListWarningDataItem
+    , tislwdiValue
+    , tislwdiKey
+
+    -- * MachineTypesScopedListWarning
+    , MachineTypesScopedListWarning
+    , machineTypesScopedListWarning
+    , mtslwData
+    , mtslwCode
+    , mtslwMessage
+
+    -- * ZoneSetLabelsRequest
+    , ZoneSetLabelsRequest
+    , zoneSetLabelsRequest
+    , zslrLabels
+    , zslrLabelFingerprint
+
+    -- * TargetInstance
+    , TargetInstance
+    , targetInstance
+    , tiKind
+    , tiNATPolicy
+    , tiZone
+    , tiSelfLink
+    , tiName
+    , tiCreationTimestamp
+    , tiId
+    , tiDescription
+    , tiInstance
+
+    -- * TargetPoolInstanceHealth
+    , TargetPoolInstanceHealth
+    , targetPoolInstanceHealth
+    , tpihKind
+    , tpihHealthStatus
+
+    -- * RouterBGPPeerAdvertiseMode
+    , RouterBGPPeerAdvertiseMode (..)
+
+    -- * RegionInstanceGroupManagerListWarningCode
+    , RegionInstanceGroupManagerListWarningCode (..)
+
+    -- * AcceleratorTypeAggregatedList
+    , AcceleratorTypeAggregatedList
+    , acceleratorTypeAggregatedList
+    , atalNextPageToken
+    , atalKind
+    , atalItems
+    , atalSelfLink
+    , atalWarning
+    , atalId
+
+    -- * SnapshotStorageBytesStatus
+    , SnapshotStorageBytesStatus (..)
+
+    -- * NetworkRoutingConfig
+    , NetworkRoutingConfig
+    , networkRoutingConfig
+    , nrcRoutingMode
+
+    -- * NodeTemplateListWarning
+    , NodeTemplateListWarning
+    , nodeTemplateListWarning
+    , nodData
+    , nodCode
+    , nodMessage
+
+    -- * InstanceGroupManagersListManagedInstancesResponse
+    , InstanceGroupManagersListManagedInstancesResponse
+    , instanceGroupManagersListManagedInstancesResponse
+    , igmlmirManagedInstances
+
+    -- * InstanceProperties
+    , InstanceProperties
+    , instanceProperties
+    , ipServiceAccounts
+    , ipNetworkInterfaces
+    , ipGuestAccelerators
+    , ipMachineType
+    , ipMetadata
+    , ipLabels
+    , ipScheduling
+    , ipMinCPUPlatform
+    , ipDisks
+    , ipCanIPForward
+    , ipDescription
+    , ipTags
+
+    -- * ProjectsListXpnHostsRequest
+    , ProjectsListXpnHostsRequest
+    , projectsListXpnHostsRequest
+    , plxhrOrganization
+
+    -- * RegionListWarning
+    , RegionListWarning
+    , regionListWarning
+    , rlwData
+    , rlwCode
+    , rlwMessage
+
+    -- * NodeTemplateAggregatedListWarningCode
+    , NodeTemplateAggregatedListWarningCode (..)
+
+    -- * NodeGroupsScopedList
+    , NodeGroupsScopedList
+    , nodeGroupsScopedList
+    , ngslNodeGroups
+    , ngslWarning
+
+    -- * DiskTypesScopedListWarning
+    , DiskTypesScopedListWarning
+    , diskTypesScopedListWarning
+    , dtslwData
+    , dtslwCode
+    , dtslwMessage
+
+    -- * RegionInstanceGroupManagerListWarningDataItem
+    , RegionInstanceGroupManagerListWarningDataItem
+    , regionInstanceGroupManagerListWarningDataItem
+    , rigmlwdiValue
+    , rigmlwdiKey
+
+    -- * RuleAction
+    , RuleAction (..)
+
+    -- * AddressesScopedListWarningCode
+    , AddressesScopedListWarningCode (..)
+
+    -- * AttachedDiskInitializeParams
+    , AttachedDiskInitializeParams
+    , attachedDiskInitializeParams
+    , adipSourceImage
+    , adipDiskSizeGb
+    , adipDiskName
+    , adipSourceImageEncryptionKey
+    , adipDiskType
+    , adipLabels
+    , adipDescription
+
+    -- * UsableSubnetworkSecondaryRange
+    , UsableSubnetworkSecondaryRange
+    , usableSubnetworkSecondaryRange
+    , ussrRangeName
+    , ussrIPCIdRRange
+
+    -- * AddressesScopedListWarningDataItem
+    , AddressesScopedListWarningDataItem
+    , addressesScopedListWarningDataItem
+    , aslwdiValue
+    , aslwdiKey
+
+    -- * ImageStatus
+    , ImageStatus (..)
+
+    -- * InstanceGroupListWarningCode
+    , InstanceGroupListWarningCode (..)
+
+    -- * InstanceGroupListWarningDataItem
+    , InstanceGroupListWarningDataItem
+    , instanceGroupListWarningDataItem
+    , iglwdiValue
+    , iglwdiKey
+
+    -- * NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niKind
+    , niFingerprint
+    , niAliasIPRanges
+    , niNetwork
+    , niName
+    , niNetworkIP
+    , niSubnetwork
+    , niAccessConfigs
+
+    -- * FirewallListWarningCode
+    , FirewallListWarningCode (..)
+
+    -- * RouterListWarning
+    , RouterListWarning
+    , routerListWarning
+    , rData
+    , rCode
+    , rMessage
+
+    -- * FirewallListWarningDataItem
+    , FirewallListWarningDataItem
+    , firewallListWarningDataItem
+    , flwdiValue
+    , flwdiKey
+
+    -- * InterconnectAttachmentType
+    , InterconnectAttachmentType (..)
+
+    -- * TargetPoolsRemoveHealthCheckRequest
+    , TargetPoolsRemoveHealthCheckRequest
+    , targetPoolsRemoveHealthCheckRequest
+    , tprhcrHealthChecks
+
+    -- * AutoscalerStatusDetailsType
+    , AutoscalerStatusDetailsType (..)
+
+    -- * FirewallDirection
+    , FirewallDirection (..)
+
+    -- * NodeGroupNodeStatus
+    , NodeGroupNodeStatus (..)
+
+    -- * TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride
+    , TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride (..)
+
+    -- * RegionInstanceGroupManagersSetTargetPoolsRequest
+    , RegionInstanceGroupManagersSetTargetPoolsRequest
+    , regionInstanceGroupManagersSetTargetPoolsRequest
+    , rigmstprFingerprint
+    , rigmstprTargetPools
+
+    -- * BackendBucketCdnPolicy
+    , BackendBucketCdnPolicy
+    , backendBucketCdnPolicy
+    , bbcpSignedURLCacheMaxAgeSec
+    , bbcpSignedURLKeyNames
+
+    -- * TargetSSLProxyList
+    , TargetSSLProxyList
+    , targetSSLProxyList
+    , tsplNextPageToken
+    , tsplKind
+    , tsplItems
+    , tsplSelfLink
+    , tsplWarning
+    , tsplId
+
+    -- * CustomerEncryptionKeyProtectedDisk
+    , CustomerEncryptionKeyProtectedDisk
+    , customerEncryptionKeyProtectedDisk
+    , cekpdDiskEncryptionKey
+    , cekpdSource
+
+    -- * HealthStatusHealthState
+    , HealthStatusHealthState (..)
+
+    -- * InstanceTemplateList
+    , InstanceTemplateList
+    , instanceTemplateList
+    , itlNextPageToken
+    , itlKind
+    , itlItems
+    , itlSelfLink
+    , itlWarning
+    , itlId
+
+    -- * Reference
+    , Reference
+    , reference
+    , refKind
+    , refReferrer
+    , refReferenceType
+    , refTarget
+
+    -- * InstanceGroupAggregatedListWarning
+    , InstanceGroupAggregatedListWarning
+    , instanceGroupAggregatedListWarning
+    , igalwData
+    , igalwCode
+    , igalwMessage
+
+    -- * RouteList
+    , RouteList
+    , routeList
+    , rlNextPageToken
+    , rlKind
+    , rlItems
+    , rlSelfLink
+    , rlWarning
+    , rlId
+
+    -- * DeprecationStatusState
+    , DeprecationStatusState (..)
+
+    -- * InstanceListReferrers
+    , InstanceListReferrers
+    , instanceListReferrers
+    , ilrNextPageToken
+    , ilrKind
+    , ilrItems
+    , ilrSelfLink
+    , ilrWarning
+    , ilrId
+
+    -- * NodeGroupStatus
+    , NodeGroupStatus (..)
+
+    -- * Router
+    , Router
+    , router
+    , rouBGPPeers
+    , rouBGP
+    , rouKind
+    , rouNetwork
+    , rouInterfaces
+    , rouSelfLink
+    , rouName
+    , rouCreationTimestamp
+    , rouId
+    , rouRegion
+    , rouNATs
+    , rouDescription
+
+    -- * RouterAggregatedListWarningCode
+    , RouterAggregatedListWarningCode (..)
+
+    -- * RoutersScopedListWarningCode
+    , RoutersScopedListWarningCode (..)
+
+    -- * RouterAggregatedListWarningDataItem
+    , RouterAggregatedListWarningDataItem
+    , routerAggregatedListWarningDataItem
+    , ralwdiValue
+    , ralwdiKey
+
+    -- * TargetHTTPSProxyListWarningCode
+    , TargetHTTPSProxyListWarningCode (..)
+
+    -- * RoutersScopedListWarningDataItem
+    , RoutersScopedListWarningDataItem
+    , routersScopedListWarningDataItem
+    , rslwdiValue
+    , rslwdiKey
+
+    -- * SubnetworksSetPrivateIPGoogleAccessRequest
+    , SubnetworksSetPrivateIPGoogleAccessRequest
+    , subnetworksSetPrivateIPGoogleAccessRequest
+    , sspigarPrivateIPGoogleAccess
+
+    -- * TargetHTTPSProxyListWarningDataItem
+    , TargetHTTPSProxyListWarningDataItem
+    , targetHTTPSProxyListWarningDataItem
+    , thplwdiValue
+    , thplwdiKey
+
+    -- * InterconnectDiagnosticsLinkLACPStatusState
+    , InterconnectDiagnosticsLinkLACPStatusState (..)
+
+    -- * ManagedInstanceCurrentAction
+    , ManagedInstanceCurrentAction (..)
+
+    -- * TargetVPNGatewayList
+    , TargetVPNGatewayList
+    , targetVPNGatewayList
+    , tvglNextPageToken
+    , tvglKind
+    , tvglItems
+    , tvglSelfLink
+    , tvglWarning
+    , tvglId
+
+    -- * TargetInstanceNATPolicy
+    , TargetInstanceNATPolicy (..)
+
+    -- * SSLCertificateList
+    , SSLCertificateList
+    , sslCertificateList
+    , sclNextPageToken
+    , sclKind
+    , sclItems
+    , sclSelfLink
+    , sclWarning
+    , sclId
+
+    -- * FirewallAllowedItem
+    , FirewallAllowedItem
+    , firewallAllowedItem
+    , faiIPProtocol
+    , faiPorts
+
+    -- * RouterAdvertisedIPRange
+    , RouterAdvertisedIPRange
+    , routerAdvertisedIPRange
+    , rairRange
+    , rairDescription
+
+    -- * RouterListWarningDataItem
+    , RouterListWarningDataItem
+    , routerListWarningDataItem
+    , rlwdiValue
+    , rlwdiKey
+
+    -- * Rule
+    , Rule
+    , rule
+    , rAction
+    , rNotIns
+    , rIns
+    , rLogConfigs
+    , rConditions
+    , rPermissions
+    , rDescription
+
+    -- * BackendServiceAggregatedList
+    , BackendServiceAggregatedList
+    , backendServiceAggregatedList
+    , bsalNextPageToken
+    , bsalKind
+    , bsalItems
+    , bsalSelfLink
+    , bsalWarning
+    , bsalId
+
+    -- * Network
+    , Network
+    , network
+    , nAutoCreateSubnetworks
+    , nKind
+    , nRoutingConfig
+    , nSubnetworks
+    , nIPv4Range
+    , nSelfLink
+    , nName
+    , nCreationTimestamp
+    , nId
+    , nGatewayIPv4
+    , nDescription
+    , nPeerings
+
+    -- * RoutersScopedListWarning
+    , RoutersScopedListWarning
+    , routersScopedListWarning
+    , rslwData
+    , rslwCode
+    , rslwMessage
+
+    -- * UsableSubnetwork
+    , UsableSubnetwork
+    , usableSubnetwork
+    , usNetwork
+    , usSecondaryIPRanges
+    , usIPCIdRRange
+    , usSubnetwork
+
+    -- * RouterBGPPeerAdvertisedGroupsItem
+    , RouterBGPPeerAdvertisedGroupsItem (..)
+
+    -- * AccessConfigType
+    , AccessConfigType (..)
+
+    -- * TargetHTTPSProxyListWarning
+    , TargetHTTPSProxyListWarning
+    , targetHTTPSProxyListWarning
+    , thplwData
+    , thplwCode
+    , thplwMessage
+
+    -- * AddressesScopedListWarning
+    , AddressesScopedListWarning
+    , addressesScopedListWarning
+    , aData
+    , aCode
+    , aMessage
+
+    -- * SecurityPolicy
+    , SecurityPolicy
+    , securityPolicy
+    , secRules
+    , secKind
+    , secFingerprint
+    , secSelfLink
+    , secName
+    , secCreationTimestamp
+    , secId
+    , secDescription
+
+    -- * InstanceGroupAggregatedListWarningDataItem
+    , InstanceGroupAggregatedListWarningDataItem
+    , instanceGroupAggregatedListWarningDataItem
+    , igalwdiValue
+    , igalwdiKey
+
+    -- * ForwardingRuleIPVersion
+    , ForwardingRuleIPVersion (..)
+
+    -- * RouterListWarningCode
+    , RouterListWarningCode (..)
+
+    -- * ImageRawDisk
+    , ImageRawDisk
+    , imageRawDisk
+    , irdContainerType
+    , irdSource
+    , irdSha1Checksum
+
+    -- * InstanceAggregatedList
+    , InstanceAggregatedList
+    , instanceAggregatedList
+    , ialNextPageToken
+    , ialKind
+    , ialItems
+    , ialSelfLink
+    , ialWarning
+    , ialId
+
+    -- * TargetTCPProxiesSetBackendServiceRequest
+    , TargetTCPProxiesSetBackendServiceRequest
+    , targetTCPProxiesSetBackendServiceRequest
+    , ttpsbsrService
+
+    -- * SSLHealthCheck
+    , SSLHealthCheck
+    , sslHealthCheck
+    , shcResponse
+    , shcProxyHeader
+    , shcPortName
+    , shcPort
+    , shcRequest
+
+    -- * Address
+    , Address
+    , address
+    , aPrefixLength
+    , aNetworkTier
+    , aStatus
+    , aUsers
+    , aKind
+    , aIPVersion
+    , aNetwork
+    , aAddress
+    , aPurpose
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aSubnetwork
+    , aId
+    , aRegion
+    , aDescription
+    , aAddressType
+
+    -- * NodeGroupAggregatedListItems
+    , NodeGroupAggregatedListItems
+    , nodeGroupAggregatedListItems
+    , ngaliAddtional
+
+    -- * InstanceGroupAggregatedListWarningCode
+    , InstanceGroupAggregatedListWarningCode (..)
+
+    -- * InstanceGroupListWarning
+    , InstanceGroupListWarning
+    , instanceGroupListWarning
+    , iglwData
+    , iglwCode
+    , iglwMessage
+
+    -- * AttachedDiskInitializeParamsLabels
+    , AttachedDiskInitializeParamsLabels
+    , attachedDiskInitializeParamsLabels
+    , adiplAddtional
+
+    -- * Zone
+    , Zone
+    , zone
+    , zStatus
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zAvailableCPUPlatforms
+    , zDescription
+    , zDeprecated
+
+    -- * RouterBGP
+    , RouterBGP
+    , routerBGP
+    , rbASN
+    , rbAdvertiseMode
+    , rbAdvertisedGroups
+    , rbAdvertisedIPRanges
+
+    -- * ProjectsSetDefaultNetworkTierRequestNetworkTier
+    , ProjectsSetDefaultNetworkTierRequestNetworkTier (..)
+
+    -- * FirewallListWarning
+    , FirewallListWarning
+    , firewallListWarning
+    , flwData
+    , flwCode
+    , flwMessage
+
+    -- * BackendServicesScopedList
+    , BackendServicesScopedList
+    , backendServicesScopedList
+    , bsslWarning
+    , bsslBackendServices
+
+    -- * InstanceGroupManagersRecreateInstancesRequest
+    , InstanceGroupManagersRecreateInstancesRequest
+    , instanceGroupManagersRecreateInstancesRequest
+    , igmrirInstances
+
+    -- * TargetSSLProxiesSetSSLCertificatesRequest
+    , TargetSSLProxiesSetSSLCertificatesRequest
+    , targetSSLProxiesSetSSLCertificatesRequest
+    , tspsscrSSLCertificates
+
+    -- * RouterAggregatedListWarning
+    , RouterAggregatedListWarning
+    , routerAggregatedListWarning
+    , rouData
+    , rouCode
+    , rouMessage
+
+    -- * InstancesScopedList
+    , InstancesScopedList
+    , instancesScopedList
+    , islWarning
+    , islInstances
+
+    -- * AcceleratorTypeAggregatedListItems
+    , AcceleratorTypeAggregatedListItems
+    , acceleratorTypeAggregatedListItems
+    , ataliAddtional
+
+    -- * TargetVPNGatewayAggregatedListWarningDataItem
+    , TargetVPNGatewayAggregatedListWarningDataItem
+    , targetVPNGatewayAggregatedListWarningDataItem
+    , tvgalwdiValue
+    , tvgalwdiKey
+
+    -- * BackendServiceLoadBalancingScheme
+    , BackendServiceLoadBalancingScheme (..)
+
+    -- * HealthCheckReference
+    , HealthCheckReference
+    , healthCheckReference
+    , hcrHealthCheck
+
+    -- * TargetInstanceAggregatedListItems
+    , TargetInstanceAggregatedListItems
+    , targetInstanceAggregatedListItems
+    , tialiAddtional
+
+    -- * TargetHTTPSProxiesSetQuicOverrideRequest
+    , TargetHTTPSProxiesSetQuicOverrideRequest
+    , targetHTTPSProxiesSetQuicOverrideRequest
+    , thpsqorQuicOverride
+
+    -- * TargetSSLProxyListWarning
+    , TargetSSLProxyListWarning
+    , targetSSLProxyListWarning
+    , tsplwData
+    , tsplwCode
+    , tsplwMessage
+
+    -- * InstanceTemplateListWarning
+    , InstanceTemplateListWarning
+    , instanceTemplateListWarning
+    , itlwData
+    , itlwCode
+    , itlwMessage
+
+    -- * InstanceListReferrersWarning
+    , InstanceListReferrersWarning
+    , instanceListReferrersWarning
+    , ilrwData
+    , ilrwCode
+    , ilrwMessage
+
+    -- * RouteListWarning
+    , RouteListWarning
+    , routeListWarning
+    , rlwlData
+    , rlwlCode
+    , rlwlMessage
+
+    -- * TargetTCPProxyProxyHeader
+    , TargetTCPProxyProxyHeader (..)
+
+    -- * InstanceGroupAggregatedList
+    , InstanceGroupAggregatedList
+    , instanceGroupAggregatedList
+    , igalNextPageToken
+    , igalKind
+    , igalItems
+    , igalSelfLink
+    , igalWarning
+    , igalId
+
+    -- * TargetVPNGatewayAggregatedListWarningCode
+    , TargetVPNGatewayAggregatedListWarningCode (..)
+
+    -- * OperationStatus
+    , OperationStatus (..)
+
+    -- * Route
+    , Route
+    , route
+    , rrNextHopPeering
+    , rrPriority
+    , rrKind
+    , rrNextHopGateway
+    , rrNextHopNetwork
+    , rrNetwork
+    , rrWarnings
+    , rrNextHopIP
+    , rrDestRange
+    , rrSelfLink
+    , rrName
+    , rrCreationTimestamp
+    , rrId
+    , rrNextHopVPNTunnel
+    , rrDescription
+    , rrTags
+    , rrNextHopInstance
+
+    -- * TargetVPNGatewaysScopedListWarningDataItem
+    , TargetVPNGatewaysScopedListWarningDataItem
+    , targetVPNGatewaysScopedListWarningDataItem
+    , tvgslwdiValue
+    , tvgslwdiKey
+
+    -- * LogConfigCloudAuditOptionsLogName
+    , LogConfigCloudAuditOptionsLogName (..)
+
+    -- * LicenseCodeState
+    , LicenseCodeState (..)
+
+    -- * InterconnectLocationRegionInfo
+    , InterconnectLocationRegionInfo
+    , interconnectLocationRegionInfo
+    , ilriLocationPresence
+    , ilriExpectedRttMs
+    , ilriRegion
+
+    -- * TargetVPNGatewaysScopedListWarningCode
+    , TargetVPNGatewaysScopedListWarningCode (..)
+
+    -- * TargetHTTPSProxiesSetSSLCertificatesRequest
+    , TargetHTTPSProxiesSetSSLCertificatesRequest
+    , targetHTTPSProxiesSetSSLCertificatesRequest
+    , thpsscrSSLCertificates
+
+    -- * InstanceTemplate
+    , InstanceTemplate
+    , instanceTemplate
+    , itSourceInstance
+    , itKind
+    , itSelfLink
+    , itName
+    , itCreationTimestamp
+    , itId
+    , itSourceInstanceParams
+    , itDescription
+    , itProperties
+
+    -- * XpnResourceId
+    , XpnResourceId
+    , xpnResourceId
+    , xriId
+    , xriType
+
+    -- * RouterList
+    , RouterList
+    , routerList
+    , rllNextPageToken
+    , rllKind
+    , rllItems
+    , rllSelfLink
+    , rllWarning
+    , rllId
+
+    -- * TargetSSLProxy
+    , TargetSSLProxy
+    , targetSSLProxy
+    , tspSSLPolicy
+    , tspSSLCertificates
+    , tspService
+    , tspKind
+    , tspSelfLink
+    , tspName
+    , tspCreationTimestamp
+    , tspId
+    , tspProxyHeader
+    , tspDescription
+
+    -- * SSLCertificateListWarning
+    , SSLCertificateListWarning
+    , sslCertificateListWarning
+    , sclwData
+    , sclwCode
+    , sclwMessage
+
+    -- * SnapshotListWarningDataItem
+    , SnapshotListWarningDataItem
+    , snapshotListWarningDataItem
+    , slwdiValue
+    , slwdiKey
+
+    -- * TargetVPNGateway
+    , TargetVPNGateway
+    , targetVPNGateway
+    , tvgStatus
+    , tvgKind
+    , tvgNetwork
+    , tvgSelfLink
+    , tvgName
+    , tvgCreationTimestamp
+    , tvgId
+    , tvgRegion
+    , tvgTunnels
+    , tvgDescription
+    , tvgForwardingRules
+
+    -- * DiskStatus
+    , DiskStatus (..)
+
+    -- * ResourceCommitment
+    , ResourceCommitment
+    , resourceCommitment
+    , rcAmount
+    , rcType
+
+    -- * SnapshotListWarningCode
+    , SnapshotListWarningCode (..)
+
+    -- * BackendServiceIAP
+    , BackendServiceIAP
+    , backendServiceIAP
+    , bsiapEnabled
+    , bsiapOAuth2ClientSecretSha256
+    , bsiapOAuth2ClientSecret
+    , bsiapOAuth2ClientId
+
+    -- * TargetVPNGatewayListWarning
+    , TargetVPNGatewayListWarning
+    , targetVPNGatewayListWarning
+    , tvglwData
+    , tvglwCode
+    , tvglwMessage
+
+    -- * InterconnectAttachmentEdgeAvailabilityDomain
+    , InterconnectAttachmentEdgeAvailabilityDomain (..)
+
+    -- * ManagedInstanceInstanceStatus
+    , ManagedInstanceInstanceStatus (..)
+
+    -- * HTTPHealthCheckProxyHeader
+    , HTTPHealthCheckProxyHeader (..)
+
+    -- * VMEndpointNATMAppingsListWarningDataItem
+    , VMEndpointNATMAppingsListWarningDataItem
+    , vMEndpointNATMAppingsListWarningDataItem
+    , vmenatmalwdiValue
+    , vmenatmalwdiKey
+
+    -- * InterconnectLocationContinent
+    , InterconnectLocationContinent (..)
+
+    -- * URLMapsValidateResponse
+    , URLMapsValidateResponse
+    , urlMapsValidateResponse
+    , umvrResult
+
+    -- * SSLCertificate
+    , SSLCertificate
+    , sslCertificate
+    , scPrivateKey
+    , scKind
+    , scSelfLink
+    , scName
+    , scCreationTimestamp
+    , scId
+    , scCertificate
+    , scDescription
+
+    -- * VMEndpointNATMAppingsListWarningCode
+    , VMEndpointNATMAppingsListWarningCode (..)
+
+    -- * RouterStatusBGPPeerStatus
+    , RouterStatusBGPPeerStatus
+    , routerStatusBGPPeerStatus
+    , rsbpsStatus
+    , rsbpsIPAddress
+    , rsbpsState
+    , rsbpsPeerIPAddress
+    , rsbpsUptime
+    , rsbpsNumLearnedRoutes
+    , rsbpsName
+    , rsbpsUptimeSeconds
+    , rsbpsAdvertisedRoutes
+    , rsbpsLinkedVPNTunnel
+
+    -- * NodeTemplateStatus
+    , NodeTemplateStatus (..)
+
+    -- * URLMapReference
+    , URLMapReference
+    , urlMapReference
+    , umrURLMap
+
+    -- * AttachedDiskMode
+    , AttachedDiskMode (..)
+
+    -- * TargetPoolsAddHealthCheckRequest
+    , TargetPoolsAddHealthCheckRequest
+    , targetPoolsAddHealthCheckRequest
+    , tpahcrHealthChecks
+
+    -- * CommitmentsScopedList
+    , CommitmentsScopedList
+    , commitmentsScopedList
+    , cslWarning
+    , cslCommitments
+
+    -- * TargetVPNGatewayListWarningCode
+    , TargetVPNGatewayListWarningCode (..)
+
+    -- * DiskAggregatedListItems
+    , DiskAggregatedListItems
+    , diskAggregatedListItems
+    , daliAddtional
+
+    -- * TargetVPNGatewayAggregatedListWarning
+    , TargetVPNGatewayAggregatedListWarning
+    , targetVPNGatewayAggregatedListWarning
+    , tvgalwData
+    , tvgalwCode
+    , tvgalwMessage
+
+    -- * UsageExportLocation
+    , UsageExportLocation
+    , usageExportLocation
+    , uelReportNamePrefix
+    , uelBucketName
+
+    -- * InstanceTemplateListWarningCode
+    , InstanceTemplateListWarningCode (..)
+
+    -- * ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlWarning
+    , zlId
+
+    -- * SSLCertificateListWarningDataItem
+    , SSLCertificateListWarningDataItem
+    , sslCertificateListWarningDataItem
+    , sclwdiValue
+    , sclwdiKey
+
+    -- * TargetSSLProxyListWarningCode
+    , TargetSSLProxyListWarningCode (..)
+
+    -- * DistributionPolicyZoneConfiguration
+    , DistributionPolicyZoneConfiguration
+    , distributionPolicyZoneConfiguration
+    , dpzcZone
+
+    -- * RegionStatus
+    , RegionStatus (..)
+
+    -- * TargetTCPProxiesSetProxyHeaderRequest
+    , TargetTCPProxiesSetProxyHeaderRequest
+    , targetTCPProxiesSetProxyHeaderRequest
+    , ttpsphrProxyHeader
+
+    -- * InterconnectAttachmentBandwidth
+    , InterconnectAttachmentBandwidth (..)
+
+    -- * RouterBGPPeer
+    , RouterBGPPeer
+    , routerBGPPeer
+    , rbpIPAddress
+    , rbpInterfaceName
+    , rbpPeerIPAddress
+    , rbpAdvertisedRoutePriority
+    , rbpPeerASN
+    , rbpAdvertiseMode
+    , rbpName
+    , rbpAdvertisedGroups
+    , rbpManagementType
+    , rbpAdvertisedIPRanges
+
+    -- * SubnetworksExpandIPCIdRRangeRequest
+    , SubnetworksExpandIPCIdRRangeRequest
+    , subnetworksExpandIPCIdRRangeRequest
+    , seicirrrIPCIdRRange
+
+    -- * ManagedInstance
+    , ManagedInstance
+    , managedInstance
+    , miLastAttempt
+    , miCurrentAction
+    , miId
+    , miInstanceStatus
+    , miInstance
+
+    -- * InstanceGroupManagerAggregatedListItems
+    , InstanceGroupManagerAggregatedListItems
+    , instanceGroupManagerAggregatedListItems
+    , igmaliAddtional
+
+    -- * InstanceGroupManagersDeleteInstancesRequest
+    , InstanceGroupManagersDeleteInstancesRequest
+    , instanceGroupManagersDeleteInstancesRequest
+    , igmdirInstances
+
+    -- * Backend
+    , Backend
+    , backend
+    , bGroup
+    , bBalancingMode
+    , bMaxUtilization
+    , bMaxRate
+    , bMaxConnections
+    , bMaxConnectionsPerInstance
+    , bMaxRatePerInstance
+    , bDescription
+    , bCapacityScaler
+
+    -- * TargetVPNGatewaysScopedListWarning
+    , TargetVPNGatewaysScopedListWarning
+    , targetVPNGatewaysScopedListWarning
+    , tvgslwData
+    , tvgslwCode
+    , tvgslwMessage
+
+    -- * TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)
+
+    -- * AddressList
+    , AddressList
+    , addressList
+    , alNextPageToken
+    , alKind
+    , alItems
+    , alSelfLink
+    , alWarning
+    , alId
+
+    -- * TargetVPNGatewayListWarningDataItem
+    , TargetVPNGatewayListWarningDataItem
+    , targetVPNGatewayListWarningDataItem
+    , tvglwdiValue
+    , tvglwdiKey
+
+    -- * ForwardingRuleAggregatedListItems
+    , ForwardingRuleAggregatedListItems
+    , forwardingRuleAggregatedListItems
+    , fraliAddtional
+
+    -- * InterconnectAttachmentAggregatedList
+    , InterconnectAttachmentAggregatedList
+    , interconnectAttachmentAggregatedList
+    , iaalNextPageToken
+    , iaalKind
+    , iaalItems
+    , iaalSelfLink
+    , iaalWarning
+    , iaalId
+
+    -- * InstanceListReferrersWarningCode
+    , InstanceListReferrersWarningCode (..)
+
+    -- * ConditionOp
+    , ConditionOp (..)
+
+    -- * RouteListWarningCode
+    , RouteListWarningCode (..)
+
+    -- * OperationAggregatedListItems
+    , OperationAggregatedListItems
+    , operationAggregatedListItems
+    , oaliAddtional
+
+    -- * InstanceGroupManagerActionsSummary
+    , InstanceGroupManagerActionsSummary
+    , instanceGroupManagerActionsSummary
+    , igmasDeleting
+    , igmasRestarting
+    , igmasNone
+    , igmasCreating
+    , igmasVerifying
+    , igmasRefreshing
+    , igmasCreatingWithoutRetries
+    , igmasRecreating
+    , igmasAbandoning
+
+    -- * XpnHostList
+    , XpnHostList
+    , xpnHostList
+    , xhlNextPageToken
+    , xhlKind
+    , xhlItems
+    , xhlSelfLink
+    , xhlWarning
+    , xhlId
+
+    -- * VPNTunnelStatus
+    , VPNTunnelStatus (..)
+
+    -- * InstanceTemplateListWarningDataItem
+    , InstanceTemplateListWarningDataItem
+    , instanceTemplateListWarningDataItem
+    , itlwdiValue
+    , itlwdiKey
+
+    -- * SSLCertificateListWarningCode
+    , SSLCertificateListWarningCode (..)
+
+    -- * ServiceAccount
+    , ServiceAccount
+    , serviceAccount
+    , saEmail
+    , saScopes
+
+    -- * SnapshotListWarning
+    , SnapshotListWarning
+    , snapshotListWarning
+    , sData
+    , sCode
+    , sMessage
+
+    -- * RegionInstanceGroupManagersAbandonInstancesRequest
+    , RegionInstanceGroupManagersAbandonInstancesRequest
+    , regionInstanceGroupManagersAbandonInstancesRequest
+    , rigmairInstances
+
+    -- * NetworkList
+    , NetworkList
+    , networkList
+    , nlNextPageToken
+    , nlKind
+    , nlItems
+    , nlSelfLink
+    , nlWarning
+    , nlId
+
+    -- * NetworkPeering
+    , NetworkPeering
+    , networkPeering
+    , netState
+    , netStateDetails
+    , netNetwork
+    , netName
+    , netAutoCreateRoutes
+
+    -- * TargetSSLProxyListWarningDataItem
+    , TargetSSLProxyListWarningDataItem
+    , targetSSLProxyListWarningDataItem
+    , tsplwdiValue
+    , tsplwdiKey
+
+    -- * InstanceGroupsListInstancesRequest
+    , InstanceGroupsListInstancesRequest
+    , instanceGroupsListInstancesRequest
+    , iglirInstanceState
+
+    -- * DiskInstantiationConfigInstantiateFrom
+    , DiskInstantiationConfigInstantiateFrom (..)
+
+    -- * InstanceListReferrersWarningDataItem
+    , InstanceListReferrersWarningDataItem
+    , instanceListReferrersWarningDataItem
+    , ilrwdiValue
+    , ilrwdiKey
+
+    -- * RouteListWarningDataItem
+    , RouteListWarningDataItem
+    , routeListWarningDataItem
+    , rValue
+    , rKey
+
+    -- * InterconnectAttachmentsScopedList
+    , InterconnectAttachmentsScopedList
+    , interconnectAttachmentsScopedList
+    , iaslWarning
+    , iaslInterconnectAttachments
+
+    -- * SecurityPolicyList
+    , SecurityPolicyList
+    , securityPolicyList
+    , splNextPageToken
+    , splKind
+    , splItems
+    , splWarning
+    , splId
+
+    -- * BackendBalancingMode
+    , BackendBalancingMode (..)
+
+    -- * RouterBGPAdvertisedGroupsItem
+    , RouterBGPAdvertisedGroupsItem (..)
+
+    -- * CommitmentAggregatedList
+    , CommitmentAggregatedList
+    , commitmentAggregatedList
+    , calNextPageToken
+    , calKind
+    , calItems
+    , calSelfLink
+    , calWarning
+    , calId
+
+    -- * RegionInstanceGroupList
+    , RegionInstanceGroupList
+    , regionInstanceGroupList
+    , riglNextPageToken
+    , riglKind
+    , riglItems
+    , riglSelfLink
+    , riglWarning
+    , riglId
+
+    -- * VMEndpointNATMAppingsListWarning
+    , VMEndpointNATMAppingsListWarning
+    , vMEndpointNATMAppingsListWarning
+    , vmenatmalwData
+    , vmenatmalwCode
+    , vmenatmalwMessage
+
+    -- * TargetPoolAggregatedListItems
+    , TargetPoolAggregatedListItems
+    , targetPoolAggregatedListItems
+    , tpaliAddtional
+
+    -- * NodeGroupsAddNodesRequest
+    , NodeGroupsAddNodesRequest
+    , nodeGroupsAddNodesRequest
+    , nganrAdditionalNodeCount
+
+    -- * NodeTypeAggregatedList
+    , NodeTypeAggregatedList
+    , nodeTypeAggregatedList
+    , ntalNextPageToken
+    , ntalKind
+    , ntalItems
+    , ntalSelfLink
+    , ntalWarning
+    , ntalId
+
+    -- * TargetInstancesScopedList
+    , TargetInstancesScopedList
+    , targetInstancesScopedList
+    , tislWarning
+    , tislTargetInstances
+
+    -- * NetworkRoutingConfigRoutingMode
+    , NetworkRoutingConfigRoutingMode (..)
+
+    -- * SubnetworkListWarningCode
+    , SubnetworkListWarningCode (..)
+
+    -- * SubnetworkListWarningDataItem
+    , SubnetworkListWarningDataItem
+    , subnetworkListWarningDataItem
+    , sValue
+    , sKey
+
+    -- * ProjectsDisableXpnResourceRequest
+    , ProjectsDisableXpnResourceRequest
+    , projectsDisableXpnResourceRequest
+    , pdxrrXpnResource
+
+    -- * CommitmentStatus
+    , CommitmentStatus (..)
+
+    -- * AddressAggregatedListItems
+    , AddressAggregatedListItems
+    , addressAggregatedListItems
+    , aAddtional
+
+    -- * InterconnectListWarningCode
+    , InterconnectListWarningCode (..)
+
+    -- * AutoscalerList
+    , AutoscalerList
+    , autoscalerList
+    , autNextPageToken
+    , autKind
+    , autItems
+    , autSelfLink
+    , autWarning
+    , autId
+
+    -- * SSLPolicyMinTLSVersion
+    , SSLPolicyMinTLSVersion (..)
+
+    -- * InterconnectListWarningDataItem
+    , InterconnectListWarningDataItem
+    , interconnectListWarningDataItem
+    , iValue
+    , iKey
+
+    -- * SubnetworkAggregatedListWarning
+    , SubnetworkAggregatedListWarning
+    , subnetworkAggregatedListWarning
+    , salwData
+    , salwCode
+    , salwMessage
+
+    -- * InterconnectLocation
+    , InterconnectLocation
+    , interconnectLocation
+    , intFacilityProviderFacilityId
+    , intRegionInfos
+    , intKind
+    , intAddress
+    , intFacilityProvider
+    , intSelfLink
+    , intPeeringdbFacilityId
+    , intName
+    , intCity
+    , intAvailabilityZone
+    , intCreationTimestamp
+    , intId
+    , intContinent
+    , intDescription
+
+    -- * TargetSSLProxiesSetProxyHeaderRequest
+    , TargetSSLProxiesSetProxyHeaderRequest
+    , targetSSLProxiesSetProxyHeaderRequest
+    , tspsphrProxyHeader
+
+    -- * HTTPHealthCheckListWarningCode
+    , HTTPHealthCheckListWarningCode (..)
+
+    -- * SSLPoliciesListWarningCode
+    , SSLPoliciesListWarningCode (..)
+
+    -- * VPNTunnelAggregatedList
+    , VPNTunnelAggregatedList
+    , vpnTunnelAggregatedList
+    , vtalNextPageToken
+    , vtalKind
+    , vtalItems
+    , vtalSelfLink
+    , vtalWarning
+    , vtalId
+
+    -- * SSLPoliciesListWarningDataItem
+    , SSLPoliciesListWarningDataItem
+    , sslPoliciesListWarningDataItem
+    , splwdiValue
+    , splwdiKey
+
+    -- * InterconnectCircuitInfo
+    , InterconnectCircuitInfo
+    , interconnectCircuitInfo
+    , iciGoogleCircuitId
+    , iciCustomerDemarcId
+    , iciGoogleDemarcId
+
+    -- * AttachedDisk
+    , AttachedDisk
+    , attachedDisk
+    , adDiskEncryptionKey
+    , adKind
+    , adMode
+    , adGuestOSFeatures
+    , adBoot
+    , adAutoDelete
+    , adInitializeParams
+    , adDeviceName
+    , adInterface
+    , adSource
+    , adLicenses
+    , adType
+    , adIndex
+
+    -- * HTTPHealthCheckListWarningDataItem
+    , HTTPHealthCheckListWarningDataItem
+    , hTTPHealthCheckListWarningDataItem
+    , httphclwdiValue
+    , httphclwdiKey
+
+    -- * InterconnectAttachmentOperationalStatus
+    , InterconnectAttachmentOperationalStatus (..)
+
+    -- * DiskTypeList
+    , DiskTypeList
+    , diskTypeList
+    , dtlNextPageToken
+    , dtlKind
+    , dtlItems
+    , dtlSelfLink
+    , dtlWarning
+    , dtlId
+
+    -- * TargetTCPProxyListWarningCode
+    , TargetTCPProxyListWarningCode (..)
+
+    -- * RegionInstanceGroupsSetNamedPortsRequest
+    , RegionInstanceGroupsSetNamedPortsRequest
+    , regionInstanceGroupsSetNamedPortsRequest
+    , rigsnprFingerprint
+    , rigsnprNamedPorts
+
+    -- * TestPermissionsRequest
+    , TestPermissionsRequest
+    , testPermissionsRequest
+    , tPermissions
+
+    -- * TargetTCPProxyListWarningDataItem
+    , TargetTCPProxyListWarningDataItem
+    , targetTCPProxyListWarningDataItem
+    , ttplwdiValue
+    , ttplwdiKey
+
+    -- * ProjectsGetXpnResources
+    , ProjectsGetXpnResources
+    , projectsGetXpnResources
+    , pgxrNextPageToken
+    , pgxrKind
+    , pgxrResources
+
+    -- * MachineTypeList
+    , MachineTypeList
+    , machineTypeList
+    , mtlNextPageToken
+    , mtlKind
+    , mtlItems
+    , mtlSelfLink
+    , mtlWarning
+    , mtlId
+
+    -- * TargetHTTPProxyList
+    , TargetHTTPProxyList
+    , targetHTTPProxyList
+    , thttpplNextPageToken
+    , thttpplKind
+    , thttpplItems
+    , thttpplSelfLink
+    , thttpplWarning
+    , thttpplId
+
+    -- * NodeGroupsListNodesWarning
+    , NodeGroupsListNodesWarning
+    , nodeGroupsListNodesWarning
+    , nglnwData
+    , nglnwCode
+    , nglnwMessage
+
+    -- * NodeTemplateAggregatedList
+    , NodeTemplateAggregatedList
+    , nodeTemplateAggregatedList
+    , nodNextPageToken
+    , nodKind
+    , nodItems
+    , nodSelfLink
+    , nodWarning
+    , nodId
+
+    -- * InterconnectLocationListWarning
+    , InterconnectLocationListWarning
+    , interconnectLocationListWarning
+    , illwData
+    , illwCode
+    , illwMessage
+
+    -- * InstanceGroupsListInstancesWarning
+    , InstanceGroupsListInstancesWarning
+    , instanceGroupsListInstancesWarning
+    , igliwData
+    , igliwCode
+    , igliwMessage
+
+    -- * RegionInstanceGroupManagerList
+    , RegionInstanceGroupManagerList
+    , regionInstanceGroupManagerList
+    , rigmlNextPageToken
+    , rigmlKind
+    , rigmlItems
+    , rigmlSelfLink
+    , rigmlWarning
+    , rigmlId
+
+    -- * AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- * ForwardingRuleIPProtocol
+    , ForwardingRuleIPProtocol (..)
+
+    -- * DiskTypesScopedList
+    , DiskTypesScopedList
+    , diskTypesScopedList
+    , dtslDiskTypes
+    , dtslWarning
+
+    -- * LogConfigCloudAuditOptions
+    , LogConfigCloudAuditOptions
+    , logConfigCloudAuditOptions
+    , lccaoAuthorizationLoggingOptions
+    , lccaoLogName
+
+    -- * ImageListWarningCode
+    , ImageListWarningCode (..)
+
+    -- * AddressStatus
+    , AddressStatus (..)
+
+    -- * ProjectsSetDefaultNetworkTierRequest
+    , ProjectsSetDefaultNetworkTierRequest
+    , projectsSetDefaultNetworkTierRequest
+    , psdntrNetworkTier
+
+    -- * ImageListWarningDataItem
+    , ImageListWarningDataItem
+    , imageListWarningDataItem
+    , imaValue
+    , imaKey
+
+    -- * AcceleratorTypeListWarningDataItem
+    , AcceleratorTypeListWarningDataItem
+    , acceleratorTypeListWarningDataItem
+    , atlwdiValue
+    , atlwdiKey
+
+    -- * InterconnectOutageNotification
+    , InterconnectOutageNotification
+    , interconnectOutageNotification
+    , ionState
+    , ionAffectedCircuits
+    , ionStartTime
+    , ionIssueType
+    , ionName
+    , ionEndTime
+    , ionSource
+    , ionDescription
+
+    -- * NodeTemplateList
+    , NodeTemplateList
+    , nodeTemplateList
+    , ntlNextPageToken
+    , ntlKind
+    , ntlItems
+    , ntlSelfLink
+    , ntlWarning
+    , ntlId
+
+    -- * AcceleratorTypeListWarningCode
+    , AcceleratorTypeListWarningCode (..)
+
+    -- * DiskTypeAggregatedList
+    , DiskTypeAggregatedList
+    , diskTypeAggregatedList
+    , dtalNextPageToken
+    , dtalKind
+    , dtalItems
+    , dtalSelfLink
+    , dtalWarning
+    , dtalId
+
+    -- * HTTPHealthCheck
+    , HTTPHealthCheck
+    , hTTPHealthCheck
+    , httphcResponse
+    , httphcRequestPath
+    , httphcHost
+    , httphcProxyHeader
+    , httphcPortName
+    , httphcPort
+
+    -- * URLMapListWarningDataItem
+    , URLMapListWarningDataItem
+    , urlMapListWarningDataItem
+    , umlwdiValue
+    , umlwdiKey
+
+    -- * AddressNetworkTier
+    , AddressNetworkTier (..)
+
+    -- * RouterNATSubnetworkToNAT
+    , RouterNATSubnetworkToNAT
+    , routerNATSubnetworkToNAT
+    , rnatstnatSourceIPRangesToNAT
+    , rnatstnatName
+    , rnatstnatSecondaryIPRangeNames
+
+    -- * BackendServiceGroupHealth
+    , BackendServiceGroupHealth
+    , backendServiceGroupHealth
+    , bsghKind
+    , bsghHealthStatus
+
+    -- * URLMapListWarningCode
+    , URLMapListWarningCode (..)
+
+    -- * InstanceGroupsListInstancesRequestInstanceState
+    , InstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- * AutoscalersScopedList
+    , AutoscalersScopedList
+    , autoscalersScopedList
+    , aAutoscalers
+    , aWarning
+
+    -- * LogConfigDataAccessOptions
+    , LogConfigDataAccessOptions
+    , logConfigDataAccessOptions
+    , lcdaoLogMode
+
+    -- * AutoscalerAggregatedList
+    , AutoscalerAggregatedList
+    , autoscalerAggregatedList
+    , aalNextPageToken
+    , aalKind
+    , aalItems
+    , aalSelfLink
+    , aalWarning
+    , aalId
+
+    -- * RouterAggregatedListItems
+    , RouterAggregatedListItems
+    , routerAggregatedListItems
+    , raliAddtional
+
+    -- * AcceleratorTypesScopedListWarning
+    , AcceleratorTypesScopedListWarning
+    , acceleratorTypesScopedListWarning
+    , atslwData
+    , atslwCode
+    , atslwMessage
+
+    -- * TargetTCPProxy
+    , TargetTCPProxy
+    , targetTCPProxy
+    , ttpService
+    , ttpKind
+    , ttpSelfLink
+    , ttpName
+    , ttpCreationTimestamp
+    , ttpId
+    , ttpProxyHeader
+    , ttpDescription
+
+    -- * SchedulingNodeAffinityOperator
+    , SchedulingNodeAffinityOperator (..)
+
+    -- * BackendBucketListWarning
+    , BackendBucketListWarning
+    , backendBucketListWarning
+    , bblwData
+    , bblwCode
+    , bblwMessage
+
+    -- * ProjectDefaultNetworkTier
+    , ProjectDefaultNetworkTier (..)
+
+    -- * ImageLabels
+    , ImageLabels
+    , imageLabels
+    , iAddtional
+
+    -- * NodeGroupListWarningCode
+    , NodeGroupListWarningCode (..)
+
+    -- * DistributionPolicy
+    , DistributionPolicy
+    , distributionPolicy
+    , dpZones
+
+    -- * RouterNATSourceSubnetworkIPRangesToNAT
+    , RouterNATSourceSubnetworkIPRangesToNAT (..)
+
+    -- * NodeGroupListWarningDataItem
+    , NodeGroupListWarningDataItem
+    , nodeGroupListWarningDataItem
+    , nglwdiValue
+    , nglwdiKey
+
+    -- * HTTPSHealthCheckProxyHeader
+    , HTTPSHealthCheckProxyHeader (..)
+
+    -- * AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- * NodeGroupAggregatedListWarning
+    , NodeGroupAggregatedListWarning
+    , nodeGroupAggregatedListWarning
+    , ngalwData
+    , ngalwCode
+    , ngalwMessage
+
+    -- * RegionList
+    , RegionList
+    , regionList
+    , regNextPageToken
+    , regKind
+    , regItems
+    , regSelfLink
+    , regWarning
+    , regId
+
+    -- * AttachedDiskInterface
+    , AttachedDiskInterface (..)
+
+    -- * SchedulingNodeAffinity
+    , SchedulingNodeAffinity
+    , schedulingNodeAffinity
+    , snaOperator
+    , snaValues
+    , snaKey
+
+    -- * HealthCheckType
+    , HealthCheckType (..)
+
+    -- * RegionInstanceGroupsListInstancesWarningCode
+    , RegionInstanceGroupsListInstancesWarningCode (..)
+
+    -- * ZoneStatus
+    , ZoneStatus (..)
+
+    -- * VPNTunnelList
+    , VPNTunnelList
+    , vpnTunnelList
+    , vtlNextPageToken
+    , vtlKind
+    , vtlItems
+    , vtlSelfLink
+    , vtlWarning
+    , vtlId
+
+    -- * AcceleratorTypeAggregatedListWarning
+    , AcceleratorTypeAggregatedListWarning
+    , acceleratorTypeAggregatedListWarning
+    , atalwData
+    , atalwCode
+    , atalwMessage
+
+    -- * RegionInstanceGroupsListInstancesWarningDataItem
+    , RegionInstanceGroupsListInstancesWarningDataItem
+    , regionInstanceGroupsListInstancesWarningDataItem
+    , rigliwdiValue
+    , rigliwdiKey
+
+    -- * Interconnect
+    , Interconnect
+    , interconnect
+    , iiState
+    , iiInterconnectType
+    , iiLocation
+    , iiPeerIPAddress
+    , iiKind
+    , iiExpectedOutages
+    , iiProvisionedLinkCount
+    , iiCustomerName
+    , iiRequestedLinkCount
+    , iiOperationalStatus
+    , iiSelfLink
+    , iiName
+    , iiGoogleReferenceId
+    , iiCreationTimestamp
+    , iiAdminEnabled
+    , iiId
+    , iiInterconnectAttachments
+    , iiLinkType
+    , iiGoogleIPAddress
+    , iiDescription
+    , iiNocContactEmail
+    , iiCircuitInfos
+
+    -- * MachineTypeScratchDisksItem
+    , MachineTypeScratchDisksItem
+    , machineTypeScratchDisksItem
+    , mtsdiDiskGb
+
+    -- * SubnetworksScopedListWarningDataItem
+    , SubnetworksScopedListWarningDataItem
+    , subnetworksScopedListWarningDataItem
+    , sslwdiValue
+    , sslwdiKey
+
+    -- * MachineTypesScopedList
+    , MachineTypesScopedList
+    , machineTypesScopedList
+    , mtslMachineTypes
+    , mtslWarning
+
+    -- * SubnetworksScopedListWarningCode
+    , SubnetworksScopedListWarningCode (..)
+
+    -- * Subnetwork
+    , Subnetwork
+    , subnetwork
+    , subKind
+    , subFingerprint
+    , subNetwork
+    , subGatewayAddress
+    , subSelfLink
+    , subEnableFlowLogs
+    , subName
+    , subSecondaryIPRanges
+    , subCreationTimestamp
+    , subIPCIdRRange
+    , subId
+    , subRegion
+    , subDescription
+    , subPrivateIPGoogleAccess
+
+    -- * HealthCheckListWarning
+    , HealthCheckListWarning
+    , healthCheckListWarning
+    , hclwData
+    , hclwCode
+    , hclwMessage
+
+    -- * MachineTypeAggregatedList
+    , MachineTypeAggregatedList
+    , machineTypeAggregatedList
+    , mtalNextPageToken
+    , mtalKind
+    , mtalItems
+    , mtalSelfLink
+    , mtalWarning
+    , mtalId
+
+    -- * NodeGroupsScopedListWarning
+    , NodeGroupsScopedListWarning
+    , nodeGroupsScopedListWarning
+    , ngslwData
+    , ngslwCode
+    , ngslwMessage
+
+    -- * NodeTypeList
+    , NodeTypeList
+    , nodeTypeList
+    , ntltNextPageToken
+    , ntltKind
+    , ntltItems
+    , ntltSelfLink
+    , ntltWarning
+    , ntltId
+
+    -- * QuotaMetric
+    , QuotaMetric (..)
+
+    -- * DiskType
+    , DiskType
+    , diskType
+    , dtKind
+    , dtZone
+    , dtSelfLink
+    , dtName
+    , dtCreationTimestamp
+    , dtId
+    , dtRegion
+    , dtValidDiskSize
+    , dtDescription
+    , dtDefaultDiskSizeGb
+    , dtDeprecated
+
+    -- * NodeTemplateAggregatedListWarning
+    , NodeTemplateAggregatedListWarning
+    , nodeTemplateAggregatedListWarning
+    , ntalwData
+    , ntalwCode
+    , ntalwMessage
+
+    -- * AutoscalerAggregatedListWarningDataItem
+    , AutoscalerAggregatedListWarningDataItem
+    , autoscalerAggregatedListWarningDataItem
+    , aalwdiValue
+    , aalwdiKey
+
+    -- * ZoneSetLabelsRequestLabels
+    , ZoneSetLabelsRequestLabels
+    , zoneSetLabelsRequestLabels
+    , zslrlAddtional
+
+    -- * InterconnectState
+    , InterconnectState (..)
+
+    -- * NodeTypeListWarningDataItem
+    , NodeTypeListWarningDataItem
+    , nodeTypeListWarningDataItem
+    , ntlwdiValue
+    , ntlwdiKey
+
+    -- * URLMapValidationResult
+    , URLMapValidationResult
+    , urlMapValidationResult
+    , umvrLoadErrors
+    , umvrLoadSucceeded
+    , umvrTestPassed
+    , umvrTestFailures
+
+    -- * Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mFingerprint
+    , mItems
+
+    -- * RouteWarningsItem
+    , RouteWarningsItem
+    , routeWarningsItem
+    , rwiData
+    , rwiCode
+    , rwiMessage
+
+    -- * NodeGroupsListNodes
+    , NodeGroupsListNodes
+    , nodeGroupsListNodes
+    , nglnNextPageToken
+    , nglnKind
+    , nglnItems
+    , nglnSelfLink
+    , nglnWarning
+    , nglnId
+
+    -- * InterconnectLocationList
+    , InterconnectLocationList
+    , interconnectLocationList
+    , illNextPageToken
+    , illKind
+    , illItems
+    , illSelfLink
+    , illWarning
+    , illId
+
+    -- * SSLPoliciesListAvailableFeaturesResponse
+    , SSLPoliciesListAvailableFeaturesResponse
+    , sslPoliciesListAvailableFeaturesResponse
+    , splafrFeatures
+
+    -- * InstancePropertiesLabels
+    , InstancePropertiesLabels
+    , instancePropertiesLabels
+    , iplAddtional
+
+    -- * AutoscalerAggregatedListWarningCode
+    , AutoscalerAggregatedListWarningCode (..)
+
+    -- * AddressIPVersion
+    , AddressIPVersion (..)
+
+    -- * MachineTypesScopedListWarningDataItem
+    , MachineTypesScopedListWarningDataItem
+    , machineTypesScopedListWarningDataItem
+    , mtslwdiValue
+    , mtslwdiKey
+
+    -- * InstanceStatus
+    , InstanceStatus (..)
+
+    -- * NodeTypeListWarningCode
+    , NodeTypeListWarningCode (..)
+
+    -- * DiskTypeListWarning
+    , DiskTypeListWarning
+    , diskTypeListWarning
+    , dtlwData
+    , dtlwCode
+    , dtlwMessage
+
+    -- * NodeTemplateListWarningDataItem
+    , NodeTemplateListWarningDataItem
+    , nodeTemplateListWarningDataItem
+    , nodValue
+    , nodKey
+
+    -- * RegionListWarningDataItem
+    , RegionListWarningDataItem
+    , regionListWarningDataItem
+    , regValue
+    , regKey
+
+    -- * MachineTypesScopedListWarningCode
+    , MachineTypesScopedListWarningCode (..)
+
+    -- * InstancesSetMachineResourcesRequest
+    , InstancesSetMachineResourcesRequest
+    , instancesSetMachineResourcesRequest
+    , ismrrGuestAccelerators
+
+    -- * InstancesSetServiceAccountRequest
+    , InstancesSetServiceAccountRequest
+    , instancesSetServiceAccountRequest
+    , issarEmail
+    , issarScopes
+
+    -- * SecurityPolicyReference
+    , SecurityPolicyReference
+    , securityPolicyReference
+    , sprSecurityPolicy
+
+    -- * DiskTypesScopedListWarningDataItem
+    , DiskTypesScopedListWarningDataItem
+    , diskTypesScopedListWarningDataItem
+    , dtslwdiValue
+    , dtslwdiKey
+
+    -- * NodeTemplateListWarningCode
+    , NodeTemplateListWarningCode (..)
+
+    -- * VMEndpointNATMAppingsInterfaceNATMAppings
+    , VMEndpointNATMAppingsInterfaceNATMAppings
+    , vMEndpointNATMAppingsInterfaceNATMAppings
+    , vmenatmainatmaSourceAliasIPRange
+    , vmenatmainatmaSourceVirtualIP
+    , vmenatmainatmaNATIPPortRanges
+    , vmenatmainatmaNumTotalNATPorts
+
+    -- * VPNTunnelAggregatedListWarning
+    , VPNTunnelAggregatedListWarning
+    , vpnTunnelAggregatedListWarning
+    , vtalwData
+    , vtalwCode
+    , vtalwMessage
+
+    -- * TargetHTTPProxy
+    , TargetHTTPProxy
+    , targetHTTPProxy
+    , thttppURLMap
+    , thttppKind
+    , thttppSelfLink
+    , thttppName
+    , thttppCreationTimestamp
+    , thttppId
+    , thttppDescription
+
+    -- * MachineType
+    , MachineType
+    , machineType
+    , mtIsSharedCPU
+    , mtKind
+    , mtImageSpaceGb
+    , mtZone
+    , mtSelfLink
+    , mtName
+    , mtCreationTimestamp
+    , mtScratchDisks
+    , mtId
+    , mtGuestCPUs
+    , mtMaximumPersistentDisksSizeGb
+    , mtMaximumPersistentDisks
+    , mtMemoryMb
+    , mtDescription
+    , mtDeprecated
+
+    -- * AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorType
+
+    -- * AutoscalerListWarning
+    , AutoscalerListWarning
+    , autoscalerListWarning
+    , alwData
+    , alwCode
+    , alwMessage
+
+    -- * RegionListWarningCode
+    , RegionListWarningCode (..)
+
+    -- * RouterInterfaceManagementType
+    , RouterInterfaceManagementType (..)
+
+    -- * DiskTypesScopedListWarningCode
+    , DiskTypesScopedListWarningCode (..)
+
+    -- * MachineTypeAggregatedListWarningDataItem
+    , MachineTypeAggregatedListWarningDataItem
+    , machineTypeAggregatedListWarningDataItem
+    , mtalwdiValue
+    , mtalwdiKey
+
+    -- * OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- * NodeTypeAggregatedListWarning
+    , NodeTypeAggregatedListWarning
+    , nodeTypeAggregatedListWarning
+    , ntalwtData
+    , ntalwtCode
+    , ntalwtMessage
+
+    -- * TargetInstancesScopedListWarning
+    , TargetInstancesScopedListWarning
+    , targetInstancesScopedListWarning
+    , tislwData
+    , tislwCode
+    , tislwMessage
+
+    -- * SubnetworkAggregatedList
+    , SubnetworkAggregatedList
+    , subnetworkAggregatedList
+    , salNextPageToken
+    , salKind
+    , salItems
+    , salSelfLink
+    , salWarning
+    , salId
+
+    -- * MachineTypeAggregatedListWarningCode
+    , MachineTypeAggregatedListWarningCode (..)
+
+    -- * VPNTunnelListWarningDataItem
+    , VPNTunnelListWarningDataItem
+    , vpnTunnelListWarningDataItem
+    , vtlwdiValue
+    , vtlwdiKey
+
+    -- * InterconnectDiagnosticsLinkOpticalPower
+    , InterconnectDiagnosticsLinkOpticalPower
+    , interconnectDiagnosticsLinkOpticalPower
+    , idlopState
+    , idlopValue
+
+    -- * DisksResizeRequest
+    , DisksResizeRequest
+    , disksResizeRequest
+    , drrSizeGb
+
+    -- * AutoscalersScopedListWarningDataItem
+    , AutoscalersScopedListWarningDataItem
+    , autoscalersScopedListWarningDataItem
+    , aValue
+    , aKey
+
+    -- * LogConfigDataAccessOptionsLogMode
+    , LogConfigDataAccessOptionsLogMode (..)
+
+    -- * InterconnectOutageNotificationState
+    , InterconnectOutageNotificationState (..)
+
+    -- * ZoneSetPolicyRequest
+    , ZoneSetPolicyRequest
+    , zoneSetPolicyRequest
+    , zsprEtag
+    , zsprBindings
+    , zsprPolicy
+
+    -- * VPNTunnelListWarningCode
+    , VPNTunnelListWarningCode (..)
+
+    -- * AutoscalersScopedListWarningCode
+    , AutoscalersScopedListWarningCode (..)
+
+    -- * DiskTypeAggregatedListWarningDataItem
+    , DiskTypeAggregatedListWarningDataItem
+    , diskTypeAggregatedListWarningDataItem
+    , dtalwdiValue
+    , dtalwdiKey
+
+    -- * ForwardingRuleLoadBalancingScheme
+    , ForwardingRuleLoadBalancingScheme (..)
+
+    -- * RegionInstanceGroupManagerListWarning
+    , RegionInstanceGroupManagerListWarning
+    , regionInstanceGroupManagerListWarning
+    , rigmlwData
+    , rigmlwCode
+    , rigmlwMessage
+
+    -- * RegionInstanceGroupManagersSetTemplateRequest
+    , RegionInstanceGroupManagersSetTemplateRequest
+    , regionInstanceGroupManagersSetTemplateRequest
+    , rigmstrInstanceTemplate
+
+    -- * InstanceGroupsListInstances
+    , InstanceGroupsListInstances
+    , instanceGroupsListInstances
+    , igliNextPageToken
+    , igliKind
+    , igliItems
+    , igliSelfLink
+    , igliWarning
+    , igliId
+
+    -- * DiskTypeAggregatedListWarningCode
+    , DiskTypeAggregatedListWarningCode (..)
+
+    -- * Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aaStatus
+    , aaKind
+    , aaZone
+    , aaStatusDetails
+    , aaSelfLink
+    , aaName
+    , aaCreationTimestamp
+    , aaAutoscalingPolicy
+    , aaId
+    , aaRegion
+    , aaDescription
+    , aaTarget
+
+    -- * MachineTypeListWarning
+    , MachineTypeListWarning
+    , machineTypeListWarning
+    , mtlwData
+    , mtlwCode
+    , mtlwMessage
+
+    -- * TargetHTTPProxyListWarning
+    , TargetHTTPProxyListWarning
+    , targetHTTPProxyListWarning
+    , thttpplwData
+    , thttpplwCode
+    , thttpplwMessage
+
+    -- * DiskAggregatedListWarning
+    , DiskAggregatedListWarning
+    , diskAggregatedListWarning
+    , dalwData
+    , dalwCode
+    , dalwMessage
+
+    -- * TargetPoolAggregatedListWarning
+    , TargetPoolAggregatedListWarning
+    , targetPoolAggregatedListWarning
+    , tpalwData
+    , tpalwCode
+    , tpalwMessage
+
+    -- * UsableSubnetworksAggregatedListWarning
+    , UsableSubnetworksAggregatedListWarning
+    , usableSubnetworksAggregatedListWarning
+    , usalwData
+    , usalwCode
+    , usalwMessage
+
+    -- * DisksScopedListWarning
+    , DisksScopedListWarning
+    , disksScopedListWarning
+    , dslwData
+    , dslwCode
+    , dslwMessage
+
+    -- * NodeTemplatesScopedListWarningDataItem
+    , NodeTemplatesScopedListWarningDataItem
+    , nodeTemplatesScopedListWarningDataItem
+    , ntslwdiValue
+    , ntslwdiKey
+
+    -- * TargetVPNGatewayAggregatedListItems
+    , TargetVPNGatewayAggregatedListItems
+    , targetVPNGatewayAggregatedListItems
+    , tvgaliAddtional
+
+    -- * DiskLabels
+    , DiskLabels
+    , diskLabels
+    , dlAddtional
+
+    -- * InstanceGroupManagerListWarningDataItem
+    , InstanceGroupManagerListWarningDataItem
+    , instanceGroupManagerListWarningDataItem
+    , igmlwdiValue
+    , igmlwdiKey
+
+    -- * InterconnectInterconnectType
+    , InterconnectInterconnectType (..)
+
+    -- * ForwardingRuleAggregatedListWarning
+    , ForwardingRuleAggregatedListWarning
+    , forwardingRuleAggregatedListWarning
+    , fralwData
+    , fralwCode
+    , fralwMessage
+
+    -- * InstanceGroupManagerListWarningCode
+    , InstanceGroupManagerListWarningCode (..)
+
+    -- * SSLPolicyWarningsItem
+    , SSLPolicyWarningsItem
+    , sslPolicyWarningsItem
+    , spwiData
+    , spwiCode
+    , spwiMessage
+
+    -- * RouterStatusBGPPeerStatusStatus
+    , RouterStatusBGPPeerStatusStatus (..)
+
+    -- * GlobalSetPolicyRequest
+    , GlobalSetPolicyRequest
+    , globalSetPolicyRequest
+    , gsprEtag
+    , gsprBindings
+    , gsprPolicy
+
+    -- * RegionAutoscalerListWarningDataItem
+    , RegionAutoscalerListWarningDataItem
+    , regionAutoscalerListWarningDataItem
+    , ralwdiaValue
+    , ralwdiaKey
+
+    -- * DiskListWarningCode
+    , DiskListWarningCode (..)
+
+    -- * GlobalSetLabelsRequestLabels
+    , GlobalSetLabelsRequestLabels
+    , globalSetLabelsRequestLabels
+    , gslrlAddtional
+
+    -- * TargetPoolsScopedListWarning
+    , TargetPoolsScopedListWarning
+    , targetPoolsScopedListWarning
+    , tpslwData
+    , tpslwCode
+    , tpslwMessage
+
+    -- * HealthStatus
+    , HealthStatus
+    , healthStatus
+    , hsIPAddress
+    , hsHealthState
+    , hsPort
+    , hsInstance
+
+    -- * TargetTCPProxyList
+    , TargetTCPProxyList
+    , targetTCPProxyList
+    , ttplNextPageToken
+    , ttplKind
+    , ttplItems
+    , ttplSelfLink
+    , ttplWarning
+    , ttplId
+
+    -- * Region
+    , Region
+    , region
+    , regeStatus
+    , regeZones
+    , regeKind
+    , regeSelfLink
+    , regeName
+    , regeCreationTimestamp
+    , regeQuotas
+    , regeId
+    , regeDescription
+    , regeDeprecated
+
+    -- * RegionAutoscalerListWarningCode
+    , RegionAutoscalerListWarningCode (..)
+
+    -- * OperationListWarningDataItem
+    , OperationListWarningDataItem
+    , operationListWarningDataItem
+    , olwdiValue
+    , olwdiKey
+
+    -- * GuestOSFeature
+    , GuestOSFeature
+    , guestOSFeature
+    , gofType
+
+    -- * VPNTunnel
+    , VPNTunnel
+    , vpnTunnel
+    , vtDetailedStatus
+    , vtStatus
+    , vtLocalTrafficSelector
+    , vtKind
+    , vtPeerIP
+    , vtRouter
+    , vtTargetVPNGateway
+    , vtRemoteTrafficSelector
+    , vtSelfLink
+    , vtSharedSecret
+    , vtName
+    , vtCreationTimestamp
+    , vtSharedSecretHash
+    , vtId
+    , vtIkeVersion
+    , vtRegion
+    , vtDescription
+
+    -- * InstanceGroupManagerAggregatedListWarning
+    , InstanceGroupManagerAggregatedListWarning
+    , instanceGroupManagerAggregatedListWarning
+    , igmalwData
+    , igmalwCode
+    , igmalwMessage
+
+    -- * DiskListWarningDataItem
+    , DiskListWarningDataItem
+    , diskListWarningDataItem
+    , dlwdiValue
+    , dlwdiKey
+
+    -- * CommitmentPlan
+    , CommitmentPlan (..)
+
+    -- * OperationListWarningCode
+    , OperationListWarningCode (..)
+
+    -- * SourceInstanceParams
+    , SourceInstanceParams
+    , sourceInstanceParams
+    , sipDiskConfigs
+
+    -- * AliasIPRange
+    , AliasIPRange
+    , aliasIPRange
+    , airIPCIdRRange
+    , airSubnetworkRangeName
+
+    -- * ForwardingRuleListWarningCode
+    , ForwardingRuleListWarningCode (..)
+
+    -- * NodeTypesScopedListWarningDataItem
+    , NodeTypesScopedListWarningDataItem
+    , nodeTypesScopedListWarningDataItem
+    , ntslwditValue
+    , ntslwditKey
+
+    -- * VPNTunnelsScopedListWarningCode
+    , VPNTunnelsScopedListWarningCode (..)
+
+    -- * TargetInstanceListWarning
+    , TargetInstanceListWarning
+    , targetInstanceListWarning
+    , tilwData
+    , tilwCode
+    , tilwMessage
+
+    -- * NodeTypesScopedListWarningCode
+    , NodeTypesScopedListWarningCode (..)
+
+    -- * NodeType
+    , NodeType
+    , nodeType
+    , ntKind
+    , ntZone
+    , ntCPUPlatform
+    , ntLocalSsdGb
+    , ntSelfLink
+    , ntName
+    , ntCreationTimestamp
+    , ntId
+    , ntGuestCPUs
+    , ntMemoryMb
+    , ntDescription
+    , ntDeprecated
+
+    -- * AuthorizationLoggingOptions
+    , AuthorizationLoggingOptions
+    , authorizationLoggingOptions
+    , aloPermissionType
+
+    -- * Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pRules
+    , pVersion
+    , pBindings
+    , pIAMOwned
+
+    -- * OperationAggregatedListWarning
+    , OperationAggregatedListWarning
+    , operationAggregatedListWarning
+    , oalwData
+    , oalwCode
+    , oalwMessage
+
+    -- * TargetInstanceAggregatedListWarningDataItem
+    , TargetInstanceAggregatedListWarningDataItem
+    , targetInstanceAggregatedListWarningDataItem
+    , tialwdiValue
+    , tialwdiKey
+
+    -- * OperationsScopedListWarning
+    , OperationsScopedListWarning
+    , operationsScopedListWarning
+    , oslwData
+    , oslwCode
+    , oslwMessage
+
+    -- * RegionDiskTypeListWarningDataItem
+    , RegionDiskTypeListWarningDataItem
+    , regionDiskTypeListWarningDataItem
+    , rdtlwdiValue
+    , rdtlwdiKey
+
+    -- * ForwardingRuleListWarningDataItem
+    , ForwardingRuleListWarningDataItem
+    , forwardingRuleListWarningDataItem
+    , frlwdiValue
+    , frlwdiKey
+
+    -- * Scheduling
+    , Scheduling
+    , scheduling
+    , sAutomaticRestart
+    , sNodeAffinities
+    , sOnHostMaintenance
+    , sPreemptible
+
+    -- * TargetInstanceAggregatedListWarningCode
+    , TargetInstanceAggregatedListWarningCode (..)
+
+    -- * RegionDiskTypeListWarningCode
+    , RegionDiskTypeListWarningCode (..)
+
+    -- * VPNTunnelsScopedListWarningDataItem
+    , VPNTunnelsScopedListWarningDataItem
+    , vpnTunnelsScopedListWarningDataItem
+    , vtslwdiValue
+    , vtslwdiKey
+
+    -- * InterconnectList
+    , InterconnectList
+    , interconnectList
+    , intnNextPageToken
+    , intnKind
+    , intnItems
+    , intnSelfLink
+    , intnWarning
+    , intnId
+
+    -- * TargetPoolListWarningDataItem
+    , TargetPoolListWarningDataItem
+    , targetPoolListWarningDataItem
+    , tplwdiValue
+    , tplwdiKey
+
+    -- * NodeTemplate
+    , NodeTemplate
+    , nodeTemplate
+    , nttStatus
+    , nttKind
+    , nttSelfLink
+    , nttName
+    , nttStatusMessage
+    , nttCreationTimestamp
+    , nttNodeAffinityLabels
+    , nttId
+    , nttNodeTypeFlexibility
+    , nttNodeType
+    , nttRegion
+    , nttDescription
+
+    -- * SubnetworkList
+    , SubnetworkList
+    , subnetworkList
+    , slNextPageToken
+    , slKind
+    , slItems
+    , slSelfLink
+    , slWarning
+    , slId
+
+    -- * AddressAddressType
+    , AddressAddressType (..)
+
+    -- * TargetPoolListWarningCode
+    , TargetPoolListWarningCode (..)
+
+    -- * ForwardingRulesScopedListWarning
+    , ForwardingRulesScopedListWarning
+    , forwardingRulesScopedListWarning
+    , frslwData
+    , frslwCode
+    , frslwMessage
+
+    -- * HTTPHealthCheckList
+    , HTTPHealthCheckList
+    , hTTPHealthCheckList
+    , httphclNextPageToken
+    , httphclKind
+    , httphclItems
+    , httphclSelfLink
+    , httphclWarning
+    , httphclId
+
+    -- * InstanceGroupManagersScopedListWarning
+    , InstanceGroupManagersScopedListWarning
+    , instanceGroupManagersScopedListWarning
+    , igmslwData
+    , igmslwCode
+    , igmslwMessage
+
+    -- * SSLPoliciesList
+    , SSLPoliciesList
+    , sslPoliciesList
+    , sslplNextPageToken
+    , sslplKind
+    , sslplItems
+    , sslplSelfLink
+    , sslplWarning
+    , sslplId
+
+    -- * NodeTemplatesScopedListWarningCode
+    , NodeTemplatesScopedListWarningCode (..)
+
+    -- * URLMapsValidateRequest
+    , URLMapsValidateRequest
+    , urlMapsValidateRequest
+    , umvrResource
+
+    -- * InstanceGroupManagersSetTargetPoolsRequest
+    , InstanceGroupManagersSetTargetPoolsRequest
+    , instanceGroupManagersSetTargetPoolsRequest
+    , igmstprFingerprint
+    , igmstprTargetPools
+
+    -- * NetworkListWarningCode
+    , NetworkListWarningCode (..)
+
+    -- * Commitment
+    , Commitment
+    , commitment
+    , cStatus
+    , cKind
+    , cPlan
+    , cResources
+    , cEndTimestamp
+    , cSelfLink
+    , cName
+    , cStatusMessage
+    , cCreationTimestamp
+    , cId
+    , cRegion
+    , cStartTimestamp
+    , cDescription
+
+    -- * HTTPSHealthCheckList
+    , HTTPSHealthCheckList
+    , httpsHealthCheckList
+    , hhclNextPageToken
+    , hhclKind
+    , hhclItems
+    , hhclSelfLink
+    , hhclWarning
+    , hhclId
+
+    -- * AddressListWarningDataItem
+    , AddressListWarningDataItem
+    , addressListWarningDataItem
+    , addValue
+    , addKey
+
+    -- * OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- * CommitmentListWarning
+    , CommitmentListWarning
+    , commitmentListWarning
+    , clwData
+    , clwCode
+    , clwMessage
+
+    -- * License
+    , License
+    , license
+    , lChargesUseFee
+    , lKind
+    , lResourceRequirements
+    , lTransferable
+    , lSelfLink
+    , lName
+    , lCreationTimestamp
+    , lId
+    , lDescription
+    , lLicenseCode
+
+    -- * PathRule
+    , PathRule
+    , pathRule
+    , prService
+    , prPaths
+
+    -- * LicenseCodeLicenseAlias
+    , LicenseCodeLicenseAlias
+    , licenseCodeLicenseAlias
+    , lclaSelfLink
+    , lclaDescription
+
+    -- * XpnHostListWarningCode
+    , XpnHostListWarningCode (..)
+
+    -- * InterconnectAttachmentsScopedListWarningDataItem
+    , InterconnectAttachmentsScopedListWarningDataItem
+    , interconnectAttachmentsScopedListWarningDataItem
+    , iaslwdiValue
+    , iaslwdiKey
+
+    -- * SecurityPolicyListWarningDataItem
+    , SecurityPolicyListWarningDataItem
+    , securityPolicyListWarningDataItem
+    , secValue
+    , secKey
+
+    -- * InterconnectAttachmentAggregatedListWarningCode
+    , InterconnectAttachmentAggregatedListWarningCode (..)
+
+    -- * AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- * CommitmentsScopedListWarningDataItem
+    , CommitmentsScopedListWarningDataItem
+    , commitmentsScopedListWarningDataItem
+    , cslwdiValue
+    , cslwdiKey
+
+    -- * InterconnectAttachment
+    , InterconnectAttachment
+    , interconnectAttachment
+    , iaState
+    , iaPartnerASN
+    , iaPairingKey
+    , iaKind
+    , iaCustomerRouterIPAddress
+    , iaPartnerMetadata
+    , iaRouter
+    , iaOperationalStatus
+    , iaSelfLink
+    , iaName
+    , iaBandwidth
+    , iaGoogleReferenceId
+    , iaCreationTimestamp
+    , iaEdgeAvailabilityDomain
+    , iaInterconnect
+    , iaAdminEnabled
+    , iaVLANTag8021q
+    , iaCloudRouterIPAddress
+    , iaId
+    , iaCandidateSubnets
+    , iaRegion
+    , iaType
+    , iaDescription
+    , iaPrivateInterconnectInfo
+
+    -- * InstanceList
+    , InstanceList
+    , instanceList
+    , insNextPageToken
+    , insKind
+    , insItems
+    , insSelfLink
+    , insWarning
+    , insId
+
+    -- * RegionSetLabelsRequestLabels
+    , RegionSetLabelsRequestLabels
+    , regionSetLabelsRequestLabels
+    , rslrlAddtional
+
+    -- * NetworkListWarningDataItem
+    , NetworkListWarningDataItem
+    , networkListWarningDataItem
+    , nlwdiValue
+    , nlwdiKey
+
+    -- * AddressListWarningCode
+    , AddressListWarningCode (..)
+
+    -- * NetworkPeeringState
+    , NetworkPeeringState (..)
+
+    -- * CacheKeyPolicy
+    , CacheKeyPolicy
+    , cacheKeyPolicy
+    , ckpQueryStringWhiteList
+    , ckpIncludeHost
+    , ckpIncludeProtocol
+    , ckpQueryStringBlackList
+    , ckpIncludeQueryString
+
+    -- * ZoneListWarningCode
+    , ZoneListWarningCode (..)
+
+    -- * CommitmentAggregatedListWarningDataItem
+    , CommitmentAggregatedListWarningDataItem
+    , commitmentAggregatedListWarningDataItem
+    , calwdiValue
+    , calwdiKey
+
+    -- * RegionInstanceGroupListWarningDataItem
+    , RegionInstanceGroupListWarningDataItem
+    , regionInstanceGroupListWarningDataItem
+    , riglwdiValue
+    , riglwdiKey
+
+    -- * SubnetworkAggregatedListItems
+    , SubnetworkAggregatedListItems
+    , subnetworkAggregatedListItems
+    , saliAddtional
+
+    -- * InterconnectAttachmentAggregatedListWarningDataItem
+    , InterconnectAttachmentAggregatedListWarningDataItem
+    , interconnectAttachmentAggregatedListWarningDataItem
+    , iaalwdiValue
+    , iaalwdiKey
+
+    -- * AuthorizationLoggingOptionsPermissionType
+    , AuthorizationLoggingOptionsPermissionType (..)
+
+    -- * InterconnectAttachmentListWarning
+    , InterconnectAttachmentListWarning
+    , interconnectAttachmentListWarning
+    , intData
+    , intCode
+    , intMessage
+
+    -- * InterconnectOutageNotificationIssueType
+    , InterconnectOutageNotificationIssueType (..)
+
+    -- * CommitmentsScopedListWarningCode
+    , CommitmentsScopedListWarningCode (..)
+
+    -- * Condition
+    , Condition
+    , condition
+    , cOp
+    , cIAM
+    , cValues
+    , cValue
+    , cSys
+    , cSvc
+
+    -- * AddressAggregatedListWarning
+    , AddressAggregatedListWarning
+    , addressAggregatedListWarning
+    , addData
+    , addCode
+    , addMessage
+
+    -- * ManagedInstanceLastAttempt
+    , ManagedInstanceLastAttempt
+    , managedInstanceLastAttempt
+    , milaErrors
+
+    -- * LicensesListResponseWarning
+    , LicensesListResponseWarning
+    , licensesListResponseWarning
+    , llrwData
+    , llrwCode
+    , llrwMessage
+
+    -- * AutoscalerStatusDetails
+    , AutoscalerStatusDetails
+    , autoscalerStatusDetails
+    , asdType
+    , asdMessage
+
+    -- * BackendServiceList
+    , BackendServiceList
+    , backendServiceList
+    , bslNextPageToken
+    , bslKind
+    , bslItems
+    , bslSelfLink
+    , bslWarning
+    , bslId
+
+    -- * XpnHostListWarningDataItem
+    , XpnHostListWarningDataItem
+    , xpnHostListWarningDataItem
+    , xhlwdiValue
+    , xhlwdiKey
+
+    -- * InterconnectAttachmentsScopedListWarningCode
+    , InterconnectAttachmentsScopedListWarningCode (..)
+
+    -- * SecurityPolicyListWarningCode
+    , SecurityPolicyListWarningCode (..)
+
+    -- * ZoneListWarningDataItem
+    , ZoneListWarningDataItem
+    , zoneListWarningDataItem
+    , zlwdiValue
+    , zlwdiKey
+
+    -- * RegionSetPolicyRequest
+    , RegionSetPolicyRequest
+    , regionSetPolicyRequest
+    , rsprEtag
+    , rsprBindings
+    , rsprPolicy
+
+    -- * CommitmentAggregatedListWarningCode
+    , CommitmentAggregatedListWarningCode (..)
+
+    -- * RegionInstanceGroupListWarningCode
+    , RegionInstanceGroupListWarningCode (..)
+
+    -- * InstanceGroupsScopedListWarning
+    , InstanceGroupsScopedListWarning
+    , instanceGroupsScopedListWarning
+    , igslwData
+    , igslwCode
+    , igslwMessage
+
+    -- * AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- * InstanceGroupsScopedListWarningCode
+    , InstanceGroupsScopedListWarningCode (..)
+
+    -- * InterconnectOperationalStatus
+    , InterconnectOperationalStatus (..)
+
+    -- * InstanceGroupsScopedListWarningDataItem
+    , InstanceGroupsScopedListWarningDataItem
+    , instanceGroupsScopedListWarningDataItem
+    , igslwdiValue
+    , igslwdiKey
+
+    -- * SecurityPolicyRuleMatcherConfig
+    , SecurityPolicyRuleMatcherConfig
+    , securityPolicyRuleMatcherConfig
+    , sprmcSrcIPRanges
+
+    -- * LicensesListResponseWarningDataItem
+    , LicensesListResponseWarningDataItem
+    , licensesListResponseWarningDataItem
+    , llrwdiValue
+    , llrwdiKey
+
+    -- * LicensesListResponseWarningCode
+    , LicensesListResponseWarningCode (..)
+
+    -- * XpnHostListWarning
+    , XpnHostListWarning
+    , xpnHostListWarning
+    , xhlwData
+    , xhlwCode
+    , xhlwMessage
+
+    -- * ResourceGroupReference
+    , ResourceGroupReference
+    , resourceGroupReference
+    , rgrGroup
+
+    -- * VMEndpointNATMAppingsList
+    , VMEndpointNATMAppingsList
+    , vMEndpointNATMAppingsList
+    , vmenatmalNextPageToken
+    , vmenatmalKind
+    , vmenatmalResult
+    , vmenatmalSelfLink
+    , vmenatmalWarning
+    , vmenatmalId
+
+    -- * Firewall
+    , Firewall
+    , firewall
+    , fSourceTags
+    , fSourceServiceAccounts
+    , fPriority
+    , fDirection
+    , fKind
+    , fDisabled
+    , fTargetTags
+    , fNetwork
+    , fSourceRanges
+    , fSelfLink
+    , fName
+    , fDenied
+    , fCreationTimestamp
+    , fId
+    , fAllowed
+    , fDestinationRanges
+    , fLogConfig
+    , fTargetServiceAccounts
+    , fDescription
+
+    -- * InterconnectAttachmentsScopedListWarning
+    , InterconnectAttachmentsScopedListWarning
+    , interconnectAttachmentsScopedListWarning
+    , iaslwData
+    , iaslwCode
+    , iaslwMessage
+
+    -- * HostRule
+    , HostRule
+    , hostRule
+    , hrHosts
+    , hrDescription
+    , hrPathMatcher
+
+    -- * SecurityPolicyListWarning
+    , SecurityPolicyListWarning
+    , securityPolicyListWarning
+    , secData
+    , secCode
+    , secMessage
+
+    -- * Quota
+    , Quota
+    , quota
+    , qMetric
+    , qLimit
+    , qUsage
+
+    -- * InstanceGroup
+    , InstanceGroup
+    , instanceGroup
+    , ig1Size
+    , ig1Kind
+    , ig1Fingerprint
+    , ig1Network
+    , ig1Zone
+    , ig1SelfLink
+    , ig1Name
+    , ig1CreationTimestamp
+    , ig1Subnetwork
+    , ig1Id
+    , ig1Region
+    , ig1Description
+    , ig1NamedPorts
+
+    -- * AddressListWarning
+    , AddressListWarning
+    , addressListWarning
+    , alwlData
+    , alwlCode
+    , alwlMessage
+
+    -- * RegionSetLabelsRequest
+    , RegionSetLabelsRequest
+    , regionSetLabelsRequest
+    , rslrLabels
+    , rslrLabelFingerprint
+
+    -- * RouterInterface
+    , RouterInterface
+    , routerInterface
+    , riLinkedInterconnectAttachment
+    , riName
+    , riManagementType
+    , riIPRange
+    , riLinkedVPNTunnel
+
+    -- * InstanceWithNamedPortsStatus
+    , InstanceWithNamedPortsStatus (..)
+
+    -- * NetworkListWarning
+    , NetworkListWarning
+    , networkListWarning
+    , nlwData
+    , nlwCode
+    , nlwMessage
+
+    -- * TCPHealthCheckProxyHeader
+    , TCPHealthCheckProxyHeader (..)
+
+    -- * SnapshotList
+    , SnapshotList
+    , snapshotList
+    , snaNextPageToken
+    , snaKind
+    , snaItems
+    , snaSelfLink
+    , snaWarning
+    , snaId
+
+    -- * InterconnectDiagnostics
+    , InterconnectDiagnostics
+    , interconnectDiagnostics
+    , idMACAddress
+    , idArpCaches
+    , idLinks
+
+    -- * CommitmentListWarningCode
+    , CommitmentListWarningCode (..)
+
+    -- * LicenseCode
+    , LicenseCode
+    , licenseCode
+    , lcState
+    , lcKind
+    , lcTransferable
+    , lcSelfLink
+    , lcName
+    , lcCreationTimestamp
+    , lcId
+    , lcLicenseAlias
+    , lcDescription
+
+    -- * TestFailure
+    , TestFailure
+    , testFailure
+    , tfPath
+    , tfExpectedService
+    , tfHost
+    , tfActualService
+
+    -- * CommitmentListWarningDataItem
+    , CommitmentListWarningDataItem
+    , commitmentListWarningDataItem
+    , clwdiValue
+    , clwdiKey
+
+    -- * ConditionIAM
+    , ConditionIAM (..)
+
+    -- * CommitmentsScopedListWarning
+    , CommitmentsScopedListWarning
+    , commitmentsScopedListWarning
+    , cslwData
+    , cslwCode
+    , cslwMessage
+
+    -- * SerialPortOutput
+    , SerialPortOutput
+    , serialPortOutput
+    , spoNext
+    , spoContents
+    , spoKind
+    , spoStart
+    , spoSelfLink
+
+    -- * TargetVPNGatewayAggregatedList
+    , TargetVPNGatewayAggregatedList
+    , targetVPNGatewayAggregatedList
+    , tvgalNextPageToken
+    , tvgalKind
+    , tvgalItems
+    , tvgalSelfLink
+    , tvgalWarning
+    , tvgalId
+
+    -- * InterconnectAttachmentAggregatedListWarning
+    , InterconnectAttachmentAggregatedListWarning
+    , interconnectAttachmentAggregatedListWarning
+    , iaalwData
+    , iaalwCode
+    , iaalwMessage
+
+    -- * MetadataItemsItem
+    , MetadataItemsItem
+    , metadataItemsItem
+    , miiValue
+    , miiKey
+
+    -- * SignedURLKey
+    , SignedURLKey
+    , signedURLKey
+    , sukKeyValue
+    , sukKeyName
+
+    -- * TargetHTTPSProxy
+    , TargetHTTPSProxy
+    , targetHTTPSProxy
+    , thpSSLPolicy
+    , thpURLMap
+    , thpSSLCertificates
+    , thpQuicOverride
+    , thpKind
+    , thpSelfLink
+    , thpName
+    , thpCreationTimestamp
+    , thpId
+    , thpDescription
+
+    -- * ConnectionDraining
+    , ConnectionDraining
+    , connectionDraining
+    , cdDrainingTimeoutSec
+
+    -- * InterconnectAttachmentListWarningDataItem
+    , InterconnectAttachmentListWarningDataItem
+    , interconnectAttachmentListWarningDataItem
+    , ialwdiValue
+    , ialwdiKey
+
+    -- * AddressAggregatedListWarningCode
+    , AddressAggregatedListWarningCode (..)
+
+    -- * CacheInvalidationRule
+    , CacheInvalidationRule
+    , cacheInvalidationRule
+    , cirPath
+    , cirHost
+
+    -- * AddressAggregatedListWarningDataItem
+    , AddressAggregatedListWarningDataItem
+    , addressAggregatedListWarningDataItem
+    , aalwdiaValue
+    , aalwdiaKey
+
+    -- * InterconnectAttachmentListWarningCode
+    , InterconnectAttachmentListWarningCode (..)
+
+    -- * TargetVPNGatewaysScopedList
+    , TargetVPNGatewaysScopedList
+    , targetVPNGatewaysScopedList
+    , tvgslTargetVPNGateways
+    , tvgslWarning
+
+    -- * CommitmentAggregatedListWarning
+    , CommitmentAggregatedListWarning
+    , commitmentAggregatedListWarning
+    , calwData
+    , calwCode
+    , calwMessage
+
+    -- * RegionInstanceGroupListWarning
+    , RegionInstanceGroupListWarning
+    , regionInstanceGroupListWarning
+    , riglwData
+    , riglwCode
+    , riglwMessage
+
+    -- * AccessConfig
+    , AccessConfig
+    , accessConfig
+    , acNetworkTier
+    , acSetPublicPtr
+    , acKind
+    , acName
+    , acNATIP
+    , acPublicPtrDomainName
+    , acType
+
+    -- * LogConfig
+    , LogConfig
+    , logConfig
+    , lcCloudAudit
+    , lcDataAccess
+    , lcCounter
+
+    -- * ZoneListWarning
+    , ZoneListWarning
+    , zoneListWarning
+    , zlwData
+    , zlwCode
+    , zlwMessage
+
+    -- * ManagedInstanceLastAttemptErrorsErrorsItem
+    , ManagedInstanceLastAttemptErrorsErrorsItem
+    , managedInstanceLastAttemptErrorsErrorsItem
+    , milaeeiLocation
+    , milaeeiCode
+    , milaeeiMessage
+
+    -- * InstancesScopedListWarningCode
+    , InstancesScopedListWarningCode (..)
+
+    -- * InstancesScopedListWarningDataItem
+    , InstancesScopedListWarningDataItem
+    , instancesScopedListWarningDataItem
+    , islwdiValue
+    , islwdiKey
+
+    -- * SnapshotLabels
+    , SnapshotLabels
+    , snapshotLabels
+    , slAddtional
+
+    -- * BackendServicesScopedListWarningDataItem
+    , BackendServicesScopedListWarningDataItem
+    , backendServicesScopedListWarningDataItem
+    , bsslwdiValue
+    , bsslwdiKey
+
+    -- * NodeTemplateAggregatedListItems
+    , NodeTemplateAggregatedListItems
+    , nodeTemplateAggregatedListItems
+    , ntaliAddtional
+
+    -- * BackendService
+    , BackendService
+    , backendService
+    , bsSessionAffinity
+    , bsBackends
+    , bsAffinityCookieTtlSec
+    , bsIap
+    , bsLoadBalancingScheme
+    , bsKind
+    , bsEnableCDN
+    , bsFingerprint
+    , bsProtocol
+    , bsSecurityPolicy
+    , bsCdnPolicy
+    , bsSelfLink
+    , bsName
+    , bsCreationTimestamp
+    , bsId
+    , bsRegion
+    , bsConnectionDraining
+    , bsTimeoutSec
+    , bsDescription
+    , bsPortName
+    , bsHealthChecks
+    , bsPort
+
+    -- * InstanceListWarning
+    , InstanceListWarning
+    , instanceListWarning
+    , insData
+    , insCode
+    , insMessage
+
+    -- * InstanceMoveRequest
+    , InstanceMoveRequest
+    , instanceMoveRequest
+    , imrTargetInstance
+    , imrDestinationZone
+
+    -- * XpnResourceIdType
+    , XpnResourceIdType (..)
+
+    -- * InterconnectDiagnosticsARPEntry
+    , InterconnectDiagnosticsARPEntry
+    , interconnectDiagnosticsARPEntry
+    , idarpeIPAddress
+    , idarpeMACAddress
+
+    -- * BackendServicesScopedListWarningCode
+    , BackendServicesScopedListWarningCode (..)
+
+    -- * CommitmentList
+    , CommitmentList
+    , commitmentList
+    , clNextPageToken
+    , clKind
+    , clItems
+    , clSelfLink
+    , clWarning
+    , clId
+
+    -- * TargetPoolSessionAffinity
+    , TargetPoolSessionAffinity (..)
+
+    -- * InstancesSetLabelsRequestLabels
+    , InstancesSetLabelsRequestLabels
+    , instancesSetLabelsRequestLabels
+    , islrlAddtional
+
+    -- * InstanceGroupsScopedList
+    , InstanceGroupsScopedList
+    , instanceGroupsScopedList
+    , igslWarning
+    , igslInstanceGroups
+
+    -- * InstancesStartWithEncryptionKeyRequest
+    , InstancesStartWithEncryptionKeyRequest
+    , instancesStartWithEncryptionKeyRequest
+    , iswekrDisks
+
+    -- * HTTPSHealthCheck
+    , HTTPSHealthCheck
+    , httpsHealthCheck
+    , hhcResponse
+    , hhcRequestPath
+    , hhcHost
+    , hhcProxyHeader
+    , hhcPortName
+    , hhcPort
+
+    -- * AutoscalerStatus
+    , AutoscalerStatus (..)
+
+    -- * ImageRawDiskContainerType
+    , ImageRawDiskContainerType (..)
+
+    -- * InstanceAggregatedListWarningCode
+    , InstanceAggregatedListWarningCode (..)
+
+    -- * VPNTunnelAggregatedListItems
+    , VPNTunnelAggregatedListItems
+    , vpnTunnelAggregatedListItems
+    , vtaliAddtional
+
+    -- * ResourceCommitmentType
+    , ResourceCommitmentType (..)
+
+    -- * InstanceAggregatedListWarningDataItem
+    , InstanceAggregatedListWarningDataItem
+    , instanceAggregatedListWarningDataItem
+    , insValue
+    , insKey
+
+    -- * Tags
+    , Tags
+    , tags
+    , tFingerprint
+    , tItems
+
+    -- * AddressAggregatedList
+    , AddressAggregatedList
+    , addressAggregatedList
+    , addNextPageToken
+    , addKind
+    , addItems
+    , addSelfLink
+    , addWarning
+    , addId
+
+    -- * InterconnectAttachmentList
+    , InterconnectAttachmentList
+    , interconnectAttachmentList
+    , ialaNextPageToken
+    , ialaKind
+    , ialaItems
+    , ialaSelfLink
+    , ialaWarning
+    , ialaId
+
+    -- * OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- * ForwardingRuleNetworkTier
+    , ForwardingRuleNetworkTier (..)
+
+    -- * URLMapTest
+    , URLMapTest
+    , urlMapTest
+    , umtPath
+    , umtService
+    , umtHost
+    , umtDescription
+
+    -- * HTTPSHealthCheckListWarning
+    , HTTPSHealthCheckListWarning
+    , httpsHealthCheckListWarning
+    , hhclwData
+    , hhclwCode
+    , hhclwMessage
+
+    -- * NodeTypeAggregatedListItems
+    , NodeTypeAggregatedListItems
+    , nodeTypeAggregatedListItems
+    , nAddtional
+
+    -- * RoutersPreviewResponse
+    , RoutersPreviewResponse
+    , routersPreviewResponse
+    , rprResource
+
+    -- * LicensesListResponse
+    , LicensesListResponse
+    , licensesListResponse
+    , llrNextPageToken
+    , llrItems
+    , llrSelfLink
+    , llrWarning
+    , llrId
+
+    -- * BackendServiceAggregatedListWarningDataItem
+    , BackendServiceAggregatedListWarningDataItem
+    , backendServiceAggregatedListWarningDataItem
+    , bsalwdiValue
+    , bsalwdiKey
+
+    -- * Instance
+    , Instance
+    , instance'
+    , i1Status
+    , i1ServiceAccounts
+    , i1DeletionProtection
+    , i1NetworkInterfaces
+    , i1Kind
+    , i1Zone
+    , i1CPUPlatform
+    , i1SelfLink
+    , i1GuestAccelerators
+    , i1Name
+    , i1StatusMessage
+    , i1CreationTimestamp
+    , i1MachineType
+    , i1Metadata
+    , i1Id
+    , i1Labels
+    , i1StartRestricted
+    , i1Scheduling
+    , i1MinCPUPlatform
+    , i1Disks
+    , i1CanIPForward
+    , i1LabelFingerprint
+    , i1Description
+    , i1Tags
+
+    -- * PathMatcher
+    , PathMatcher
+    , pathMatcher
+    , pmDefaultService
+    , pmName
+    , pmPathRules
+    , pmDescription
+
+    -- * BackendServiceListWarning
+    , BackendServiceListWarning
+    , backendServiceListWarning
+    , bslwData
+    , bslwCode
+    , bslwMessage
+
+    -- * BackendServiceAggregatedListWarningCode
+    , BackendServiceAggregatedListWarningCode (..)
     ) where
 
 import           Network.Google.Compute.Types.Product
diff --git a/gen/Network/Google/Compute/Types/Product.hs b/gen/Network/Google/Compute/Types/Product.hs
--- a/gen/Network/Google/Compute/Types/Product.hs
+++ b/gen/Network/Google/Compute/Types/Product.hs
@@ -20,20493 +20,43740 @@
 import           Network.Google.Compute.Types.Sum
 import           Network.Google.Prelude
 
--- | Contains a list of TargetHttpsProxy resources.
---
--- /See:/ 'targetHTTPSProxyList' smart constructor.
-data TargetHTTPSProxyList = TargetHTTPSProxyList'
-    { _thplNextPageToken :: !(Maybe Text)
-    , _thplKind          :: !Text
-    , _thplItems         :: !(Maybe [TargetHTTPSProxy])
-    , _thplSelfLink      :: !(Maybe Text)
-    , _thplId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetHTTPSProxyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thplNextPageToken'
---
--- * 'thplKind'
---
--- * 'thplItems'
---
--- * 'thplSelfLink'
---
--- * 'thplId'
-targetHTTPSProxyList
-    :: TargetHTTPSProxyList
-targetHTTPSProxyList =
-    TargetHTTPSProxyList'
-    { _thplNextPageToken = Nothing
-    , _thplKind = "compute#targetHttpsProxyList"
-    , _thplItems = Nothing
-    , _thplSelfLink = Nothing
-    , _thplId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-thplNextPageToken :: Lens' TargetHTTPSProxyList (Maybe Text)
-thplNextPageToken
-  = lens _thplNextPageToken
-      (\ s a -> s{_thplNextPageToken = a})
-
--- | Type of resource. Always compute#targetHttpsProxyList for lists of
--- target HTTPS proxies.
-thplKind :: Lens' TargetHTTPSProxyList Text
-thplKind = lens _thplKind (\ s a -> s{_thplKind = a})
-
--- | A list of TargetHttpsProxy resources.
-thplItems :: Lens' TargetHTTPSProxyList [TargetHTTPSProxy]
-thplItems
-  = lens _thplItems (\ s a -> s{_thplItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-thplSelfLink :: Lens' TargetHTTPSProxyList (Maybe Text)
-thplSelfLink
-  = lens _thplSelfLink (\ s a -> s{_thplSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-thplId :: Lens' TargetHTTPSProxyList (Maybe Text)
-thplId = lens _thplId (\ s a -> s{_thplId = a})
-
-instance FromJSON TargetHTTPSProxyList where
-        parseJSON
-          = withObject "TargetHTTPSProxyList"
-              (\ o ->
-                 TargetHTTPSProxyList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetHttpsProxyList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetHTTPSProxyList where
-        toJSON TargetHTTPSProxyList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _thplNextPageToken,
-                  Just ("kind" .= _thplKind),
-                  ("items" .=) <$> _thplItems,
-                  ("selfLink" .=) <$> _thplSelfLink,
-                  ("id" .=) <$> _thplId])
-
---
--- /See:/ 'routersScopedList' smart constructor.
-data RoutersScopedList = RoutersScopedList'
-    { _rslRouters :: !(Maybe [Router])
-    , _rslWarning :: !(Maybe RoutersScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoutersScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rslRouters'
---
--- * 'rslWarning'
-routersScopedList
-    :: RoutersScopedList
-routersScopedList =
-    RoutersScopedList'
-    { _rslRouters = Nothing
-    , _rslWarning = Nothing
-    }
-
--- | List of routers contained in this scope.
-rslRouters :: Lens' RoutersScopedList [Router]
-rslRouters
-  = lens _rslRouters (\ s a -> s{_rslRouters = a}) .
-      _Default
-      . _Coerce
-
--- | Informational warning which replaces the list of routers when the list
--- is empty.
-rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
-rslWarning
-  = lens _rslWarning (\ s a -> s{_rslWarning = a})
-
-instance FromJSON RoutersScopedList where
-        parseJSON
-          = withObject "RoutersScopedList"
-              (\ o ->
-                 RoutersScopedList' <$>
-                   (o .:? "routers" .!= mempty) <*> (o .:? "warning"))
-
-instance ToJSON RoutersScopedList where
-        toJSON RoutersScopedList'{..}
-          = object
-              (catMaybes
-                 [("routers" .=) <$> _rslRouters,
-                  ("warning" .=) <$> _rslWarning])
-
---
--- /See:/ 'routerStatusResponse' smart constructor.
-data RouterStatusResponse = RouterStatusResponse'
-    { _rsrKind   :: !Text
-    , _rsrResult :: !(Maybe RouterStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterStatusResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rsrKind'
---
--- * 'rsrResult'
-routerStatusResponse
-    :: RouterStatusResponse
-routerStatusResponse =
-    RouterStatusResponse'
-    { _rsrKind = "compute#routerStatusResponse"
-    , _rsrResult = Nothing
-    }
-
--- | Type of resource.
-rsrKind :: Lens' RouterStatusResponse Text
-rsrKind = lens _rsrKind (\ s a -> s{_rsrKind = a})
-
-rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
-rsrResult
-  = lens _rsrResult (\ s a -> s{_rsrResult = a})
-
-instance FromJSON RouterStatusResponse where
-        parseJSON
-          = withObject "RouterStatusResponse"
-              (\ o ->
-                 RouterStatusResponse' <$>
-                   (o .:? "kind" .!= "compute#routerStatusResponse") <*>
-                     (o .:? "result"))
-
-instance ToJSON RouterStatusResponse where
-        toJSON RouterStatusResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _rsrKind),
-                  ("result" .=) <$> _rsrResult])
-
---
--- /See:/ 'regionInstanceGroupManagersDeleteInstancesRequest' smart constructor.
-newtype RegionInstanceGroupManagersDeleteInstancesRequest = RegionInstanceGroupManagersDeleteInstancesRequest'
-    { _rigmdirInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmdirInstances'
-regionInstanceGroupManagersDeleteInstancesRequest
-    :: RegionInstanceGroupManagersDeleteInstancesRequest
-regionInstanceGroupManagersDeleteInstancesRequest =
-    RegionInstanceGroupManagersDeleteInstancesRequest'
-    { _rigmdirInstances = Nothing
-    }
-
--- | The names of one or more instances to delete.
-rigmdirInstances :: Lens' RegionInstanceGroupManagersDeleteInstancesRequest [Text]
-rigmdirInstances
-  = lens _rigmdirInstances
-      (\ s a -> s{_rigmdirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupManagersDeleteInstancesRequest
-         where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersDeleteInstancesRequest"
-              (\ o ->
-                 RegionInstanceGroupManagersDeleteInstancesRequest'
-                   <$> (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupManagersDeleteInstancesRequest
-         where
-        toJSON
-          RegionInstanceGroupManagersDeleteInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _rigmdirInstances])
-
---
--- /See:/ 'addressesScopedList' smart constructor.
-data AddressesScopedList = AddressesScopedList'
-    { _aslAddresses :: !(Maybe [Address])
-    , _aslWarning   :: !(Maybe AddressesScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aslAddresses'
---
--- * 'aslWarning'
-addressesScopedList
-    :: AddressesScopedList
-addressesScopedList =
-    AddressesScopedList'
-    { _aslAddresses = Nothing
-    , _aslWarning = Nothing
-    }
-
--- | [Output Only] List of addresses contained in this scope.
-aslAddresses :: Lens' AddressesScopedList [Address]
-aslAddresses
-  = lens _aslAddresses (\ s a -> s{_aslAddresses = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Informational warning which replaces the list of addresses
--- when the list is empty.
-aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)
-aslWarning
-  = lens _aslWarning (\ s a -> s{_aslWarning = a})
-
-instance FromJSON AddressesScopedList where
-        parseJSON
-          = withObject "AddressesScopedList"
-              (\ o ->
-                 AddressesScopedList' <$>
-                   (o .:? "addresses" .!= mempty) <*> (o .:? "warning"))
-
-instance ToJSON AddressesScopedList where
-        toJSON AddressesScopedList'{..}
-          = object
-              (catMaybes
-                 [("addresses" .=) <$> _aslAddresses,
-                  ("warning" .=) <$> _aslWarning])
-
---
--- /See:/ 'operationWarningsItemDataItem' smart constructor.
-data OperationWarningsItemDataItem = OperationWarningsItemDataItem'
-    { _owidiValue :: !(Maybe Text)
-    , _owidiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'owidiValue'
---
--- * 'owidiKey'
-operationWarningsItemDataItem
-    :: OperationWarningsItemDataItem
-operationWarningsItemDataItem =
-    OperationWarningsItemDataItem'
-    { _owidiValue = Nothing
-    , _owidiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)
-owidiValue
-  = lens _owidiValue (\ s a -> s{_owidiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)
-owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})
-
-instance FromJSON OperationWarningsItemDataItem where
-        parseJSON
-          = withObject "OperationWarningsItemDataItem"
-              (\ o ->
-                 OperationWarningsItemDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON OperationWarningsItemDataItem where
-        toJSON OperationWarningsItemDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _owidiValue,
-                  ("key" .=) <$> _owidiKey])
-
---
--- /See:/ 'regionInstanceGroupsListInstancesRequest' smart constructor.
-data RegionInstanceGroupsListInstancesRequest = RegionInstanceGroupsListInstancesRequest'
-    { _riglirInstanceState :: !(Maybe RegionInstanceGroupsListInstancesRequestInstanceState)
-    , _riglirPortName      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupsListInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riglirInstanceState'
---
--- * 'riglirPortName'
-regionInstanceGroupsListInstancesRequest
-    :: RegionInstanceGroupsListInstancesRequest
-regionInstanceGroupsListInstancesRequest =
-    RegionInstanceGroupsListInstancesRequest'
-    { _riglirInstanceState = Nothing
-    , _riglirPortName = Nothing
-    }
-
--- | Instances in which state should be returned. Valid options are: \'ALL\',
--- \'RUNNING\'. By default, it lists all instances.
-riglirInstanceState :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe RegionInstanceGroupsListInstancesRequestInstanceState)
-riglirInstanceState
-  = lens _riglirInstanceState
-      (\ s a -> s{_riglirInstanceState = a})
-
--- | Name of port user is interested in. It is optional. If it is set, only
--- information about this ports will be returned. If it is not set, all the
--- named ports will be returned. Always lists all instances.
-riglirPortName :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe Text)
-riglirPortName
-  = lens _riglirPortName
-      (\ s a -> s{_riglirPortName = a})
-
-instance FromJSON
-         RegionInstanceGroupsListInstancesRequest where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupsListInstancesRequest"
-              (\ o ->
-                 RegionInstanceGroupsListInstancesRequest' <$>
-                   (o .:? "instanceState") <*> (o .:? "portName"))
-
-instance ToJSON
-         RegionInstanceGroupsListInstancesRequest where
-        toJSON RegionInstanceGroupsListInstancesRequest'{..}
-          = object
-              (catMaybes
-                 [("instanceState" .=) <$> _riglirInstanceState,
-                  ("portName" .=) <$> _riglirPortName])
-
---
--- /See:/ 'instanceGroupManagersAbandonInstancesRequest' smart constructor.
-newtype InstanceGroupManagersAbandonInstancesRequest = InstanceGroupManagersAbandonInstancesRequest'
-    { _igmairInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmairInstances'
-instanceGroupManagersAbandonInstancesRequest
-    :: InstanceGroupManagersAbandonInstancesRequest
-instanceGroupManagersAbandonInstancesRequest =
-    InstanceGroupManagersAbandonInstancesRequest'
-    { _igmairInstances = Nothing
-    }
-
--- | The URL for one or more instances to abandon from the managed instance
--- group.
-igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]
-igmairInstances
-  = lens _igmairInstances
-      (\ s a -> s{_igmairInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagersAbandonInstancesRequest where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersAbandonInstancesRequest"
-              (\ o ->
-                 InstanceGroupManagersAbandonInstancesRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         InstanceGroupManagersAbandonInstancesRequest where
-        toJSON
-          InstanceGroupManagersAbandonInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _igmairInstances])
-
--- | [Output Only] A map of scoped machine type lists.
---
--- /See:/ 'machineTypeAggregatedListItems' smart constructor.
-newtype MachineTypeAggregatedListItems = MachineTypeAggregatedListItems'
-    { _mtaliAddtional :: HashMap Text MachineTypesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypeAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtaliAddtional'
-machineTypeAggregatedListItems
-    :: HashMap Text MachineTypesScopedList -- ^ 'mtaliAddtional'
-    -> MachineTypeAggregatedListItems
-machineTypeAggregatedListItems pMtaliAddtional_ =
-    MachineTypeAggregatedListItems'
-    { _mtaliAddtional = _Coerce # pMtaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of machine types.
-mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)
-mtaliAddtional
-  = lens _mtaliAddtional
-      (\ s a -> s{_mtaliAddtional = a})
-      . _Coerce
-
-instance FromJSON MachineTypeAggregatedListItems
-         where
-        parseJSON
-          = withObject "MachineTypeAggregatedListItems"
-              (\ o ->
-                 MachineTypeAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON MachineTypeAggregatedListItems where
-        toJSON = toJSON . _mtaliAddtional
-
--- | [Output Only] A map of scoped disk type lists.
---
--- /See:/ 'diskTypeAggregatedListItems' smart constructor.
-newtype DiskTypeAggregatedListItems = DiskTypeAggregatedListItems'
-    { _dtaliAddtional :: HashMap Text DiskTypesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypeAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtaliAddtional'
-diskTypeAggregatedListItems
-    :: HashMap Text DiskTypesScopedList -- ^ 'dtaliAddtional'
-    -> DiskTypeAggregatedListItems
-diskTypeAggregatedListItems pDtaliAddtional_ =
-    DiskTypeAggregatedListItems'
-    { _dtaliAddtional = _Coerce # pDtaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of disk types.
-dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)
-dtaliAddtional
-  = lens _dtaliAddtional
-      (\ s a -> s{_dtaliAddtional = a})
-      . _Coerce
-
-instance FromJSON DiskTypeAggregatedListItems where
-        parseJSON
-          = withObject "DiskTypeAggregatedListItems"
-              (\ o ->
-                 DiskTypeAggregatedListItems' <$> (parseJSONObject o))
-
-instance ToJSON DiskTypeAggregatedListItems where
-        toJSON = toJSON . _dtaliAddtional
-
--- | Contains a list of routers.
---
--- /See:/ 'routerAggregatedList' smart constructor.
-data RouterAggregatedList = RouterAggregatedList'
-    { _ralNextPageToken :: !(Maybe Text)
-    , _ralKind          :: !Text
-    , _ralItems         :: !(Maybe RouterAggregatedListItems)
-    , _ralSelfLink      :: !(Maybe Text)
-    , _ralId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ralNextPageToken'
---
--- * 'ralKind'
---
--- * 'ralItems'
---
--- * 'ralSelfLink'
---
--- * 'ralId'
-routerAggregatedList
-    :: RouterAggregatedList
-routerAggregatedList =
-    RouterAggregatedList'
-    { _ralNextPageToken = Nothing
-    , _ralKind = "compute#routerAggregatedList"
-    , _ralItems = Nothing
-    , _ralSelfLink = Nothing
-    , _ralId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)
-ralNextPageToken
-  = lens _ralNextPageToken
-      (\ s a -> s{_ralNextPageToken = a})
-
--- | Type of resource.
-ralKind :: Lens' RouterAggregatedList Text
-ralKind = lens _ralKind (\ s a -> s{_ralKind = a})
-
--- | A map of scoped router lists.
-ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)
-ralItems = lens _ralItems (\ s a -> s{_ralItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)
-ralSelfLink
-  = lens _ralSelfLink (\ s a -> s{_ralSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-ralId :: Lens' RouterAggregatedList (Maybe Text)
-ralId = lens _ralId (\ s a -> s{_ralId = a})
-
-instance FromJSON RouterAggregatedList where
-        parseJSON
-          = withObject "RouterAggregatedList"
-              (\ o ->
-                 RouterAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#routerAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RouterAggregatedList where
-        toJSON RouterAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ralNextPageToken,
-                  Just ("kind" .= _ralKind),
-                  ("items" .=) <$> _ralItems,
-                  ("selfLink" .=) <$> _ralSelfLink,
-                  ("id" .=) <$> _ralId])
-
--- | Contains a list of firewalls.
---
--- /See:/ 'firewallList' smart constructor.
-data FirewallList = FirewallList'
-    { _flNextPageToken :: !(Maybe Text)
-    , _flKind          :: !Text
-    , _flItems         :: !(Maybe [Firewall])
-    , _flSelfLink      :: !(Maybe Text)
-    , _flId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FirewallList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'flNextPageToken'
---
--- * 'flKind'
---
--- * 'flItems'
---
--- * 'flSelfLink'
---
--- * 'flId'
-firewallList
-    :: FirewallList
-firewallList =
-    FirewallList'
-    { _flNextPageToken = Nothing
-    , _flKind = "compute#firewallList"
-    , _flItems = Nothing
-    , _flSelfLink = Nothing
-    , _flId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-flNextPageToken :: Lens' FirewallList (Maybe Text)
-flNextPageToken
-  = lens _flNextPageToken
-      (\ s a -> s{_flNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#firewallList for lists of
--- firewalls.
-flKind :: Lens' FirewallList Text
-flKind = lens _flKind (\ s a -> s{_flKind = a})
-
--- | [Output Only] A list of Firewall resources.
-flItems :: Lens' FirewallList [Firewall]
-flItems
-  = lens _flItems (\ s a -> s{_flItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-flSelfLink :: Lens' FirewallList (Maybe Text)
-flSelfLink
-  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-flId :: Lens' FirewallList (Maybe Text)
-flId = lens _flId (\ s a -> s{_flId = a})
-
-instance FromJSON FirewallList where
-        parseJSON
-          = withObject "FirewallList"
-              (\ o ->
-                 FirewallList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#firewallList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON FirewallList where
-        toJSON FirewallList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _flNextPageToken,
-                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,
-                  ("selfLink" .=) <$> _flSelfLink,
-                  ("id" .=) <$> _flId])
-
--- | [Output Only] Informational warning which replaces the list of instances
--- when the list is empty.
---
--- /See:/ 'instancesScopedListWarning' smart constructor.
-data InstancesScopedListWarning = InstancesScopedListWarning'
-    { _islwData    :: !(Maybe [InstancesScopedListWarningDataItem])
-    , _islwCode    :: !(Maybe InstancesScopedListWarningCode)
-    , _islwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'islwData'
---
--- * 'islwCode'
---
--- * 'islwMessage'
-instancesScopedListWarning
-    :: InstancesScopedListWarning
-instancesScopedListWarning =
-    InstancesScopedListWarning'
-    { _islwData = Nothing
-    , _islwCode = Nothing
-    , _islwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]
-islwData
-  = lens _islwData (\ s a -> s{_islwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)
-islwCode = lens _islwCode (\ s a -> s{_islwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)
-islwMessage
-  = lens _islwMessage (\ s a -> s{_islwMessage = a})
-
-instance FromJSON InstancesScopedListWarning where
-        parseJSON
-          = withObject "InstancesScopedListWarning"
-              (\ o ->
-                 InstancesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON InstancesScopedListWarning where
-        toJSON InstancesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _islwData,
-                  ("code" .=) <$> _islwCode,
-                  ("message" .=) <$> _islwMessage])
-
---
--- /See:/ 'regionInstanceGroupManagersRecreateRequest' smart constructor.
-newtype RegionInstanceGroupManagersRecreateRequest = RegionInstanceGroupManagersRecreateRequest'
-    { _rigmrrInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersRecreateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmrrInstances'
-regionInstanceGroupManagersRecreateRequest
-    :: RegionInstanceGroupManagersRecreateRequest
-regionInstanceGroupManagersRecreateRequest =
-    RegionInstanceGroupManagersRecreateRequest'
-    { _rigmrrInstances = Nothing
-    }
-
--- | The URL for one or more instances to recreate.
-rigmrrInstances :: Lens' RegionInstanceGroupManagersRecreateRequest [Text]
-rigmrrInstances
-  = lens _rigmrrInstances
-      (\ s a -> s{_rigmrrInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupManagersRecreateRequest where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersRecreateRequest"
-              (\ o ->
-                 RegionInstanceGroupManagersRecreateRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupManagersRecreateRequest where
-        toJSON
-          RegionInstanceGroupManagersRecreateRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _rigmrrInstances])
-
--- | Informational warning which replaces the list of backend services when
--- the list is empty.
---
--- /See:/ 'backendServicesScopedListWarning' smart constructor.
-data BackendServicesScopedListWarning = BackendServicesScopedListWarning'
-    { _bsslwData    :: !(Maybe [BackendServicesScopedListWarningDataItem])
-    , _bsslwCode    :: !(Maybe BackendServicesScopedListWarningCode)
-    , _bsslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServicesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsslwData'
---
--- * 'bsslwCode'
---
--- * 'bsslwMessage'
-backendServicesScopedListWarning
-    :: BackendServicesScopedListWarning
-backendServicesScopedListWarning =
-    BackendServicesScopedListWarning'
-    { _bsslwData = Nothing
-    , _bsslwCode = Nothing
-    , _bsslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-bsslwData :: Lens' BackendServicesScopedListWarning [BackendServicesScopedListWarningDataItem]
-bsslwData
-  = lens _bsslwData (\ s a -> s{_bsslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-bsslwCode :: Lens' BackendServicesScopedListWarning (Maybe BackendServicesScopedListWarningCode)
-bsslwCode
-  = lens _bsslwCode (\ s a -> s{_bsslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-bsslwMessage :: Lens' BackendServicesScopedListWarning (Maybe Text)
-bsslwMessage
-  = lens _bsslwMessage (\ s a -> s{_bsslwMessage = a})
-
-instance FromJSON BackendServicesScopedListWarning
-         where
-        parseJSON
-          = withObject "BackendServicesScopedListWarning"
-              (\ o ->
-                 BackendServicesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON BackendServicesScopedListWarning
-         where
-        toJSON BackendServicesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _bsslwData,
-                  ("code" .=) <$> _bsslwCode,
-                  ("message" .=) <$> _bsslwMessage])
-
--- | A list of InstanceGroup resources.
---
--- /See:/ 'instanceGroupList' smart constructor.
-data InstanceGroupList = InstanceGroupList'
-    { _iglNextPageToken :: !(Maybe Text)
-    , _iglKind          :: !Text
-    , _iglItems         :: !(Maybe [InstanceGroup])
-    , _iglSelfLink      :: !(Maybe Text)
-    , _iglId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iglNextPageToken'
---
--- * 'iglKind'
---
--- * 'iglItems'
---
--- * 'iglSelfLink'
---
--- * 'iglId'
-instanceGroupList
-    :: InstanceGroupList
-instanceGroupList =
-    InstanceGroupList'
-    { _iglNextPageToken = Nothing
-    , _iglKind = "compute#instanceGroupList"
-    , _iglItems = Nothing
-    , _iglSelfLink = Nothing
-    , _iglId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)
-iglNextPageToken
-  = lens _iglNextPageToken
-      (\ s a -> s{_iglNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupList for instance group lists.
-iglKind :: Lens' InstanceGroupList Text
-iglKind = lens _iglKind (\ s a -> s{_iglKind = a})
-
--- | A list of instance groups.
-iglItems :: Lens' InstanceGroupList [InstanceGroup]
-iglItems
-  = lens _iglItems (\ s a -> s{_iglItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The URL for this resource type. The server generates this
--- URL.
-iglSelfLink :: Lens' InstanceGroupList (Maybe Text)
-iglSelfLink
-  = lens _iglSelfLink (\ s a -> s{_iglSelfLink = a})
-
--- | [Output Only] A unique identifier for this list of instance groups. The
--- server generates this identifier.
-iglId :: Lens' InstanceGroupList (Maybe Text)
-iglId = lens _iglId (\ s a -> s{_iglId = a})
-
-instance FromJSON InstanceGroupList where
-        parseJSON
-          = withObject "InstanceGroupList"
-              (\ o ->
-                 InstanceGroupList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#instanceGroupList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceGroupList where
-        toJSON InstanceGroupList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _iglNextPageToken,
-                  Just ("kind" .= _iglKind),
-                  ("items" .=) <$> _iglItems,
-                  ("selfLink" .=) <$> _iglSelfLink,
-                  ("id" .=) <$> _iglId])
-
---
--- /See:/ 'instancesSetMachineTypeRequest' smart constructor.
-newtype InstancesSetMachineTypeRequest = InstancesSetMachineTypeRequest'
-    { _ismtrMachineType :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesSetMachineTypeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ismtrMachineType'
-instancesSetMachineTypeRequest
-    :: InstancesSetMachineTypeRequest
-instancesSetMachineTypeRequest =
-    InstancesSetMachineTypeRequest'
-    { _ismtrMachineType = Nothing
-    }
-
--- | Full or partial URL of the machine type resource. See Machine Types for
--- a full list of machine types. For example:
--- zones\/us-central1-f\/machineTypes\/n1-standard-1
-ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)
-ismtrMachineType
-  = lens _ismtrMachineType
-      (\ s a -> s{_ismtrMachineType = a})
-
-instance FromJSON InstancesSetMachineTypeRequest
-         where
-        parseJSON
-          = withObject "InstancesSetMachineTypeRequest"
-              (\ o ->
-                 InstancesSetMachineTypeRequest' <$>
-                   (o .:? "machineType"))
-
-instance ToJSON InstancesSetMachineTypeRequest where
-        toJSON InstancesSetMachineTypeRequest'{..}
-          = object
-              (catMaybes
-                 [("machineType" .=) <$> _ismtrMachineType])
-
--- | Represents a customer-supplied encryption key
---
--- /See:/ 'customerEncryptionKey' smart constructor.
-data CustomerEncryptionKey = CustomerEncryptionKey'
-    { _cekSha256 :: !(Maybe Text)
-    , _cekRawKey :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CustomerEncryptionKey' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cekSha256'
---
--- * 'cekRawKey'
-customerEncryptionKey
-    :: CustomerEncryptionKey
-customerEncryptionKey =
-    CustomerEncryptionKey'
-    { _cekSha256 = Nothing
-    , _cekRawKey = Nothing
-    }
-
--- | [Output only] The RFC 4648 base64 encoded SHA-256 hash of the
--- customer-supplied encryption key that protects this resource.
-cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)
-cekSha256
-  = lens _cekSha256 (\ s a -> s{_cekSha256 = a})
-
--- | Specifies a 256-bit customer-supplied encryption key, encoded in RFC
--- 4648 base64 to either encrypt or decrypt this resource.
-cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)
-cekRawKey
-  = lens _cekRawKey (\ s a -> s{_cekRawKey = a})
-
-instance FromJSON CustomerEncryptionKey where
-        parseJSON
-          = withObject "CustomerEncryptionKey"
-              (\ o ->
-                 CustomerEncryptionKey' <$>
-                   (o .:? "sha256") <*> (o .:? "rawKey"))
-
-instance ToJSON CustomerEncryptionKey where
-        toJSON CustomerEncryptionKey'{..}
-          = object
-              (catMaybes
-                 [("sha256" .=) <$> _cekSha256,
-                  ("rawKey" .=) <$> _cekRawKey])
-
--- | A map of scoped autoscaler lists.
---
--- /See:/ 'autoscalerAggregatedListItems' smart constructor.
-newtype AutoscalerAggregatedListItems = AutoscalerAggregatedListItems'
-    { _aaliAddtional :: HashMap Text AutoscalersScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalerAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaliAddtional'
-autoscalerAggregatedListItems
-    :: HashMap Text AutoscalersScopedList -- ^ 'aaliAddtional'
-    -> AutoscalerAggregatedListItems
-autoscalerAggregatedListItems pAaliAddtional_ =
-    AutoscalerAggregatedListItems'
-    { _aaliAddtional = _Coerce # pAaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of autoscalers.
-aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)
-aaliAddtional
-  = lens _aaliAddtional
-      (\ s a -> s{_aaliAddtional = a})
-      . _Coerce
-
-instance FromJSON AutoscalerAggregatedListItems where
-        parseJSON
-          = withObject "AutoscalerAggregatedListItems"
-              (\ o ->
-                 AutoscalerAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON AutoscalerAggregatedListItems where
-        toJSON = toJSON . _aaliAddtional
-
---
--- /See:/ 'instanceGroupManagersSetInstanceTemplateRequest' smart constructor.
-newtype InstanceGroupManagersSetInstanceTemplateRequest = InstanceGroupManagersSetInstanceTemplateRequest'
-    { _igmsitrInstanceTemplate :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersSetInstanceTemplateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmsitrInstanceTemplate'
-instanceGroupManagersSetInstanceTemplateRequest
-    :: InstanceGroupManagersSetInstanceTemplateRequest
-instanceGroupManagersSetInstanceTemplateRequest =
-    InstanceGroupManagersSetInstanceTemplateRequest'
-    { _igmsitrInstanceTemplate = Nothing
-    }
-
--- | The URL of the instance template that is specified for this managed
--- instance group. The group uses this template to create all new instances
--- in the managed instance group.
-igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)
-igmsitrInstanceTemplate
-  = lens _igmsitrInstanceTemplate
-      (\ s a -> s{_igmsitrInstanceTemplate = a})
-
-instance FromJSON
-         InstanceGroupManagersSetInstanceTemplateRequest where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersSetInstanceTemplateRequest"
-              (\ o ->
-                 InstanceGroupManagersSetInstanceTemplateRequest' <$>
-                   (o .:? "instanceTemplate"))
-
-instance ToJSON
-         InstanceGroupManagersSetInstanceTemplateRequest where
-        toJSON
-          InstanceGroupManagersSetInstanceTemplateRequest'{..}
-          = object
-              (catMaybes
-                 [("instanceTemplate" .=) <$>
-                    _igmsitrInstanceTemplate])
-
--- | Deprecation status for a public resource.
---
--- /See:/ 'deprecationStatus' smart constructor.
-data DeprecationStatus = DeprecationStatus'
-    { _dsState       :: !(Maybe DeprecationStatusState)
-    , _dsDeleted     :: !(Maybe Text)
-    , _dsReplacement :: !(Maybe Text)
-    , _dsObsolete    :: !(Maybe Text)
-    , _dsDeprecated  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeprecationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsState'
---
--- * 'dsDeleted'
---
--- * 'dsReplacement'
---
--- * 'dsObsolete'
---
--- * 'dsDeprecated'
-deprecationStatus
-    :: DeprecationStatus
-deprecationStatus =
-    DeprecationStatus'
-    { _dsState = Nothing
-    , _dsDeleted = Nothing
-    , _dsReplacement = Nothing
-    , _dsObsolete = Nothing
-    , _dsDeprecated = Nothing
-    }
-
--- | The deprecation state of this resource. This can be DEPRECATED,
--- OBSOLETE, or DELETED. Operations which create a new resource using a
--- DEPRECATED resource will return successfully, but with a warning
--- indicating the deprecated resource and recommending its replacement.
--- Operations which use OBSOLETE or DELETED resources will be rejected and
--- result in an error.
-dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)
-dsState = lens _dsState (\ s a -> s{_dsState = a})
-
--- | An optional RFC3339 timestamp on or after which the state of this
--- resource is intended to change to DELETED. This is only informational
--- and the status will not change unless the client explicitly changes it.
-dsDeleted :: Lens' DeprecationStatus (Maybe Text)
-dsDeleted
-  = lens _dsDeleted (\ s a -> s{_dsDeleted = a})
-
--- | The URL of the suggested replacement for a deprecated resource. The
--- suggested replacement resource must be the same kind of resource as the
--- deprecated resource.
-dsReplacement :: Lens' DeprecationStatus (Maybe Text)
-dsReplacement
-  = lens _dsReplacement
-      (\ s a -> s{_dsReplacement = a})
-
--- | An optional RFC3339 timestamp on or after which the state of this
--- resource is intended to change to OBSOLETE. This is only informational
--- and the status will not change unless the client explicitly changes it.
-dsObsolete :: Lens' DeprecationStatus (Maybe Text)
-dsObsolete
-  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})
-
--- | An optional RFC3339 timestamp on or after which the state of this
--- resource is intended to change to DEPRECATED. This is only informational
--- and the status will not change unless the client explicitly changes it.
-dsDeprecated :: Lens' DeprecationStatus (Maybe Text)
-dsDeprecated
-  = lens _dsDeprecated (\ s a -> s{_dsDeprecated = a})
-
-instance FromJSON DeprecationStatus where
-        parseJSON
-          = withObject "DeprecationStatus"
-              (\ o ->
-                 DeprecationStatus' <$>
-                   (o .:? "state") <*> (o .:? "deleted") <*>
-                     (o .:? "replacement")
-                     <*> (o .:? "obsolete")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON DeprecationStatus where
-        toJSON DeprecationStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _dsState,
-                  ("deleted" .=) <$> _dsDeleted,
-                  ("replacement" .=) <$> _dsReplacement,
-                  ("obsolete" .=) <$> _dsObsolete,
-                  ("deprecated" .=) <$> _dsDeprecated])
-
--- | A persistent disk snapshot resource.
---
--- /See:/ 'snapshot' smart constructor.
-data Snapshot = Snapshot'
-    { _sStorageBytesStatus      :: !(Maybe SnapshotStorageBytesStatus)
-    , _sStatus                  :: !(Maybe SnapshotStatus)
-    , _sDiskSizeGb              :: !(Maybe (Textual Int64))
-    , _sSourceDiskId            :: !(Maybe Text)
-    , _sKind                    :: !Text
-    , _sSourceDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _sStorageBytes            :: !(Maybe (Textual Int64))
-    , _sSelfLink                :: !(Maybe Text)
-    , _sSnapshotEncryptionKey   :: !(Maybe CustomerEncryptionKey)
-    , _sName                    :: !(Maybe Text)
-    , _sCreationTimestamp       :: !(Maybe Text)
-    , _sId                      :: !(Maybe (Textual Word64))
-    , _sLicenses                :: !(Maybe [Text])
-    , _sSourceDisk              :: !(Maybe Text)
-    , _sDescription             :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Snapshot' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sStorageBytesStatus'
---
--- * 'sStatus'
---
--- * 'sDiskSizeGb'
---
--- * 'sSourceDiskId'
---
--- * 'sKind'
---
--- * 'sSourceDiskEncryptionKey'
---
--- * 'sStorageBytes'
---
--- * 'sSelfLink'
---
--- * 'sSnapshotEncryptionKey'
---
--- * 'sName'
---
--- * 'sCreationTimestamp'
---
--- * 'sId'
---
--- * 'sLicenses'
---
--- * 'sSourceDisk'
---
--- * 'sDescription'
-snapshot
-    :: Snapshot
-snapshot =
-    Snapshot'
-    { _sStorageBytesStatus = Nothing
-    , _sStatus = Nothing
-    , _sDiskSizeGb = Nothing
-    , _sSourceDiskId = Nothing
-    , _sKind = "compute#snapshot"
-    , _sSourceDiskEncryptionKey = Nothing
-    , _sStorageBytes = Nothing
-    , _sSelfLink = Nothing
-    , _sSnapshotEncryptionKey = Nothing
-    , _sName = Nothing
-    , _sCreationTimestamp = Nothing
-    , _sId = Nothing
-    , _sLicenses = Nothing
-    , _sSourceDisk = Nothing
-    , _sDescription = Nothing
-    }
-
--- | [Output Only] An indicator whether storageBytes is in a stable state or
--- it is being adjusted as a result of shared storage reallocation. This
--- status can either be UPDATING, meaning the size of the snapshot is being
--- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.
-sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)
-sStorageBytesStatus
-  = lens _sStorageBytesStatus
-      (\ s a -> s{_sStorageBytesStatus = a})
-
--- | [Output Only] The status of the snapshot. This can be CREATING,
--- DELETING, FAILED, READY, or UPLOADING.
-sStatus :: Lens' Snapshot (Maybe SnapshotStatus)
-sStatus = lens _sStatus (\ s a -> s{_sStatus = a})
-
--- | [Output Only] Size of the snapshot, specified in GB.
-sDiskSizeGb :: Lens' Snapshot (Maybe Int64)
-sDiskSizeGb
-  = lens _sDiskSizeGb (\ s a -> s{_sDiskSizeGb = a}) .
-      mapping _Coerce
-
--- | [Output Only] The ID value of the disk used to create this snapshot.
--- This value may be used to determine whether the snapshot was taken from
--- the current or a previous instance of a given disk name.
-sSourceDiskId :: Lens' Snapshot (Maybe Text)
-sSourceDiskId
-  = lens _sSourceDiskId
-      (\ s a -> s{_sSourceDiskId = a})
-
--- | [Output Only] Type of the resource. Always compute#snapshot for Snapshot
--- resources.
-sKind :: Lens' Snapshot Text
-sKind = lens _sKind (\ s a -> s{_sKind = a})
-
--- | The customer-supplied encryption key of the source disk. Required if the
--- source disk is protected by a customer-supplied encryption key.
-sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
-sSourceDiskEncryptionKey
-  = lens _sSourceDiskEncryptionKey
-      (\ s a -> s{_sSourceDiskEncryptionKey = a})
-
--- | [Output Only] A size of the the storage used by the snapshot. As
--- snapshots share storage, this number is expected to change with snapshot
--- creation\/deletion.
-sStorageBytes :: Lens' Snapshot (Maybe Int64)
-sStorageBytes
-  = lens _sStorageBytes
-      (\ s a -> s{_sStorageBytes = a})
-      . mapping _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-sSelfLink :: Lens' Snapshot (Maybe Text)
-sSelfLink
-  = lens _sSelfLink (\ s a -> s{_sSelfLink = a})
-
--- | Encrypts the snapshot using a customer-supplied encryption key. After
--- you encrypt a snapshot using a customer-supplied key, you must provide
--- the same key if you use the image later For example, you must provide
--- the encryption key when you create a disk from the encrypted snapshot in
--- a future request. Customer-supplied encryption keys do not protect
--- access to metadata of the disk. If you do not provide an encryption key
--- when creating the snapshot, then the snapshot will be encrypted using an
--- automatically generated key and you do not need to provide a key to use
--- the snapshot later.
-sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
-sSnapshotEncryptionKey
-  = lens _sSnapshotEncryptionKey
-      (\ s a -> s{_sSnapshotEncryptionKey = a})
-
--- | Name of the resource; provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-sName :: Lens' Snapshot (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-sCreationTimestamp :: Lens' Snapshot (Maybe Text)
-sCreationTimestamp
-  = lens _sCreationTimestamp
-      (\ s a -> s{_sCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-sId :: Lens' Snapshot (Maybe Word64)
-sId
-  = lens _sId (\ s a -> s{_sId = a}) . mapping _Coerce
-
--- | [Output Only] A list of public visible licenses that apply to this
--- snapshot. This can be because the original image had licenses attached
--- (such as a Windows image).
-sLicenses :: Lens' Snapshot [Text]
-sLicenses
-  = lens _sLicenses (\ s a -> s{_sLicenses = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The source disk used to create this snapshot.
-sSourceDisk :: Lens' Snapshot (Maybe Text)
-sSourceDisk
-  = lens _sSourceDisk (\ s a -> s{_sSourceDisk = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-sDescription :: Lens' Snapshot (Maybe Text)
-sDescription
-  = lens _sDescription (\ s a -> s{_sDescription = a})
-
-instance FromJSON Snapshot where
-        parseJSON
-          = withObject "Snapshot"
-              (\ o ->
-                 Snapshot' <$>
-                   (o .:? "storageBytesStatus") <*> (o .:? "status") <*>
-                     (o .:? "diskSizeGb")
-                     <*> (o .:? "sourceDiskId")
-                     <*> (o .:? "kind" .!= "compute#snapshot")
-                     <*> (o .:? "sourceDiskEncryptionKey")
-                     <*> (o .:? "storageBytes")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "snapshotEncryptionKey")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "licenses" .!= mempty)
-                     <*> (o .:? "sourceDisk")
-                     <*> (o .:? "description"))
-
-instance ToJSON Snapshot where
-        toJSON Snapshot'{..}
-          = object
-              (catMaybes
-                 [("storageBytesStatus" .=) <$> _sStorageBytesStatus,
-                  ("status" .=) <$> _sStatus,
-                  ("diskSizeGb" .=) <$> _sDiskSizeGb,
-                  ("sourceDiskId" .=) <$> _sSourceDiskId,
-                  Just ("kind" .= _sKind),
-                  ("sourceDiskEncryptionKey" .=) <$>
-                    _sSourceDiskEncryptionKey,
-                  ("storageBytes" .=) <$> _sStorageBytes,
-                  ("selfLink" .=) <$> _sSelfLink,
-                  ("snapshotEncryptionKey" .=) <$>
-                    _sSnapshotEncryptionKey,
-                  ("name" .=) <$> _sName,
-                  ("creationTimestamp" .=) <$> _sCreationTimestamp,
-                  ("id" .=) <$> _sId, ("licenses" .=) <$> _sLicenses,
-                  ("sourceDisk" .=) <$> _sSourceDisk,
-                  ("description" .=) <$> _sDescription])
-
---
--- /See:/ 'routerStatus' smart constructor.
-data RouterStatus = RouterStatus'
-    { _rsBGPPeerStatus :: !(Maybe [RouterStatusBGPPeerStatus])
-    , _rsNetwork       :: !(Maybe Text)
-    , _rsBestRoutes    :: !(Maybe [Route])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rsBGPPeerStatus'
---
--- * 'rsNetwork'
---
--- * 'rsBestRoutes'
-routerStatus
-    :: RouterStatus
-routerStatus =
-    RouterStatus'
-    { _rsBGPPeerStatus = Nothing
-    , _rsNetwork = Nothing
-    , _rsBestRoutes = Nothing
-    }
-
-rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]
-rsBGPPeerStatus
-  = lens _rsBGPPeerStatus
-      (\ s a -> s{_rsBGPPeerStatus = a})
-      . _Default
-      . _Coerce
-
--- | URI of the network to which this router belongs.
-rsNetwork :: Lens' RouterStatus (Maybe Text)
-rsNetwork
-  = lens _rsNetwork (\ s a -> s{_rsNetwork = a})
-
--- | Best routes for this router\'s network.
-rsBestRoutes :: Lens' RouterStatus [Route]
-rsBestRoutes
-  = lens _rsBestRoutes (\ s a -> s{_rsBestRoutes = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON RouterStatus where
-        parseJSON
-          = withObject "RouterStatus"
-              (\ o ->
-                 RouterStatus' <$>
-                   (o .:? "bgpPeerStatus" .!= mempty) <*>
-                     (o .:? "network")
-                     <*> (o .:? "bestRoutes" .!= mempty))
-
-instance ToJSON RouterStatus where
-        toJSON RouterStatus'{..}
-          = object
-              (catMaybes
-                 [("bgpPeerStatus" .=) <$> _rsBGPPeerStatus,
-                  ("network" .=) <$> _rsNetwork,
-                  ("bestRoutes" .=) <$> _rsBestRoutes])
-
--- | Custom utilization metric policy.
---
--- /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.
-data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization'
-    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))
-    , _apcmuMetric                :: !(Maybe Text)
-    , _apcmuUtilizationTargetType :: !(Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalingPolicyCustomMetricUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apcmuUtilizationTarget'
---
--- * 'apcmuMetric'
---
--- * 'apcmuUtilizationTargetType'
-autoscalingPolicyCustomMetricUtilization
-    :: AutoscalingPolicyCustomMetricUtilization
-autoscalingPolicyCustomMetricUtilization =
-    AutoscalingPolicyCustomMetricUtilization'
-    { _apcmuUtilizationTarget = Nothing
-    , _apcmuMetric = Nothing
-    , _apcmuUtilizationTargetType = Nothing
-    }
-
--- | Target value of the metric which autoscaler should maintain. Must be a
--- positive value.
-apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)
-apcmuUtilizationTarget
-  = lens _apcmuUtilizationTarget
-      (\ s a -> s{_apcmuUtilizationTarget = a})
-      . mapping _Coerce
-
--- | The identifier of the Stackdriver Monitoring metric. The metric cannot
--- have negative values and should be a utilization metric, which means
--- that the number of virtual machines handling requests should increase or
--- decrease proportionally to the metric. The metric must also have a label
--- of compute.googleapis.com\/resource_id with the value of the instance\'s
--- unique ID, although this alone does not guarantee that the metric is
--- valid. For example, the following is a valid metric:
--- compute.googleapis.com\/instance\/network\/received_bytes_count The
--- following is not a valid metric because it does not increase or decrease
--- based on usage: compute.googleapis.com\/instance\/cpu\/reserved_cores
-apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)
-apcmuMetric
-  = lens _apcmuMetric (\ s a -> s{_apcmuMetric = a})
-
--- | Defines how target utilization value is expressed for a Stackdriver
--- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.
--- If not specified, the default is GAUGE.
-apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
-apcmuUtilizationTargetType
-  = lens _apcmuUtilizationTargetType
-      (\ s a -> s{_apcmuUtilizationTargetType = a})
-
-instance FromJSON
-         AutoscalingPolicyCustomMetricUtilization where
-        parseJSON
-          = withObject
-              "AutoscalingPolicyCustomMetricUtilization"
-              (\ o ->
-                 AutoscalingPolicyCustomMetricUtilization' <$>
-                   (o .:? "utilizationTarget") <*> (o .:? "metric") <*>
-                     (o .:? "utilizationTargetType"))
-
-instance ToJSON
-         AutoscalingPolicyCustomMetricUtilization where
-        toJSON AutoscalingPolicyCustomMetricUtilization'{..}
-          = object
-              (catMaybes
-                 [("utilizationTarget" .=) <$>
-                    _apcmuUtilizationTarget,
-                  ("metric" .=) <$> _apcmuMetric,
-                  ("utilizationTargetType" .=) <$>
-                    _apcmuUtilizationTargetType])
-
--- | Contains a list of ForwardingRule resources.
---
--- /See:/ 'forwardingRuleList' smart constructor.
-data ForwardingRuleList = ForwardingRuleList'
-    { _frlNextPageToken :: !(Maybe Text)
-    , _frlKind          :: !Text
-    , _frlItems         :: !(Maybe [ForwardingRule])
-    , _frlSelfLink      :: !(Maybe Text)
-    , _frlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRuleList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frlNextPageToken'
---
--- * 'frlKind'
---
--- * 'frlItems'
---
--- * 'frlSelfLink'
---
--- * 'frlId'
-forwardingRuleList
-    :: ForwardingRuleList
-forwardingRuleList =
-    ForwardingRuleList'
-    { _frlNextPageToken = Nothing
-    , _frlKind = "compute#forwardingRuleList"
-    , _frlItems = Nothing
-    , _frlSelfLink = Nothing
-    , _frlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)
-frlNextPageToken
-  = lens _frlNextPageToken
-      (\ s a -> s{_frlNextPageToken = a})
-
--- | Type of resource.
-frlKind :: Lens' ForwardingRuleList Text
-frlKind = lens _frlKind (\ s a -> s{_frlKind = a})
-
--- | A list of ForwardingRule resources.
-frlItems :: Lens' ForwardingRuleList [ForwardingRule]
-frlItems
-  = lens _frlItems (\ s a -> s{_frlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)
-frlSelfLink
-  = lens _frlSelfLink (\ s a -> s{_frlSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Set by the server.
-frlId :: Lens' ForwardingRuleList (Maybe Text)
-frlId = lens _frlId (\ s a -> s{_frlId = a})
-
-instance FromJSON ForwardingRuleList where
-        parseJSON
-          = withObject "ForwardingRuleList"
-              (\ o ->
-                 ForwardingRuleList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#forwardingRuleList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ForwardingRuleList where
-        toJSON ForwardingRuleList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _frlNextPageToken,
-                  Just ("kind" .= _frlKind),
-                  ("items" .=) <$> _frlItems,
-                  ("selfLink" .=) <$> _frlSelfLink,
-                  ("id" .=) <$> _frlId])
-
---
--- /See:/ 'vpnTunnelsScopedList' smart constructor.
-data VPNTunnelsScopedList = VPNTunnelsScopedList'
-    { _vtslVPNTunnels :: !(Maybe [VPNTunnel])
-    , _vtslWarning    :: !(Maybe VPNTunnelsScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelsScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtslVPNTunnels'
---
--- * 'vtslWarning'
-vpnTunnelsScopedList
-    :: VPNTunnelsScopedList
-vpnTunnelsScopedList =
-    VPNTunnelsScopedList'
-    { _vtslVPNTunnels = Nothing
-    , _vtslWarning = Nothing
-    }
-
--- | List of vpn tunnels contained in this scope.
-vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]
-vtslVPNTunnels
-  = lens _vtslVPNTunnels
-      (\ s a -> s{_vtslVPNTunnels = a})
-      . _Default
-      . _Coerce
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
-vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)
-vtslWarning
-  = lens _vtslWarning (\ s a -> s{_vtslWarning = a})
-
-instance FromJSON VPNTunnelsScopedList where
-        parseJSON
-          = withObject "VPNTunnelsScopedList"
-              (\ o ->
-                 VPNTunnelsScopedList' <$>
-                   (o .:? "vpnTunnels" .!= mempty) <*>
-                     (o .:? "warning"))
-
-instance ToJSON VPNTunnelsScopedList where
-        toJSON VPNTunnelsScopedList'{..}
-          = object
-              (catMaybes
-                 [("vpnTunnels" .=) <$> _vtslVPNTunnels,
-                  ("warning" .=) <$> _vtslWarning])
-
---
--- /See:/ 'instanceGroupsSetNamedPortsRequest' smart constructor.
-data InstanceGroupsSetNamedPortsRequest = InstanceGroupsSetNamedPortsRequest'
-    { _igsnprFingerprint :: !(Maybe Bytes)
-    , _igsnprNamedPorts  :: !(Maybe [NamedPort])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igsnprFingerprint'
---
--- * 'igsnprNamedPorts'
-instanceGroupsSetNamedPortsRequest
-    :: InstanceGroupsSetNamedPortsRequest
-instanceGroupsSetNamedPortsRequest =
-    InstanceGroupsSetNamedPortsRequest'
-    { _igsnprFingerprint = Nothing
-    , _igsnprNamedPorts = Nothing
-    }
-
--- | The fingerprint of the named ports information for this instance group.
--- Use this optional property to prevent conflicts when multiple users
--- change the named ports settings concurrently. Obtain the fingerprint
--- with the instanceGroups.get method. Then, include the fingerprint in
--- your request to ensure that you do not overwrite changes that were
--- applied from another concurrent request.
-igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)
-igsnprFingerprint
-  = lens _igsnprFingerprint
-      (\ s a -> s{_igsnprFingerprint = a})
-      . mapping _Bytes
-
--- | The list of named ports to set for this instance group.
-igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]
-igsnprNamedPorts
-  = lens _igsnprNamedPorts
-      (\ s a -> s{_igsnprNamedPorts = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroupsSetNamedPortsRequest
-         where
-        parseJSON
-          = withObject "InstanceGroupsSetNamedPortsRequest"
-              (\ o ->
-                 InstanceGroupsSetNamedPortsRequest' <$>
-                   (o .:? "fingerprint") <*>
-                     (o .:? "namedPorts" .!= mempty))
-
-instance ToJSON InstanceGroupsSetNamedPortsRequest
-         where
-        toJSON InstanceGroupsSetNamedPortsRequest'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _igsnprFingerprint,
-                  ("namedPorts" .=) <$> _igsnprNamedPorts])
-
--- | Contains a list of Operation resources.
---
--- /See:/ 'operationList' smart constructor.
-data OperationList = OperationList'
-    { _olNextPageToken :: !(Maybe Text)
-    , _olKind          :: !Text
-    , _olItems         :: !(Maybe [Operation])
-    , _olSelfLink      :: !(Maybe Text)
-    , _olId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'olNextPageToken'
---
--- * 'olKind'
---
--- * 'olItems'
---
--- * 'olSelfLink'
---
--- * 'olId'
-operationList
-    :: OperationList
-operationList =
-    OperationList'
-    { _olNextPageToken = Nothing
-    , _olKind = "compute#operationList"
-    , _olItems = Nothing
-    , _olSelfLink = Nothing
-    , _olId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-olNextPageToken :: Lens' OperationList (Maybe Text)
-olNextPageToken
-  = lens _olNextPageToken
-      (\ s a -> s{_olNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#operations for Operations
--- resource.
-olKind :: Lens' OperationList Text
-olKind = lens _olKind (\ s a -> s{_olKind = a})
-
--- | [Output Only] A list of Operation resources.
-olItems :: Lens' OperationList [Operation]
-olItems
-  = lens _olItems (\ s a -> s{_olItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-olSelfLink :: Lens' OperationList (Maybe Text)
-olSelfLink
-  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-olId :: Lens' OperationList (Maybe Text)
-olId = lens _olId (\ s a -> s{_olId = a})
-
-instance FromJSON OperationList where
-        parseJSON
-          = withObject "OperationList"
-              (\ o ->
-                 OperationList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#operationList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON OperationList where
-        toJSON OperationList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _olNextPageToken,
-                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,
-                  ("selfLink" .=) <$> _olSelfLink,
-                  ("id" .=) <$> _olId])
-
--- | A list of Disk resources.
---
--- /See:/ 'diskList' smart constructor.
-data DiskList = DiskList'
-    { _dlNextPageToken :: !(Maybe Text)
-    , _dlKind          :: !Text
-    , _dlItems         :: !(Maybe [Disk])
-    , _dlSelfLink      :: !(Maybe Text)
-    , _dlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dlNextPageToken'
---
--- * 'dlKind'
---
--- * 'dlItems'
---
--- * 'dlSelfLink'
---
--- * 'dlId'
-diskList
-    :: DiskList
-diskList =
-    DiskList'
-    { _dlNextPageToken = Nothing
-    , _dlKind = "compute#diskList"
-    , _dlItems = Nothing
-    , _dlSelfLink = Nothing
-    , _dlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-dlNextPageToken :: Lens' DiskList (Maybe Text)
-dlNextPageToken
-  = lens _dlNextPageToken
-      (\ s a -> s{_dlNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#diskList for lists of
--- disks.
-dlKind :: Lens' DiskList Text
-dlKind = lens _dlKind (\ s a -> s{_dlKind = a})
-
--- | [Output Only] A list of persistent disks.
-dlItems :: Lens' DiskList [Disk]
-dlItems
-  = lens _dlItems (\ s a -> s{_dlItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-dlSelfLink :: Lens' DiskList (Maybe Text)
-dlSelfLink
-  = lens _dlSelfLink (\ s a -> s{_dlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dlId :: Lens' DiskList (Maybe Text)
-dlId = lens _dlId (\ s a -> s{_dlId = a})
-
-instance FromJSON DiskList where
-        parseJSON
-          = withObject "DiskList"
-              (\ o ->
-                 DiskList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#diskList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON DiskList where
-        toJSON DiskList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _dlNextPageToken,
-                  Just ("kind" .= _dlKind), ("items" .=) <$> _dlItems,
-                  ("selfLink" .=) <$> _dlSelfLink,
-                  ("id" .=) <$> _dlId])
-
---
--- /See:/ 'targetPoolsAddInstanceRequest' smart constructor.
-newtype TargetPoolsAddInstanceRequest = TargetPoolsAddInstanceRequest'
-    { _tpairInstances :: Maybe [InstanceReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsAddInstanceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpairInstances'
-targetPoolsAddInstanceRequest
-    :: TargetPoolsAddInstanceRequest
-targetPoolsAddInstanceRequest =
-    TargetPoolsAddInstanceRequest'
-    { _tpairInstances = Nothing
-    }
-
--- | A full or partial URL to an instance to add to this target pool. This
--- can be a full or partial URL. For example, the following are valid URLs:
--- -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project-id\/zones\/zone\/instances\/instance-name
--- - projects\/project-id\/zones\/zone\/instances\/instance-name -
--- zones\/zone\/instances\/instance-name
-tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]
-tpairInstances
-  = lens _tpairInstances
-      (\ s a -> s{_tpairInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolsAddInstanceRequest where
-        parseJSON
-          = withObject "TargetPoolsAddInstanceRequest"
-              (\ o ->
-                 TargetPoolsAddInstanceRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON TargetPoolsAddInstanceRequest where
-        toJSON TargetPoolsAddInstanceRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _tpairInstances])
-
--- | Contains a list of autoscalers.
---
--- /See:/ 'regionAutoscalerList' smart constructor.
-data RegionAutoscalerList = RegionAutoscalerList'
-    { _rNextPageToken :: !(Maybe Text)
-    , _rKind          :: !Text
-    , _rItems         :: !(Maybe [Autoscaler])
-    , _rSelfLink      :: !(Maybe Text)
-    , _rId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionAutoscalerList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rNextPageToken'
---
--- * 'rKind'
---
--- * 'rItems'
---
--- * 'rSelfLink'
---
--- * 'rId'
-regionAutoscalerList
-    :: RegionAutoscalerList
-regionAutoscalerList =
-    RegionAutoscalerList'
-    { _rNextPageToken = Nothing
-    , _rKind = "compute#regionAutoscalerList"
-    , _rItems = Nothing
-    , _rSelfLink = Nothing
-    , _rId = Nothing
-    }
-
--- | [Output Only] A token used to continue a truncated list request.
-rNextPageToken :: Lens' RegionAutoscalerList (Maybe Text)
-rNextPageToken
-  = lens _rNextPageToken
-      (\ s a -> s{_rNextPageToken = a})
-
--- | Type of resource.
-rKind :: Lens' RegionAutoscalerList Text
-rKind = lens _rKind (\ s a -> s{_rKind = a})
-
--- | A list of autoscalers.
-rItems :: Lens' RegionAutoscalerList [Autoscaler]
-rItems
-  = lens _rItems (\ s a -> s{_rItems = a}) . _Default .
-      _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-rSelfLink :: Lens' RegionAutoscalerList (Maybe Text)
-rSelfLink
-  = lens _rSelfLink (\ s a -> s{_rSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-rId :: Lens' RegionAutoscalerList (Maybe Text)
-rId = lens _rId (\ s a -> s{_rId = a})
-
-instance FromJSON RegionAutoscalerList where
-        parseJSON
-          = withObject "RegionAutoscalerList"
-              (\ o ->
-                 RegionAutoscalerList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#regionAutoscalerList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RegionAutoscalerList where
-        toJSON RegionAutoscalerList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rNextPageToken,
-                  Just ("kind" .= _rKind), ("items" .=) <$> _rItems,
-                  ("selfLink" .=) <$> _rSelfLink, ("id" .=) <$> _rId])
-
---
--- /See:/ 'instanceGroupsAddInstancesRequest' smart constructor.
-newtype InstanceGroupsAddInstancesRequest = InstanceGroupsAddInstancesRequest'
-    { _igairInstances :: Maybe [InstanceReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsAddInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igairInstances'
-instanceGroupsAddInstancesRequest
-    :: InstanceGroupsAddInstancesRequest
-instanceGroupsAddInstancesRequest =
-    InstanceGroupsAddInstancesRequest'
-    { _igairInstances = Nothing
-    }
-
--- | The list of instances to add to the instance group.
-igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]
-igairInstances
-  = lens _igairInstances
-      (\ s a -> s{_igairInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroupsAddInstancesRequest
-         where
-        parseJSON
-          = withObject "InstanceGroupsAddInstancesRequest"
-              (\ o ->
-                 InstanceGroupsAddInstancesRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON InstanceGroupsAddInstancesRequest
-         where
-        toJSON InstanceGroupsAddInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _igairInstances])
-
--- | [Output Only] A list of managed instance groups.
---
--- /See:/ 'instanceGroupManagerList' smart constructor.
-data InstanceGroupManagerList = InstanceGroupManagerList'
-    { _igmlNextPageToken :: !(Maybe Text)
-    , _igmlKind          :: !Text
-    , _igmlItems         :: !(Maybe [InstanceGroupManager])
-    , _igmlSelfLink      :: !(Maybe Text)
-    , _igmlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagerList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmlNextPageToken'
---
--- * 'igmlKind'
---
--- * 'igmlItems'
---
--- * 'igmlSelfLink'
---
--- * 'igmlId'
-instanceGroupManagerList
-    :: InstanceGroupManagerList
-instanceGroupManagerList =
-    InstanceGroupManagerList'
-    { _igmlNextPageToken = Nothing
-    , _igmlKind = "compute#instanceGroupManagerList"
-    , _igmlItems = Nothing
-    , _igmlSelfLink = Nothing
-    , _igmlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)
-igmlNextPageToken
-  = lens _igmlNextPageToken
-      (\ s a -> s{_igmlNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupManagerList for a list of managed instance groups.
-igmlKind :: Lens' InstanceGroupManagerList Text
-igmlKind = lens _igmlKind (\ s a -> s{_igmlKind = a})
-
--- | [Output Only] A list of managed instance groups.
-igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]
-igmlItems
-  = lens _igmlItems (\ s a -> s{_igmlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)
-igmlSelfLink
-  = lens _igmlSelfLink (\ s a -> s{_igmlSelfLink = a})
-
--- | [Output Only] A unique identifier for this resource type. The server
--- generates this identifier.
-igmlId :: Lens' InstanceGroupManagerList (Maybe Text)
-igmlId = lens _igmlId (\ s a -> s{_igmlId = a})
-
-instance FromJSON InstanceGroupManagerList where
-        parseJSON
-          = withObject "InstanceGroupManagerList"
-              (\ o ->
-                 InstanceGroupManagerList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#instanceGroupManagerList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceGroupManagerList where
-        toJSON InstanceGroupManagerList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _igmlNextPageToken,
-                  Just ("kind" .= _igmlKind),
-                  ("items" .=) <$> _igmlItems,
-                  ("selfLink" .=) <$> _igmlSelfLink,
-                  ("id" .=) <$> _igmlId])
-
--- | An informational warning that appears when the list of addresses is
--- empty.
---
--- /See:/ 'subnetworksScopedListWarning' smart constructor.
-data SubnetworksScopedListWarning = SubnetworksScopedListWarning'
-    { _sslwData    :: !(Maybe [SubnetworksScopedListWarningDataItem])
-    , _sslwCode    :: !(Maybe SubnetworksScopedListWarningCode)
-    , _sslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworksScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sslwData'
---
--- * 'sslwCode'
---
--- * 'sslwMessage'
-subnetworksScopedListWarning
-    :: SubnetworksScopedListWarning
-subnetworksScopedListWarning =
-    SubnetworksScopedListWarning'
-    { _sslwData = Nothing
-    , _sslwCode = Nothing
-    , _sslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]
-sslwData
-  = lens _sslwData (\ s a -> s{_sslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)
-sslwCode = lens _sslwCode (\ s a -> s{_sslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)
-sslwMessage
-  = lens _sslwMessage (\ s a -> s{_sslwMessage = a})
-
-instance FromJSON SubnetworksScopedListWarning where
-        parseJSON
-          = withObject "SubnetworksScopedListWarning"
-              (\ o ->
-                 SubnetworksScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON SubnetworksScopedListWarning where
-        toJSON SubnetworksScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _sslwData,
-                  ("code" .=) <$> _sslwCode,
-                  ("message" .=) <$> _sslwMessage])
-
--- | An Image resource.
---
--- /See:/ 'image' smart constructor.
-data Image = Image'
-    { _iStatus                  :: !(Maybe ImageStatus)
-    , _iImageEncryptionKey      :: !(Maybe CustomerEncryptionKey)
-    , _iDiskSizeGb              :: !(Maybe (Textual Int64))
-    , _iSourceType              :: !ImageSourceType
-    , _iSourceDiskId            :: !(Maybe Text)
-    , _iKind                    :: !Text
-    , _iSourceDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _iGuestOSFeatures         :: !(Maybe [GuestOSFeature])
-    , _iArchiveSizeBytes        :: !(Maybe (Textual Int64))
-    , _iFamily                  :: !(Maybe Text)
-    , _iRawDisk                 :: !(Maybe ImageRawDisk)
-    , _iSelfLink                :: !(Maybe Text)
-    , _iName                    :: !(Maybe Text)
-    , _iCreationTimestamp       :: !(Maybe Text)
-    , _iId                      :: !(Maybe (Textual Word64))
-    , _iLicenses                :: !(Maybe [Text])
-    , _iSourceDisk              :: !(Maybe Text)
-    , _iDescription             :: !(Maybe Text)
-    , _iDeprecated              :: !(Maybe DeprecationStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Image' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iStatus'
---
--- * 'iImageEncryptionKey'
---
--- * 'iDiskSizeGb'
---
--- * 'iSourceType'
---
--- * 'iSourceDiskId'
---
--- * 'iKind'
---
--- * 'iSourceDiskEncryptionKey'
---
--- * 'iGuestOSFeatures'
---
--- * 'iArchiveSizeBytes'
---
--- * 'iFamily'
---
--- * 'iRawDisk'
---
--- * 'iSelfLink'
---
--- * 'iName'
---
--- * 'iCreationTimestamp'
---
--- * 'iId'
---
--- * 'iLicenses'
---
--- * 'iSourceDisk'
---
--- * 'iDescription'
---
--- * 'iDeprecated'
-image
-    :: Image
-image =
-    Image'
-    { _iStatus = Nothing
-    , _iImageEncryptionKey = Nothing
-    , _iDiskSizeGb = Nothing
-    , _iSourceType = Raw
-    , _iSourceDiskId = Nothing
-    , _iKind = "compute#image"
-    , _iSourceDiskEncryptionKey = Nothing
-    , _iGuestOSFeatures = Nothing
-    , _iArchiveSizeBytes = Nothing
-    , _iFamily = Nothing
-    , _iRawDisk = Nothing
-    , _iSelfLink = Nothing
-    , _iName = Nothing
-    , _iCreationTimestamp = Nothing
-    , _iId = Nothing
-    , _iLicenses = Nothing
-    , _iSourceDisk = Nothing
-    , _iDescription = Nothing
-    , _iDeprecated = Nothing
-    }
-
--- | [Output Only] The status of the image. An image can be used to create
--- other resources, such as instances, only after the image has been
--- successfully created and the status is set to READY. Possible values are
--- FAILED, PENDING, or READY.
-iStatus :: Lens' Image (Maybe ImageStatus)
-iStatus = lens _iStatus (\ s a -> s{_iStatus = a})
-
--- | Encrypts the image using a customer-supplied encryption key. After you
--- encrypt an image with a customer-supplied key, you must provide the same
--- key if you use the image later (e.g. to create a disk from the image).
--- Customer-supplied encryption keys do not protect access to metadata of
--- the disk. If you do not provide an encryption key when creating the
--- image, then the disk will be encrypted using an automatically generated
--- key and you do not need to provide a key to use the image later.
-iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
-iImageEncryptionKey
-  = lens _iImageEncryptionKey
-      (\ s a -> s{_iImageEncryptionKey = a})
-
--- | Size of the image when restored onto a persistent disk (in GB).
-iDiskSizeGb :: Lens' Image (Maybe Int64)
-iDiskSizeGb
-  = lens _iDiskSizeGb (\ s a -> s{_iDiskSizeGb = a}) .
-      mapping _Coerce
-
--- | The type of the image used to create this disk. The default and only
--- value is RAW
-iSourceType :: Lens' Image ImageSourceType
-iSourceType
-  = lens _iSourceType (\ s a -> s{_iSourceType = a})
-
--- | The ID value of the disk used to create this image. This value may be
--- used to determine whether the image was taken from the current or a
--- previous instance of a given disk name.
-iSourceDiskId :: Lens' Image (Maybe Text)
-iSourceDiskId
-  = lens _iSourceDiskId
-      (\ s a -> s{_iSourceDiskId = a})
-
--- | [Output Only] Type of the resource. Always compute#image for images.
-iKind :: Lens' Image Text
-iKind = lens _iKind (\ s a -> s{_iKind = a})
-
--- | The customer-supplied encryption key of the source disk. Required if the
--- source disk is protected by a customer-supplied encryption key.
-iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
-iSourceDiskEncryptionKey
-  = lens _iSourceDiskEncryptionKey
-      (\ s a -> s{_iSourceDiskEncryptionKey = a})
-
--- | A list of features to enable on the guest OS. Applicable for bootable
--- images only. Currently, only one feature can be enabled,
--- VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own
--- queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE
--- on images with driver version 1.2.0.1621 or higher. Linux images with
--- kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
--- For new Windows images, the server might also populate this field with
--- the value WINDOWS, to indicate that this is a Windows image. This value
--- is purely informational and does not enable or disable any features.
-iGuestOSFeatures :: Lens' Image [GuestOSFeature]
-iGuestOSFeatures
-  = lens _iGuestOSFeatures
-      (\ s a -> s{_iGuestOSFeatures = a})
-      . _Default
-      . _Coerce
-
--- | Size of the image tar.gz archive stored in Google Cloud Storage (in
--- bytes).
-iArchiveSizeBytes :: Lens' Image (Maybe Int64)
-iArchiveSizeBytes
-  = lens _iArchiveSizeBytes
-      (\ s a -> s{_iArchiveSizeBytes = a})
-      . mapping _Coerce
-
--- | The name of the image family to which this image belongs. You can create
--- disks by specifying an image family instead of a specific image name.
--- The image family always returns its latest image that is not deprecated.
--- The name of the image family must comply with RFC1035.
-iFamily :: Lens' Image (Maybe Text)
-iFamily = lens _iFamily (\ s a -> s{_iFamily = a})
-
--- | The parameters of the raw disk image.
-iRawDisk :: Lens' Image (Maybe ImageRawDisk)
-iRawDisk = lens _iRawDisk (\ s a -> s{_iRawDisk = a})
-
--- | [Output Only] Server-defined URL for the resource.
-iSelfLink :: Lens' Image (Maybe Text)
-iSelfLink
-  = lens _iSelfLink (\ s a -> s{_iSelfLink = a})
-
--- | Name of the resource; provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-iName :: Lens' Image (Maybe Text)
-iName = lens _iName (\ s a -> s{_iName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-iCreationTimestamp :: Lens' Image (Maybe Text)
-iCreationTimestamp
-  = lens _iCreationTimestamp
-      (\ s a -> s{_iCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-iId :: Lens' Image (Maybe Word64)
-iId
-  = lens _iId (\ s a -> s{_iId = a}) . mapping _Coerce
-
--- | Any applicable license URI.
-iLicenses :: Lens' Image [Text]
-iLicenses
-  = lens _iLicenses (\ s a -> s{_iLicenses = a}) .
-      _Default
-      . _Coerce
-
--- | URL of the source disk used to create this image. This can be a full or
--- valid partial URL. You must provide either this property or the
--- rawDisk.source property but not both to create an image. For example,
--- the following are valid values: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk
--- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk
-iSourceDisk :: Lens' Image (Maybe Text)
-iSourceDisk
-  = lens _iSourceDisk (\ s a -> s{_iSourceDisk = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-iDescription :: Lens' Image (Maybe Text)
-iDescription
-  = lens _iDescription (\ s a -> s{_iDescription = a})
-
--- | The deprecation status associated with this image.
-iDeprecated :: Lens' Image (Maybe DeprecationStatus)
-iDeprecated
-  = lens _iDeprecated (\ s a -> s{_iDeprecated = a})
-
-instance FromJSON Image where
-        parseJSON
-          = withObject "Image"
-              (\ o ->
-                 Image' <$>
-                   (o .:? "status") <*> (o .:? "imageEncryptionKey") <*>
-                     (o .:? "diskSizeGb")
-                     <*> (o .:? "sourceType" .!= Raw)
-                     <*> (o .:? "sourceDiskId")
-                     <*> (o .:? "kind" .!= "compute#image")
-                     <*> (o .:? "sourceDiskEncryptionKey")
-                     <*> (o .:? "guestOsFeatures" .!= mempty)
-                     <*> (o .:? "archiveSizeBytes")
-                     <*> (o .:? "family")
-                     <*> (o .:? "rawDisk")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "licenses" .!= mempty)
-                     <*> (o .:? "sourceDisk")
-                     <*> (o .:? "description")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON Image where
-        toJSON Image'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _iStatus,
-                  ("imageEncryptionKey" .=) <$> _iImageEncryptionKey,
-                  ("diskSizeGb" .=) <$> _iDiskSizeGb,
-                  Just ("sourceType" .= _iSourceType),
-                  ("sourceDiskId" .=) <$> _iSourceDiskId,
-                  Just ("kind" .= _iKind),
-                  ("sourceDiskEncryptionKey" .=) <$>
-                    _iSourceDiskEncryptionKey,
-                  ("guestOsFeatures" .=) <$> _iGuestOSFeatures,
-                  ("archiveSizeBytes" .=) <$> _iArchiveSizeBytes,
-                  ("family" .=) <$> _iFamily,
-                  ("rawDisk" .=) <$> _iRawDisk,
-                  ("selfLink" .=) <$> _iSelfLink,
-                  ("name" .=) <$> _iName,
-                  ("creationTimestamp" .=) <$> _iCreationTimestamp,
-                  ("id" .=) <$> _iId, ("licenses" .=) <$> _iLicenses,
-                  ("sourceDisk" .=) <$> _iSourceDisk,
-                  ("description" .=) <$> _iDescription,
-                  ("deprecated" .=) <$> _iDeprecated])
-
--- | A UrlMap resource. This resource defines the mapping from URL to the
--- BackendService resource, based on the \"longest-match\" of the URL\'s
--- host and path.
---
--- /See:/ 'urlMap' smart constructor.
-data URLMap = URLMap'
-    { _umTests             :: !(Maybe [URLMapTest])
-    , _umKind              :: !Text
-    , _umFingerprint       :: !(Maybe Bytes)
-    , _umDefaultService    :: !(Maybe Text)
-    , _umSelfLink          :: !(Maybe Text)
-    , _umName              :: !(Maybe Text)
-    , _umCreationTimestamp :: !(Maybe Text)
-    , _umPathMatchers      :: !(Maybe [PathMatcher])
-    , _umId                :: !(Maybe (Textual Word64))
-    , _umHostRules         :: !(Maybe [HostRule])
-    , _umDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMap' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umTests'
---
--- * 'umKind'
---
--- * 'umFingerprint'
---
--- * 'umDefaultService'
---
--- * 'umSelfLink'
---
--- * 'umName'
---
--- * 'umCreationTimestamp'
---
--- * 'umPathMatchers'
---
--- * 'umId'
---
--- * 'umHostRules'
---
--- * 'umDescription'
-urlMap
-    :: URLMap
-urlMap =
-    URLMap'
-    { _umTests = Nothing
-    , _umKind = "compute#urlMap"
-    , _umFingerprint = Nothing
-    , _umDefaultService = Nothing
-    , _umSelfLink = Nothing
-    , _umName = Nothing
-    , _umCreationTimestamp = Nothing
-    , _umPathMatchers = Nothing
-    , _umId = Nothing
-    , _umHostRules = Nothing
-    , _umDescription = Nothing
-    }
-
--- | The list of expected URL mappings. Request to update this UrlMap will
--- succeed only if all of the test cases pass.
-umTests :: Lens' URLMap [URLMapTest]
-umTests
-  = lens _umTests (\ s a -> s{_umTests = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Type of the resource. Always compute#urlMaps for url maps.
-umKind :: Lens' URLMap Text
-umKind = lens _umKind (\ s a -> s{_umKind = a})
-
--- | Fingerprint of this resource. A hash of the contents stored in this
--- object. This field is used in optimistic locking. This field will be
--- ignored when inserting a UrlMap. An up-to-date fingerprint must be
--- provided in order to update the UrlMap.
-umFingerprint :: Lens' URLMap (Maybe ByteString)
-umFingerprint
-  = lens _umFingerprint
-      (\ s a -> s{_umFingerprint = a})
-      . mapping _Bytes
-
--- | The URL of the BackendService resource if none of the hostRules match.
-umDefaultService :: Lens' URLMap (Maybe Text)
-umDefaultService
-  = lens _umDefaultService
-      (\ s a -> s{_umDefaultService = a})
-
--- | [Output Only] Server-defined URL for the resource.
-umSelfLink :: Lens' URLMap (Maybe Text)
-umSelfLink
-  = lens _umSelfLink (\ s a -> s{_umSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-umName :: Lens' URLMap (Maybe Text)
-umName = lens _umName (\ s a -> s{_umName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-umCreationTimestamp :: Lens' URLMap (Maybe Text)
-umCreationTimestamp
-  = lens _umCreationTimestamp
-      (\ s a -> s{_umCreationTimestamp = a})
-
--- | The list of named PathMatchers to use against the URL.
-umPathMatchers :: Lens' URLMap [PathMatcher]
-umPathMatchers
-  = lens _umPathMatchers
-      (\ s a -> s{_umPathMatchers = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-umId :: Lens' URLMap (Maybe Word64)
-umId
-  = lens _umId (\ s a -> s{_umId = a}) .
-      mapping _Coerce
-
--- | The list of HostRules to use against the URL.
-umHostRules :: Lens' URLMap [HostRule]
-umHostRules
-  = lens _umHostRules (\ s a -> s{_umHostRules = a}) .
-      _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-umDescription :: Lens' URLMap (Maybe Text)
-umDescription
-  = lens _umDescription
-      (\ s a -> s{_umDescription = a})
-
-instance FromJSON URLMap where
-        parseJSON
-          = withObject "URLMap"
-              (\ o ->
-                 URLMap' <$>
-                   (o .:? "tests" .!= mempty) <*>
-                     (o .:? "kind" .!= "compute#urlMap")
-                     <*> (o .:? "fingerprint")
-                     <*> (o .:? "defaultService")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "pathMatchers" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "hostRules" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON URLMap where
-        toJSON URLMap'{..}
-          = object
-              (catMaybes
-                 [("tests" .=) <$> _umTests, Just ("kind" .= _umKind),
-                  ("fingerprint" .=) <$> _umFingerprint,
-                  ("defaultService" .=) <$> _umDefaultService,
-                  ("selfLink" .=) <$> _umSelfLink,
-                  ("name" .=) <$> _umName,
-                  ("creationTimestamp" .=) <$> _umCreationTimestamp,
-                  ("pathMatchers" .=) <$> _umPathMatchers,
-                  ("id" .=) <$> _umId,
-                  ("hostRules" .=) <$> _umHostRules,
-                  ("description" .=) <$> _umDescription])
-
--- | A map of scoped instance group lists.
---
--- /See:/ 'instanceGroupAggregatedListItems' smart constructor.
-newtype InstanceGroupAggregatedListItems = InstanceGroupAggregatedListItems'
-    { _igaliAddtional :: HashMap Text InstanceGroupsScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igaliAddtional'
-instanceGroupAggregatedListItems
-    :: HashMap Text InstanceGroupsScopedList -- ^ 'igaliAddtional'
-    -> InstanceGroupAggregatedListItems
-instanceGroupAggregatedListItems pIgaliAddtional_ =
-    InstanceGroupAggregatedListItems'
-    { _igaliAddtional = _Coerce # pIgaliAddtional_
-    }
-
--- | The name of the scope that contains this set of instance groups.
-igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)
-igaliAddtional
-  = lens _igaliAddtional
-      (\ s a -> s{_igaliAddtional = a})
-      . _Coerce
-
-instance FromJSON InstanceGroupAggregatedListItems
-         where
-        parseJSON
-          = withObject "InstanceGroupAggregatedListItems"
-              (\ o ->
-                 InstanceGroupAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON InstanceGroupAggregatedListItems
-         where
-        toJSON = toJSON . _igaliAddtional
-
--- | Contains a list of TargetPool resources.
---
--- /See:/ 'targetPoolList' smart constructor.
-data TargetPoolList = TargetPoolList'
-    { _tplNextPageToken :: !(Maybe Text)
-    , _tplKind          :: !Text
-    , _tplItems         :: !(Maybe [TargetPool])
-    , _tplSelfLink      :: !(Maybe Text)
-    , _tplId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tplNextPageToken'
---
--- * 'tplKind'
---
--- * 'tplItems'
---
--- * 'tplSelfLink'
---
--- * 'tplId'
-targetPoolList
-    :: TargetPoolList
-targetPoolList =
-    TargetPoolList'
-    { _tplNextPageToken = Nothing
-    , _tplKind = "compute#targetPoolList"
-    , _tplItems = Nothing
-    , _tplSelfLink = Nothing
-    , _tplId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tplNextPageToken :: Lens' TargetPoolList (Maybe Text)
-tplNextPageToken
-  = lens _tplNextPageToken
-      (\ s a -> s{_tplNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#targetPoolList for lists
--- of target pools.
-tplKind :: Lens' TargetPoolList Text
-tplKind = lens _tplKind (\ s a -> s{_tplKind = a})
-
--- | A list of TargetPool resources.
-tplItems :: Lens' TargetPoolList [TargetPool]
-tplItems
-  = lens _tplItems (\ s a -> s{_tplItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-tplSelfLink :: Lens' TargetPoolList (Maybe Text)
-tplSelfLink
-  = lens _tplSelfLink (\ s a -> s{_tplSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-tplId :: Lens' TargetPoolList (Maybe Text)
-tplId = lens _tplId (\ s a -> s{_tplId = a})
-
-instance FromJSON TargetPoolList where
-        parseJSON
-          = withObject "TargetPoolList"
-              (\ o ->
-                 TargetPoolList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetPoolList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetPoolList where
-        toJSON TargetPoolList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tplNextPageToken,
-                  Just ("kind" .= _tplKind),
-                  ("items" .=) <$> _tplItems,
-                  ("selfLink" .=) <$> _tplSelfLink,
-                  ("id" .=) <$> _tplId])
-
---
--- /See:/ 'targetInstanceAggregatedList' smart constructor.
-data TargetInstanceAggregatedList = TargetInstanceAggregatedList'
-    { _tialNextPageToken :: !(Maybe Text)
-    , _tialKind          :: !Text
-    , _tialItems         :: !(Maybe TargetInstanceAggregatedListItems)
-    , _tialSelfLink      :: !(Maybe Text)
-    , _tialId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstanceAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tialNextPageToken'
---
--- * 'tialKind'
---
--- * 'tialItems'
---
--- * 'tialSelfLink'
---
--- * 'tialId'
-targetInstanceAggregatedList
-    :: TargetInstanceAggregatedList
-targetInstanceAggregatedList =
-    TargetInstanceAggregatedList'
-    { _tialNextPageToken = Nothing
-    , _tialKind = "compute#targetInstanceAggregatedList"
-    , _tialItems = Nothing
-    , _tialSelfLink = Nothing
-    , _tialId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)
-tialNextPageToken
-  = lens _tialNextPageToken
-      (\ s a -> s{_tialNextPageToken = a})
-
--- | Type of resource.
-tialKind :: Lens' TargetInstanceAggregatedList Text
-tialKind = lens _tialKind (\ s a -> s{_tialKind = a})
-
--- | A map of scoped target instance lists.
-tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)
-tialItems
-  = lens _tialItems (\ s a -> s{_tialItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)
-tialSelfLink
-  = lens _tialSelfLink (\ s a -> s{_tialSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)
-tialId = lens _tialId (\ s a -> s{_tialId = a})
-
-instance FromJSON TargetInstanceAggregatedList where
-        parseJSON
-          = withObject "TargetInstanceAggregatedList"
-              (\ o ->
-                 TargetInstanceAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#targetInstanceAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetInstanceAggregatedList where
-        toJSON TargetInstanceAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tialNextPageToken,
-                  Just ("kind" .= _tialKind),
-                  ("items" .=) <$> _tialItems,
-                  ("selfLink" .=) <$> _tialSelfLink,
-                  ("id" .=) <$> _tialId])
-
---
--- /See:/ 'disksScopedList' smart constructor.
-data DisksScopedList = DisksScopedList'
-    { _dslWarning :: !(Maybe DisksScopedListWarning)
-    , _dslDisks   :: !(Maybe [Disk])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DisksScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dslWarning'
---
--- * 'dslDisks'
-disksScopedList
-    :: DisksScopedList
-disksScopedList =
-    DisksScopedList'
-    { _dslWarning = Nothing
-    , _dslDisks = Nothing
-    }
-
--- | [Output Only] Informational warning which replaces the list of disks
--- when the list is empty.
-dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)
-dslWarning
-  = lens _dslWarning (\ s a -> s{_dslWarning = a})
-
--- | [Output Only] List of disks contained in this scope.
-dslDisks :: Lens' DisksScopedList [Disk]
-dslDisks
-  = lens _dslDisks (\ s a -> s{_dslDisks = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON DisksScopedList where
-        parseJSON
-          = withObject "DisksScopedList"
-              (\ o ->
-                 DisksScopedList' <$>
-                   (o .:? "warning") <*> (o .:? "disks" .!= mempty))
-
-instance ToJSON DisksScopedList where
-        toJSON DisksScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _dslWarning,
-                  ("disks" .=) <$> _dslDisks])
-
---
--- /See:/ 'instanceGroupManagersScopedList' smart constructor.
-data InstanceGroupManagersScopedList = InstanceGroupManagersScopedList'
-    { _igmslWarning               :: !(Maybe InstanceGroupManagersScopedListWarning)
-    , _igmslInstanceGroupManagers :: !(Maybe [InstanceGroupManager])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmslWarning'
---
--- * 'igmslInstanceGroupManagers'
-instanceGroupManagersScopedList
-    :: InstanceGroupManagersScopedList
-instanceGroupManagersScopedList =
-    InstanceGroupManagersScopedList'
-    { _igmslWarning = Nothing
-    , _igmslInstanceGroupManagers = Nothing
-    }
-
--- | [Output Only] The warning that replaces the list of managed instance
--- groups when the list is empty.
-igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)
-igmslWarning
-  = lens _igmslWarning (\ s a -> s{_igmslWarning = a})
-
--- | [Output Only] The list of managed instance groups that are contained in
--- the specified project and zone.
-igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]
-igmslInstanceGroupManagers
-  = lens _igmslInstanceGroupManagers
-      (\ s a -> s{_igmslInstanceGroupManagers = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroupManagersScopedList
-         where
-        parseJSON
-          = withObject "InstanceGroupManagersScopedList"
-              (\ o ->
-                 InstanceGroupManagersScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "instanceGroupManagers" .!= mempty))
-
-instance ToJSON InstanceGroupManagersScopedList where
-        toJSON InstanceGroupManagersScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _igmslWarning,
-                  ("instanceGroupManagers" .=) <$>
-                    _igmslInstanceGroupManagers])
-
--- | An HealthCheck resource. This resource defines a template for how
--- individual virtual machines should be checked for health, via one of the
--- supported protocols.
---
--- /See:/ 'healthCheck' smart constructor.
-data HealthCheck = HealthCheck'
-    { _hcHealthyThreshold   :: !(Maybe (Textual Int32))
-    , _hcTCPHealthCheck     :: !(Maybe TCPHealthCheck)
-    , _hcKind               :: !Text
-    , _hcSSLHealthCheck     :: !(Maybe SSLHealthCheck)
-    , _hcSelfLink           :: !(Maybe Text)
-    , _hcCheckIntervalSec   :: !(Maybe (Textual Int32))
-    , _hcName               :: !(Maybe Text)
-    , _hcCreationTimestamp  :: !(Maybe Text)
-    , _hcHTTPHealthCheck    :: !(Maybe HTTPHealthCheck)
-    , _hcId                 :: !(Maybe (Textual Word64))
-    , _hcType               :: !(Maybe HealthCheckType)
-    , _hcTimeoutSec         :: !(Maybe (Textual Int32))
-    , _hcDescription        :: !(Maybe Text)
-    , _hcUnhealthyThreshold :: !(Maybe (Textual Int32))
-    , _hcHTTPSHealthCheck   :: !(Maybe HTTPSHealthCheck)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HealthCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hcHealthyThreshold'
---
--- * 'hcTCPHealthCheck'
---
--- * 'hcKind'
---
--- * 'hcSSLHealthCheck'
---
--- * 'hcSelfLink'
---
--- * 'hcCheckIntervalSec'
---
--- * 'hcName'
---
--- * 'hcCreationTimestamp'
---
--- * 'hcHTTPHealthCheck'
---
--- * 'hcId'
---
--- * 'hcType'
---
--- * 'hcTimeoutSec'
---
--- * 'hcDescription'
---
--- * 'hcUnhealthyThreshold'
---
--- * 'hcHTTPSHealthCheck'
-healthCheck
-    :: HealthCheck
-healthCheck =
-    HealthCheck'
-    { _hcHealthyThreshold = Nothing
-    , _hcTCPHealthCheck = Nothing
-    , _hcKind = "compute#healthCheck"
-    , _hcSSLHealthCheck = Nothing
-    , _hcSelfLink = Nothing
-    , _hcCheckIntervalSec = Nothing
-    , _hcName = Nothing
-    , _hcCreationTimestamp = Nothing
-    , _hcHTTPHealthCheck = Nothing
-    , _hcId = Nothing
-    , _hcType = Nothing
-    , _hcTimeoutSec = Nothing
-    , _hcDescription = Nothing
-    , _hcUnhealthyThreshold = Nothing
-    , _hcHTTPSHealthCheck = Nothing
-    }
-
--- | A so-far unhealthy instance will be marked healthy after this many
--- consecutive successes. The default value is 2.
-hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
-hcHealthyThreshold
-  = lens _hcHealthyThreshold
-      (\ s a -> s{_hcHealthyThreshold = a})
-      . mapping _Coerce
-
-hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)
-hcTCPHealthCheck
-  = lens _hcTCPHealthCheck
-      (\ s a -> s{_hcTCPHealthCheck = a})
-
--- | Type of the resource.
-hcKind :: Lens' HealthCheck Text
-hcKind = lens _hcKind (\ s a -> s{_hcKind = a})
-
-hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)
-hcSSLHealthCheck
-  = lens _hcSSLHealthCheck
-      (\ s a -> s{_hcSSLHealthCheck = a})
-
--- | [Output Only] Server-defined URL for the resource.
-hcSelfLink :: Lens' HealthCheck (Maybe Text)
-hcSelfLink
-  = lens _hcSelfLink (\ s a -> s{_hcSelfLink = a})
-
--- | How often (in seconds) to send a health check. The default value is 5
--- seconds.
-hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)
-hcCheckIntervalSec
-  = lens _hcCheckIntervalSec
-      (\ s a -> s{_hcCheckIntervalSec = a})
-      . mapping _Coerce
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-hcName :: Lens' HealthCheck (Maybe Text)
-hcName = lens _hcName (\ s a -> s{_hcName = a})
-
--- | [Output Only] Creation timestamp in 3339 text format.
-hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
-hcCreationTimestamp
-  = lens _hcCreationTimestamp
-      (\ s a -> s{_hcCreationTimestamp = a})
-
-hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)
-hcHTTPHealthCheck
-  = lens _hcHTTPHealthCheck
-      (\ s a -> s{_hcHTTPHealthCheck = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-hcId :: Lens' HealthCheck (Maybe Word64)
-hcId
-  = lens _hcId (\ s a -> s{_hcId = a}) .
-      mapping _Coerce
-
--- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--- If not specified, the default is TCP. Exactly one of the
--- protocol-specific health check field must be specified, which must match
--- type field.
-hcType :: Lens' HealthCheck (Maybe HealthCheckType)
-hcType = lens _hcType (\ s a -> s{_hcType = a})
-
--- | How long (in seconds) to wait before claiming failure. The default value
--- is 5 seconds. It is invalid for timeoutSec to have greater value than
--- checkIntervalSec.
-hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)
-hcTimeoutSec
-  = lens _hcTimeoutSec (\ s a -> s{_hcTimeoutSec = a})
-      . mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-hcDescription :: Lens' HealthCheck (Maybe Text)
-hcDescription
-  = lens _hcDescription
-      (\ s a -> s{_hcDescription = a})
-
--- | A so-far healthy instance will be marked unhealthy after this many
--- consecutive failures. The default value is 2.
-hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
-hcUnhealthyThreshold
-  = lens _hcUnhealthyThreshold
-      (\ s a -> s{_hcUnhealthyThreshold = a})
-      . mapping _Coerce
-
-hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)
-hcHTTPSHealthCheck
-  = lens _hcHTTPSHealthCheck
-      (\ s a -> s{_hcHTTPSHealthCheck = a})
-
-instance FromJSON HealthCheck where
-        parseJSON
-          = withObject "HealthCheck"
-              (\ o ->
-                 HealthCheck' <$>
-                   (o .:? "healthyThreshold") <*>
-                     (o .:? "tcpHealthCheck")
-                     <*> (o .:? "kind" .!= "compute#healthCheck")
-                     <*> (o .:? "sslHealthCheck")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "checkIntervalSec")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "httpHealthCheck")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type")
-                     <*> (o .:? "timeoutSec")
-                     <*> (o .:? "description")
-                     <*> (o .:? "unhealthyThreshold")
-                     <*> (o .:? "httpsHealthCheck"))
-
-instance ToJSON HealthCheck where
-        toJSON HealthCheck'{..}
-          = object
-              (catMaybes
-                 [("healthyThreshold" .=) <$> _hcHealthyThreshold,
-                  ("tcpHealthCheck" .=) <$> _hcTCPHealthCheck,
-                  Just ("kind" .= _hcKind),
-                  ("sslHealthCheck" .=) <$> _hcSSLHealthCheck,
-                  ("selfLink" .=) <$> _hcSelfLink,
-                  ("checkIntervalSec" .=) <$> _hcCheckIntervalSec,
-                  ("name" .=) <$> _hcName,
-                  ("creationTimestamp" .=) <$> _hcCreationTimestamp,
-                  ("httpHealthCheck" .=) <$> _hcHTTPHealthCheck,
-                  ("id" .=) <$> _hcId, ("type" .=) <$> _hcType,
-                  ("timeoutSec" .=) <$> _hcTimeoutSec,
-                  ("description" .=) <$> _hcDescription,
-                  ("unhealthyThreshold" .=) <$> _hcUnhealthyThreshold,
-                  ("httpsHealthCheck" .=) <$> _hcHTTPSHealthCheck])
-
---
--- /See:/ 'diskAggregatedList' smart constructor.
-data DiskAggregatedList = DiskAggregatedList'
-    { _dalNextPageToken :: !(Maybe Text)
-    , _dalKind          :: !Text
-    , _dalItems         :: !(Maybe DiskAggregatedListItems)
-    , _dalSelfLink      :: !(Maybe Text)
-    , _dalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dalNextPageToken'
---
--- * 'dalKind'
---
--- * 'dalItems'
---
--- * 'dalSelfLink'
---
--- * 'dalId'
-diskAggregatedList
-    :: DiskAggregatedList
-diskAggregatedList =
-    DiskAggregatedList'
-    { _dalNextPageToken = Nothing
-    , _dalKind = "compute#diskAggregatedList"
-    , _dalItems = Nothing
-    , _dalSelfLink = Nothing
-    , _dalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)
-dalNextPageToken
-  = lens _dalNextPageToken
-      (\ s a -> s{_dalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#diskAggregatedList for
--- aggregated lists of persistent disks.
-dalKind :: Lens' DiskAggregatedList Text
-dalKind = lens _dalKind (\ s a -> s{_dalKind = a})
-
--- | [Output Only] A map of scoped disk lists.
-dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)
-dalItems = lens _dalItems (\ s a -> s{_dalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)
-dalSelfLink
-  = lens _dalSelfLink (\ s a -> s{_dalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dalId :: Lens' DiskAggregatedList (Maybe Text)
-dalId = lens _dalId (\ s a -> s{_dalId = a})
-
-instance FromJSON DiskAggregatedList where
-        parseJSON
-          = withObject "DiskAggregatedList"
-              (\ o ->
-                 DiskAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#diskAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON DiskAggregatedList where
-        toJSON DiskAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _dalNextPageToken,
-                  Just ("kind" .= _dalKind),
-                  ("items" .=) <$> _dalItems,
-                  ("selfLink" .=) <$> _dalSelfLink,
-                  ("id" .=) <$> _dalId])
-
---
--- /See:/ 'instanceWithNamedPorts' smart constructor.
-data InstanceWithNamedPorts = InstanceWithNamedPorts'
-    { _iwnpStatus     :: !(Maybe InstanceWithNamedPortsStatus)
-    , _iwnpNamedPorts :: !(Maybe [NamedPort])
-    , _iwnpInstance   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceWithNamedPorts' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iwnpStatus'
---
--- * 'iwnpNamedPorts'
---
--- * 'iwnpInstance'
-instanceWithNamedPorts
-    :: InstanceWithNamedPorts
-instanceWithNamedPorts =
-    InstanceWithNamedPorts'
-    { _iwnpStatus = Nothing
-    , _iwnpNamedPorts = Nothing
-    , _iwnpInstance = Nothing
-    }
-
--- | [Output Only] The status of the instance.
-iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)
-iwnpStatus
-  = lens _iwnpStatus (\ s a -> s{_iwnpStatus = a})
-
--- | [Output Only] The named ports that belong to this instance group.
-iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]
-iwnpNamedPorts
-  = lens _iwnpNamedPorts
-      (\ s a -> s{_iwnpNamedPorts = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] The URL of the instance.
-iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)
-iwnpInstance
-  = lens _iwnpInstance (\ s a -> s{_iwnpInstance = a})
-
-instance FromJSON InstanceWithNamedPorts where
-        parseJSON
-          = withObject "InstanceWithNamedPorts"
-              (\ o ->
-                 InstanceWithNamedPorts' <$>
-                   (o .:? "status") <*> (o .:? "namedPorts" .!= mempty)
-                     <*> (o .:? "instance"))
-
-instance ToJSON InstanceWithNamedPorts where
-        toJSON InstanceWithNamedPorts'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _iwnpStatus,
-                  ("namedPorts" .=) <$> _iwnpNamedPorts,
-                  ("instance" .=) <$> _iwnpInstance])
-
---
--- /See:/ 'forwardingRulesScopedList' smart constructor.
-data ForwardingRulesScopedList = ForwardingRulesScopedList'
-    { _frslWarning         :: !(Maybe ForwardingRulesScopedListWarning)
-    , _frslForwardingRules :: !(Maybe [ForwardingRule])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRulesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frslWarning'
---
--- * 'frslForwardingRules'
-forwardingRulesScopedList
-    :: ForwardingRulesScopedList
-forwardingRulesScopedList =
-    ForwardingRulesScopedList'
-    { _frslWarning = Nothing
-    , _frslForwardingRules = Nothing
-    }
-
--- | Informational warning which replaces the list of forwarding rules when
--- the list is empty.
-frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)
-frslWarning
-  = lens _frslWarning (\ s a -> s{_frslWarning = a})
-
--- | List of forwarding rules contained in this scope.
-frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]
-frslForwardingRules
-  = lens _frslForwardingRules
-      (\ s a -> s{_frslForwardingRules = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ForwardingRulesScopedList where
-        parseJSON
-          = withObject "ForwardingRulesScopedList"
-              (\ o ->
-                 ForwardingRulesScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "forwardingRules" .!= mempty))
-
-instance ToJSON ForwardingRulesScopedList where
-        toJSON ForwardingRulesScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _frslWarning,
-                  ("forwardingRules" .=) <$> _frslForwardingRules])
-
---
--- /See:/ 'instanceReference' smart constructor.
-newtype InstanceReference = InstanceReference'
-    { _iInstance :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iInstance'
-instanceReference
-    :: InstanceReference
-instanceReference =
-    InstanceReference'
-    { _iInstance = Nothing
-    }
-
--- | The URL for a specific instance.
-iInstance :: Lens' InstanceReference (Maybe Text)
-iInstance
-  = lens _iInstance (\ s a -> s{_iInstance = a})
-
-instance FromJSON InstanceReference where
-        parseJSON
-          = withObject "InstanceReference"
-              (\ o -> InstanceReference' <$> (o .:? "instance"))
-
-instance ToJSON InstanceReference where
-        toJSON InstanceReference'{..}
-          = object (catMaybes [("instance" .=) <$> _iInstance])
-
---
--- /See:/ 'operationAggregatedList' smart constructor.
-data OperationAggregatedList = OperationAggregatedList'
-    { _oalNextPageToken :: !(Maybe Text)
-    , _oalKind          :: !Text
-    , _oalItems         :: !(Maybe OperationAggregatedListItems)
-    , _oalSelfLink      :: !(Maybe Text)
-    , _oalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oalNextPageToken'
---
--- * 'oalKind'
---
--- * 'oalItems'
---
--- * 'oalSelfLink'
---
--- * 'oalId'
-operationAggregatedList
-    :: OperationAggregatedList
-operationAggregatedList =
-    OperationAggregatedList'
-    { _oalNextPageToken = Nothing
-    , _oalKind = "compute#operationAggregatedList"
-    , _oalItems = Nothing
-    , _oalSelfLink = Nothing
-    , _oalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)
-oalNextPageToken
-  = lens _oalNextPageToken
-      (\ s a -> s{_oalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#operationAggregatedList
--- for aggregated lists of operations.
-oalKind :: Lens' OperationAggregatedList Text
-oalKind = lens _oalKind (\ s a -> s{_oalKind = a})
-
--- | [Output Only] A map of scoped operation lists.
-oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)
-oalItems = lens _oalItems (\ s a -> s{_oalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)
-oalSelfLink
-  = lens _oalSelfLink (\ s a -> s{_oalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-oalId :: Lens' OperationAggregatedList (Maybe Text)
-oalId = lens _oalId (\ s a -> s{_oalId = a})
-
-instance FromJSON OperationAggregatedList where
-        parseJSON
-          = withObject "OperationAggregatedList"
-              (\ o ->
-                 OperationAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#operationAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON OperationAggregatedList where
-        toJSON OperationAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _oalNextPageToken,
-                  Just ("kind" .= _oalKind),
-                  ("items" .=) <$> _oalItems,
-                  ("selfLink" .=) <$> _oalSelfLink,
-                  ("id" .=) <$> _oalId])
-
---
--- /See:/ 'operationsScopedList' smart constructor.
-data OperationsScopedList = OperationsScopedList'
-    { _oslWarning    :: !(Maybe OperationsScopedListWarning)
-    , _oslOperations :: !(Maybe [Operation])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationsScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oslWarning'
---
--- * 'oslOperations'
-operationsScopedList
-    :: OperationsScopedList
-operationsScopedList =
-    OperationsScopedList'
-    { _oslWarning = Nothing
-    , _oslOperations = Nothing
-    }
-
--- | [Output Only] Informational warning which replaces the list of
--- operations when the list is empty.
-oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)
-oslWarning
-  = lens _oslWarning (\ s a -> s{_oslWarning = a})
-
--- | [Output Only] List of operations contained in this scope.
-oslOperations :: Lens' OperationsScopedList [Operation]
-oslOperations
-  = lens _oslOperations
-      (\ s a -> s{_oslOperations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON OperationsScopedList where
-        parseJSON
-          = withObject "OperationsScopedList"
-              (\ o ->
-                 OperationsScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "operations" .!= mempty))
-
-instance ToJSON OperationsScopedList where
-        toJSON OperationsScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _oslWarning,
-                  ("operations" .=) <$> _oslOperations])
-
--- | The named port. For example: .
---
--- /See:/ 'namedPort' smart constructor.
-data NamedPort = NamedPort'
-    { _npName :: !(Maybe Text)
-    , _npPort :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NamedPort' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npName'
---
--- * 'npPort'
-namedPort
-    :: NamedPort
-namedPort =
-    NamedPort'
-    { _npName = Nothing
-    , _npPort = Nothing
-    }
-
--- | The name for this named port. The name must be 1-63 characters long, and
--- comply with RFC1035.
-npName :: Lens' NamedPort (Maybe Text)
-npName = lens _npName (\ s a -> s{_npName = a})
-
--- | The port number, which can be a value between 1 and 65535.
-npPort :: Lens' NamedPort (Maybe Int32)
-npPort
-  = lens _npPort (\ s a -> s{_npPort = a}) .
-      mapping _Coerce
-
-instance FromJSON NamedPort where
-        parseJSON
-          = withObject "NamedPort"
-              (\ o ->
-                 NamedPort' <$> (o .:? "name") <*> (o .:? "port"))
-
-instance ToJSON NamedPort where
-        toJSON NamedPort'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _npName, ("port" .=) <$> _npPort])
-
--- | Contains a list of TargetInstance resources.
---
--- /See:/ 'targetInstanceList' smart constructor.
-data TargetInstanceList = TargetInstanceList'
-    { _tilNextPageToken :: !(Maybe Text)
-    , _tilKind          :: !Text
-    , _tilItems         :: !(Maybe [TargetInstance])
-    , _tilSelfLink      :: !(Maybe Text)
-    , _tilId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstanceList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tilNextPageToken'
---
--- * 'tilKind'
---
--- * 'tilItems'
---
--- * 'tilSelfLink'
---
--- * 'tilId'
-targetInstanceList
-    :: TargetInstanceList
-targetInstanceList =
-    TargetInstanceList'
-    { _tilNextPageToken = Nothing
-    , _tilKind = "compute#targetInstanceList"
-    , _tilItems = Nothing
-    , _tilSelfLink = Nothing
-    , _tilId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)
-tilNextPageToken
-  = lens _tilNextPageToken
-      (\ s a -> s{_tilNextPageToken = a})
-
--- | Type of resource.
-tilKind :: Lens' TargetInstanceList Text
-tilKind = lens _tilKind (\ s a -> s{_tilKind = a})
-
--- | A list of TargetInstance resources.
-tilItems :: Lens' TargetInstanceList [TargetInstance]
-tilItems
-  = lens _tilItems (\ s a -> s{_tilItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-tilSelfLink :: Lens' TargetInstanceList (Maybe Text)
-tilSelfLink
-  = lens _tilSelfLink (\ s a -> s{_tilSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tilId :: Lens' TargetInstanceList (Maybe Text)
-tilId = lens _tilId (\ s a -> s{_tilId = a})
-
-instance FromJSON TargetInstanceList where
-        parseJSON
-          = withObject "TargetInstanceList"
-              (\ o ->
-                 TargetInstanceList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetInstanceList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetInstanceList where
-        toJSON TargetInstanceList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tilNextPageToken,
-                  Just ("kind" .= _tilKind),
-                  ("items" .=) <$> _tilItems,
-                  ("selfLink" .=) <$> _tilSelfLink,
-                  ("id" .=) <$> _tilId])
-
---
--- /See:/ 'instanceGroupManagerAggregatedList' smart constructor.
-data InstanceGroupManagerAggregatedList = InstanceGroupManagerAggregatedList'
-    { _igmalNextPageToken :: !(Maybe Text)
-    , _igmalKind          :: !Text
-    , _igmalItems         :: !(Maybe InstanceGroupManagerAggregatedListItems)
-    , _igmalSelfLink      :: !(Maybe Text)
-    , _igmalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagerAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmalNextPageToken'
---
--- * 'igmalKind'
---
--- * 'igmalItems'
---
--- * 'igmalSelfLink'
---
--- * 'igmalId'
-instanceGroupManagerAggregatedList
-    :: InstanceGroupManagerAggregatedList
-instanceGroupManagerAggregatedList =
-    InstanceGroupManagerAggregatedList'
-    { _igmalNextPageToken = Nothing
-    , _igmalKind = "compute#instanceGroupManagerAggregatedList"
-    , _igmalItems = Nothing
-    , _igmalSelfLink = Nothing
-    , _igmalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
-igmalNextPageToken
-  = lens _igmalNextPageToken
-      (\ s a -> s{_igmalNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupManagerAggregatedList for an aggregated list of
--- managed instance groups.
-igmalKind :: Lens' InstanceGroupManagerAggregatedList Text
-igmalKind
-  = lens _igmalKind (\ s a -> s{_igmalKind = a})
-
--- | [Output Only] A map of filtered managed instance group lists.
-igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)
-igmalItems
-  = lens _igmalItems (\ s a -> s{_igmalItems = a})
-
--- | [Output Only] The URL for this resource type. The server generates this
--- URL.
-igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
-igmalSelfLink
-  = lens _igmalSelfLink
-      (\ s a -> s{_igmalSelfLink = a})
-
--- | [Output Only] A unique identifier for this aggregated list of managed
--- instance groups. The server generates this identifier.
-igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
-igmalId = lens _igmalId (\ s a -> s{_igmalId = a})
-
-instance FromJSON InstanceGroupManagerAggregatedList
-         where
-        parseJSON
-          = withObject "InstanceGroupManagerAggregatedList"
-              (\ o ->
-                 InstanceGroupManagerAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#instanceGroupManagerAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceGroupManagerAggregatedList
-         where
-        toJSON InstanceGroupManagerAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _igmalNextPageToken,
-                  Just ("kind" .= _igmalKind),
-                  ("items" .=) <$> _igmalItems,
-                  ("selfLink" .=) <$> _igmalSelfLink,
-                  ("id" .=) <$> _igmalId])
-
---
--- /See:/ 'targetPoolsScopedList' smart constructor.
-data TargetPoolsScopedList = TargetPoolsScopedList'
-    { _tpslWarning     :: !(Maybe TargetPoolsScopedListWarning)
-    , _tpslTargetPools :: !(Maybe [TargetPool])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpslWarning'
---
--- * 'tpslTargetPools'
-targetPoolsScopedList
-    :: TargetPoolsScopedList
-targetPoolsScopedList =
-    TargetPoolsScopedList'
-    { _tpslWarning = Nothing
-    , _tpslTargetPools = Nothing
-    }
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
-tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)
-tpslWarning
-  = lens _tpslWarning (\ s a -> s{_tpslWarning = a})
-
--- | List of target pools contained in this scope.
-tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]
-tpslTargetPools
-  = lens _tpslTargetPools
-      (\ s a -> s{_tpslTargetPools = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolsScopedList where
-        parseJSON
-          = withObject "TargetPoolsScopedList"
-              (\ o ->
-                 TargetPoolsScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "targetPools" .!= mempty))
-
-instance ToJSON TargetPoolsScopedList where
-        toJSON TargetPoolsScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _tpslWarning,
-                  ("targetPools" .=) <$> _tpslTargetPools])
-
---
--- /See:/ 'forwardingRuleAggregatedList' smart constructor.
-data ForwardingRuleAggregatedList = ForwardingRuleAggregatedList'
-    { _fralNextPageToken :: !(Maybe Text)
-    , _fralKind          :: !Text
-    , _fralItems         :: !(Maybe ForwardingRuleAggregatedListItems)
-    , _fralSelfLink      :: !(Maybe Text)
-    , _fralId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRuleAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fralNextPageToken'
---
--- * 'fralKind'
---
--- * 'fralItems'
---
--- * 'fralSelfLink'
---
--- * 'fralId'
-forwardingRuleAggregatedList
-    :: ForwardingRuleAggregatedList
-forwardingRuleAggregatedList =
-    ForwardingRuleAggregatedList'
-    { _fralNextPageToken = Nothing
-    , _fralKind = "compute#forwardingRuleAggregatedList"
-    , _fralItems = Nothing
-    , _fralSelfLink = Nothing
-    , _fralId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)
-fralNextPageToken
-  = lens _fralNextPageToken
-      (\ s a -> s{_fralNextPageToken = a})
-
--- | [Output Only] Type of resource. Always
--- compute#forwardingRuleAggregatedList for lists of forwarding rules.
-fralKind :: Lens' ForwardingRuleAggregatedList Text
-fralKind = lens _fralKind (\ s a -> s{_fralKind = a})
-
--- | A map of scoped forwarding rule lists.
-fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)
-fralItems
-  = lens _fralItems (\ s a -> s{_fralItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)
-fralSelfLink
-  = lens _fralSelfLink (\ s a -> s{_fralSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)
-fralId = lens _fralId (\ s a -> s{_fralId = a})
-
-instance FromJSON ForwardingRuleAggregatedList where
-        parseJSON
-          = withObject "ForwardingRuleAggregatedList"
-              (\ o ->
-                 ForwardingRuleAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#forwardingRuleAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ForwardingRuleAggregatedList where
-        toJSON ForwardingRuleAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _fralNextPageToken,
-                  Just ("kind" .= _fralKind),
-                  ("items" .=) <$> _fralItems,
-                  ("selfLink" .=) <$> _fralSelfLink,
-                  ("id" .=) <$> _fralId])
-
---
--- /See:/ 'targetReference' smart constructor.
-newtype TargetReference = TargetReference'
-    { _trTarget :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trTarget'
-targetReference
-    :: TargetReference
-targetReference =
-    TargetReference'
-    { _trTarget = Nothing
-    }
-
-trTarget :: Lens' TargetReference (Maybe Text)
-trTarget = lens _trTarget (\ s a -> s{_trTarget = a})
-
-instance FromJSON TargetReference where
-        parseJSON
-          = withObject "TargetReference"
-              (\ o -> TargetReference' <$> (o .:? "target"))
-
-instance ToJSON TargetReference where
-        toJSON TargetReference'{..}
-          = object (catMaybes [("target" .=) <$> _trTarget])
-
---
--- /See:/ 'targetPoolAggregatedList' smart constructor.
-data TargetPoolAggregatedList = TargetPoolAggregatedList'
-    { _tpalNextPageToken :: !(Maybe Text)
-    , _tpalKind          :: !Text
-    , _tpalItems         :: !(Maybe TargetPoolAggregatedListItems)
-    , _tpalSelfLink      :: !(Maybe Text)
-    , _tpalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpalNextPageToken'
---
--- * 'tpalKind'
---
--- * 'tpalItems'
---
--- * 'tpalSelfLink'
---
--- * 'tpalId'
-targetPoolAggregatedList
-    :: TargetPoolAggregatedList
-targetPoolAggregatedList =
-    TargetPoolAggregatedList'
-    { _tpalNextPageToken = Nothing
-    , _tpalKind = "compute#targetPoolAggregatedList"
-    , _tpalItems = Nothing
-    , _tpalSelfLink = Nothing
-    , _tpalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)
-tpalNextPageToken
-  = lens _tpalNextPageToken
-      (\ s a -> s{_tpalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#targetPoolAggregatedList
--- for aggregated lists of target pools.
-tpalKind :: Lens' TargetPoolAggregatedList Text
-tpalKind = lens _tpalKind (\ s a -> s{_tpalKind = a})
-
--- | [Output Only] A map of scoped target pool lists.
-tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)
-tpalItems
-  = lens _tpalItems (\ s a -> s{_tpalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)
-tpalSelfLink
-  = lens _tpalSelfLink (\ s a -> s{_tpalSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)
-tpalId = lens _tpalId (\ s a -> s{_tpalId = a})
-
-instance FromJSON TargetPoolAggregatedList where
-        parseJSON
-          = withObject "TargetPoolAggregatedList"
-              (\ o ->
-                 TargetPoolAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetPoolAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetPoolAggregatedList where
-        toJSON TargetPoolAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tpalNextPageToken,
-                  Just ("kind" .= _tpalKind),
-                  ("items" .=) <$> _tpalItems,
-                  ("selfLink" .=) <$> _tpalSelfLink,
-                  ("id" .=) <$> _tpalId])
-
---
--- /See:/ 'operationsScopedListWarningDataItem' smart constructor.
-data OperationsScopedListWarningDataItem = OperationsScopedListWarningDataItem'
-    { _oslwdiValue :: !(Maybe Text)
-    , _oslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationsScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oslwdiValue'
---
--- * 'oslwdiKey'
-operationsScopedListWarningDataItem
-    :: OperationsScopedListWarningDataItem
-operationsScopedListWarningDataItem =
-    OperationsScopedListWarningDataItem'
-    { _oslwdiValue = Nothing
-    , _oslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
-oslwdiValue
-  = lens _oslwdiValue (\ s a -> s{_oslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
-oslwdiKey
-  = lens _oslwdiKey (\ s a -> s{_oslwdiKey = a})
-
-instance FromJSON OperationsScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "OperationsScopedListWarningDataItem"
-              (\ o ->
-                 OperationsScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON OperationsScopedListWarningDataItem
-         where
-        toJSON OperationsScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _oslwdiValue,
-                  ("key" .=) <$> _oslwdiKey])
-
--- | A TargetPool resource. This resource defines a pool of instances,
--- associated HttpHealthCheck resources, and the fallback target pool.
---
--- /See:/ 'targetPool' smart constructor.
-data TargetPool = TargetPool'
-    { _tpSessionAffinity   :: !(Maybe TargetPoolSessionAffinity)
-    , _tpBackupPool        :: !(Maybe Text)
-    , _tpKind              :: !Text
-    , _tpSelfLink          :: !(Maybe Text)
-    , _tpName              :: !(Maybe Text)
-    , _tpCreationTimestamp :: !(Maybe Text)
-    , _tpInstances         :: !(Maybe [Text])
-    , _tpId                :: !(Maybe (Textual Word64))
-    , _tpFailoverRatio     :: !(Maybe (Textual Double))
-    , _tpRegion            :: !(Maybe Text)
-    , _tpDescription       :: !(Maybe Text)
-    , _tpHealthChecks      :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPool' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpSessionAffinity'
---
--- * 'tpBackupPool'
---
--- * 'tpKind'
---
--- * 'tpSelfLink'
---
--- * 'tpName'
---
--- * 'tpCreationTimestamp'
---
--- * 'tpInstances'
---
--- * 'tpId'
---
--- * 'tpFailoverRatio'
---
--- * 'tpRegion'
---
--- * 'tpDescription'
---
--- * 'tpHealthChecks'
-targetPool
-    :: TargetPool
-targetPool =
-    TargetPool'
-    { _tpSessionAffinity = Nothing
-    , _tpBackupPool = Nothing
-    , _tpKind = "compute#targetPool"
-    , _tpSelfLink = Nothing
-    , _tpName = Nothing
-    , _tpCreationTimestamp = Nothing
-    , _tpInstances = Nothing
-    , _tpId = Nothing
-    , _tpFailoverRatio = Nothing
-    , _tpRegion = Nothing
-    , _tpDescription = Nothing
-    , _tpHealthChecks = Nothing
-    }
-
--- | Sesssion affinity option, must be one of the following values: NONE:
--- Connections from the same client IP may go to any instance in the pool.
--- CLIENT_IP: Connections from the same client IP will go to the same
--- instance in the pool while that instance remains healthy.
--- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--- protocol will go to the same instance in the pool while that instance
--- remains healthy.
-tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)
-tpSessionAffinity
-  = lens _tpSessionAffinity
-      (\ s a -> s{_tpSessionAffinity = a})
-
--- | This field is applicable only when the containing target pool is serving
--- a forwarding rule as the primary pool, and its failoverRatio field is
--- properly set to a value between [0, 1]. backupPool and failoverRatio
--- together define the fallback behavior of the primary target pool: if the
--- ratio of the healthy instances in the primary pool is at or below
--- failoverRatio, traffic arriving at the load-balanced IP will be directed
--- to the backup pool. In case where failoverRatio and backupPool are not
--- set, or all the instances in the backup pool are unhealthy, the traffic
--- will be directed back to the primary pool in the \"force\" mode, where
--- traffic will be spread to the healthy instances with the best effort, or
--- to all instances when no instance is healthy.
-tpBackupPool :: Lens' TargetPool (Maybe Text)
-tpBackupPool
-  = lens _tpBackupPool (\ s a -> s{_tpBackupPool = a})
-
--- | [Output Only] Type of the resource. Always compute#targetPool for target
--- pools.
-tpKind :: Lens' TargetPool Text
-tpKind = lens _tpKind (\ s a -> s{_tpKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-tpSelfLink :: Lens' TargetPool (Maybe Text)
-tpSelfLink
-  = lens _tpSelfLink (\ s a -> s{_tpSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-tpName :: Lens' TargetPool (Maybe Text)
-tpName = lens _tpName (\ s a -> s{_tpName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-tpCreationTimestamp :: Lens' TargetPool (Maybe Text)
-tpCreationTimestamp
-  = lens _tpCreationTimestamp
-      (\ s a -> s{_tpCreationTimestamp = a})
-
--- | A list of resource URLs to the virtual machine instances serving this
--- pool. They must live in zones contained in the same region as this pool.
-tpInstances :: Lens' TargetPool [Text]
-tpInstances
-  = lens _tpInstances (\ s a -> s{_tpInstances = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tpId :: Lens' TargetPool (Maybe Word64)
-tpId
-  = lens _tpId (\ s a -> s{_tpId = a}) .
-      mapping _Coerce
-
--- | This field is applicable only when the containing target pool is serving
--- a forwarding rule as the primary pool (i.e., not as a backup pool to
--- some other target pool). The value of the field must be in [0, 1]. If
--- set, backupPool must also be set. They together define the fallback
--- behavior of the primary target pool: if the ratio of the healthy
--- instances in the primary pool is at or below this number, traffic
--- arriving at the load-balanced IP will be directed to the backup pool. In
--- case where failoverRatio is not set or all the instances in the backup
--- pool are unhealthy, the traffic will be directed back to the primary
--- pool in the \"force\" mode, where traffic will be spread to the healthy
--- instances with the best effort, or to all instances when no instance is
--- healthy.
-tpFailoverRatio :: Lens' TargetPool (Maybe Double)
-tpFailoverRatio
-  = lens _tpFailoverRatio
-      (\ s a -> s{_tpFailoverRatio = a})
-      . mapping _Coerce
-
--- | [Output Only] URL of the region where the target pool resides.
-tpRegion :: Lens' TargetPool (Maybe Text)
-tpRegion = lens _tpRegion (\ s a -> s{_tpRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-tpDescription :: Lens' TargetPool (Maybe Text)
-tpDescription
-  = lens _tpDescription
-      (\ s a -> s{_tpDescription = a})
-
--- | A list of URLs to the HttpHealthCheck resource. A member instance in
--- this pool is considered healthy if and only if all specified health
--- checks pass. An empty list means all member instances will be considered
--- healthy at all times.
-tpHealthChecks :: Lens' TargetPool [Text]
-tpHealthChecks
-  = lens _tpHealthChecks
-      (\ s a -> s{_tpHealthChecks = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPool where
-        parseJSON
-          = withObject "TargetPool"
-              (\ o ->
-                 TargetPool' <$>
-                   (o .:? "sessionAffinity") <*> (o .:? "backupPool")
-                     <*> (o .:? "kind" .!= "compute#targetPool")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "instances" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "failoverRatio")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "healthChecks" .!= mempty))
-
-instance ToJSON TargetPool where
-        toJSON TargetPool'{..}
-          = object
-              (catMaybes
-                 [("sessionAffinity" .=) <$> _tpSessionAffinity,
-                  ("backupPool" .=) <$> _tpBackupPool,
-                  Just ("kind" .= _tpKind),
-                  ("selfLink" .=) <$> _tpSelfLink,
-                  ("name" .=) <$> _tpName,
-                  ("creationTimestamp" .=) <$> _tpCreationTimestamp,
-                  ("instances" .=) <$> _tpInstances,
-                  ("id" .=) <$> _tpId,
-                  ("failoverRatio" .=) <$> _tpFailoverRatio,
-                  ("region" .=) <$> _tpRegion,
-                  ("description" .=) <$> _tpDescription,
-                  ("healthChecks" .=) <$> _tpHealthChecks])
-
--- | Contains a list of images.
---
--- /See:/ 'imageList' smart constructor.
-data ImageList = ImageList'
-    { _ilNextPageToken :: !(Maybe Text)
-    , _ilKind          :: !Text
-    , _ilItems         :: !(Maybe [Image])
-    , _ilSelfLink      :: !(Maybe Text)
-    , _ilId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImageList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilNextPageToken'
---
--- * 'ilKind'
---
--- * 'ilItems'
---
--- * 'ilSelfLink'
---
--- * 'ilId'
-imageList
-    :: ImageList
-imageList =
-    ImageList'
-    { _ilNextPageToken = Nothing
-    , _ilKind = "compute#imageList"
-    , _ilItems = Nothing
-    , _ilSelfLink = Nothing
-    , _ilId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-ilNextPageToken :: Lens' ImageList (Maybe Text)
-ilNextPageToken
-  = lens _ilNextPageToken
-      (\ s a -> s{_ilNextPageToken = a})
-
--- | Type of resource.
-ilKind :: Lens' ImageList Text
-ilKind = lens _ilKind (\ s a -> s{_ilKind = a})
-
--- | [Output Only] A list of Image resources.
-ilItems :: Lens' ImageList [Image]
-ilItems
-  = lens _ilItems (\ s a -> s{_ilItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-ilSelfLink :: Lens' ImageList (Maybe Text)
-ilSelfLink
-  = lens _ilSelfLink (\ s a -> s{_ilSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-ilId :: Lens' ImageList (Maybe Text)
-ilId = lens _ilId (\ s a -> s{_ilId = a})
-
-instance FromJSON ImageList where
-        parseJSON
-          = withObject "ImageList"
-              (\ o ->
-                 ImageList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#imageList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ImageList where
-        toJSON ImageList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ilNextPageToken,
-                  Just ("kind" .= _ilKind), ("items" .=) <$> _ilItems,
-                  ("selfLink" .=) <$> _ilSelfLink,
-                  ("id" .=) <$> _ilId])
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
---
--- /See:/ 'vpnTunnelsScopedListWarning' smart constructor.
-data VPNTunnelsScopedListWarning = VPNTunnelsScopedListWarning'
-    { _vtslwData    :: !(Maybe [VPNTunnelsScopedListWarningDataItem])
-    , _vtslwCode    :: !(Maybe VPNTunnelsScopedListWarningCode)
-    , _vtslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelsScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtslwData'
---
--- * 'vtslwCode'
---
--- * 'vtslwMessage'
-vpnTunnelsScopedListWarning
-    :: VPNTunnelsScopedListWarning
-vpnTunnelsScopedListWarning =
-    VPNTunnelsScopedListWarning'
-    { _vtslwData = Nothing
-    , _vtslwCode = Nothing
-    , _vtslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]
-vtslwData
-  = lens _vtslwData (\ s a -> s{_vtslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)
-vtslwCode
-  = lens _vtslwCode (\ s a -> s{_vtslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)
-vtslwMessage
-  = lens _vtslwMessage (\ s a -> s{_vtslwMessage = a})
-
-instance FromJSON VPNTunnelsScopedListWarning where
-        parseJSON
-          = withObject "VPNTunnelsScopedListWarning"
-              (\ o ->
-                 VPNTunnelsScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON VPNTunnelsScopedListWarning where
-        toJSON VPNTunnelsScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _vtslwData,
-                  ("code" .=) <$> _vtslwCode,
-                  ("message" .=) <$> _vtslwMessage])
-
---
--- /See:/ 'targetSSLProxiesSetBackendServiceRequest' smart constructor.
-newtype TargetSSLProxiesSetBackendServiceRequest = TargetSSLProxiesSetBackendServiceRequest'
-    { _tspsbsrService :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetSSLProxiesSetBackendServiceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tspsbsrService'
-targetSSLProxiesSetBackendServiceRequest
-    :: TargetSSLProxiesSetBackendServiceRequest
-targetSSLProxiesSetBackendServiceRequest =
-    TargetSSLProxiesSetBackendServiceRequest'
-    { _tspsbsrService = Nothing
-    }
-
--- | The URL of the new BackendService resource for the targetSslProxy.
-tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)
-tspsbsrService
-  = lens _tspsbsrService
-      (\ s a -> s{_tspsbsrService = a})
-
-instance FromJSON
-         TargetSSLProxiesSetBackendServiceRequest where
-        parseJSON
-          = withObject
-              "TargetSSLProxiesSetBackendServiceRequest"
-              (\ o ->
-                 TargetSSLProxiesSetBackendServiceRequest' <$>
-                   (o .:? "service"))
-
-instance ToJSON
-         TargetSSLProxiesSetBackendServiceRequest where
-        toJSON TargetSSLProxiesSetBackendServiceRequest'{..}
-          = object
-              (catMaybes [("service" .=) <$> _tspsbsrService])
-
--- | A ForwardingRule resource. A ForwardingRule resource specifies which
--- pool of target virtual machines to forward a packet to if it matches the
--- given [IPAddress, IPProtocol, portRange] tuple.
---
--- /See:/ 'forwardingRule' smart constructor.
-data ForwardingRule = ForwardingRule'
-    { _frIPAddress           :: !(Maybe Text)
-    , _frLoadBalancingScheme :: !(Maybe ForwardingRuleLoadBalancingScheme)
-    , _frKind                :: !Text
-    , _frNetwork             :: !(Maybe Text)
-    , _frPortRange           :: !(Maybe Text)
-    , _frSelfLink            :: !(Maybe Text)
-    , _frName                :: !(Maybe Text)
-    , _frIPProtocol          :: !(Maybe ForwardingRuleIPProtocol)
-    , _frCreationTimestamp   :: !(Maybe Text)
-    , _frSubnetwork          :: !(Maybe Text)
-    , _frPorts               :: !(Maybe [Text])
-    , _frId                  :: !(Maybe (Textual Word64))
-    , _frRegion              :: !(Maybe Text)
-    , _frDescription         :: !(Maybe Text)
-    , _frTarget              :: !(Maybe Text)
-    , _frBackendService      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frIPAddress'
---
--- * 'frLoadBalancingScheme'
---
--- * 'frKind'
---
--- * 'frNetwork'
---
--- * 'frPortRange'
---
--- * 'frSelfLink'
---
--- * 'frName'
---
--- * 'frIPProtocol'
---
--- * 'frCreationTimestamp'
---
--- * 'frSubnetwork'
---
--- * 'frPorts'
---
--- * 'frId'
---
--- * 'frRegion'
---
--- * 'frDescription'
---
--- * 'frTarget'
---
--- * 'frBackendService'
-forwardingRule
-    :: ForwardingRule
-forwardingRule =
-    ForwardingRule'
-    { _frIPAddress = Nothing
-    , _frLoadBalancingScheme = Nothing
-    , _frKind = "compute#forwardingRule"
-    , _frNetwork = Nothing
-    , _frPortRange = Nothing
-    , _frSelfLink = Nothing
-    , _frName = Nothing
-    , _frIPProtocol = Nothing
-    , _frCreationTimestamp = Nothing
-    , _frSubnetwork = Nothing
-    , _frPorts = Nothing
-    , _frId = Nothing
-    , _frRegion = Nothing
-    , _frDescription = Nothing
-    , _frTarget = Nothing
-    , _frBackendService = Nothing
-    }
-
--- | The IP address that this forwarding rule is serving on behalf of. For
--- global forwarding rules, the address must be a global IP; for regional
--- forwarding rules, the address must live in the same region as the
--- forwarding rule. By default, this field is empty and an ephemeral IP
--- from the same scope (global or regional) will be assigned. When the load
--- balancing scheme is INTERNAL, this can only be an RFC 1918 IP address
--- belonging to the network\/subnetwork configured for the forwarding rule.
--- A reserved address cannot be used. If the field is empty, the IP address
--- will be automatically allocated from the internal IP range of the
--- subnetwork or network configured for this forwarding rule. Only IPv4 is
--- supported.
-frIPAddress :: Lens' ForwardingRule (Maybe Text)
-frIPAddress
-  = lens _frIPAddress (\ s a -> s{_frIPAddress = a})
-
--- | This signifies what the ForwardingRule will be used for and can only
--- take the following values: INTERNAL EXTERNAL The value of INTERNAL means
--- that this will be used for Internal Network Load Balancing (TCP, UDP).
--- The value of EXTERNAL means that this will be used for External Load
--- Balancing (HTTP(S) LB, External TCP\/UDP LB, SSL Proxy)
-frLoadBalancingScheme :: Lens' ForwardingRule (Maybe ForwardingRuleLoadBalancingScheme)
-frLoadBalancingScheme
-  = lens _frLoadBalancingScheme
-      (\ s a -> s{_frLoadBalancingScheme = a})
-
--- | [Output Only] Type of the resource. Always compute#forwardingRule for
--- Forwarding Rule resources.
-frKind :: Lens' ForwardingRule Text
-frKind = lens _frKind (\ s a -> s{_frKind = a})
-
--- | This field is not used for external load balancing. For internal load
--- balancing, this field identifies the network that the load balanced IP
--- should belong to for this Forwarding Rule. If this field is not
--- specified, the default network will be used.
-frNetwork :: Lens' ForwardingRule (Maybe Text)
-frNetwork
-  = lens _frNetwork (\ s a -> s{_frNetwork = a})
-
--- | Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets
--- addressed to ports in the specified range will be forwarded to target.
--- Forwarding rules with the same [IPAddress, IPProtocol] pair must have
--- disjoint port ranges. This field is not used for internal load
--- balancing.
-frPortRange :: Lens' ForwardingRule (Maybe Text)
-frPortRange
-  = lens _frPortRange (\ s a -> s{_frPortRange = a})
-
--- | [Output Only] Server-defined URL for the resource.
-frSelfLink :: Lens' ForwardingRule (Maybe Text)
-frSelfLink
-  = lens _frSelfLink (\ s a -> s{_frSelfLink = a})
-
--- | Name of the resource; provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-frName :: Lens' ForwardingRule (Maybe Text)
-frName = lens _frName (\ s a -> s{_frName = a})
-
--- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
--- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
-frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)
-frIPProtocol
-  = lens _frIPProtocol (\ s a -> s{_frIPProtocol = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)
-frCreationTimestamp
-  = lens _frCreationTimestamp
-      (\ s a -> s{_frCreationTimestamp = a})
-
--- | This field is not used for external load balancing. For internal load
--- balancing, this field identifies the subnetwork that the load balanced
--- IP should belong to for this Forwarding Rule. If the network specified
--- is in auto subnet mode, this field is optional. However, if the network
--- is in custom subnet mode, a subnetwork must be specified.
-frSubnetwork :: Lens' ForwardingRule (Maybe Text)
-frSubnetwork
-  = lens _frSubnetwork (\ s a -> s{_frSubnetwork = a})
-
--- | This field is not used for external load balancing. When the load
--- balancing scheme is INTERNAL, a single port or a comma separated list of
--- ports can be configured. Only packets addressed to these ports will be
--- forwarded to the backends configured with this forwarding rule. If the
--- port list is not provided then all ports are allowed to pass through.
--- You may specify a maximum of up to 5 ports.
-frPorts :: Lens' ForwardingRule [Text]
-frPorts
-  = lens _frPorts (\ s a -> s{_frPorts = a}) . _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-frId :: Lens' ForwardingRule (Maybe Word64)
-frId
-  = lens _frId (\ s a -> s{_frId = a}) .
-      mapping _Coerce
-
--- | [Output Only] URL of the region where the regional forwarding rule
--- resides. This field is not applicable to global forwarding rules.
-frRegion :: Lens' ForwardingRule (Maybe Text)
-frRegion = lens _frRegion (\ s a -> s{_frRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-frDescription :: Lens' ForwardingRule (Maybe Text)
-frDescription
-  = lens _frDescription
-      (\ s a -> s{_frDescription = a})
-
--- | The URL of the target resource to receive the matched traffic. For
--- regional forwarding rules, this target must live in the same region as
--- the forwarding rule. For global forwarding rules, this target must be a
--- global TargetHttpProxy or TargetHttpsProxy resource. The forwarded
--- traffic must be of a type appropriate to the target object. For example,
--- TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires
--- HTTPS traffic. This field is not used for internal load balancing.
-frTarget :: Lens' ForwardingRule (Maybe Text)
-frTarget = lens _frTarget (\ s a -> s{_frTarget = a})
-
--- | This field is not used for external load balancing. For internal load
--- balancing, this field identifies the BackendService resource to receive
--- the matched traffic.
-frBackendService :: Lens' ForwardingRule (Maybe Text)
-frBackendService
-  = lens _frBackendService
-      (\ s a -> s{_frBackendService = a})
-
-instance FromJSON ForwardingRule where
-        parseJSON
-          = withObject "ForwardingRule"
-              (\ o ->
-                 ForwardingRule' <$>
-                   (o .:? "IPAddress") <*> (o .:? "loadBalancingScheme")
-                     <*> (o .:? "kind" .!= "compute#forwardingRule")
-                     <*> (o .:? "network")
-                     <*> (o .:? "portRange")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "IPProtocol")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "subnetwork")
-                     <*> (o .:? "ports" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "target")
-                     <*> (o .:? "backendService"))
-
-instance ToJSON ForwardingRule where
-        toJSON ForwardingRule'{..}
-          = object
-              (catMaybes
-                 [("IPAddress" .=) <$> _frIPAddress,
-                  ("loadBalancingScheme" .=) <$>
-                    _frLoadBalancingScheme,
-                  Just ("kind" .= _frKind),
-                  ("network" .=) <$> _frNetwork,
-                  ("portRange" .=) <$> _frPortRange,
-                  ("selfLink" .=) <$> _frSelfLink,
-                  ("name" .=) <$> _frName,
-                  ("IPProtocol" .=) <$> _frIPProtocol,
-                  ("creationTimestamp" .=) <$> _frCreationTimestamp,
-                  ("subnetwork" .=) <$> _frSubnetwork,
-                  ("ports" .=) <$> _frPorts, ("id" .=) <$> _frId,
-                  ("region" .=) <$> _frRegion,
-                  ("description" .=) <$> _frDescription,
-                  ("target" .=) <$> _frTarget,
-                  ("backendService" .=) <$> _frBackendService])
-
--- | Contains a list of UrlMap resources.
---
--- /See:/ 'urlMapList' smart constructor.
-data URLMapList = URLMapList'
-    { _umlNextPageToken :: !(Maybe Text)
-    , _umlKind          :: !Text
-    , _umlItems         :: !(Maybe [URLMap])
-    , _umlSelfLink      :: !(Maybe Text)
-    , _umlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umlNextPageToken'
---
--- * 'umlKind'
---
--- * 'umlItems'
---
--- * 'umlSelfLink'
---
--- * 'umlId'
-urlMapList
-    :: URLMapList
-urlMapList =
-    URLMapList'
-    { _umlNextPageToken = Nothing
-    , _umlKind = "compute#urlMapList"
-    , _umlItems = Nothing
-    , _umlSelfLink = Nothing
-    , _umlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-umlNextPageToken :: Lens' URLMapList (Maybe Text)
-umlNextPageToken
-  = lens _umlNextPageToken
-      (\ s a -> s{_umlNextPageToken = a})
-
--- | Type of resource.
-umlKind :: Lens' URLMapList Text
-umlKind = lens _umlKind (\ s a -> s{_umlKind = a})
-
--- | A list of UrlMap resources.
-umlItems :: Lens' URLMapList [URLMap]
-umlItems
-  = lens _umlItems (\ s a -> s{_umlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-umlSelfLink :: Lens' URLMapList (Maybe Text)
-umlSelfLink
-  = lens _umlSelfLink (\ s a -> s{_umlSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Set by the server.
-umlId :: Lens' URLMapList (Maybe Text)
-umlId = lens _umlId (\ s a -> s{_umlId = a})
-
-instance FromJSON URLMapList where
-        parseJSON
-          = withObject "URLMapList"
-              (\ o ->
-                 URLMapList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#urlMapList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON URLMapList where
-        toJSON URLMapList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _umlNextPageToken,
-                  Just ("kind" .= _umlKind),
-                  ("items" .=) <$> _umlItems,
-                  ("selfLink" .=) <$> _umlSelfLink,
-                  ("id" .=) <$> _umlId])
-
---
--- /See:/ 'forwardingRulesScopedListWarningDataItem' smart constructor.
-data ForwardingRulesScopedListWarningDataItem = ForwardingRulesScopedListWarningDataItem'
-    { _frslwdiValue :: !(Maybe Text)
-    , _frslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRulesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frslwdiValue'
---
--- * 'frslwdiKey'
-forwardingRulesScopedListWarningDataItem
-    :: ForwardingRulesScopedListWarningDataItem
-forwardingRulesScopedListWarningDataItem =
-    ForwardingRulesScopedListWarningDataItem'
-    { _frslwdiValue = Nothing
-    , _frslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
-frslwdiValue
-  = lens _frslwdiValue (\ s a -> s{_frslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
-frslwdiKey
-  = lens _frslwdiKey (\ s a -> s{_frslwdiKey = a})
-
-instance FromJSON
-         ForwardingRulesScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "ForwardingRulesScopedListWarningDataItem"
-              (\ o ->
-                 ForwardingRulesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         ForwardingRulesScopedListWarningDataItem where
-        toJSON ForwardingRulesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _frslwdiValue,
-                  ("key" .=) <$> _frslwdiKey])
-
---
--- /See:/ 'instanceGroupManagersScopedListWarningDataItem' smart constructor.
-data InstanceGroupManagersScopedListWarningDataItem = InstanceGroupManagersScopedListWarningDataItem'
-    { _igmslwdiValue :: !(Maybe Text)
-    , _igmslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmslwdiValue'
---
--- * 'igmslwdiKey'
-instanceGroupManagersScopedListWarningDataItem
-    :: InstanceGroupManagersScopedListWarningDataItem
-instanceGroupManagersScopedListWarningDataItem =
-    InstanceGroupManagersScopedListWarningDataItem'
-    { _igmslwdiValue = Nothing
-    , _igmslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
-igmslwdiValue
-  = lens _igmslwdiValue
-      (\ s a -> s{_igmslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
-igmslwdiKey
-  = lens _igmslwdiKey (\ s a -> s{_igmslwdiKey = a})
-
-instance FromJSON
-         InstanceGroupManagersScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersScopedListWarningDataItem"
-              (\ o ->
-                 InstanceGroupManagersScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         InstanceGroupManagersScopedListWarningDataItem where
-        toJSON
-          InstanceGroupManagersScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _igmslwdiValue,
-                  ("key" .=) <$> _igmslwdiKey])
-
---
--- /See:/ 'subnetworksScopedList' smart constructor.
-data SubnetworksScopedList = SubnetworksScopedList'
-    { _sslSubnetworks :: !(Maybe [Subnetwork])
-    , _sslWarning     :: !(Maybe SubnetworksScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworksScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sslSubnetworks'
---
--- * 'sslWarning'
-subnetworksScopedList
-    :: SubnetworksScopedList
-subnetworksScopedList =
-    SubnetworksScopedList'
-    { _sslSubnetworks = Nothing
-    , _sslWarning = Nothing
-    }
-
--- | List of subnetworks contained in this scope.
-sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]
-sslSubnetworks
-  = lens _sslSubnetworks
-      (\ s a -> s{_sslSubnetworks = a})
-      . _Default
-      . _Coerce
-
--- | An informational warning that appears when the list of addresses is
--- empty.
-sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)
-sslWarning
-  = lens _sslWarning (\ s a -> s{_sslWarning = a})
-
-instance FromJSON SubnetworksScopedList where
-        parseJSON
-          = withObject "SubnetworksScopedList"
-              (\ o ->
-                 SubnetworksScopedList' <$>
-                   (o .:? "subnetworks" .!= mempty) <*>
-                     (o .:? "warning"))
-
-instance ToJSON SubnetworksScopedList where
-        toJSON SubnetworksScopedList'{..}
-          = object
-              (catMaybes
-                 [("subnetworks" .=) <$> _sslSubnetworks,
-                  ("warning" .=) <$> _sslWarning])
-
--- | A Project resource. Projects can only be created in the Google Cloud
--- Platform Console. Unless marked otherwise, values can only be modified
--- in the console.
---
--- /See:/ 'project' smart constructor.
-data Project = Project'
-    { _pKind                   :: !Text
-    , _pUsageExportLocation    :: !(Maybe UsageExportLocation)
-    , _pSelfLink               :: !(Maybe Text)
-    , _pName                   :: !(Maybe Text)
-    , _pDefaultServiceAccount  :: !(Maybe Text)
-    , _pCreationTimestamp      :: !(Maybe Text)
-    , _pEnabledFeatures        :: !(Maybe [Text])
-    , _pQuotas                 :: !(Maybe [Quota])
-    , _pId                     :: !(Maybe (Textual Word64))
-    , _pDescription            :: !(Maybe Text)
-    , _pCommonInstanceMetadata :: !(Maybe Metadata)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Project' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pKind'
---
--- * 'pUsageExportLocation'
---
--- * 'pSelfLink'
---
--- * 'pName'
---
--- * 'pDefaultServiceAccount'
---
--- * 'pCreationTimestamp'
---
--- * 'pEnabledFeatures'
---
--- * 'pQuotas'
---
--- * 'pId'
---
--- * 'pDescription'
---
--- * 'pCommonInstanceMetadata'
-project
-    :: Project
-project =
-    Project'
-    { _pKind = "compute#project"
-    , _pUsageExportLocation = Nothing
-    , _pSelfLink = Nothing
-    , _pName = Nothing
-    , _pDefaultServiceAccount = Nothing
-    , _pCreationTimestamp = Nothing
-    , _pEnabledFeatures = Nothing
-    , _pQuotas = Nothing
-    , _pId = Nothing
-    , _pDescription = Nothing
-    , _pCommonInstanceMetadata = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#project for projects.
-pKind :: Lens' Project Text
-pKind = lens _pKind (\ s a -> s{_pKind = a})
-
--- | The naming prefix for daily usage reports and the Google Cloud Storage
--- bucket where they are stored.
-pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)
-pUsageExportLocation
-  = lens _pUsageExportLocation
-      (\ s a -> s{_pUsageExportLocation = a})
-
--- | [Output Only] Server-defined URL for the resource.
-pSelfLink :: Lens' Project (Maybe Text)
-pSelfLink
-  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})
-
--- | The project ID. For example: my-example-project. Use the project ID to
--- make requests to Compute Engine.
-pName :: Lens' Project (Maybe Text)
-pName = lens _pName (\ s a -> s{_pName = a})
-
--- | [Output Only] Default service account used by VMs running in this
--- project.
-pDefaultServiceAccount :: Lens' Project (Maybe Text)
-pDefaultServiceAccount
-  = lens _pDefaultServiceAccount
-      (\ s a -> s{_pDefaultServiceAccount = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-pCreationTimestamp :: Lens' Project (Maybe Text)
-pCreationTimestamp
-  = lens _pCreationTimestamp
-      (\ s a -> s{_pCreationTimestamp = a})
-
--- | Restricted features enabled for use on this project.
-pEnabledFeatures :: Lens' Project [Text]
-pEnabledFeatures
-  = lens _pEnabledFeatures
-      (\ s a -> s{_pEnabledFeatures = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Quotas assigned to this project.
-pQuotas :: Lens' Project [Quota]
-pQuotas
-  = lens _pQuotas (\ s a -> s{_pQuotas = a}) . _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server. This is not the project ID, and is just a unique
--- ID used by Compute Engine to identify resources.
-pId :: Lens' Project (Maybe Word64)
-pId
-  = lens _pId (\ s a -> s{_pId = a}) . mapping _Coerce
-
--- | An optional textual description of the resource.
-pDescription :: Lens' Project (Maybe Text)
-pDescription
-  = lens _pDescription (\ s a -> s{_pDescription = a})
-
--- | Metadata key\/value pairs available to all instances contained in this
--- project. See Custom metadata for more information.
-pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)
-pCommonInstanceMetadata
-  = lens _pCommonInstanceMetadata
-      (\ s a -> s{_pCommonInstanceMetadata = a})
-
-instance FromJSON Project where
-        parseJSON
-          = withObject "Project"
-              (\ o ->
-                 Project' <$>
-                   (o .:? "kind" .!= "compute#project") <*>
-                     (o .:? "usageExportLocation")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "defaultServiceAccount")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "enabledFeatures" .!= mempty)
-                     <*> (o .:? "quotas" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "description")
-                     <*> (o .:? "commonInstanceMetadata"))
-
-instance ToJSON Project where
-        toJSON Project'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _pKind),
-                  ("usageExportLocation" .=) <$> _pUsageExportLocation,
-                  ("selfLink" .=) <$> _pSelfLink,
-                  ("name" .=) <$> _pName,
-                  ("defaultServiceAccount" .=) <$>
-                    _pDefaultServiceAccount,
-                  ("creationTimestamp" .=) <$> _pCreationTimestamp,
-                  ("enabledFeatures" .=) <$> _pEnabledFeatures,
-                  ("quotas" .=) <$> _pQuotas, ("id" .=) <$> _pId,
-                  ("description" .=) <$> _pDescription,
-                  ("commonInstanceMetadata" .=) <$>
-                    _pCommonInstanceMetadata])
-
---
--- /See:/ 'regionInstanceGroupManagersListInstancesResponse' smart constructor.
-newtype RegionInstanceGroupManagersListInstancesResponse = RegionInstanceGroupManagersListInstancesResponse'
-    { _rigmlirManagedInstances :: Maybe [ManagedInstance]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersListInstancesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmlirManagedInstances'
-regionInstanceGroupManagersListInstancesResponse
-    :: RegionInstanceGroupManagersListInstancesResponse
-regionInstanceGroupManagersListInstancesResponse =
-    RegionInstanceGroupManagersListInstancesResponse'
-    { _rigmlirManagedInstances = Nothing
-    }
-
--- | List of managed instances.
-rigmlirManagedInstances :: Lens' RegionInstanceGroupManagersListInstancesResponse [ManagedInstance]
-rigmlirManagedInstances
-  = lens _rigmlirManagedInstances
-      (\ s a -> s{_rigmlirManagedInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupManagersListInstancesResponse
-         where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersListInstancesResponse"
-              (\ o ->
-                 RegionInstanceGroupManagersListInstancesResponse' <$>
-                   (o .:? "managedInstances" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupManagersListInstancesResponse
-         where
-        toJSON
-          RegionInstanceGroupManagersListInstancesResponse'{..}
-          = object
-              (catMaybes
-                 [("managedInstances" .=) <$>
-                    _rigmlirManagedInstances])
-
--- | An Operation resource, used to manage asynchronous API requests.
---
--- /See:/ 'operation' smart constructor.
-data Operation = Operation'
-    { _oTargetId            :: !(Maybe (Textual Word64))
-    , _oStatus              :: !(Maybe OperationStatus)
-    , _oInsertTime          :: !(Maybe Text)
-    , _oProgress            :: !(Maybe (Textual Int32))
-    , _oStartTime           :: !(Maybe Text)
-    , _oKind                :: !Text
-    , _oError               :: !(Maybe OperationError)
-    , _oHTTPErrorMessage    :: !(Maybe Text)
-    , _oZone                :: !(Maybe Text)
-    , _oWarnings            :: !(Maybe [OperationWarningsItem])
-    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))
-    , _oUser                :: !(Maybe Text)
-    , _oSelfLink            :: !(Maybe Text)
-    , _oName                :: !(Maybe Text)
-    , _oStatusMessage       :: !(Maybe Text)
-    , _oCreationTimestamp   :: !(Maybe Text)
-    , _oEndTime             :: !(Maybe Text)
-    , _oId                  :: !(Maybe (Textual Word64))
-    , _oOperationType       :: !(Maybe Text)
-    , _oRegion              :: !(Maybe Text)
-    , _oDescription         :: !(Maybe Text)
-    , _oTargetLink          :: !(Maybe Text)
-    , _oClientOperationId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Operation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oTargetId'
---
--- * 'oStatus'
---
--- * 'oInsertTime'
---
--- * 'oProgress'
---
--- * 'oStartTime'
---
--- * 'oKind'
---
--- * 'oError'
---
--- * 'oHTTPErrorMessage'
---
--- * 'oZone'
---
--- * 'oWarnings'
---
--- * 'oHTTPErrorStatusCode'
---
--- * 'oUser'
---
--- * 'oSelfLink'
---
--- * 'oName'
---
--- * 'oStatusMessage'
---
--- * 'oCreationTimestamp'
---
--- * 'oEndTime'
---
--- * 'oId'
---
--- * 'oOperationType'
---
--- * 'oRegion'
---
--- * 'oDescription'
---
--- * 'oTargetLink'
---
--- * 'oClientOperationId'
-operation
-    :: Operation
-operation =
-    Operation'
-    { _oTargetId = Nothing
-    , _oStatus = Nothing
-    , _oInsertTime = Nothing
-    , _oProgress = Nothing
-    , _oStartTime = Nothing
-    , _oKind = "compute#operation"
-    , _oError = Nothing
-    , _oHTTPErrorMessage = Nothing
-    , _oZone = Nothing
-    , _oWarnings = Nothing
-    , _oHTTPErrorStatusCode = Nothing
-    , _oUser = Nothing
-    , _oSelfLink = Nothing
-    , _oName = Nothing
-    , _oStatusMessage = Nothing
-    , _oCreationTimestamp = Nothing
-    , _oEndTime = Nothing
-    , _oId = Nothing
-    , _oOperationType = Nothing
-    , _oRegion = Nothing
-    , _oDescription = Nothing
-    , _oTargetLink = Nothing
-    , _oClientOperationId = Nothing
-    }
-
--- | [Output Only] The unique target ID, which identifies a specific
--- incarnation of the target resource.
-oTargetId :: Lens' Operation (Maybe Word64)
-oTargetId
-  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .
-      mapping _Coerce
-
--- | [Output Only] The status of the operation, which can be one of the
--- following: PENDING, RUNNING, or DONE.
-oStatus :: Lens' Operation (Maybe OperationStatus)
-oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
-
--- | [Output Only] The time that this operation was requested. This value is
--- in RFC3339 text format.
-oInsertTime :: Lens' Operation (Maybe Text)
-oInsertTime
-  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})
-
--- | [Output Only] An optional progress indicator that ranges from 0 to 100.
--- There is no requirement that this be linear or support any granularity
--- of operations. This should not be used to guess when the operation will
--- be complete. This number should monotonically increase as the operation
--- progresses.
-oProgress :: Lens' Operation (Maybe Int32)
-oProgress
-  = lens _oProgress (\ s a -> s{_oProgress = a}) .
-      mapping _Coerce
-
--- | [Output Only] The time that this operation was started by the server.
--- This value is in RFC3339 text format.
-oStartTime :: Lens' Operation (Maybe Text)
-oStartTime
-  = lens _oStartTime (\ s a -> s{_oStartTime = a})
-
--- | [Output Only] Type of the resource. Always compute#operation for
--- Operation resources.
-oKind :: Lens' Operation Text
-oKind = lens _oKind (\ s a -> s{_oKind = a})
-
--- | [Output Only] If errors are generated during processing of the
--- operation, this field will be populated.
-oError :: Lens' Operation (Maybe OperationError)
-oError = lens _oError (\ s a -> s{_oError = a})
-
--- | [Output Only] If the operation fails, this field contains the HTTP error
--- message that was returned, such as NOT FOUND.
-oHTTPErrorMessage :: Lens' Operation (Maybe Text)
-oHTTPErrorMessage
-  = lens _oHTTPErrorMessage
-      (\ s a -> s{_oHTTPErrorMessage = a})
-
--- | [Output Only] The URL of the zone where the operation resides. Only
--- available when performing per-zone operations.
-oZone :: Lens' Operation (Maybe Text)
-oZone = lens _oZone (\ s a -> s{_oZone = a})
-
--- | [Output Only] If warning messages are generated during processing of the
--- operation, this field will be populated.
-oWarnings :: Lens' Operation [OperationWarningsItem]
-oWarnings
-  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] If the operation fails, this field contains the HTTP error
--- status code that was returned. For example, a 404 means the resource was
--- not found.
-oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)
-oHTTPErrorStatusCode
-  = lens _oHTTPErrorStatusCode
-      (\ s a -> s{_oHTTPErrorStatusCode = a})
-      . mapping _Coerce
-
--- | [Output Only] User who requested the operation, for example:
--- user\'example.com.
-oUser :: Lens' Operation (Maybe Text)
-oUser = lens _oUser (\ s a -> s{_oUser = a})
-
--- | [Output Only] Server-defined URL for the resource.
-oSelfLink :: Lens' Operation (Maybe Text)
-oSelfLink
-  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
-
--- | [Output Only] Name of the resource.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | [Output Only] An optional textual description of the current status of
--- the operation.
-oStatusMessage :: Lens' Operation (Maybe Text)
-oStatusMessage
-  = lens _oStatusMessage
-      (\ s a -> s{_oStatusMessage = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-oCreationTimestamp :: Lens' Operation (Maybe Text)
-oCreationTimestamp
-  = lens _oCreationTimestamp
-      (\ s a -> s{_oCreationTimestamp = a})
-
--- | [Output Only] The time that this operation was completed. This value is
--- in RFC3339 text format.
-oEndTime :: Lens' Operation (Maybe Text)
-oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-oId :: Lens' Operation (Maybe Word64)
-oId
-  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce
-
--- | [Output Only] The type of operation, such as insert, update, or delete,
--- and so on.
-oOperationType :: Lens' Operation (Maybe Text)
-oOperationType
-  = lens _oOperationType
-      (\ s a -> s{_oOperationType = a})
-
--- | [Output Only] The URL of the region where the operation resides. Only
--- available when performing regional operations.
-oRegion :: Lens' Operation (Maybe Text)
-oRegion = lens _oRegion (\ s a -> s{_oRegion = a})
-
--- | [Output Only] A textual description of the operation, which is set when
--- the operation is created.
-oDescription :: Lens' Operation (Maybe Text)
-oDescription
-  = lens _oDescription (\ s a -> s{_oDescription = a})
-
--- | [Output Only] The URL of the resource that the operation modifies. For
--- operations related to creating a snapshot, this points to the persistent
--- disk that the snapshot was created from.
-oTargetLink :: Lens' Operation (Maybe Text)
-oTargetLink
-  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
-
--- | [Output Only] Reserved for future use.
-oClientOperationId :: Lens' Operation (Maybe Text)
-oClientOperationId
-  = lens _oClientOperationId
-      (\ s a -> s{_oClientOperationId = a})
-
-instance FromJSON Operation where
-        parseJSON
-          = withObject "Operation"
-              (\ o ->
-                 Operation' <$>
-                   (o .:? "targetId") <*> (o .:? "status") <*>
-                     (o .:? "insertTime")
-                     <*> (o .:? "progress")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "kind" .!= "compute#operation")
-                     <*> (o .:? "error")
-                     <*> (o .:? "httpErrorMessage")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "warnings" .!= mempty)
-                     <*> (o .:? "httpErrorStatusCode")
-                     <*> (o .:? "user")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "id")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "targetLink")
-                     <*> (o .:? "clientOperationId"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("targetId" .=) <$> _oTargetId,
-                  ("status" .=) <$> _oStatus,
-                  ("insertTime" .=) <$> _oInsertTime,
-                  ("progress" .=) <$> _oProgress,
-                  ("startTime" .=) <$> _oStartTime,
-                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,
-                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,
-                  ("zone" .=) <$> _oZone,
-                  ("warnings" .=) <$> _oWarnings,
-                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,
-                  ("user" .=) <$> _oUser,
-                  ("selfLink" .=) <$> _oSelfLink,
-                  ("name" .=) <$> _oName,
-                  ("statusMessage" .=) <$> _oStatusMessage,
-                  ("creationTimestamp" .=) <$> _oCreationTimestamp,
-                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,
-                  ("operationType" .=) <$> _oOperationType,
-                  ("region" .=) <$> _oRegion,
-                  ("description" .=) <$> _oDescription,
-                  ("targetLink" .=) <$> _oTargetLink,
-                  ("clientOperationId" .=) <$> _oClientOperationId])
-
---
--- /See:/ 'disksScopedListWarningDataItem' smart constructor.
-data DisksScopedListWarningDataItem = DisksScopedListWarningDataItem'
-    { _dslwdiValue :: !(Maybe Text)
-    , _dslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DisksScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dslwdiValue'
---
--- * 'dslwdiKey'
-disksScopedListWarningDataItem
-    :: DisksScopedListWarningDataItem
-disksScopedListWarningDataItem =
-    DisksScopedListWarningDataItem'
-    { _dslwdiValue = Nothing
-    , _dslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)
-dslwdiValue
-  = lens _dslwdiValue (\ s a -> s{_dslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)
-dslwdiKey
-  = lens _dslwdiKey (\ s a -> s{_dslwdiKey = a})
-
-instance FromJSON DisksScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "DisksScopedListWarningDataItem"
-              (\ o ->
-                 DisksScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON DisksScopedListWarningDataItem where
-        toJSON DisksScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _dslwdiValue,
-                  ("key" .=) <$> _dslwdiKey])
-
--- | A Disk resource.
---
--- /See:/ 'disk' smart constructor.
-data Disk = Disk'
-    { _dStatus                      :: !(Maybe DiskStatus)
-    , _dSourceSnapshotId            :: !(Maybe Text)
-    , _dLastAttachTimestamp         :: !(Maybe Text)
-    , _dUsers                       :: !(Maybe [Text])
-    , _dSourceImage                 :: !(Maybe Text)
-    , _dDiskEncryptionKey           :: !(Maybe CustomerEncryptionKey)
-    , _dSizeGb                      :: !(Maybe (Textual Int64))
-    , _dKind                        :: !Text
-    , _dLastDetachTimestamp         :: !(Maybe Text)
-    , _dZone                        :: !(Maybe Text)
-    , _dSelfLink                    :: !(Maybe Text)
-    , _dName                        :: !(Maybe Text)
-    , _dSourceImageId               :: !(Maybe Text)
-    , _dCreationTimestamp           :: !(Maybe Text)
-    , _dSourceImageEncryptionKey    :: !(Maybe CustomerEncryptionKey)
-    , _dId                          :: !(Maybe (Textual Word64))
-    , _dLicenses                    :: !(Maybe [Text])
-    , _dOptions                     :: !(Maybe Text)
-    , _dType                        :: !(Maybe Text)
-    , _dDescription                 :: !(Maybe Text)
-    , _dSourceSnapshotEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _dSourceSnapshot              :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Disk' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dStatus'
---
--- * 'dSourceSnapshotId'
---
--- * 'dLastAttachTimestamp'
---
--- * 'dUsers'
---
--- * 'dSourceImage'
---
--- * 'dDiskEncryptionKey'
---
--- * 'dSizeGb'
---
--- * 'dKind'
---
--- * 'dLastDetachTimestamp'
---
--- * 'dZone'
---
--- * 'dSelfLink'
---
--- * 'dName'
---
--- * 'dSourceImageId'
---
--- * 'dCreationTimestamp'
---
--- * 'dSourceImageEncryptionKey'
---
--- * 'dId'
---
--- * 'dLicenses'
---
--- * 'dOptions'
---
--- * 'dType'
---
--- * 'dDescription'
---
--- * 'dSourceSnapshotEncryptionKey'
---
--- * 'dSourceSnapshot'
-disk
-    :: Disk
-disk =
-    Disk'
-    { _dStatus = Nothing
-    , _dSourceSnapshotId = Nothing
-    , _dLastAttachTimestamp = Nothing
-    , _dUsers = Nothing
-    , _dSourceImage = Nothing
-    , _dDiskEncryptionKey = Nothing
-    , _dSizeGb = Nothing
-    , _dKind = "compute#disk"
-    , _dLastDetachTimestamp = Nothing
-    , _dZone = Nothing
-    , _dSelfLink = Nothing
-    , _dName = Nothing
-    , _dSourceImageId = Nothing
-    , _dCreationTimestamp = Nothing
-    , _dSourceImageEncryptionKey = Nothing
-    , _dId = Nothing
-    , _dLicenses = Nothing
-    , _dOptions = Nothing
-    , _dType = Nothing
-    , _dDescription = Nothing
-    , _dSourceSnapshotEncryptionKey = Nothing
-    , _dSourceSnapshot = Nothing
-    }
-
--- | [Output Only] The status of disk creation.
-dStatus :: Lens' Disk (Maybe DiskStatus)
-dStatus = lens _dStatus (\ s a -> s{_dStatus = a})
-
--- | [Output Only] The unique ID of the snapshot used to create this disk.
--- This value identifies the exact snapshot that was used to create this
--- persistent disk. For example, if you created the persistent disk from a
--- snapshot that was later deleted and recreated under the same name, the
--- source snapshot ID would identify the exact version of the snapshot that
--- was used.
-dSourceSnapshotId :: Lens' Disk (Maybe Text)
-dSourceSnapshotId
-  = lens _dSourceSnapshotId
-      (\ s a -> s{_dSourceSnapshotId = a})
-
--- | [Output Only] Last attach timestamp in RFC3339 text format.
-dLastAttachTimestamp :: Lens' Disk (Maybe Text)
-dLastAttachTimestamp
-  = lens _dLastAttachTimestamp
-      (\ s a -> s{_dLastAttachTimestamp = a})
-
--- | [Output Only] Links to the users of the disk (attached instances) in
--- form: project\/zones\/zone\/instances\/instance
-dUsers :: Lens' Disk [Text]
-dUsers
-  = lens _dUsers (\ s a -> s{_dUsers = a}) . _Default .
-      _Coerce
-
--- | The source image used to create this disk. If the source image is
--- deleted, this field will not be set. To create a disk with one of the
--- public operating system images, specify the image by its family name.
--- For example, specify family\/debian-8 to use the latest Debian 8 image:
--- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,
--- use a specific version of a public operating system image:
--- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To
--- create a disk with a private image that you created, specify the image
--- name in the following format: global\/images\/my-private-image You can
--- also specify a private image by its image family, which returns the
--- latest version of the image in that family. Replace the image name with
--- family\/family-name: global\/images\/family\/my-private-family
-dSourceImage :: Lens' Disk (Maybe Text)
-dSourceImage
-  = lens _dSourceImage (\ s a -> s{_dSourceImage = a})
-
--- | Encrypts the disk using a customer-supplied encryption key. After you
--- encrypt a disk with a customer-supplied key, you must provide the same
--- key if you use the disk later (e.g. to create a disk snapshot or an
--- image, or to attach the disk to a virtual machine). Customer-supplied
--- encryption keys do not protect access to metadata of the disk. If you do
--- not provide an encryption key when creating the disk, then the disk will
--- be encrypted using an automatically generated key and you do not need to
--- provide a key to use the disk later.
-dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
-dDiskEncryptionKey
-  = lens _dDiskEncryptionKey
-      (\ s a -> s{_dDiskEncryptionKey = a})
-
--- | Size of the persistent disk, specified in GB. You can specify this field
--- when creating a persistent disk using the sourceImage or sourceSnapshot
--- parameter, or specify it alone to create an empty persistent disk. If
--- you specify this field along with sourceImage or sourceSnapshot, the
--- value of sizeGb must not be less than the size of the sourceImage or the
--- size of the snapshot.
-dSizeGb :: Lens' Disk (Maybe Int64)
-dSizeGb
-  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .
-      mapping _Coerce
-
--- | [Output Only] Type of the resource. Always compute#disk for disks.
-dKind :: Lens' Disk Text
-dKind = lens _dKind (\ s a -> s{_dKind = a})
-
--- | [Output Only] Last detach timestamp in RFC3339 text format.
-dLastDetachTimestamp :: Lens' Disk (Maybe Text)
-dLastDetachTimestamp
-  = lens _dLastDetachTimestamp
-      (\ s a -> s{_dLastDetachTimestamp = a})
-
--- | [Output Only] URL of the zone where the disk resides.
-dZone :: Lens' Disk (Maybe Text)
-dZone = lens _dZone (\ s a -> s{_dZone = a})
-
--- | [Output Only] Server-defined fully-qualified URL for this resource.
-dSelfLink :: Lens' Disk (Maybe Text)
-dSelfLink
-  = lens _dSelfLink (\ s a -> s{_dSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-dName :: Lens' Disk (Maybe Text)
-dName = lens _dName (\ s a -> s{_dName = a})
-
--- | [Output Only] The ID value of the image used to create this disk. This
--- value identifies the exact image that was used to create this persistent
--- disk. For example, if you created the persistent disk from an image that
--- was later deleted and recreated under the same name, the source image ID
--- would identify the exact version of the image that was used.
-dSourceImageId :: Lens' Disk (Maybe Text)
-dSourceImageId
-  = lens _dSourceImageId
-      (\ s a -> s{_dSourceImageId = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-dCreationTimestamp :: Lens' Disk (Maybe Text)
-dCreationTimestamp
-  = lens _dCreationTimestamp
-      (\ s a -> s{_dCreationTimestamp = a})
-
--- | The customer-supplied encryption key of the source image. Required if
--- the source image is protected by a customer-supplied encryption key.
-dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
-dSourceImageEncryptionKey
-  = lens _dSourceImageEncryptionKey
-      (\ s a -> s{_dSourceImageEncryptionKey = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dId :: Lens' Disk (Maybe Word64)
-dId
-  = lens _dId (\ s a -> s{_dId = a}) . mapping _Coerce
-
--- | Any applicable publicly visible licenses.
-dLicenses :: Lens' Disk [Text]
-dLicenses
-  = lens _dLicenses (\ s a -> s{_dLicenses = a}) .
-      _Default
-      . _Coerce
-
--- | Internal use only.
-dOptions :: Lens' Disk (Maybe Text)
-dOptions = lens _dOptions (\ s a -> s{_dOptions = a})
-
--- | URL of the disk type resource describing which disk type to use to
--- create the disk. Provide this when creating the disk.
-dType :: Lens' Disk (Maybe Text)
-dType = lens _dType (\ s a -> s{_dType = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-dDescription :: Lens' Disk (Maybe Text)
-dDescription
-  = lens _dDescription (\ s a -> s{_dDescription = a})
-
--- | The customer-supplied encryption key of the source snapshot. Required if
--- the source snapshot is protected by a customer-supplied encryption key.
-dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
-dSourceSnapshotEncryptionKey
-  = lens _dSourceSnapshotEncryptionKey
-      (\ s a -> s{_dSourceSnapshotEncryptionKey = a})
-
--- | The source snapshot used to create this disk. You can provide this as a
--- partial or full URL to the resource. For example, the following are
--- valid values: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/snapshots\/snapshot
--- - projects\/project\/global\/snapshots\/snapshot -
--- global\/snapshots\/snapshot
-dSourceSnapshot :: Lens' Disk (Maybe Text)
-dSourceSnapshot
-  = lens _dSourceSnapshot
-      (\ s a -> s{_dSourceSnapshot = a})
-
-instance FromJSON Disk where
-        parseJSON
-          = withObject "Disk"
-              (\ o ->
-                 Disk' <$>
-                   (o .:? "status") <*> (o .:? "sourceSnapshotId") <*>
-                     (o .:? "lastAttachTimestamp")
-                     <*> (o .:? "users" .!= mempty)
-                     <*> (o .:? "sourceImage")
-                     <*> (o .:? "diskEncryptionKey")
-                     <*> (o .:? "sizeGb")
-                     <*> (o .:? "kind" .!= "compute#disk")
-                     <*> (o .:? "lastDetachTimestamp")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "sourceImageId")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "sourceImageEncryptionKey")
-                     <*> (o .:? "id")
-                     <*> (o .:? "licenses" .!= mempty)
-                     <*> (o .:? "options")
-                     <*> (o .:? "type")
-                     <*> (o .:? "description")
-                     <*> (o .:? "sourceSnapshotEncryptionKey")
-                     <*> (o .:? "sourceSnapshot"))
-
-instance ToJSON Disk where
-        toJSON Disk'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _dStatus,
-                  ("sourceSnapshotId" .=) <$> _dSourceSnapshotId,
-                  ("lastAttachTimestamp" .=) <$> _dLastAttachTimestamp,
-                  ("users" .=) <$> _dUsers,
-                  ("sourceImage" .=) <$> _dSourceImage,
-                  ("diskEncryptionKey" .=) <$> _dDiskEncryptionKey,
-                  ("sizeGb" .=) <$> _dSizeGb, Just ("kind" .= _dKind),
-                  ("lastDetachTimestamp" .=) <$> _dLastDetachTimestamp,
-                  ("zone" .=) <$> _dZone,
-                  ("selfLink" .=) <$> _dSelfLink,
-                  ("name" .=) <$> _dName,
-                  ("sourceImageId" .=) <$> _dSourceImageId,
-                  ("creationTimestamp" .=) <$> _dCreationTimestamp,
-                  ("sourceImageEncryptionKey" .=) <$>
-                    _dSourceImageEncryptionKey,
-                  ("id" .=) <$> _dId, ("licenses" .=) <$> _dLicenses,
-                  ("options" .=) <$> _dOptions, ("type" .=) <$> _dType,
-                  ("description" .=) <$> _dDescription,
-                  ("sourceSnapshotEncryptionKey" .=) <$>
-                    _dSourceSnapshotEncryptionKey,
-                  ("sourceSnapshot" .=) <$> _dSourceSnapshot])
-
---
--- /See:/ 'diskMoveRequest' smart constructor.
-data DiskMoveRequest = DiskMoveRequest'
-    { _dmrTargetDisk      :: !(Maybe Text)
-    , _dmrDestinationZone :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskMoveRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmrTargetDisk'
---
--- * 'dmrDestinationZone'
-diskMoveRequest
-    :: DiskMoveRequest
-diskMoveRequest =
-    DiskMoveRequest'
-    { _dmrTargetDisk = Nothing
-    , _dmrDestinationZone = Nothing
-    }
-
--- | The URL of the target disk to move. This can be a full or partial URL.
--- For example, the following are all valid URLs to a disk: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk
--- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk
-dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)
-dmrTargetDisk
-  = lens _dmrTargetDisk
-      (\ s a -> s{_dmrTargetDisk = a})
-
--- | The URL of the destination zone to move the disk. This can be a full or
--- partial URL. For example, the following are all valid URLs to a zone: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
--- - projects\/project\/zones\/zone - zones\/zone
-dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)
-dmrDestinationZone
-  = lens _dmrDestinationZone
-      (\ s a -> s{_dmrDestinationZone = a})
-
-instance FromJSON DiskMoveRequest where
-        parseJSON
-          = withObject "DiskMoveRequest"
-              (\ o ->
-                 DiskMoveRequest' <$>
-                   (o .:? "targetDisk") <*> (o .:? "destinationZone"))
-
-instance ToJSON DiskMoveRequest where
-        toJSON DiskMoveRequest'{..}
-          = object
-              (catMaybes
-                 [("targetDisk" .=) <$> _dmrTargetDisk,
-                  ("destinationZone" .=) <$> _dmrDestinationZone])
-
--- | Configuration parameters of autoscaling based on load balancing.
---
--- /See:/ 'autoscalingPolicyLoadBalancingUtilization' smart constructor.
-newtype AutoscalingPolicyLoadBalancingUtilization = AutoscalingPolicyLoadBalancingUtilization'
-    { _aplbuUtilizationTarget :: Maybe (Textual Double)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalingPolicyLoadBalancingUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aplbuUtilizationTarget'
-autoscalingPolicyLoadBalancingUtilization
-    :: AutoscalingPolicyLoadBalancingUtilization
-autoscalingPolicyLoadBalancingUtilization =
-    AutoscalingPolicyLoadBalancingUtilization'
-    { _aplbuUtilizationTarget = Nothing
-    }
-
--- | Fraction of backend capacity utilization (set in HTTP(s) load balancing
--- configuration) that autoscaler should maintain. Must be a positive float
--- value. If not defined, the default is 0.8.
-aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)
-aplbuUtilizationTarget
-  = lens _aplbuUtilizationTarget
-      (\ s a -> s{_aplbuUtilizationTarget = a})
-      . mapping _Coerce
-
-instance FromJSON
-         AutoscalingPolicyLoadBalancingUtilization where
-        parseJSON
-          = withObject
-              "AutoscalingPolicyLoadBalancingUtilization"
-              (\ o ->
-                 AutoscalingPolicyLoadBalancingUtilization' <$>
-                   (o .:? "utilizationTarget"))
-
-instance ToJSON
-         AutoscalingPolicyLoadBalancingUtilization where
-        toJSON AutoscalingPolicyLoadBalancingUtilization'{..}
-          = object
-              (catMaybes
-                 [("utilizationTarget" .=) <$>
-                    _aplbuUtilizationTarget])
-
---
--- /See:/ 'targetPoolsScopedListWarningDataItem' smart constructor.
-data TargetPoolsScopedListWarningDataItem = TargetPoolsScopedListWarningDataItem'
-    { _tpslwdiValue :: !(Maybe Text)
-    , _tpslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpslwdiValue'
---
--- * 'tpslwdiKey'
-targetPoolsScopedListWarningDataItem
-    :: TargetPoolsScopedListWarningDataItem
-targetPoolsScopedListWarningDataItem =
-    TargetPoolsScopedListWarningDataItem'
-    { _tpslwdiValue = Nothing
-    , _tpslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
-tpslwdiValue
-  = lens _tpslwdiValue (\ s a -> s{_tpslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
-tpslwdiKey
-  = lens _tpslwdiKey (\ s a -> s{_tpslwdiKey = a})
-
-instance FromJSON
-         TargetPoolsScopedListWarningDataItem where
-        parseJSON
-          = withObject "TargetPoolsScopedListWarningDataItem"
-              (\ o ->
-                 TargetPoolsScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON TargetPoolsScopedListWarningDataItem
-         where
-        toJSON TargetPoolsScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _tpslwdiValue,
-                  ("key" .=) <$> _tpslwdiKey])
-
--- | An Instance Group Manager resource.
---
--- /See:/ 'instanceGroupManager' smart constructor.
-data InstanceGroupManager = InstanceGroupManager'
-    { _igmKind              :: !Text
-    , _igmFingerprint       :: !(Maybe Bytes)
-    , _igmBaseInstanceName  :: !(Maybe Text)
-    , _igmZone              :: !(Maybe Text)
-    , _igmInstanceTemplate  :: !(Maybe Text)
-    , _igmTargetSize        :: !(Maybe (Textual Int32))
-    , _igmSelfLink          :: !(Maybe Text)
-    , _igmCurrentActions    :: !(Maybe InstanceGroupManagerActionsSummary)
-    , _igmName              :: !(Maybe Text)
-    , _igmCreationTimestamp :: !(Maybe Text)
-    , _igmId                :: !(Maybe (Textual Word64))
-    , _igmRegion            :: !(Maybe Text)
-    , _igmTargetPools       :: !(Maybe [Text])
-    , _igmDescription       :: !(Maybe Text)
-    , _igmInstanceGroup     :: !(Maybe Text)
-    , _igmNamedPorts        :: !(Maybe [NamedPort])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManager' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmKind'
---
--- * 'igmFingerprint'
---
--- * 'igmBaseInstanceName'
---
--- * 'igmZone'
---
--- * 'igmInstanceTemplate'
---
--- * 'igmTargetSize'
---
--- * 'igmSelfLink'
---
--- * 'igmCurrentActions'
---
--- * 'igmName'
---
--- * 'igmCreationTimestamp'
---
--- * 'igmId'
---
--- * 'igmRegion'
---
--- * 'igmTargetPools'
---
--- * 'igmDescription'
---
--- * 'igmInstanceGroup'
---
--- * 'igmNamedPorts'
-instanceGroupManager
-    :: InstanceGroupManager
-instanceGroupManager =
-    InstanceGroupManager'
-    { _igmKind = "compute#instanceGroupManager"
-    , _igmFingerprint = Nothing
-    , _igmBaseInstanceName = Nothing
-    , _igmZone = Nothing
-    , _igmInstanceTemplate = Nothing
-    , _igmTargetSize = Nothing
-    , _igmSelfLink = Nothing
-    , _igmCurrentActions = Nothing
-    , _igmName = Nothing
-    , _igmCreationTimestamp = Nothing
-    , _igmId = Nothing
-    , _igmRegion = Nothing
-    , _igmTargetPools = Nothing
-    , _igmDescription = Nothing
-    , _igmInstanceGroup = Nothing
-    , _igmNamedPorts = Nothing
-    }
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupManager for managed instance groups.
-igmKind :: Lens' InstanceGroupManager Text
-igmKind = lens _igmKind (\ s a -> s{_igmKind = a})
-
--- | [Output Only] The fingerprint of the resource data. You can use this
--- optional field for optimistic locking when you update the resource.
-igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)
-igmFingerprint
-  = lens _igmFingerprint
-      (\ s a -> s{_igmFingerprint = a})
-      . mapping _Bytes
-
--- | The base instance name to use for instances in this group. The value
--- must be 1-58 characters long. Instances are named by appending a hyphen
--- and a random four-character string to the base instance name. The base
--- instance name must comply with RFC1035.
-igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)
-igmBaseInstanceName
-  = lens _igmBaseInstanceName
-      (\ s a -> s{_igmBaseInstanceName = a})
-
--- | [Output Only] The URL of the zone where the managed instance group is
--- located (for zonal resources).
-igmZone :: Lens' InstanceGroupManager (Maybe Text)
-igmZone = lens _igmZone (\ s a -> s{_igmZone = a})
-
--- | The URL of the instance template that is specified for this managed
--- instance group. The group uses this template to create all new instances
--- in the managed instance group.
-igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)
-igmInstanceTemplate
-  = lens _igmInstanceTemplate
-      (\ s a -> s{_igmInstanceTemplate = a})
-
--- | The target number of running instances for this managed instance group.
--- Deleting or abandoning instances reduces this number. Resizing the group
--- changes this number.
-igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)
-igmTargetSize
-  = lens _igmTargetSize
-      (\ s a -> s{_igmTargetSize = a})
-      . mapping _Coerce
-
--- | [Output Only] The URL for this managed instance group. The server
--- defines this URL.
-igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)
-igmSelfLink
-  = lens _igmSelfLink (\ s a -> s{_igmSelfLink = a})
-
--- | [Output Only] The list of instance actions and the number of instances
--- in this managed instance group that are scheduled for each of those
--- actions.
-igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)
-igmCurrentActions
-  = lens _igmCurrentActions
-      (\ s a -> s{_igmCurrentActions = a})
-
--- | The name of the managed instance group. The name must be 1-63 characters
--- long, and comply with RFC1035.
-igmName :: Lens' InstanceGroupManager (Maybe Text)
-igmName = lens _igmName (\ s a -> s{_igmName = a})
-
--- | [Output Only] The creation timestamp for this managed instance group in
--- RFC3339 text format.
-igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)
-igmCreationTimestamp
-  = lens _igmCreationTimestamp
-      (\ s a -> s{_igmCreationTimestamp = a})
-
--- | [Output Only] A unique identifier for this resource type. The server
--- generates this identifier.
-igmId :: Lens' InstanceGroupManager (Maybe Word64)
-igmId
-  = lens _igmId (\ s a -> s{_igmId = a}) .
-      mapping _Coerce
-
--- | [Output Only] The URL of the region where the managed instance group
--- resides (for regional resources).
-igmRegion :: Lens' InstanceGroupManager (Maybe Text)
-igmRegion
-  = lens _igmRegion (\ s a -> s{_igmRegion = a})
-
--- | The URLs for all TargetPool resources to which instances in the
--- instanceGroup field are added. The target pools automatically apply to
--- all of the instances in the managed instance group.
-igmTargetPools :: Lens' InstanceGroupManager [Text]
-igmTargetPools
-  = lens _igmTargetPools
-      (\ s a -> s{_igmTargetPools = a})
-      . _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-igmDescription :: Lens' InstanceGroupManager (Maybe Text)
-igmDescription
-  = lens _igmDescription
-      (\ s a -> s{_igmDescription = a})
-
--- | [Output Only] The URL of the Instance Group resource.
-igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)
-igmInstanceGroup
-  = lens _igmInstanceGroup
-      (\ s a -> s{_igmInstanceGroup = a})
-
--- | Named ports configured for the Instance Groups complementary to this
--- Instance Group Manager.
-igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]
-igmNamedPorts
-  = lens _igmNamedPorts
-      (\ s a -> s{_igmNamedPorts = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroupManager where
-        parseJSON
-          = withObject "InstanceGroupManager"
-              (\ o ->
-                 InstanceGroupManager' <$>
-                   (o .:? "kind" .!= "compute#instanceGroupManager") <*>
-                     (o .:? "fingerprint")
-                     <*> (o .:? "baseInstanceName")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "instanceTemplate")
-                     <*> (o .:? "targetSize")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "currentActions")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "targetPools" .!= mempty)
-                     <*> (o .:? "description")
-                     <*> (o .:? "instanceGroup")
-                     <*> (o .:? "namedPorts" .!= mempty))
-
-instance ToJSON InstanceGroupManager where
-        toJSON InstanceGroupManager'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _igmKind),
-                  ("fingerprint" .=) <$> _igmFingerprint,
-                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,
-                  ("zone" .=) <$> _igmZone,
-                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,
-                  ("targetSize" .=) <$> _igmTargetSize,
-                  ("selfLink" .=) <$> _igmSelfLink,
-                  ("currentActions" .=) <$> _igmCurrentActions,
-                  ("name" .=) <$> _igmName,
-                  ("creationTimestamp" .=) <$> _igmCreationTimestamp,
-                  ("id" .=) <$> _igmId, ("region" .=) <$> _igmRegion,
-                  ("targetPools" .=) <$> _igmTargetPools,
-                  ("description" .=) <$> _igmDescription,
-                  ("instanceGroup" .=) <$> _igmInstanceGroup,
-                  ("namedPorts" .=) <$> _igmNamedPorts])
-
---
--- /See:/ 'regionInstanceGroupsListInstances' smart constructor.
-data RegionInstanceGroupsListInstances = RegionInstanceGroupsListInstances'
-    { _rigliNextPageToken :: !(Maybe Text)
-    , _rigliKind          :: !Text
-    , _rigliItems         :: !(Maybe [InstanceWithNamedPorts])
-    , _rigliSelfLink      :: !(Maybe Text)
-    , _rigliId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupsListInstances' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigliNextPageToken'
---
--- * 'rigliKind'
---
--- * 'rigliItems'
---
--- * 'rigliSelfLink'
---
--- * 'rigliId'
-regionInstanceGroupsListInstances
-    :: RegionInstanceGroupsListInstances
-regionInstanceGroupsListInstances =
-    RegionInstanceGroupsListInstances'
-    { _rigliNextPageToken = Nothing
-    , _rigliKind = "compute#regionInstanceGroupsListInstances"
-    , _rigliItems = Nothing
-    , _rigliSelfLink = Nothing
-    , _rigliId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-rigliNextPageToken :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
-rigliNextPageToken
-  = lens _rigliNextPageToken
-      (\ s a -> s{_rigliNextPageToken = a})
-
--- | The resource type.
-rigliKind :: Lens' RegionInstanceGroupsListInstances Text
-rigliKind
-  = lens _rigliKind (\ s a -> s{_rigliKind = a})
-
--- | A list of instances and any named ports that are assigned to those
--- instances.
-rigliItems :: Lens' RegionInstanceGroupsListInstances [InstanceWithNamedPorts]
-rigliItems
-  = lens _rigliItems (\ s a -> s{_rigliItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-rigliSelfLink :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
-rigliSelfLink
-  = lens _rigliSelfLink
-      (\ s a -> s{_rigliSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-rigliId :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
-rigliId = lens _rigliId (\ s a -> s{_rigliId = a})
-
-instance FromJSON RegionInstanceGroupsListInstances
-         where
-        parseJSON
-          = withObject "RegionInstanceGroupsListInstances"
-              (\ o ->
-                 RegionInstanceGroupsListInstances' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#regionInstanceGroupsListInstances")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RegionInstanceGroupsListInstances
-         where
-        toJSON RegionInstanceGroupsListInstances'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rigliNextPageToken,
-                  Just ("kind" .= _rigliKind),
-                  ("items" .=) <$> _rigliItems,
-                  ("selfLink" .=) <$> _rigliSelfLink,
-                  ("id" .=) <$> _rigliId])
-
---
--- /See:/ 'tcpHealthCheck' smart constructor.
-data TCPHealthCheck = TCPHealthCheck'
-    { _thcResponse    :: !(Maybe Text)
-    , _thcProxyHeader :: !(Maybe TCPHealthCheckProxyHeader)
-    , _thcPortName    :: !(Maybe Text)
-    , _thcPort        :: !(Maybe (Textual Int32))
-    , _thcRequest     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TCPHealthCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thcResponse'
---
--- * 'thcProxyHeader'
---
--- * 'thcPortName'
---
--- * 'thcPort'
---
--- * 'thcRequest'
-tcpHealthCheck
-    :: TCPHealthCheck
-tcpHealthCheck =
-    TCPHealthCheck'
-    { _thcResponse = Nothing
-    , _thcProxyHeader = Nothing
-    , _thcPortName = Nothing
-    , _thcPort = Nothing
-    , _thcRequest = Nothing
-    }
-
--- | The bytes to match against the beginning of the response data. If left
--- empty (the default value), any response will indicate health. The
--- response data can only be ASCII.
-thcResponse :: Lens' TCPHealthCheck (Maybe Text)
-thcResponse
-  = lens _thcResponse (\ s a -> s{_thcResponse = a})
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)
-thcProxyHeader
-  = lens _thcProxyHeader
-      (\ s a -> s{_thcProxyHeader = a})
-
--- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
--- port_name are defined, port takes precedence.
-thcPortName :: Lens' TCPHealthCheck (Maybe Text)
-thcPortName
-  = lens _thcPortName (\ s a -> s{_thcPortName = a})
-
--- | The TCP port number for the health check request. The default value is
--- 80.
-thcPort :: Lens' TCPHealthCheck (Maybe Int32)
-thcPort
-  = lens _thcPort (\ s a -> s{_thcPort = a}) .
-      mapping _Coerce
-
--- | The application data to send once the TCP connection has been
--- established (default value is empty). If both request and response are
--- empty, the connection establishment alone will indicate health. The
--- request data can only be ASCII.
-thcRequest :: Lens' TCPHealthCheck (Maybe Text)
-thcRequest
-  = lens _thcRequest (\ s a -> s{_thcRequest = a})
-
-instance FromJSON TCPHealthCheck where
-        parseJSON
-          = withObject "TCPHealthCheck"
-              (\ o ->
-                 TCPHealthCheck' <$>
-                   (o .:? "response") <*> (o .:? "proxyHeader") <*>
-                     (o .:? "portName")
-                     <*> (o .:? "port")
-                     <*> (o .:? "request"))
-
-instance ToJSON TCPHealthCheck where
-        toJSON TCPHealthCheck'{..}
-          = object
-              (catMaybes
-                 [("response" .=) <$> _thcResponse,
-                  ("proxyHeader" .=) <$> _thcProxyHeader,
-                  ("portName" .=) <$> _thcPortName,
-                  ("port" .=) <$> _thcPort,
-                  ("request" .=) <$> _thcRequest])
-
---
--- /See:/ 'instanceGroupsRemoveInstancesRequest' smart constructor.
-newtype InstanceGroupsRemoveInstancesRequest = InstanceGroupsRemoveInstancesRequest'
-    { _igrirInstances :: Maybe [InstanceReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsRemoveInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igrirInstances'
-instanceGroupsRemoveInstancesRequest
-    :: InstanceGroupsRemoveInstancesRequest
-instanceGroupsRemoveInstancesRequest =
-    InstanceGroupsRemoveInstancesRequest'
-    { _igrirInstances = Nothing
-    }
-
--- | The list of instances to remove from the instance group.
-igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]
-igrirInstances
-  = lens _igrirInstances
-      (\ s a -> s{_igrirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupsRemoveInstancesRequest where
-        parseJSON
-          = withObject "InstanceGroupsRemoveInstancesRequest"
-              (\ o ->
-                 InstanceGroupsRemoveInstancesRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON InstanceGroupsRemoveInstancesRequest
-         where
-        toJSON InstanceGroupsRemoveInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _igrirInstances])
-
---
--- /See:/ 'routeWarningsItemDataItem' smart constructor.
-data RouteWarningsItemDataItem = RouteWarningsItemDataItem'
-    { _rwidiValue :: !(Maybe Text)
-    , _rwidiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouteWarningsItemDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rwidiValue'
---
--- * 'rwidiKey'
-routeWarningsItemDataItem
-    :: RouteWarningsItemDataItem
-routeWarningsItemDataItem =
-    RouteWarningsItemDataItem'
-    { _rwidiValue = Nothing
-    , _rwidiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)
-rwidiValue
-  = lens _rwidiValue (\ s a -> s{_rwidiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)
-rwidiKey = lens _rwidiKey (\ s a -> s{_rwidiKey = a})
-
-instance FromJSON RouteWarningsItemDataItem where
-        parseJSON
-          = withObject "RouteWarningsItemDataItem"
-              (\ o ->
-                 RouteWarningsItemDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON RouteWarningsItemDataItem where
-        toJSON RouteWarningsItemDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _rwidiValue,
-                  ("key" .=) <$> _rwidiKey])
-
--- | A map of scoped BackendService lists.
---
--- /See:/ 'backendServiceAggregatedListItems' smart constructor.
-newtype BackendServiceAggregatedListItems = BackendServiceAggregatedListItems'
-    { _bsaliAddtional :: HashMap Text BackendServicesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServiceAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsaliAddtional'
-backendServiceAggregatedListItems
-    :: HashMap Text BackendServicesScopedList -- ^ 'bsaliAddtional'
-    -> BackendServiceAggregatedListItems
-backendServiceAggregatedListItems pBsaliAddtional_ =
-    BackendServiceAggregatedListItems'
-    { _bsaliAddtional = _Coerce # pBsaliAddtional_
-    }
-
--- | Name of the scope containing this set of BackendServices.
-bsaliAddtional :: Lens' BackendServiceAggregatedListItems (HashMap Text BackendServicesScopedList)
-bsaliAddtional
-  = lens _bsaliAddtional
-      (\ s a -> s{_bsaliAddtional = a})
-      . _Coerce
-
-instance FromJSON BackendServiceAggregatedListItems
-         where
-        parseJSON
-          = withObject "BackendServiceAggregatedListItems"
-              (\ o ->
-                 BackendServiceAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON BackendServiceAggregatedListItems
-         where
-        toJSON = toJSON . _bsaliAddtional
-
--- | [Output Only] A map of scoped instance lists.
---
--- /See:/ 'instanceAggregatedListItems' smart constructor.
-newtype InstanceAggregatedListItems = InstanceAggregatedListItems'
-    { _ialiAddtional :: HashMap Text InstancesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ialiAddtional'
-instanceAggregatedListItems
-    :: HashMap Text InstancesScopedList -- ^ 'ialiAddtional'
-    -> InstanceAggregatedListItems
-instanceAggregatedListItems pIaliAddtional_ =
-    InstanceAggregatedListItems'
-    { _ialiAddtional = _Coerce # pIaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of instances.
-ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)
-ialiAddtional
-  = lens _ialiAddtional
-      (\ s a -> s{_ialiAddtional = a})
-      . _Coerce
-
-instance FromJSON InstanceAggregatedListItems where
-        parseJSON
-          = withObject "InstanceAggregatedListItems"
-              (\ o ->
-                 InstanceAggregatedListItems' <$> (parseJSONObject o))
-
-instance ToJSON InstanceAggregatedListItems where
-        toJSON = toJSON . _ialiAddtional
-
--- | [Output Only] Informational warning which replaces the list of
--- autoscalers when the list is empty.
---
--- /See:/ 'autoscalersScopedListWarning' smart constructor.
-data AutoscalersScopedListWarning = AutoscalersScopedListWarning'
-    { _aslwData    :: !(Maybe [AutoscalersScopedListWarningDataItem])
-    , _aslwCode    :: !(Maybe AutoscalersScopedListWarningCode)
-    , _aslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalersScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aslwData'
---
--- * 'aslwCode'
---
--- * 'aslwMessage'
-autoscalersScopedListWarning
-    :: AutoscalersScopedListWarning
-autoscalersScopedListWarning =
-    AutoscalersScopedListWarning'
-    { _aslwData = Nothing
-    , _aslwCode = Nothing
-    , _aslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]
-aslwData
-  = lens _aslwData (\ s a -> s{_aslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)
-aslwCode = lens _aslwCode (\ s a -> s{_aslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)
-aslwMessage
-  = lens _aslwMessage (\ s a -> s{_aslwMessage = a})
-
-instance FromJSON AutoscalersScopedListWarning where
-        parseJSON
-          = withObject "AutoscalersScopedListWarning"
-              (\ o ->
-                 AutoscalersScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON AutoscalersScopedListWarning where
-        toJSON AutoscalersScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _aslwData,
-                  ("code" .=) <$> _aslwCode,
-                  ("message" .=) <$> _aslwMessage])
-
--- | Contains a list of HealthCheck resources.
---
--- /See:/ 'healthCheckList' smart constructor.
-data HealthCheckList = HealthCheckList'
-    { _hclNextPageToken :: !(Maybe Text)
-    , _hclKind          :: !Text
-    , _hclItems         :: !(Maybe [HealthCheck])
-    , _hclSelfLink      :: !(Maybe Text)
-    , _hclId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HealthCheckList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hclNextPageToken'
---
--- * 'hclKind'
---
--- * 'hclItems'
---
--- * 'hclSelfLink'
---
--- * 'hclId'
-healthCheckList
-    :: HealthCheckList
-healthCheckList =
-    HealthCheckList'
-    { _hclNextPageToken = Nothing
-    , _hclKind = "compute#healthCheckList"
-    , _hclItems = Nothing
-    , _hclSelfLink = Nothing
-    , _hclId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-hclNextPageToken :: Lens' HealthCheckList (Maybe Text)
-hclNextPageToken
-  = lens _hclNextPageToken
-      (\ s a -> s{_hclNextPageToken = a})
-
--- | Type of resource.
-hclKind :: Lens' HealthCheckList Text
-hclKind = lens _hclKind (\ s a -> s{_hclKind = a})
-
--- | A list of HealthCheck resources.
-hclItems :: Lens' HealthCheckList [HealthCheck]
-hclItems
-  = lens _hclItems (\ s a -> s{_hclItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-hclSelfLink :: Lens' HealthCheckList (Maybe Text)
-hclSelfLink
-  = lens _hclSelfLink (\ s a -> s{_hclSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-hclId :: Lens' HealthCheckList (Maybe Text)
-hclId = lens _hclId (\ s a -> s{_hclId = a})
-
-instance FromJSON HealthCheckList where
-        parseJSON
-          = withObject "HealthCheckList"
-              (\ o ->
-                 HealthCheckList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#healthCheckList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON HealthCheckList where
-        toJSON HealthCheckList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _hclNextPageToken,
-                  Just ("kind" .= _hclKind),
-                  ("items" .=) <$> _hclItems,
-                  ("selfLink" .=) <$> _hclSelfLink,
-                  ("id" .=) <$> _hclId])
-
--- | [Output Only] Encountered errors during the last attempt to create or
--- delete the instance.
---
--- /See:/ 'managedInstanceLastAttemptErrors' smart constructor.
-newtype ManagedInstanceLastAttemptErrors = ManagedInstanceLastAttemptErrors'
-    { _milaeErrors :: Maybe [ManagedInstanceLastAttemptErrorsErrorsItem]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedInstanceLastAttemptErrors' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'milaeErrors'
-managedInstanceLastAttemptErrors
-    :: ManagedInstanceLastAttemptErrors
-managedInstanceLastAttemptErrors =
-    ManagedInstanceLastAttemptErrors'
-    { _milaeErrors = Nothing
-    }
-
--- | [Output Only] The array of errors encountered while processing this
--- operation.
-milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]
-milaeErrors
-  = lens _milaeErrors (\ s a -> s{_milaeErrors = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ManagedInstanceLastAttemptErrors
-         where
-        parseJSON
-          = withObject "ManagedInstanceLastAttemptErrors"
-              (\ o ->
-                 ManagedInstanceLastAttemptErrors' <$>
-                   (o .:? "errors" .!= mempty))
-
-instance ToJSON ManagedInstanceLastAttemptErrors
-         where
-        toJSON ManagedInstanceLastAttemptErrors'{..}
-          = object (catMaybes [("errors" .=) <$> _milaeErrors])
-
---
--- /See:/ 'targetPoolsRemoveInstanceRequest' smart constructor.
-newtype TargetPoolsRemoveInstanceRequest = TargetPoolsRemoveInstanceRequest'
-    { _tprirInstances :: Maybe [InstanceReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsRemoveInstanceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tprirInstances'
-targetPoolsRemoveInstanceRequest
-    :: TargetPoolsRemoveInstanceRequest
-targetPoolsRemoveInstanceRequest =
-    TargetPoolsRemoveInstanceRequest'
-    { _tprirInstances = Nothing
-    }
-
--- | URLs of the instances to be removed from target pool.
-tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]
-tprirInstances
-  = lens _tprirInstances
-      (\ s a -> s{_tprirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolsRemoveInstanceRequest
-         where
-        parseJSON
-          = withObject "TargetPoolsRemoveInstanceRequest"
-              (\ o ->
-                 TargetPoolsRemoveInstanceRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON TargetPoolsRemoveInstanceRequest
-         where
-        toJSON TargetPoolsRemoveInstanceRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _tprirInstances])
-
---
--- /See:/ 'targetInstancesScopedListWarningDataItem' smart constructor.
-data TargetInstancesScopedListWarningDataItem = TargetInstancesScopedListWarningDataItem'
-    { _tislwdiValue :: !(Maybe Text)
-    , _tislwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstancesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tislwdiValue'
---
--- * 'tislwdiKey'
-targetInstancesScopedListWarningDataItem
-    :: TargetInstancesScopedListWarningDataItem
-targetInstancesScopedListWarningDataItem =
-    TargetInstancesScopedListWarningDataItem'
-    { _tislwdiValue = Nothing
-    , _tislwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
-tislwdiValue
-  = lens _tislwdiValue (\ s a -> s{_tislwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
-tislwdiKey
-  = lens _tislwdiKey (\ s a -> s{_tislwdiKey = a})
-
-instance FromJSON
-         TargetInstancesScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "TargetInstancesScopedListWarningDataItem"
-              (\ o ->
-                 TargetInstancesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         TargetInstancesScopedListWarningDataItem where
-        toJSON TargetInstancesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _tislwdiValue,
-                  ("key" .=) <$> _tislwdiKey])
-
--- | [Output Only] An informational warning that appears when the machine
--- types list is empty.
---
--- /See:/ 'machineTypesScopedListWarning' smart constructor.
-data MachineTypesScopedListWarning = MachineTypesScopedListWarning'
-    { _mtslwData    :: !(Maybe [MachineTypesScopedListWarningDataItem])
-    , _mtslwCode    :: !(Maybe MachineTypesScopedListWarningCode)
-    , _mtslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtslwData'
---
--- * 'mtslwCode'
---
--- * 'mtslwMessage'
-machineTypesScopedListWarning
-    :: MachineTypesScopedListWarning
-machineTypesScopedListWarning =
-    MachineTypesScopedListWarning'
-    { _mtslwData = Nothing
-    , _mtslwCode = Nothing
-    , _mtslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]
-mtslwData
-  = lens _mtslwData (\ s a -> s{_mtslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)
-mtslwCode
-  = lens _mtslwCode (\ s a -> s{_mtslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)
-mtslwMessage
-  = lens _mtslwMessage (\ s a -> s{_mtslwMessage = a})
-
-instance FromJSON MachineTypesScopedListWarning where
-        parseJSON
-          = withObject "MachineTypesScopedListWarning"
-              (\ o ->
-                 MachineTypesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON MachineTypesScopedListWarning where
-        toJSON MachineTypesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _mtslwData,
-                  ("code" .=) <$> _mtslwCode,
-                  ("message" .=) <$> _mtslwMessage])
-
--- | A TargetInstance resource. This resource defines an endpoint instance
--- that terminates traffic of certain protocols.
---
--- /See:/ 'targetInstance' smart constructor.
-data TargetInstance = TargetInstance'
-    { _tiKind              :: !Text
-    , _tiNATPolicy         :: !(Maybe TargetInstanceNATPolicy)
-    , _tiZone              :: !(Maybe Text)
-    , _tiSelfLink          :: !(Maybe Text)
-    , _tiName              :: !(Maybe Text)
-    , _tiCreationTimestamp :: !(Maybe Text)
-    , _tiId                :: !(Maybe (Textual Word64))
-    , _tiDescription       :: !(Maybe Text)
-    , _tiInstance          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tiKind'
---
--- * 'tiNATPolicy'
---
--- * 'tiZone'
---
--- * 'tiSelfLink'
---
--- * 'tiName'
---
--- * 'tiCreationTimestamp'
---
--- * 'tiId'
---
--- * 'tiDescription'
---
--- * 'tiInstance'
-targetInstance
-    :: TargetInstance
-targetInstance =
-    TargetInstance'
-    { _tiKind = "compute#targetInstance"
-    , _tiNATPolicy = Nothing
-    , _tiZone = Nothing
-    , _tiSelfLink = Nothing
-    , _tiName = Nothing
-    , _tiCreationTimestamp = Nothing
-    , _tiId = Nothing
-    , _tiDescription = Nothing
-    , _tiInstance = Nothing
-    }
-
--- | [Output Only] The type of the resource. Always compute#targetInstance
--- for target instances.
-tiKind :: Lens' TargetInstance Text
-tiKind = lens _tiKind (\ s a -> s{_tiKind = a})
-
--- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
--- only NO_NAT (default value) is supported.
-tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)
-tiNATPolicy
-  = lens _tiNATPolicy (\ s a -> s{_tiNATPolicy = a})
-
--- | [Output Only] URL of the zone where the target instance resides.
-tiZone :: Lens' TargetInstance (Maybe Text)
-tiZone = lens _tiZone (\ s a -> s{_tiZone = a})
-
--- | [Output Only] Server-defined URL for the resource.
-tiSelfLink :: Lens' TargetInstance (Maybe Text)
-tiSelfLink
-  = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-tiName :: Lens' TargetInstance (Maybe Text)
-tiName = lens _tiName (\ s a -> s{_tiName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)
-tiCreationTimestamp
-  = lens _tiCreationTimestamp
-      (\ s a -> s{_tiCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tiId :: Lens' TargetInstance (Maybe Word64)
-tiId
-  = lens _tiId (\ s a -> s{_tiId = a}) .
-      mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-tiDescription :: Lens' TargetInstance (Maybe Text)
-tiDescription
-  = lens _tiDescription
-      (\ s a -> s{_tiDescription = a})
-
--- | A URL to the virtual machine instance that handles traffic for this
--- target instance. When creating a target instance, you can provide the
--- fully-qualified URL or a valid partial URL to the desired virtual
--- machine. For example, the following are all valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
--- - projects\/project\/zones\/zone\/instances\/instance -
--- zones\/zone\/instances\/instance
-tiInstance :: Lens' TargetInstance (Maybe Text)
-tiInstance
-  = lens _tiInstance (\ s a -> s{_tiInstance = a})
-
-instance FromJSON TargetInstance where
-        parseJSON
-          = withObject "TargetInstance"
-              (\ o ->
-                 TargetInstance' <$>
-                   (o .:? "kind" .!= "compute#targetInstance") <*>
-                     (o .:? "natPolicy")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "description")
-                     <*> (o .:? "instance"))
-
-instance ToJSON TargetInstance where
-        toJSON TargetInstance'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _tiKind),
-                  ("natPolicy" .=) <$> _tiNATPolicy,
-                  ("zone" .=) <$> _tiZone,
-                  ("selfLink" .=) <$> _tiSelfLink,
-                  ("name" .=) <$> _tiName,
-                  ("creationTimestamp" .=) <$> _tiCreationTimestamp,
-                  ("id" .=) <$> _tiId,
-                  ("description" .=) <$> _tiDescription,
-                  ("instance" .=) <$> _tiInstance])
-
---
--- /See:/ 'targetPoolInstanceHealth' smart constructor.
-data TargetPoolInstanceHealth = TargetPoolInstanceHealth'
-    { _tpihKind         :: !Text
-    , _tpihHealthStatus :: !(Maybe [HealthStatus])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolInstanceHealth' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpihKind'
---
--- * 'tpihHealthStatus'
-targetPoolInstanceHealth
-    :: TargetPoolInstanceHealth
-targetPoolInstanceHealth =
-    TargetPoolInstanceHealth'
-    { _tpihKind = "compute#targetPoolInstanceHealth"
-    , _tpihHealthStatus = Nothing
-    }
-
--- | [Output Only] Type of resource. Always compute#targetPoolInstanceHealth
--- when checking the health of an instance.
-tpihKind :: Lens' TargetPoolInstanceHealth Text
-tpihKind = lens _tpihKind (\ s a -> s{_tpihKind = a})
-
-tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]
-tpihHealthStatus
-  = lens _tpihHealthStatus
-      (\ s a -> s{_tpihHealthStatus = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolInstanceHealth where
-        parseJSON
-          = withObject "TargetPoolInstanceHealth"
-              (\ o ->
-                 TargetPoolInstanceHealth' <$>
-                   (o .:? "kind" .!= "compute#targetPoolInstanceHealth")
-                     <*> (o .:? "healthStatus" .!= mempty))
-
-instance ToJSON TargetPoolInstanceHealth where
-        toJSON TargetPoolInstanceHealth'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _tpihKind),
-                  ("healthStatus" .=) <$> _tpihHealthStatus])
-
---
--- /See:/ 'instanceGroupManagersListManagedInstancesResponse' smart constructor.
-newtype InstanceGroupManagersListManagedInstancesResponse = InstanceGroupManagersListManagedInstancesResponse'
-    { _igmlmirManagedInstances :: Maybe [ManagedInstance]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersListManagedInstancesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmlmirManagedInstances'
-instanceGroupManagersListManagedInstancesResponse
-    :: InstanceGroupManagersListManagedInstancesResponse
-instanceGroupManagersListManagedInstancesResponse =
-    InstanceGroupManagersListManagedInstancesResponse'
-    { _igmlmirManagedInstances = Nothing
-    }
-
--- | [Output Only] The list of instances in the managed instance group.
-igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]
-igmlmirManagedInstances
-  = lens _igmlmirManagedInstances
-      (\ s a -> s{_igmlmirManagedInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagersListManagedInstancesResponse
-         where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersListManagedInstancesResponse"
-              (\ o ->
-                 InstanceGroupManagersListManagedInstancesResponse'
-                   <$> (o .:? "managedInstances" .!= mempty))
-
-instance ToJSON
-         InstanceGroupManagersListManagedInstancesResponse
-         where
-        toJSON
-          InstanceGroupManagersListManagedInstancesResponse'{..}
-          = object
-              (catMaybes
-                 [("managedInstances" .=) <$>
-                    _igmlmirManagedInstances])
-
--- |
---
--- /See:/ 'instanceProperties' smart constructor.
-data InstanceProperties = InstanceProperties'
-    { _ipServiceAccounts   :: !(Maybe [ServiceAccount])
-    , _ipNetworkInterfaces :: !(Maybe [NetworkInterface])
-    , _ipMachineType       :: !(Maybe Text)
-    , _ipMetadata          :: !(Maybe Metadata)
-    , _ipScheduling        :: !(Maybe Scheduling)
-    , _ipDisks             :: !(Maybe [AttachedDisk])
-    , _ipCanIPForward      :: !(Maybe Bool)
-    , _ipDescription       :: !(Maybe Text)
-    , _ipTags              :: !(Maybe Tags)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipServiceAccounts'
---
--- * 'ipNetworkInterfaces'
---
--- * 'ipMachineType'
---
--- * 'ipMetadata'
---
--- * 'ipScheduling'
---
--- * 'ipDisks'
---
--- * 'ipCanIPForward'
---
--- * 'ipDescription'
---
--- * 'ipTags'
-instanceProperties
-    :: InstanceProperties
-instanceProperties =
-    InstanceProperties'
-    { _ipServiceAccounts = Nothing
-    , _ipNetworkInterfaces = Nothing
-    , _ipMachineType = Nothing
-    , _ipMetadata = Nothing
-    , _ipScheduling = Nothing
-    , _ipDisks = Nothing
-    , _ipCanIPForward = Nothing
-    , _ipDescription = Nothing
-    , _ipTags = Nothing
-    }
-
--- | A list of service accounts with specified scopes. Access tokens for
--- these service accounts are available to the instances that are created
--- from this template. Use metadata queries to obtain the access tokens for
--- these instances.
-ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]
-ipServiceAccounts
-  = lens _ipServiceAccounts
-      (\ s a -> s{_ipServiceAccounts = a})
-      . _Default
-      . _Coerce
-
--- | An array of network access configurations for this interface.
-ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]
-ipNetworkInterfaces
-  = lens _ipNetworkInterfaces
-      (\ s a -> s{_ipNetworkInterfaces = a})
-      . _Default
-      . _Coerce
-
--- | The machine type to use for instances that are created from this
--- template.
-ipMachineType :: Lens' InstanceProperties (Maybe Text)
-ipMachineType
-  = lens _ipMachineType
-      (\ s a -> s{_ipMachineType = a})
-
--- | The metadata key\/value pairs to assign to instances that are created
--- from this template. These pairs can consist of custom metadata or
--- predefined keys. See Project and instance metadata for more information.
-ipMetadata :: Lens' InstanceProperties (Maybe Metadata)
-ipMetadata
-  = lens _ipMetadata (\ s a -> s{_ipMetadata = a})
-
--- | Specifies the scheduling options for the instances that are created from
--- this template.
-ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)
-ipScheduling
-  = lens _ipScheduling (\ s a -> s{_ipScheduling = a})
-
--- | An array of disks that are associated with the instances that are
--- created from this template.
-ipDisks :: Lens' InstanceProperties [AttachedDisk]
-ipDisks
-  = lens _ipDisks (\ s a -> s{_ipDisks = a}) . _Default
-      . _Coerce
-
--- | Enables instances created based on this template to send packets with
--- source IP addresses other than their own and receive packets with
--- destination IP addresses other than their own. If these instances will
--- be used as an IP gateway or it will be set as the next-hop in a Route
--- resource, specify true. If unsure, leave this set to false. See the
--- Enable IP forwarding for instances documentation for more information.
-ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)
-ipCanIPForward
-  = lens _ipCanIPForward
-      (\ s a -> s{_ipCanIPForward = a})
-
--- | An optional text description for the instances that are created from
--- this instance template.
-ipDescription :: Lens' InstanceProperties (Maybe Text)
-ipDescription
-  = lens _ipDescription
-      (\ s a -> s{_ipDescription = a})
-
--- | A list of tags to apply to the instances that are created from this
--- template. The tags identify valid sources or targets for network
--- firewalls. The setTags method can modify this list of tags. Each tag
--- within the list must comply with RFC1035.
-ipTags :: Lens' InstanceProperties (Maybe Tags)
-ipTags = lens _ipTags (\ s a -> s{_ipTags = a})
-
-instance FromJSON InstanceProperties where
-        parseJSON
-          = withObject "InstanceProperties"
-              (\ o ->
-                 InstanceProperties' <$>
-                   (o .:? "serviceAccounts" .!= mempty) <*>
-                     (o .:? "networkInterfaces" .!= mempty)
-                     <*> (o .:? "machineType")
-                     <*> (o .:? "metadata")
-                     <*> (o .:? "scheduling")
-                     <*> (o .:? "disks" .!= mempty)
-                     <*> (o .:? "canIpForward")
-                     <*> (o .:? "description")
-                     <*> (o .:? "tags"))
-
-instance ToJSON InstanceProperties where
-        toJSON InstanceProperties'{..}
-          = object
-              (catMaybes
-                 [("serviceAccounts" .=) <$> _ipServiceAccounts,
-                  ("networkInterfaces" .=) <$> _ipNetworkInterfaces,
-                  ("machineType" .=) <$> _ipMachineType,
-                  ("metadata" .=) <$> _ipMetadata,
-                  ("scheduling" .=) <$> _ipScheduling,
-                  ("disks" .=) <$> _ipDisks,
-                  ("canIpForward" .=) <$> _ipCanIPForward,
-                  ("description" .=) <$> _ipDescription,
-                  ("tags" .=) <$> _ipTags])
-
--- | [Output Only] Informational warning which replaces the list of disk
--- types when the list is empty.
---
--- /See:/ 'diskTypesScopedListWarning' smart constructor.
-data DiskTypesScopedListWarning = DiskTypesScopedListWarning'
-    { _dtslwData    :: !(Maybe [DiskTypesScopedListWarningDataItem])
-    , _dtslwCode    :: !(Maybe DiskTypesScopedListWarningCode)
-    , _dtslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtslwData'
---
--- * 'dtslwCode'
---
--- * 'dtslwMessage'
-diskTypesScopedListWarning
-    :: DiskTypesScopedListWarning
-diskTypesScopedListWarning =
-    DiskTypesScopedListWarning'
-    { _dtslwData = Nothing
-    , _dtslwCode = Nothing
-    , _dtslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]
-dtslwData
-  = lens _dtslwData (\ s a -> s{_dtslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)
-dtslwCode
-  = lens _dtslwCode (\ s a -> s{_dtslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)
-dtslwMessage
-  = lens _dtslwMessage (\ s a -> s{_dtslwMessage = a})
-
-instance FromJSON DiskTypesScopedListWarning where
-        parseJSON
-          = withObject "DiskTypesScopedListWarning"
-              (\ o ->
-                 DiskTypesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON DiskTypesScopedListWarning where
-        toJSON DiskTypesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _dtslwData,
-                  ("code" .=) <$> _dtslwCode,
-                  ("message" .=) <$> _dtslwMessage])
-
--- | [Input Only] Specifies the parameters for a new disk that will be
--- created alongside the new instance. Use initialization parameters to
--- create boot disks or local SSDs attached to the new instance. This
--- property is mutually exclusive with the source property; you can only
--- define one or the other, but not both.
---
--- /See:/ 'attachedDiskInitializeParams' smart constructor.
-data AttachedDiskInitializeParams = AttachedDiskInitializeParams'
-    { _adipSourceImage              :: !(Maybe Text)
-    , _adipDiskSizeGb               :: !(Maybe (Textual Int64))
-    , _adipDiskName                 :: !(Maybe Text)
-    , _adipSourceImageEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _adipDiskType                 :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AttachedDiskInitializeParams' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adipSourceImage'
---
--- * 'adipDiskSizeGb'
---
--- * 'adipDiskName'
---
--- * 'adipSourceImageEncryptionKey'
---
--- * 'adipDiskType'
-attachedDiskInitializeParams
-    :: AttachedDiskInitializeParams
-attachedDiskInitializeParams =
-    AttachedDiskInitializeParams'
-    { _adipSourceImage = Nothing
-    , _adipDiskSizeGb = Nothing
-    , _adipDiskName = Nothing
-    , _adipSourceImageEncryptionKey = Nothing
-    , _adipDiskType = Nothing
-    }
-
--- | The source image to create this disk. When creating a new instance, one
--- of initializeParams.sourceImage or disks.source is required. To create a
--- disk with one of the public operating system images, specify the image
--- by its family name. For example, specify family\/debian-8 to use the
--- latest Debian 8 image:
--- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,
--- use a specific version of a public operating system image:
--- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To
--- create a disk with a private image that you created, specify the image
--- name in the following format: global\/images\/my-private-image You can
--- also specify a private image by its image family, which returns the
--- latest version of the image in that family. Replace the image name with
--- family\/family-name: global\/images\/family\/my-private-family If the
--- source image is deleted later, this field will not be set.
-adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)
-adipSourceImage
-  = lens _adipSourceImage
-      (\ s a -> s{_adipSourceImage = a})
-
--- | Specifies the size of the disk in base-2 GB.
-adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)
-adipDiskSizeGb
-  = lens _adipDiskSizeGb
-      (\ s a -> s{_adipDiskSizeGb = a})
-      . mapping _Coerce
-
--- | Specifies the disk name. If not specified, the default is to use the
--- name of the instance.
-adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)
-adipDiskName
-  = lens _adipDiskName (\ s a -> s{_adipDiskName = a})
-
--- | The customer-supplied encryption key of the source image. Required if
--- the source image is protected by a customer-supplied encryption key.
--- Instance templates do not store customer-supplied encryption keys, so
--- you cannot create disks for instances in a managed instance group if the
--- source images are encrypted with your own keys.
-adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)
-adipSourceImageEncryptionKey
-  = lens _adipSourceImageEncryptionKey
-      (\ s a -> s{_adipSourceImageEncryptionKey = a})
-
--- | Specifies the disk type to use to create the instance. If not specified,
--- the default is pd-standard, specified using the full URL. For example:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/pd-standard
--- Other values include pd-ssd and local-ssd. If you define this field, you
--- can provide either the full or partial URL. For example, the following
--- are valid values: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/diskType
--- - projects\/project\/zones\/zone\/diskTypes\/diskType -
--- zones\/zone\/diskTypes\/diskType Note that for InstanceTemplate, this is
--- the name of the disk type, not URL.
-adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)
-adipDiskType
-  = lens _adipDiskType (\ s a -> s{_adipDiskType = a})
-
-instance FromJSON AttachedDiskInitializeParams where
-        parseJSON
-          = withObject "AttachedDiskInitializeParams"
-              (\ o ->
-                 AttachedDiskInitializeParams' <$>
-                   (o .:? "sourceImage") <*> (o .:? "diskSizeGb") <*>
-                     (o .:? "diskName")
-                     <*> (o .:? "sourceImageEncryptionKey")
-                     <*> (o .:? "diskType"))
-
-instance ToJSON AttachedDiskInitializeParams where
-        toJSON AttachedDiskInitializeParams'{..}
-          = object
-              (catMaybes
-                 [("sourceImage" .=) <$> _adipSourceImage,
-                  ("diskSizeGb" .=) <$> _adipDiskSizeGb,
-                  ("diskName" .=) <$> _adipDiskName,
-                  ("sourceImageEncryptionKey" .=) <$>
-                    _adipSourceImageEncryptionKey,
-                  ("diskType" .=) <$> _adipDiskType])
-
---
--- /See:/ 'addressesScopedListWarningDataItem' smart constructor.
-data AddressesScopedListWarningDataItem = AddressesScopedListWarningDataItem'
-    { _aslwdiValue :: !(Maybe Text)
-    , _aslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aslwdiValue'
---
--- * 'aslwdiKey'
-addressesScopedListWarningDataItem
-    :: AddressesScopedListWarningDataItem
-addressesScopedListWarningDataItem =
-    AddressesScopedListWarningDataItem'
-    { _aslwdiValue = Nothing
-    , _aslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
-aslwdiValue
-  = lens _aslwdiValue (\ s a -> s{_aslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
-aslwdiKey
-  = lens _aslwdiKey (\ s a -> s{_aslwdiKey = a})
-
-instance FromJSON AddressesScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "AddressesScopedListWarningDataItem"
-              (\ o ->
-                 AddressesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON AddressesScopedListWarningDataItem
-         where
-        toJSON AddressesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _aslwdiValue,
-                  ("key" .=) <$> _aslwdiKey])
-
--- | A network interface resource attached to an instance.
---
--- /See:/ 'networkInterface' smart constructor.
-data NetworkInterface = NetworkInterface'
-    { _niKind          :: !Text
-    , _niNetwork       :: !(Maybe Text)
-    , _niName          :: !(Maybe Text)
-    , _niNetworkIP     :: !(Maybe Text)
-    , _niSubnetwork    :: !(Maybe Text)
-    , _niAccessConfigs :: !(Maybe [AccessConfig])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niKind'
---
--- * 'niNetwork'
---
--- * 'niName'
---
--- * 'niNetworkIP'
---
--- * 'niSubnetwork'
---
--- * 'niAccessConfigs'
-networkInterface
-    :: NetworkInterface
-networkInterface =
-    NetworkInterface'
-    { _niKind = "compute#networkInterface"
-    , _niNetwork = Nothing
-    , _niName = Nothing
-    , _niNetworkIP = Nothing
-    , _niSubnetwork = Nothing
-    , _niAccessConfigs = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#networkInterface for
--- network interfaces.
-niKind :: Lens' NetworkInterface Text
-niKind = lens _niKind (\ s a -> s{_niKind = a})
-
--- | URL of the network resource for this instance. This is required for
--- creating an instance but optional when creating a firewall rule. If not
--- specified when creating a firewall rule, the default network is used:
--- global\/networks\/default If you specify this property, you can specify
--- the network as a full or partial URL. For example, the following are all
--- valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/networks\/network
--- - projects\/project\/global\/networks\/network -
--- global\/networks\/default
-niNetwork :: Lens' NetworkInterface (Maybe Text)
-niNetwork
-  = lens _niNetwork (\ s a -> s{_niNetwork = a})
-
--- | [Output Only] The name of the network interface, generated by the
--- server. For network devices, these are eth0, eth1, etc.
-niName :: Lens' NetworkInterface (Maybe Text)
-niName = lens _niName (\ s a -> s{_niName = a})
-
--- | An IPv4 internal network address to assign to the instance for this
--- network interface. If not specified by the user, an unused internal IP
--- is assigned by the system.
-niNetworkIP :: Lens' NetworkInterface (Maybe Text)
-niNetworkIP
-  = lens _niNetworkIP (\ s a -> s{_niNetworkIP = a})
-
--- | The URL of the Subnetwork resource for this instance. If the network
--- resource is in legacy mode, do not provide this property. If the network
--- is in auto subnet mode, providing the subnetwork is optional. If the
--- network is in custom subnet mode, then this field should be specified.
--- If you specify this property, you can specify the subnetwork as a full
--- or partial URL. For example, the following are all valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/regions\/region\/subnetworks\/subnetwork
--- - regions\/region\/subnetworks\/subnetwork
-niSubnetwork :: Lens' NetworkInterface (Maybe Text)
-niSubnetwork
-  = lens _niSubnetwork (\ s a -> s{_niSubnetwork = a})
-
--- | An array of configurations for this interface. Currently, only one
--- access config, ONE_TO_ONE_NAT, is supported. If there are no
--- accessConfigs specified, then this instance will have no external
--- internet access.
-niAccessConfigs :: Lens' NetworkInterface [AccessConfig]
-niAccessConfigs
-  = lens _niAccessConfigs
-      (\ s a -> s{_niAccessConfigs = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON NetworkInterface where
-        parseJSON
-          = withObject "NetworkInterface"
-              (\ o ->
-                 NetworkInterface' <$>
-                   (o .:? "kind" .!= "compute#networkInterface") <*>
-                     (o .:? "network")
-                     <*> (o .:? "name")
-                     <*> (o .:? "networkIP")
-                     <*> (o .:? "subnetwork")
-                     <*> (o .:? "accessConfigs" .!= mempty))
-
-instance ToJSON NetworkInterface where
-        toJSON NetworkInterface'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _niKind),
-                  ("network" .=) <$> _niNetwork,
-                  ("name" .=) <$> _niName,
-                  ("networkIP" .=) <$> _niNetworkIP,
-                  ("subnetwork" .=) <$> _niSubnetwork,
-                  ("accessConfigs" .=) <$> _niAccessConfigs])
-
---
--- /See:/ 'targetPoolsRemoveHealthCheckRequest' smart constructor.
-newtype TargetPoolsRemoveHealthCheckRequest = TargetPoolsRemoveHealthCheckRequest'
-    { _tprhcrHealthChecks :: Maybe [HealthCheckReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsRemoveHealthCheckRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tprhcrHealthChecks'
-targetPoolsRemoveHealthCheckRequest
-    :: TargetPoolsRemoveHealthCheckRequest
-targetPoolsRemoveHealthCheckRequest =
-    TargetPoolsRemoveHealthCheckRequest'
-    { _tprhcrHealthChecks = Nothing
-    }
-
--- | Health check URL to be removed. This can be a full or valid partial URL.
--- For example, the following are valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project\/global\/httpHealthChecks\/health-check
--- - projects\/project\/global\/httpHealthChecks\/health-check -
--- global\/httpHealthChecks\/health-check
-tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]
-tprhcrHealthChecks
-  = lens _tprhcrHealthChecks
-      (\ s a -> s{_tprhcrHealthChecks = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolsRemoveHealthCheckRequest
-         where
-        parseJSON
-          = withObject "TargetPoolsRemoveHealthCheckRequest"
-              (\ o ->
-                 TargetPoolsRemoveHealthCheckRequest' <$>
-                   (o .:? "healthChecks" .!= mempty))
-
-instance ToJSON TargetPoolsRemoveHealthCheckRequest
-         where
-        toJSON TargetPoolsRemoveHealthCheckRequest'{..}
-          = object
-              (catMaybes
-                 [("healthChecks" .=) <$> _tprhcrHealthChecks])
-
---
--- /See:/ 'regionInstanceGroupManagersSetTargetPoolsRequest' smart constructor.
-data RegionInstanceGroupManagersSetTargetPoolsRequest = RegionInstanceGroupManagersSetTargetPoolsRequest'
-    { _rigmstprFingerprint :: !(Maybe Bytes)
-    , _rigmstprTargetPools :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersSetTargetPoolsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmstprFingerprint'
---
--- * 'rigmstprTargetPools'
-regionInstanceGroupManagersSetTargetPoolsRequest
-    :: RegionInstanceGroupManagersSetTargetPoolsRequest
-regionInstanceGroupManagersSetTargetPoolsRequest =
-    RegionInstanceGroupManagersSetTargetPoolsRequest'
-    { _rigmstprFingerprint = Nothing
-    , _rigmstprTargetPools = Nothing
-    }
-
--- | Fingerprint of the target pools information, which is a hash of the
--- contents. This field is used for optimistic locking when you update the
--- target pool entries. This field is optional.
-rigmstprFingerprint :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)
-rigmstprFingerprint
-  = lens _rigmstprFingerprint
-      (\ s a -> s{_rigmstprFingerprint = a})
-      . mapping _Bytes
-
--- | The URL of all TargetPool resources to which instances in the
--- instanceGroup field are added. The target pools automatically apply to
--- all of the instances in the managed instance group.
-rigmstprTargetPools :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest [Text]
-rigmstprTargetPools
-  = lens _rigmstprTargetPools
-      (\ s a -> s{_rigmstprTargetPools = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupManagersSetTargetPoolsRequest
-         where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersSetTargetPoolsRequest"
-              (\ o ->
-                 RegionInstanceGroupManagersSetTargetPoolsRequest' <$>
-                   (o .:? "fingerprint") <*>
-                     (o .:? "targetPools" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupManagersSetTargetPoolsRequest
-         where
-        toJSON
-          RegionInstanceGroupManagersSetTargetPoolsRequest'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _rigmstprFingerprint,
-                  ("targetPools" .=) <$> _rigmstprTargetPools])
-
--- | Contains a list of TargetSslProxy resources.
---
--- /See:/ 'targetSSLProxyList' smart constructor.
-data TargetSSLProxyList = TargetSSLProxyList'
-    { _tsplNextPageToken :: !(Maybe Text)
-    , _tsplKind          :: !Text
-    , _tsplItems         :: !(Maybe [TargetSSLProxy])
-    , _tsplSelfLink      :: !(Maybe Text)
-    , _tsplId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetSSLProxyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tsplNextPageToken'
---
--- * 'tsplKind'
---
--- * 'tsplItems'
---
--- * 'tsplSelfLink'
---
--- * 'tsplId'
-targetSSLProxyList
-    :: TargetSSLProxyList
-targetSSLProxyList =
-    TargetSSLProxyList'
-    { _tsplNextPageToken = Nothing
-    , _tsplKind = "compute#targetSslProxyList"
-    , _tsplItems = Nothing
-    , _tsplSelfLink = Nothing
-    , _tsplId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)
-tsplNextPageToken
-  = lens _tsplNextPageToken
-      (\ s a -> s{_tsplNextPageToken = a})
-
--- | Type of resource.
-tsplKind :: Lens' TargetSSLProxyList Text
-tsplKind = lens _tsplKind (\ s a -> s{_tsplKind = a})
-
--- | A list of TargetSslProxy resources.
-tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]
-tsplItems
-  = lens _tsplItems (\ s a -> s{_tsplItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)
-tsplSelfLink
-  = lens _tsplSelfLink (\ s a -> s{_tsplSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tsplId :: Lens' TargetSSLProxyList (Maybe Text)
-tsplId = lens _tsplId (\ s a -> s{_tsplId = a})
-
-instance FromJSON TargetSSLProxyList where
-        parseJSON
-          = withObject "TargetSSLProxyList"
-              (\ o ->
-                 TargetSSLProxyList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetSslProxyList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetSSLProxyList where
-        toJSON TargetSSLProxyList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tsplNextPageToken,
-                  Just ("kind" .= _tsplKind),
-                  ("items" .=) <$> _tsplItems,
-                  ("selfLink" .=) <$> _tsplSelfLink,
-                  ("id" .=) <$> _tsplId])
-
---
--- /See:/ 'customerEncryptionKeyProtectedDisk' smart constructor.
-data CustomerEncryptionKeyProtectedDisk = CustomerEncryptionKeyProtectedDisk'
-    { _cekpdDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _cekpdSource            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CustomerEncryptionKeyProtectedDisk' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cekpdDiskEncryptionKey'
---
--- * 'cekpdSource'
-customerEncryptionKeyProtectedDisk
-    :: CustomerEncryptionKeyProtectedDisk
-customerEncryptionKeyProtectedDisk =
-    CustomerEncryptionKeyProtectedDisk'
-    { _cekpdDiskEncryptionKey = Nothing
-    , _cekpdSource = Nothing
-    }
-
--- | Decrypts data associated with the disk with a customer-supplied
--- encryption key.
-cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)
-cekpdDiskEncryptionKey
-  = lens _cekpdDiskEncryptionKey
-      (\ s a -> s{_cekpdDiskEncryptionKey = a})
-
--- | Specifies a valid partial or full URL to an existing Persistent Disk
--- resource. This field is only applicable for persistent disks.
-cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)
-cekpdSource
-  = lens _cekpdSource (\ s a -> s{_cekpdSource = a})
-
-instance FromJSON CustomerEncryptionKeyProtectedDisk
-         where
-        parseJSON
-          = withObject "CustomerEncryptionKeyProtectedDisk"
-              (\ o ->
-                 CustomerEncryptionKeyProtectedDisk' <$>
-                   (o .:? "diskEncryptionKey") <*> (o .:? "source"))
-
-instance ToJSON CustomerEncryptionKeyProtectedDisk
-         where
-        toJSON CustomerEncryptionKeyProtectedDisk'{..}
-          = object
-              (catMaybes
-                 [("diskEncryptionKey" .=) <$>
-                    _cekpdDiskEncryptionKey,
-                  ("source" .=) <$> _cekpdSource])
-
--- | A list of instance templates.
---
--- /See:/ 'instanceTemplateList' smart constructor.
-data InstanceTemplateList = InstanceTemplateList'
-    { _itlNextPageToken :: !(Maybe Text)
-    , _itlKind          :: !Text
-    , _itlItems         :: !(Maybe [InstanceTemplate])
-    , _itlSelfLink      :: !(Maybe Text)
-    , _itlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceTemplateList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'itlNextPageToken'
---
--- * 'itlKind'
---
--- * 'itlItems'
---
--- * 'itlSelfLink'
---
--- * 'itlId'
-instanceTemplateList
-    :: InstanceTemplateList
-instanceTemplateList =
-    InstanceTemplateList'
-    { _itlNextPageToken = Nothing
-    , _itlKind = "compute#instanceTemplateList"
-    , _itlItems = Nothing
-    , _itlSelfLink = Nothing
-    , _itlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)
-itlNextPageToken
-  = lens _itlNextPageToken
-      (\ s a -> s{_itlNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceTemplatesListResponse for instance template lists.
-itlKind :: Lens' InstanceTemplateList Text
-itlKind = lens _itlKind (\ s a -> s{_itlKind = a})
-
--- | [Output Only] list of InstanceTemplate resources.
-itlItems :: Lens' InstanceTemplateList [InstanceTemplate]
-itlItems
-  = lens _itlItems (\ s a -> s{_itlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The URL for this instance template list. The server
--- defines this URL.
-itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)
-itlSelfLink
-  = lens _itlSelfLink (\ s a -> s{_itlSelfLink = a})
-
--- | [Output Only] A unique identifier for this instance template. The server
--- defines this identifier.
-itlId :: Lens' InstanceTemplateList (Maybe Text)
-itlId = lens _itlId (\ s a -> s{_itlId = a})
-
-instance FromJSON InstanceTemplateList where
-        parseJSON
-          = withObject "InstanceTemplateList"
-              (\ o ->
-                 InstanceTemplateList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#instanceTemplateList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceTemplateList where
-        toJSON InstanceTemplateList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _itlNextPageToken,
-                  Just ("kind" .= _itlKind),
-                  ("items" .=) <$> _itlItems,
-                  ("selfLink" .=) <$> _itlSelfLink,
-                  ("id" .=) <$> _itlId])
-
--- | Contains a list of Route resources.
---
--- /See:/ 'routeList' smart constructor.
-data RouteList = RouteList'
-    { _rlNextPageToken :: !(Maybe Text)
-    , _rlKind          :: !Text
-    , _rlItems         :: !(Maybe [Route])
-    , _rlSelfLink      :: !(Maybe Text)
-    , _rlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouteList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rlNextPageToken'
---
--- * 'rlKind'
---
--- * 'rlItems'
---
--- * 'rlSelfLink'
---
--- * 'rlId'
-routeList
-    :: RouteList
-routeList =
-    RouteList'
-    { _rlNextPageToken = Nothing
-    , _rlKind = "compute#routeList"
-    , _rlItems = Nothing
-    , _rlSelfLink = Nothing
-    , _rlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-rlNextPageToken :: Lens' RouteList (Maybe Text)
-rlNextPageToken
-  = lens _rlNextPageToken
-      (\ s a -> s{_rlNextPageToken = a})
-
--- | Type of resource.
-rlKind :: Lens' RouteList Text
-rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
-
--- | [Output Only] A list of Route resources.
-rlItems :: Lens' RouteList [Route]
-rlItems
-  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-rlSelfLink :: Lens' RouteList (Maybe Text)
-rlSelfLink
-  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-rlId :: Lens' RouteList (Maybe Text)
-rlId = lens _rlId (\ s a -> s{_rlId = a})
-
-instance FromJSON RouteList where
-        parseJSON
-          = withObject "RouteList"
-              (\ o ->
-                 RouteList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#routeList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RouteList where
-        toJSON RouteList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rlNextPageToken,
-                  Just ("kind" .= _rlKind), ("items" .=) <$> _rlItems,
-                  ("selfLink" .=) <$> _rlSelfLink,
-                  ("id" .=) <$> _rlId])
-
--- | Router resource.
---
--- /See:/ 'router' smart constructor.
-data Router = Router'
-    { _rouBGPPeers          :: !(Maybe [RouterBGPPeer])
-    , _rouBGP               :: !(Maybe RouterBGP)
-    , _rouKind              :: !Text
-    , _rouNetwork           :: !(Maybe Text)
-    , _rouInterfaces        :: !(Maybe [RouterInterface])
-    , _rouSelfLink          :: !(Maybe Text)
-    , _rouName              :: !(Maybe Text)
-    , _rouCreationTimestamp :: !(Maybe Text)
-    , _rouId                :: !(Maybe (Textual Word64))
-    , _rouRegion            :: !(Maybe Text)
-    , _rouDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Router' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rouBGPPeers'
---
--- * 'rouBGP'
---
--- * 'rouKind'
---
--- * 'rouNetwork'
---
--- * 'rouInterfaces'
---
--- * 'rouSelfLink'
---
--- * 'rouName'
---
--- * 'rouCreationTimestamp'
---
--- * 'rouId'
---
--- * 'rouRegion'
---
--- * 'rouDescription'
-router
-    :: Router
-router =
-    Router'
-    { _rouBGPPeers = Nothing
-    , _rouBGP = Nothing
-    , _rouKind = "compute#router"
-    , _rouNetwork = Nothing
-    , _rouInterfaces = Nothing
-    , _rouSelfLink = Nothing
-    , _rouName = Nothing
-    , _rouCreationTimestamp = Nothing
-    , _rouId = Nothing
-    , _rouRegion = Nothing
-    , _rouDescription = Nothing
-    }
-
--- | BGP information that needs to be configured into the routing stack to
--- establish the BGP peering. It must specify peer ASN and either interface
--- name, IP, or peer IP. Please refer to RFC4273.
-rouBGPPeers :: Lens' Router [RouterBGPPeer]
-rouBGPPeers
-  = lens _rouBGPPeers (\ s a -> s{_rouBGPPeers = a}) .
-      _Default
-      . _Coerce
-
--- | BGP information specific to this router.
-rouBGP :: Lens' Router (Maybe RouterBGP)
-rouBGP = lens _rouBGP (\ s a -> s{_rouBGP = a})
-
--- | [Output Only] Type of resource. Always compute#router for routers.
-rouKind :: Lens' Router Text
-rouKind = lens _rouKind (\ s a -> s{_rouKind = a})
-
--- | URI of the network to which this router belongs.
-rouNetwork :: Lens' Router (Maybe Text)
-rouNetwork
-  = lens _rouNetwork (\ s a -> s{_rouNetwork = a})
-
--- | Router interfaces. Each interface requires either one linked resource
--- (e.g. linkedVpnTunnel), or IP address and IP address range (e.g.
--- ipRange), or both.
-rouInterfaces :: Lens' Router [RouterInterface]
-rouInterfaces
-  = lens _rouInterfaces
-      (\ s a -> s{_rouInterfaces = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-rouSelfLink :: Lens' Router (Maybe Text)
-rouSelfLink
-  = lens _rouSelfLink (\ s a -> s{_rouSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-rouName :: Lens' Router (Maybe Text)
-rouName = lens _rouName (\ s a -> s{_rouName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-rouCreationTimestamp :: Lens' Router (Maybe Text)
-rouCreationTimestamp
-  = lens _rouCreationTimestamp
-      (\ s a -> s{_rouCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-rouId :: Lens' Router (Maybe Word64)
-rouId
-  = lens _rouId (\ s a -> s{_rouId = a}) .
-      mapping _Coerce
-
--- | [Output Only] URI of the region where the router resides.
-rouRegion :: Lens' Router (Maybe Text)
-rouRegion
-  = lens _rouRegion (\ s a -> s{_rouRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-rouDescription :: Lens' Router (Maybe Text)
-rouDescription
-  = lens _rouDescription
-      (\ s a -> s{_rouDescription = a})
-
-instance FromJSON Router where
-        parseJSON
-          = withObject "Router"
-              (\ o ->
-                 Router' <$>
-                   (o .:? "bgpPeers" .!= mempty) <*> (o .:? "bgp") <*>
-                     (o .:? "kind" .!= "compute#router")
-                     <*> (o .:? "network")
-                     <*> (o .:? "interfaces" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description"))
-
-instance ToJSON Router where
-        toJSON Router'{..}
-          = object
-              (catMaybes
-                 [("bgpPeers" .=) <$> _rouBGPPeers,
-                  ("bgp" .=) <$> _rouBGP, Just ("kind" .= _rouKind),
-                  ("network" .=) <$> _rouNetwork,
-                  ("interfaces" .=) <$> _rouInterfaces,
-                  ("selfLink" .=) <$> _rouSelfLink,
-                  ("name" .=) <$> _rouName,
-                  ("creationTimestamp" .=) <$> _rouCreationTimestamp,
-                  ("id" .=) <$> _rouId, ("region" .=) <$> _rouRegion,
-                  ("description" .=) <$> _rouDescription])
-
---
--- /See:/ 'routersScopedListWarningDataItem' smart constructor.
-data RoutersScopedListWarningDataItem = RoutersScopedListWarningDataItem'
-    { _rslwdiValue :: !(Maybe Text)
-    , _rslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoutersScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rslwdiValue'
---
--- * 'rslwdiKey'
-routersScopedListWarningDataItem
-    :: RoutersScopedListWarningDataItem
-routersScopedListWarningDataItem =
-    RoutersScopedListWarningDataItem'
-    { _rslwdiValue = Nothing
-    , _rslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
-rslwdiValue
-  = lens _rslwdiValue (\ s a -> s{_rslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
-rslwdiKey
-  = lens _rslwdiKey (\ s a -> s{_rslwdiKey = a})
-
-instance FromJSON RoutersScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "RoutersScopedListWarningDataItem"
-              (\ o ->
-                 RoutersScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON RoutersScopedListWarningDataItem
-         where
-        toJSON RoutersScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _rslwdiValue,
-                  ("key" .=) <$> _rslwdiKey])
-
--- | Contains a list of TargetVpnGateway resources.
---
--- /See:/ 'targetVPNGatewayList' smart constructor.
-data TargetVPNGatewayList = TargetVPNGatewayList'
-    { _tvglNextPageToken :: !(Maybe Text)
-    , _tvglKind          :: !Text
-    , _tvglItems         :: !(Maybe [TargetVPNGateway])
-    , _tvglSelfLink      :: !(Maybe Text)
-    , _tvglId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewayList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvglNextPageToken'
---
--- * 'tvglKind'
---
--- * 'tvglItems'
---
--- * 'tvglSelfLink'
---
--- * 'tvglId'
-targetVPNGatewayList
-    :: TargetVPNGatewayList
-targetVPNGatewayList =
-    TargetVPNGatewayList'
-    { _tvglNextPageToken = Nothing
-    , _tvglKind = "compute#targetVpnGatewayList"
-    , _tvglItems = Nothing
-    , _tvglSelfLink = Nothing
-    , _tvglId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)
-tvglNextPageToken
-  = lens _tvglNextPageToken
-      (\ s a -> s{_tvglNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#targetVpnGateway for
--- target VPN gateways.
-tvglKind :: Lens' TargetVPNGatewayList Text
-tvglKind = lens _tvglKind (\ s a -> s{_tvglKind = a})
-
--- | [Output Only] A list of TargetVpnGateway resources.
-tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]
-tvglItems
-  = lens _tvglItems (\ s a -> s{_tvglItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)
-tvglSelfLink
-  = lens _tvglSelfLink (\ s a -> s{_tvglSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tvglId :: Lens' TargetVPNGatewayList (Maybe Text)
-tvglId = lens _tvglId (\ s a -> s{_tvglId = a})
-
-instance FromJSON TargetVPNGatewayList where
-        parseJSON
-          = withObject "TargetVPNGatewayList"
-              (\ o ->
-                 TargetVPNGatewayList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetVpnGatewayList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetVPNGatewayList where
-        toJSON TargetVPNGatewayList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tvglNextPageToken,
-                  Just ("kind" .= _tvglKind),
-                  ("items" .=) <$> _tvglItems,
-                  ("selfLink" .=) <$> _tvglSelfLink,
-                  ("id" .=) <$> _tvglId])
-
--- | Contains a list of SslCertificate resources.
---
--- /See:/ 'sslCertificateList' smart constructor.
-data SSLCertificateList = SSLCertificateList'
-    { _sclNextPageToken :: !(Maybe Text)
-    , _sclKind          :: !Text
-    , _sclItems         :: !(Maybe [SSLCertificate])
-    , _sclSelfLink      :: !(Maybe Text)
-    , _sclId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SSLCertificateList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sclNextPageToken'
---
--- * 'sclKind'
---
--- * 'sclItems'
---
--- * 'sclSelfLink'
---
--- * 'sclId'
-sslCertificateList
-    :: SSLCertificateList
-sslCertificateList =
-    SSLCertificateList'
-    { _sclNextPageToken = Nothing
-    , _sclKind = "compute#sslCertificateList"
-    , _sclItems = Nothing
-    , _sclSelfLink = Nothing
-    , _sclId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)
-sclNextPageToken
-  = lens _sclNextPageToken
-      (\ s a -> s{_sclNextPageToken = a})
-
--- | Type of resource.
-sclKind :: Lens' SSLCertificateList Text
-sclKind = lens _sclKind (\ s a -> s{_sclKind = a})
-
--- | A list of SslCertificate resources.
-sclItems :: Lens' SSLCertificateList [SSLCertificate]
-sclItems
-  = lens _sclItems (\ s a -> s{_sclItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-sclSelfLink :: Lens' SSLCertificateList (Maybe Text)
-sclSelfLink
-  = lens _sclSelfLink (\ s a -> s{_sclSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-sclId :: Lens' SSLCertificateList (Maybe Text)
-sclId = lens _sclId (\ s a -> s{_sclId = a})
-
-instance FromJSON SSLCertificateList where
-        parseJSON
-          = withObject "SSLCertificateList"
-              (\ o ->
-                 SSLCertificateList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#sslCertificateList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON SSLCertificateList where
-        toJSON SSLCertificateList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _sclNextPageToken,
-                  Just ("kind" .= _sclKind),
-                  ("items" .=) <$> _sclItems,
-                  ("selfLink" .=) <$> _sclSelfLink,
-                  ("id" .=) <$> _sclId])
-
---
--- /See:/ 'firewallAllowedItem' smart constructor.
-data FirewallAllowedItem = FirewallAllowedItem'
-    { _faiIPProtocol :: !(Maybe Text)
-    , _faiPorts      :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FirewallAllowedItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'faiIPProtocol'
---
--- * 'faiPorts'
-firewallAllowedItem
-    :: FirewallAllowedItem
-firewallAllowedItem =
-    FirewallAllowedItem'
-    { _faiIPProtocol = Nothing
-    , _faiPorts = Nothing
-    }
-
--- | The IP protocol to which this rule applies. The protocol type is
--- required when creating a firewall rule. This value can either be one of
--- the following well known protocol strings (tcp, udp, icmp, esp, ah,
--- sctp), or the IP protocol number.
-faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)
-faiIPProtocol
-  = lens _faiIPProtocol
-      (\ s a -> s{_faiIPProtocol = a})
-
--- | An optional list of ports to which this rule applies. This field is only
--- applicable for UDP or TCP protocol. Each entry must be either an integer
--- or a range. If not specified, this rule applies to connections through
--- any port. Example inputs include: [\"22\"], [\"80\",\"443\"], and
--- [\"12345-12349\"].
-faiPorts :: Lens' FirewallAllowedItem [Text]
-faiPorts
-  = lens _faiPorts (\ s a -> s{_faiPorts = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON FirewallAllowedItem where
-        parseJSON
-          = withObject "FirewallAllowedItem"
-              (\ o ->
-                 FirewallAllowedItem' <$>
-                   (o .:? "IPProtocol") <*> (o .:? "ports" .!= mempty))
-
-instance ToJSON FirewallAllowedItem where
-        toJSON FirewallAllowedItem'{..}
-          = object
-              (catMaybes
-                 [("IPProtocol" .=) <$> _faiIPProtocol,
-                  ("ports" .=) <$> _faiPorts])
-
--- | Contains a list of BackendServicesScopedList.
---
--- /See:/ 'backendServiceAggregatedList' smart constructor.
-data BackendServiceAggregatedList = BackendServiceAggregatedList'
-    { _bsalNextPageToken :: !(Maybe Text)
-    , _bsalKind          :: !Text
-    , _bsalItems         :: !(Maybe BackendServiceAggregatedListItems)
-    , _bsalSelfLink      :: !(Maybe Text)
-    , _bsalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServiceAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsalNextPageToken'
---
--- * 'bsalKind'
---
--- * 'bsalItems'
---
--- * 'bsalSelfLink'
---
--- * 'bsalId'
-backendServiceAggregatedList
-    :: BackendServiceAggregatedList
-backendServiceAggregatedList =
-    BackendServiceAggregatedList'
-    { _bsalNextPageToken = Nothing
-    , _bsalKind = "compute#backendServiceAggregatedList"
-    , _bsalItems = Nothing
-    , _bsalSelfLink = Nothing
-    , _bsalId = Nothing
-    }
-
--- | [Output Only] A token used to continue a truncated list request.
-bsalNextPageToken :: Lens' BackendServiceAggregatedList (Maybe Text)
-bsalNextPageToken
-  = lens _bsalNextPageToken
-      (\ s a -> s{_bsalNextPageToken = a})
-
--- | Type of resource.
-bsalKind :: Lens' BackendServiceAggregatedList Text
-bsalKind = lens _bsalKind (\ s a -> s{_bsalKind = a})
-
--- | A map of scoped BackendService lists.
-bsalItems :: Lens' BackendServiceAggregatedList (Maybe BackendServiceAggregatedListItems)
-bsalItems
-  = lens _bsalItems (\ s a -> s{_bsalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-bsalSelfLink :: Lens' BackendServiceAggregatedList (Maybe Text)
-bsalSelfLink
-  = lens _bsalSelfLink (\ s a -> s{_bsalSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-bsalId :: Lens' BackendServiceAggregatedList (Maybe Text)
-bsalId = lens _bsalId (\ s a -> s{_bsalId = a})
-
-instance FromJSON BackendServiceAggregatedList where
-        parseJSON
-          = withObject "BackendServiceAggregatedList"
-              (\ o ->
-                 BackendServiceAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#backendServiceAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON BackendServiceAggregatedList where
-        toJSON BackendServiceAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _bsalNextPageToken,
-                  Just ("kind" .= _bsalKind),
-                  ("items" .=) <$> _bsalItems,
-                  ("selfLink" .=) <$> _bsalSelfLink,
-                  ("id" .=) <$> _bsalId])
-
--- | Represents a Network resource. Read Networks and Firewalls for more
--- information.
---
--- /See:/ 'network' smart constructor.
-data Network = Network'
-    { _nAutoCreateSubnetworks :: !(Maybe Bool)
-    , _nKind                  :: !Text
-    , _nSubnetworks           :: !(Maybe [Text])
-    , _nIPv4Range             :: !(Maybe Text)
-    , _nSelfLink              :: !(Maybe Text)
-    , _nName                  :: !(Maybe Text)
-    , _nCreationTimestamp     :: !(Maybe Text)
-    , _nId                    :: !(Maybe (Textual Word64))
-    , _nGatewayIPv4           :: !(Maybe Text)
-    , _nDescription           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Network' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nAutoCreateSubnetworks'
---
--- * 'nKind'
---
--- * 'nSubnetworks'
---
--- * 'nIPv4Range'
---
--- * 'nSelfLink'
---
--- * 'nName'
---
--- * 'nCreationTimestamp'
---
--- * 'nId'
---
--- * 'nGatewayIPv4'
---
--- * 'nDescription'
-network
-    :: Network
-network =
-    Network'
-    { _nAutoCreateSubnetworks = Nothing
-    , _nKind = "compute#network"
-    , _nSubnetworks = Nothing
-    , _nIPv4Range = Nothing
-    , _nSelfLink = Nothing
-    , _nName = Nothing
-    , _nCreationTimestamp = Nothing
-    , _nId = Nothing
-    , _nGatewayIPv4 = Nothing
-    , _nDescription = Nothing
-    }
-
--- | When set to true, the network is created in \"auto subnet mode\". When
--- set to false, the network is in \"custom subnet mode\". In \"auto subnet
--- mode\", a newly created network is assigned the default CIDR of
--- 10.128.0.0\/9 and it automatically creates one subnetwork per region.
-nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)
-nAutoCreateSubnetworks
-  = lens _nAutoCreateSubnetworks
-      (\ s a -> s{_nAutoCreateSubnetworks = a})
-
--- | [Output Only] Type of the resource. Always compute#network for networks.
-nKind :: Lens' Network Text
-nKind = lens _nKind (\ s a -> s{_nKind = a})
-
--- | [Output Only] Server-defined fully-qualified URLs for all subnetworks in
--- this network.
-nSubnetworks :: Lens' Network [Text]
-nSubnetworks
-  = lens _nSubnetworks (\ s a -> s{_nSubnetworks = a})
-      . _Default
-      . _Coerce
-
--- | The range of internal addresses that are legal on this network. This
--- range is a CIDR specification, for example: 192.168.0.0\/16. Provided by
--- the client when the network is created.
-nIPv4Range :: Lens' Network (Maybe Text)
-nIPv4Range
-  = lens _nIPv4Range (\ s a -> s{_nIPv4Range = a})
-
--- | [Output Only] Server-defined URL for the resource.
-nSelfLink :: Lens' Network (Maybe Text)
-nSelfLink
-  = lens _nSelfLink (\ s a -> s{_nSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-nName :: Lens' Network (Maybe Text)
-nName = lens _nName (\ s a -> s{_nName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-nCreationTimestamp :: Lens' Network (Maybe Text)
-nCreationTimestamp
-  = lens _nCreationTimestamp
-      (\ s a -> s{_nCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-nId :: Lens' Network (Maybe Word64)
-nId
-  = lens _nId (\ s a -> s{_nId = a}) . mapping _Coerce
-
--- | A gateway address for default routing to other networks. This value is
--- read only and is selected by the Google Compute Engine, typically as the
--- first usable address in the IPv4Range.
-nGatewayIPv4 :: Lens' Network (Maybe Text)
-nGatewayIPv4
-  = lens _nGatewayIPv4 (\ s a -> s{_nGatewayIPv4 = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-nDescription :: Lens' Network (Maybe Text)
-nDescription
-  = lens _nDescription (\ s a -> s{_nDescription = a})
-
-instance FromJSON Network where
-        parseJSON
-          = withObject "Network"
-              (\ o ->
-                 Network' <$>
-                   (o .:? "autoCreateSubnetworks") <*>
-                     (o .:? "kind" .!= "compute#network")
-                     <*> (o .:? "subnetworks" .!= mempty)
-                     <*> (o .:? "IPv4Range")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "gatewayIPv4")
-                     <*> (o .:? "description"))
-
-instance ToJSON Network where
-        toJSON Network'{..}
-          = object
-              (catMaybes
-                 [("autoCreateSubnetworks" .=) <$>
-                    _nAutoCreateSubnetworks,
-                  Just ("kind" .= _nKind),
-                  ("subnetworks" .=) <$> _nSubnetworks,
-                  ("IPv4Range" .=) <$> _nIPv4Range,
-                  ("selfLink" .=) <$> _nSelfLink,
-                  ("name" .=) <$> _nName,
-                  ("creationTimestamp" .=) <$> _nCreationTimestamp,
-                  ("id" .=) <$> _nId,
-                  ("gatewayIPv4" .=) <$> _nGatewayIPv4,
-                  ("description" .=) <$> _nDescription])
-
--- | Informational warning which replaces the list of routers when the list
--- is empty.
---
--- /See:/ 'routersScopedListWarning' smart constructor.
-data RoutersScopedListWarning = RoutersScopedListWarning'
-    { _rslwData    :: !(Maybe [RoutersScopedListWarningDataItem])
-    , _rslwCode    :: !(Maybe RoutersScopedListWarningCode)
-    , _rslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoutersScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rslwData'
---
--- * 'rslwCode'
---
--- * 'rslwMessage'
-routersScopedListWarning
-    :: RoutersScopedListWarning
-routersScopedListWarning =
-    RoutersScopedListWarning'
-    { _rslwData = Nothing
-    , _rslwCode = Nothing
-    , _rslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]
-rslwData
-  = lens _rslwData (\ s a -> s{_rslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)
-rslwCode = lens _rslwCode (\ s a -> s{_rslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)
-rslwMessage
-  = lens _rslwMessage (\ s a -> s{_rslwMessage = a})
-
-instance FromJSON RoutersScopedListWarning where
-        parseJSON
-          = withObject "RoutersScopedListWarning"
-              (\ o ->
-                 RoutersScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON RoutersScopedListWarning where
-        toJSON RoutersScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _rslwData,
-                  ("code" .=) <$> _rslwCode,
-                  ("message" .=) <$> _rslwMessage])
-
--- | [Output Only] Informational warning which replaces the list of addresses
--- when the list is empty.
---
--- /See:/ 'addressesScopedListWarning' smart constructor.
-data AddressesScopedListWarning = AddressesScopedListWarning'
-    { _aData    :: !(Maybe [AddressesScopedListWarningDataItem])
-    , _aCode    :: !(Maybe AddressesScopedListWarningCode)
-    , _aMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aData'
---
--- * 'aCode'
---
--- * 'aMessage'
-addressesScopedListWarning
-    :: AddressesScopedListWarning
-addressesScopedListWarning =
-    AddressesScopedListWarning'
-    { _aData = Nothing
-    , _aCode = Nothing
-    , _aMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]
-aData
-  = lens _aData (\ s a -> s{_aData = a}) . _Default .
-      _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)
-aCode = lens _aCode (\ s a -> s{_aCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-aMessage :: Lens' AddressesScopedListWarning (Maybe Text)
-aMessage = lens _aMessage (\ s a -> s{_aMessage = a})
-
-instance FromJSON AddressesScopedListWarning where
-        parseJSON
-          = withObject "AddressesScopedListWarning"
-              (\ o ->
-                 AddressesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON AddressesScopedListWarning where
-        toJSON AddressesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _aData, ("code" .=) <$> _aCode,
-                  ("message" .=) <$> _aMessage])
-
--- | The parameters of the raw disk image.
---
--- /See:/ 'imageRawDisk' smart constructor.
-data ImageRawDisk = ImageRawDisk'
-    { _irdContainerType :: !(Maybe ImageRawDiskContainerType)
-    , _irdSource        :: !(Maybe Text)
-    , _irdSha1Checksum  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ImageRawDisk' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'irdContainerType'
---
--- * 'irdSource'
---
--- * 'irdSha1Checksum'
-imageRawDisk
-    :: ImageRawDisk
-imageRawDisk =
-    ImageRawDisk'
-    { _irdContainerType = Nothing
-    , _irdSource = Nothing
-    , _irdSha1Checksum = Nothing
-    }
-
--- | The format used to encode and transmit the block device, which should be
--- TAR. This is just a container and transmission format and not a runtime
--- format. Provided by the client when the disk image is created.
-irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)
-irdContainerType
-  = lens _irdContainerType
-      (\ s a -> s{_irdContainerType = a})
-
--- | The full Google Cloud Storage URL where the disk image is stored. You
--- must provide either this property or the sourceDisk property but not
--- both.
-irdSource :: Lens' ImageRawDisk (Maybe Text)
-irdSource
-  = lens _irdSource (\ s a -> s{_irdSource = a})
-
--- | An optional SHA1 checksum of the disk image before unpackaging; provided
--- by the client when the disk image is created.
-irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)
-irdSha1Checksum
-  = lens _irdSha1Checksum
-      (\ s a -> s{_irdSha1Checksum = a})
-
-instance FromJSON ImageRawDisk where
-        parseJSON
-          = withObject "ImageRawDisk"
-              (\ o ->
-                 ImageRawDisk' <$>
-                   (o .:? "containerType") <*> (o .:? "source") <*>
-                     (o .:? "sha1Checksum"))
-
-instance ToJSON ImageRawDisk where
-        toJSON ImageRawDisk'{..}
-          = object
-              (catMaybes
-                 [("containerType" .=) <$> _irdContainerType,
-                  ("source" .=) <$> _irdSource,
-                  ("sha1Checksum" .=) <$> _irdSha1Checksum])
-
---
--- /See:/ 'instanceAggregatedList' smart constructor.
-data InstanceAggregatedList = InstanceAggregatedList'
-    { _ialNextPageToken :: !(Maybe Text)
-    , _ialKind          :: !Text
-    , _ialItems         :: !(Maybe InstanceAggregatedListItems)
-    , _ialSelfLink      :: !(Maybe Text)
-    , _ialId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ialNextPageToken'
---
--- * 'ialKind'
---
--- * 'ialItems'
---
--- * 'ialSelfLink'
---
--- * 'ialId'
-instanceAggregatedList
-    :: InstanceAggregatedList
-instanceAggregatedList =
-    InstanceAggregatedList'
-    { _ialNextPageToken = Nothing
-    , _ialKind = "compute#instanceAggregatedList"
-    , _ialItems = Nothing
-    , _ialSelfLink = Nothing
-    , _ialId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)
-ialNextPageToken
-  = lens _ialNextPageToken
-      (\ s a -> s{_ialNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#instanceAggregatedList
--- for aggregated lists of Instance resources.
-ialKind :: Lens' InstanceAggregatedList Text
-ialKind = lens _ialKind (\ s a -> s{_ialKind = a})
-
--- | [Output Only] A map of scoped instance lists.
-ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)
-ialItems = lens _ialItems (\ s a -> s{_ialItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)
-ialSelfLink
-  = lens _ialSelfLink (\ s a -> s{_ialSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-ialId :: Lens' InstanceAggregatedList (Maybe Text)
-ialId = lens _ialId (\ s a -> s{_ialId = a})
-
-instance FromJSON InstanceAggregatedList where
-        parseJSON
-          = withObject "InstanceAggregatedList"
-              (\ o ->
-                 InstanceAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#instanceAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceAggregatedList where
-        toJSON InstanceAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ialNextPageToken,
-                  Just ("kind" .= _ialKind),
-                  ("items" .=) <$> _ialItems,
-                  ("selfLink" .=) <$> _ialSelfLink,
-                  ("id" .=) <$> _ialId])
-
---
--- /See:/ 'sslHealthCheck' smart constructor.
-data SSLHealthCheck = SSLHealthCheck'
-    { _shcResponse    :: !(Maybe Text)
-    , _shcProxyHeader :: !(Maybe SSLHealthCheckProxyHeader)
-    , _shcPortName    :: !(Maybe Text)
-    , _shcPort        :: !(Maybe (Textual Int32))
-    , _shcRequest     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SSLHealthCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'shcResponse'
---
--- * 'shcProxyHeader'
---
--- * 'shcPortName'
---
--- * 'shcPort'
---
--- * 'shcRequest'
-sslHealthCheck
-    :: SSLHealthCheck
-sslHealthCheck =
-    SSLHealthCheck'
-    { _shcResponse = Nothing
-    , _shcProxyHeader = Nothing
-    , _shcPortName = Nothing
-    , _shcPort = Nothing
-    , _shcRequest = Nothing
-    }
-
--- | The bytes to match against the beginning of the response data. If left
--- empty (the default value), any response will indicate health. The
--- response data can only be ASCII.
-shcResponse :: Lens' SSLHealthCheck (Maybe Text)
-shcResponse
-  = lens _shcResponse (\ s a -> s{_shcResponse = a})
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)
-shcProxyHeader
-  = lens _shcProxyHeader
-      (\ s a -> s{_shcProxyHeader = a})
-
--- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
--- port_name are defined, port takes precedence.
-shcPortName :: Lens' SSLHealthCheck (Maybe Text)
-shcPortName
-  = lens _shcPortName (\ s a -> s{_shcPortName = a})
-
--- | The TCP port number for the health check request. The default value is
--- 443.
-shcPort :: Lens' SSLHealthCheck (Maybe Int32)
-shcPort
-  = lens _shcPort (\ s a -> s{_shcPort = a}) .
-      mapping _Coerce
-
--- | The application data to send once the SSL connection has been
--- established (default value is empty). If both request and response are
--- empty, the connection establishment alone will indicate health. The
--- request data can only be ASCII.
-shcRequest :: Lens' SSLHealthCheck (Maybe Text)
-shcRequest
-  = lens _shcRequest (\ s a -> s{_shcRequest = a})
-
-instance FromJSON SSLHealthCheck where
-        parseJSON
-          = withObject "SSLHealthCheck"
-              (\ o ->
-                 SSLHealthCheck' <$>
-                   (o .:? "response") <*> (o .:? "proxyHeader") <*>
-                     (o .:? "portName")
-                     <*> (o .:? "port")
-                     <*> (o .:? "request"))
-
-instance ToJSON SSLHealthCheck where
-        toJSON SSLHealthCheck'{..}
-          = object
-              (catMaybes
-                 [("response" .=) <$> _shcResponse,
-                  ("proxyHeader" .=) <$> _shcProxyHeader,
-                  ("portName" .=) <$> _shcPortName,
-                  ("port" .=) <$> _shcPort,
-                  ("request" .=) <$> _shcRequest])
-
--- | A reserved address resource.
---
--- /See:/ 'address' smart constructor.
-data Address = Address'
-    { _aStatus            :: !(Maybe AddressStatus)
-    , _aUsers             :: !(Maybe [Text])
-    , _aKind              :: !Text
-    , _aAddress           :: !(Maybe Text)
-    , _aSelfLink          :: !(Maybe Text)
-    , _aName              :: !(Maybe Text)
-    , _aCreationTimestamp :: !(Maybe Text)
-    , _aId                :: !(Maybe (Textual Word64))
-    , _aRegion            :: !(Maybe Text)
-    , _aDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Address' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aStatus'
---
--- * 'aUsers'
---
--- * 'aKind'
---
--- * 'aAddress'
---
--- * 'aSelfLink'
---
--- * 'aName'
---
--- * 'aCreationTimestamp'
---
--- * 'aId'
---
--- * 'aRegion'
---
--- * 'aDescription'
-address
-    :: Address
-address =
-    Address'
-    { _aStatus = Nothing
-    , _aUsers = Nothing
-    , _aKind = "compute#address"
-    , _aAddress = Nothing
-    , _aSelfLink = Nothing
-    , _aName = Nothing
-    , _aCreationTimestamp = Nothing
-    , _aId = Nothing
-    , _aRegion = Nothing
-    , _aDescription = Nothing
-    }
-
--- | [Output Only] The status of the address, which can be either IN_USE or
--- RESERVED. An address that is RESERVED is currently reserved and
--- available to use. An IN_USE address is currently being used by another
--- resource and is not available.
-aStatus :: Lens' Address (Maybe AddressStatus)
-aStatus = lens _aStatus (\ s a -> s{_aStatus = a})
-
--- | [Output Only] The URLs of the resources that are using this address.
-aUsers :: Lens' Address [Text]
-aUsers
-  = lens _aUsers (\ s a -> s{_aUsers = a}) . _Default .
-      _Coerce
-
--- | [Output Only] Type of the resource. Always compute#address for
--- addresses.
-aKind :: Lens' Address Text
-aKind = lens _aKind (\ s a -> s{_aKind = a})
-
--- | The static external IP address represented by this resource. Only IPv4
--- is supported.
-aAddress :: Lens' Address (Maybe Text)
-aAddress = lens _aAddress (\ s a -> s{_aAddress = a})
-
--- | [Output Only] Server-defined URL for the resource.
-aSelfLink :: Lens' Address (Maybe Text)
-aSelfLink
-  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-aName :: Lens' Address (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-aCreationTimestamp :: Lens' Address (Maybe Text)
-aCreationTimestamp
-  = lens _aCreationTimestamp
-      (\ s a -> s{_aCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-aId :: Lens' Address (Maybe Word64)
-aId
-  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce
-
--- | [Output Only] URL of the region where the regional address resides. This
--- field is not applicable to global addresses.
-aRegion :: Lens' Address (Maybe Text)
-aRegion = lens _aRegion (\ s a -> s{_aRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-aDescription :: Lens' Address (Maybe Text)
-aDescription
-  = lens _aDescription (\ s a -> s{_aDescription = a})
-
-instance FromJSON Address where
-        parseJSON
-          = withObject "Address"
-              (\ o ->
-                 Address' <$>
-                   (o .:? "status") <*> (o .:? "users" .!= mempty) <*>
-                     (o .:? "kind" .!= "compute#address")
-                     <*> (o .:? "address")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description"))
-
-instance ToJSON Address where
-        toJSON Address'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _aStatus,
-                  ("users" .=) <$> _aUsers, Just ("kind" .= _aKind),
-                  ("address" .=) <$> _aAddress,
-                  ("selfLink" .=) <$> _aSelfLink,
-                  ("name" .=) <$> _aName,
-                  ("creationTimestamp" .=) <$> _aCreationTimestamp,
-                  ("id" .=) <$> _aId, ("region" .=) <$> _aRegion,
-                  ("description" .=) <$> _aDescription])
-
--- | A Zone resource.
---
--- /See:/ 'zone' smart constructor.
-data Zone = Zone'
-    { _zStatus            :: !(Maybe ZoneStatus)
-    , _zKind              :: !Text
-    , _zSelfLink          :: !(Maybe Text)
-    , _zName              :: !(Maybe Text)
-    , _zCreationTimestamp :: !(Maybe Text)
-    , _zId                :: !(Maybe (Textual Word64))
-    , _zRegion            :: !(Maybe Text)
-    , _zDescription       :: !(Maybe Text)
-    , _zDeprecated        :: !(Maybe DeprecationStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Zone' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'zStatus'
---
--- * 'zKind'
---
--- * 'zSelfLink'
---
--- * 'zName'
---
--- * 'zCreationTimestamp'
---
--- * 'zId'
---
--- * 'zRegion'
---
--- * 'zDescription'
---
--- * 'zDeprecated'
-zone
-    :: Zone
-zone =
-    Zone'
-    { _zStatus = Nothing
-    , _zKind = "compute#zone"
-    , _zSelfLink = Nothing
-    , _zName = Nothing
-    , _zCreationTimestamp = Nothing
-    , _zId = Nothing
-    , _zRegion = Nothing
-    , _zDescription = Nothing
-    , _zDeprecated = Nothing
-    }
-
--- | [Output Only] Status of the zone, either UP or DOWN.
-zStatus :: Lens' Zone (Maybe ZoneStatus)
-zStatus = lens _zStatus (\ s a -> s{_zStatus = a})
-
--- | [Output Only] Type of the resource. Always compute#zone for zones.
-zKind :: Lens' Zone Text
-zKind = lens _zKind (\ s a -> s{_zKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-zSelfLink :: Lens' Zone (Maybe Text)
-zSelfLink
-  = lens _zSelfLink (\ s a -> s{_zSelfLink = a})
-
--- | [Output Only] Name of the resource.
-zName :: Lens' Zone (Maybe Text)
-zName = lens _zName (\ s a -> s{_zName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-zCreationTimestamp :: Lens' Zone (Maybe Text)
-zCreationTimestamp
-  = lens _zCreationTimestamp
-      (\ s a -> s{_zCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-zId :: Lens' Zone (Maybe Word64)
-zId
-  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce
-
--- | [Output Only] Full URL reference to the region which hosts the zone.
-zRegion :: Lens' Zone (Maybe Text)
-zRegion = lens _zRegion (\ s a -> s{_zRegion = a})
-
--- | [Output Only] Textual description of the resource.
-zDescription :: Lens' Zone (Maybe Text)
-zDescription
-  = lens _zDescription (\ s a -> s{_zDescription = a})
-
--- | [Output Only] The deprecation status associated with this zone.
-zDeprecated :: Lens' Zone (Maybe DeprecationStatus)
-zDeprecated
-  = lens _zDeprecated (\ s a -> s{_zDeprecated = a})
-
-instance FromJSON Zone where
-        parseJSON
-          = withObject "Zone"
-              (\ o ->
-                 Zone' <$>
-                   (o .:? "status") <*>
-                     (o .:? "kind" .!= "compute#zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON Zone where
-        toJSON Zone'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _zStatus, Just ("kind" .= _zKind),
-                  ("selfLink" .=) <$> _zSelfLink,
-                  ("name" .=) <$> _zName,
-                  ("creationTimestamp" .=) <$> _zCreationTimestamp,
-                  ("id" .=) <$> _zId, ("region" .=) <$> _zRegion,
-                  ("description" .=) <$> _zDescription,
-                  ("deprecated" .=) <$> _zDeprecated])
-
---
--- /See:/ 'routerBGP' smart constructor.
-newtype RouterBGP = RouterBGP'
-    { _rbASN :: Maybe (Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterBGP' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rbASN'
-routerBGP
-    :: RouterBGP
-routerBGP =
-    RouterBGP'
-    { _rbASN = Nothing
-    }
-
--- | Local BGP Autonomous System Number (ASN). Must be an RFC6996 private
--- ASN, either 16-bit or 32-bit. The value will be fixed for this router
--- resource. All VPN tunnels that link to this router will have the same
--- local ASN.
-rbASN :: Lens' RouterBGP (Maybe Word32)
-rbASN
-  = lens _rbASN (\ s a -> s{_rbASN = a}) .
-      mapping _Coerce
-
-instance FromJSON RouterBGP where
-        parseJSON
-          = withObject "RouterBGP"
-              (\ o -> RouterBGP' <$> (o .:? "asn"))
-
-instance ToJSON RouterBGP where
-        toJSON RouterBGP'{..}
-          = object (catMaybes [("asn" .=) <$> _rbASN])
-
---
--- /See:/ 'backendServicesScopedList' smart constructor.
-data BackendServicesScopedList = BackendServicesScopedList'
-    { _bsslWarning         :: !(Maybe BackendServicesScopedListWarning)
-    , _bsslBackendServices :: !(Maybe [BackendService])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServicesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsslWarning'
---
--- * 'bsslBackendServices'
-backendServicesScopedList
-    :: BackendServicesScopedList
-backendServicesScopedList =
-    BackendServicesScopedList'
-    { _bsslWarning = Nothing
-    , _bsslBackendServices = Nothing
-    }
-
--- | Informational warning which replaces the list of backend services when
--- the list is empty.
-bsslWarning :: Lens' BackendServicesScopedList (Maybe BackendServicesScopedListWarning)
-bsslWarning
-  = lens _bsslWarning (\ s a -> s{_bsslWarning = a})
-
--- | List of BackendServices contained in this scope.
-bsslBackendServices :: Lens' BackendServicesScopedList [BackendService]
-bsslBackendServices
-  = lens _bsslBackendServices
-      (\ s a -> s{_bsslBackendServices = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BackendServicesScopedList where
-        parseJSON
-          = withObject "BackendServicesScopedList"
-              (\ o ->
-                 BackendServicesScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "backendServices" .!= mempty))
-
-instance ToJSON BackendServicesScopedList where
-        toJSON BackendServicesScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _bsslWarning,
-                  ("backendServices" .=) <$> _bsslBackendServices])
-
---
--- /See:/ 'instanceGroupManagersRecreateInstancesRequest' smart constructor.
-newtype InstanceGroupManagersRecreateInstancesRequest = InstanceGroupManagersRecreateInstancesRequest'
-    { _igmrirInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersRecreateInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmrirInstances'
-instanceGroupManagersRecreateInstancesRequest
-    :: InstanceGroupManagersRecreateInstancesRequest
-instanceGroupManagersRecreateInstancesRequest =
-    InstanceGroupManagersRecreateInstancesRequest'
-    { _igmrirInstances = Nothing
-    }
-
--- | The URL for one or more instances to recreate.
-igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]
-igmrirInstances
-  = lens _igmrirInstances
-      (\ s a -> s{_igmrirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagersRecreateInstancesRequest where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersRecreateInstancesRequest"
-              (\ o ->
-                 InstanceGroupManagersRecreateInstancesRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         InstanceGroupManagersRecreateInstancesRequest where
-        toJSON
-          InstanceGroupManagersRecreateInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _igmrirInstances])
-
---
--- /See:/ 'targetSSLProxiesSetSSLCertificatesRequest' smart constructor.
-newtype TargetSSLProxiesSetSSLCertificatesRequest = TargetSSLProxiesSetSSLCertificatesRequest'
-    { _tspsscrSSLCertificates :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetSSLProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tspsscrSSLCertificates'
-targetSSLProxiesSetSSLCertificatesRequest
-    :: TargetSSLProxiesSetSSLCertificatesRequest
-targetSSLProxiesSetSSLCertificatesRequest =
-    TargetSSLProxiesSetSSLCertificatesRequest'
-    { _tspsscrSSLCertificates = Nothing
-    }
-
--- | New set of URLs to SslCertificate resources to associate with this
--- TargetSslProxy. Currently exactly one ssl certificate must be specified.
-tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
-tspsscrSSLCertificates
-  = lens _tspsscrSSLCertificates
-      (\ s a -> s{_tspsscrSSLCertificates = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         TargetSSLProxiesSetSSLCertificatesRequest where
-        parseJSON
-          = withObject
-              "TargetSSLProxiesSetSSLCertificatesRequest"
-              (\ o ->
-                 TargetSSLProxiesSetSSLCertificatesRequest' <$>
-                   (o .:? "sslCertificates" .!= mempty))
-
-instance ToJSON
-         TargetSSLProxiesSetSSLCertificatesRequest where
-        toJSON TargetSSLProxiesSetSSLCertificatesRequest'{..}
-          = object
-              (catMaybes
-                 [("sslCertificates" .=) <$> _tspsscrSSLCertificates])
-
---
--- /See:/ 'instancesScopedList' smart constructor.
-data InstancesScopedList = InstancesScopedList'
-    { _islWarning   :: !(Maybe InstancesScopedListWarning)
-    , _islInstances :: !(Maybe [Instance])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'islWarning'
---
--- * 'islInstances'
-instancesScopedList
-    :: InstancesScopedList
-instancesScopedList =
-    InstancesScopedList'
-    { _islWarning = Nothing
-    , _islInstances = Nothing
-    }
-
--- | [Output Only] Informational warning which replaces the list of instances
--- when the list is empty.
-islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)
-islWarning
-  = lens _islWarning (\ s a -> s{_islWarning = a})
-
--- | [Output Only] List of instances contained in this scope.
-islInstances :: Lens' InstancesScopedList [Instance]
-islInstances
-  = lens _islInstances (\ s a -> s{_islInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstancesScopedList where
-        parseJSON
-          = withObject "InstancesScopedList"
-              (\ o ->
-                 InstancesScopedList' <$>
-                   (o .:? "warning") <*> (o .:? "instances" .!= mempty))
-
-instance ToJSON InstancesScopedList where
-        toJSON InstancesScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _islWarning,
-                  ("instances" .=) <$> _islInstances])
-
--- | A full or valid partial URL to a health check. For example, the
--- following are valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project-id\/global\/httpHealthChecks\/health-check
--- - projects\/project-id\/global\/httpHealthChecks\/health-check -
--- global\/httpHealthChecks\/health-check
---
--- /See:/ 'healthCheckReference' smart constructor.
-newtype HealthCheckReference = HealthCheckReference'
-    { _hcrHealthCheck :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HealthCheckReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hcrHealthCheck'
-healthCheckReference
-    :: HealthCheckReference
-healthCheckReference =
-    HealthCheckReference'
-    { _hcrHealthCheck = Nothing
-    }
-
-hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)
-hcrHealthCheck
-  = lens _hcrHealthCheck
-      (\ s a -> s{_hcrHealthCheck = a})
-
-instance FromJSON HealthCheckReference where
-        parseJSON
-          = withObject "HealthCheckReference"
-              (\ o ->
-                 HealthCheckReference' <$> (o .:? "healthCheck"))
-
-instance ToJSON HealthCheckReference where
-        toJSON HealthCheckReference'{..}
-          = object
-              (catMaybes [("healthCheck" .=) <$> _hcrHealthCheck])
-
--- | A map of scoped target instance lists.
---
--- /See:/ 'targetInstanceAggregatedListItems' smart constructor.
-newtype TargetInstanceAggregatedListItems = TargetInstanceAggregatedListItems'
-    { _tialiAddtional :: HashMap Text TargetInstancesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstanceAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tialiAddtional'
-targetInstanceAggregatedListItems
-    :: HashMap Text TargetInstancesScopedList -- ^ 'tialiAddtional'
-    -> TargetInstanceAggregatedListItems
-targetInstanceAggregatedListItems pTialiAddtional_ =
-    TargetInstanceAggregatedListItems'
-    { _tialiAddtional = _Coerce # pTialiAddtional_
-    }
-
--- | Name of the scope containing this set of target instances.
-tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)
-tialiAddtional
-  = lens _tialiAddtional
-      (\ s a -> s{_tialiAddtional = a})
-      . _Coerce
-
-instance FromJSON TargetInstanceAggregatedListItems
-         where
-        parseJSON
-          = withObject "TargetInstanceAggregatedListItems"
-              (\ o ->
-                 TargetInstanceAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON TargetInstanceAggregatedListItems
-         where
-        toJSON = toJSON . _tialiAddtional
-
---
--- /See:/ 'instanceGroupAggregatedList' smart constructor.
-data InstanceGroupAggregatedList = InstanceGroupAggregatedList'
-    { _igalNextPageToken :: !(Maybe Text)
-    , _igalKind          :: !Text
-    , _igalItems         :: !(Maybe InstanceGroupAggregatedListItems)
-    , _igalSelfLink      :: !(Maybe Text)
-    , _igalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igalNextPageToken'
---
--- * 'igalKind'
---
--- * 'igalItems'
---
--- * 'igalSelfLink'
---
--- * 'igalId'
-instanceGroupAggregatedList
-    :: InstanceGroupAggregatedList
-instanceGroupAggregatedList =
-    InstanceGroupAggregatedList'
-    { _igalNextPageToken = Nothing
-    , _igalKind = "compute#instanceGroupAggregatedList"
-    , _igalItems = Nothing
-    , _igalSelfLink = Nothing
-    , _igalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)
-igalNextPageToken
-  = lens _igalNextPageToken
-      (\ s a -> s{_igalNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupAggregatedList for aggregated lists of instance
--- groups.
-igalKind :: Lens' InstanceGroupAggregatedList Text
-igalKind = lens _igalKind (\ s a -> s{_igalKind = a})
-
--- | A map of scoped instance group lists.
-igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)
-igalItems
-  = lens _igalItems (\ s a -> s{_igalItems = a})
-
--- | [Output Only] The URL for this resource type. The server generates this
--- URL.
-igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)
-igalSelfLink
-  = lens _igalSelfLink (\ s a -> s{_igalSelfLink = a})
-
--- | [Output Only] A unique identifier for this aggregated list of instance
--- groups. The server generates this identifier.
-igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)
-igalId = lens _igalId (\ s a -> s{_igalId = a})
-
-instance FromJSON InstanceGroupAggregatedList where
-        parseJSON
-          = withObject "InstanceGroupAggregatedList"
-              (\ o ->
-                 InstanceGroupAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#instanceGroupAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceGroupAggregatedList where
-        toJSON InstanceGroupAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _igalNextPageToken,
-                  Just ("kind" .= _igalKind),
-                  ("items" .=) <$> _igalItems,
-                  ("selfLink" .=) <$> _igalSelfLink,
-                  ("id" .=) <$> _igalId])
-
--- | Represents a Route resource. A route specifies how certain packets
--- should be handled by the network. Routes are associated with instances
--- by tags and the set of routes for a particular instance is called its
--- routing table. For each packet leaving a instance, the system searches
--- that instance\'s routing table for a single best matching route. Routes
--- match packets by destination IP address, preferring smaller or more
--- specific ranges over larger ones. If there is a tie, the system selects
--- the route with the smallest priority value. If there is still a tie, it
--- uses the layer three and four packet headers to select just one of the
--- remaining matching routes. The packet is then forwarded as specified by
--- the nextHop field of the winning route - either to another instance
--- destination, a instance gateway or a Google Compute Engine-operated
--- gateway. Packets that do not match any route in the sending instance\'s
--- routing table are dropped.
---
--- /See:/ 'route' smart constructor.
-data Route = Route'
-    { _rrPriority          :: !(Maybe (Textual Word32))
-    , _rrKind              :: !Text
-    , _rrNextHopGateway    :: !(Maybe Text)
-    , _rrNextHopNetwork    :: !(Maybe Text)
-    , _rrNetwork           :: !(Maybe Text)
-    , _rrWarnings          :: !(Maybe [RouteWarningsItem])
-    , _rrNextHopIP         :: !(Maybe Text)
-    , _rrDestRange         :: !(Maybe Text)
-    , _rrSelfLink          :: !(Maybe Text)
-    , _rrName              :: !(Maybe Text)
-    , _rrCreationTimestamp :: !(Maybe Text)
-    , _rrId                :: !(Maybe (Textual Word64))
-    , _rrNextHopVPNTunnel  :: !(Maybe Text)
-    , _rrDescription       :: !(Maybe Text)
-    , _rrTags              :: !(Maybe [Text])
-    , _rrNextHopInstance   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Route' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrPriority'
---
--- * 'rrKind'
---
--- * 'rrNextHopGateway'
---
--- * 'rrNextHopNetwork'
---
--- * 'rrNetwork'
---
--- * 'rrWarnings'
---
--- * 'rrNextHopIP'
---
--- * 'rrDestRange'
---
--- * 'rrSelfLink'
---
--- * 'rrName'
---
--- * 'rrCreationTimestamp'
---
--- * 'rrId'
---
--- * 'rrNextHopVPNTunnel'
---
--- * 'rrDescription'
---
--- * 'rrTags'
---
--- * 'rrNextHopInstance'
-route
-    :: Route
-route =
-    Route'
-    { _rrPriority = Nothing
-    , _rrKind = "compute#route"
-    , _rrNextHopGateway = Nothing
-    , _rrNextHopNetwork = Nothing
-    , _rrNetwork = Nothing
-    , _rrWarnings = Nothing
-    , _rrNextHopIP = Nothing
-    , _rrDestRange = Nothing
-    , _rrSelfLink = Nothing
-    , _rrName = Nothing
-    , _rrCreationTimestamp = Nothing
-    , _rrId = Nothing
-    , _rrNextHopVPNTunnel = Nothing
-    , _rrDescription = Nothing
-    , _rrTags = Nothing
-    , _rrNextHopInstance = Nothing
-    }
-
--- | The priority of this route. Priority is used to break ties in cases
--- where there is more than one matching route of equal prefix length. In
--- the case of two routes with equal prefix length, the one with the
--- lowest-numbered priority value wins. Default value is 1000. Valid range
--- is 0 through 65535.
-rrPriority :: Lens' Route (Maybe Word32)
-rrPriority
-  = lens _rrPriority (\ s a -> s{_rrPriority = a}) .
-      mapping _Coerce
-
--- | [Output Only] Type of this resource. Always compute#routes for Route
--- resources.
-rrKind :: Lens' Route Text
-rrKind = lens _rrKind (\ s a -> s{_rrKind = a})
-
--- | The URL to a gateway that should handle matching packets. You can only
--- specify the internet gateway using a full or partial valid URL:
--- projects\/\/global\/gateways\/default-internet-gateway
-rrNextHopGateway :: Lens' Route (Maybe Text)
-rrNextHopGateway
-  = lens _rrNextHopGateway
-      (\ s a -> s{_rrNextHopGateway = a})
-
--- | The URL of the local network if it should handle matching packets.
-rrNextHopNetwork :: Lens' Route (Maybe Text)
-rrNextHopNetwork
-  = lens _rrNextHopNetwork
-      (\ s a -> s{_rrNextHopNetwork = a})
-
--- | Fully-qualified URL of the network that this route applies to.
-rrNetwork :: Lens' Route (Maybe Text)
-rrNetwork
-  = lens _rrNetwork (\ s a -> s{_rrNetwork = a})
-
--- | [Output Only] If potential misconfigurations are detected for this
--- route, this field will be populated with warning messages.
-rrWarnings :: Lens' Route [RouteWarningsItem]
-rrWarnings
-  = lens _rrWarnings (\ s a -> s{_rrWarnings = a}) .
-      _Default
-      . _Coerce
-
--- | The network IP address of an instance that should handle matching
--- packets. Only IPv4 is supported.
-rrNextHopIP :: Lens' Route (Maybe Text)
-rrNextHopIP
-  = lens _rrNextHopIP (\ s a -> s{_rrNextHopIP = a})
-
--- | The destination range of outgoing packets that this route applies to.
--- Only IPv4 is supported.
-rrDestRange :: Lens' Route (Maybe Text)
-rrDestRange
-  = lens _rrDestRange (\ s a -> s{_rrDestRange = a})
-
--- | [Output Only] Server-defined fully-qualified URL for this resource.
-rrSelfLink :: Lens' Route (Maybe Text)
-rrSelfLink
-  = lens _rrSelfLink (\ s a -> s{_rrSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-rrName :: Lens' Route (Maybe Text)
-rrName = lens _rrName (\ s a -> s{_rrName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-rrCreationTimestamp :: Lens' Route (Maybe Text)
-rrCreationTimestamp
-  = lens _rrCreationTimestamp
-      (\ s a -> s{_rrCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-rrId :: Lens' Route (Maybe Word64)
-rrId
-  = lens _rrId (\ s a -> s{_rrId = a}) .
-      mapping _Coerce
-
--- | The URL to a VpnTunnel that should handle matching packets.
-rrNextHopVPNTunnel :: Lens' Route (Maybe Text)
-rrNextHopVPNTunnel
-  = lens _rrNextHopVPNTunnel
-      (\ s a -> s{_rrNextHopVPNTunnel = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-rrDescription :: Lens' Route (Maybe Text)
-rrDescription
-  = lens _rrDescription
-      (\ s a -> s{_rrDescription = a})
-
--- | A list of instance tags to which this route applies.
-rrTags :: Lens' Route [Text]
-rrTags
-  = lens _rrTags (\ s a -> s{_rrTags = a}) . _Default .
-      _Coerce
-
--- | The URL to an instance that should handle matching packets. You can
--- specify this as a full or partial URL. For example:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/
-rrNextHopInstance :: Lens' Route (Maybe Text)
-rrNextHopInstance
-  = lens _rrNextHopInstance
-      (\ s a -> s{_rrNextHopInstance = a})
-
-instance FromJSON Route where
-        parseJSON
-          = withObject "Route"
-              (\ o ->
-                 Route' <$>
-                   (o .:? "priority") <*>
-                     (o .:? "kind" .!= "compute#route")
-                     <*> (o .:? "nextHopGateway")
-                     <*> (o .:? "nextHopNetwork")
-                     <*> (o .:? "network")
-                     <*> (o .:? "warnings" .!= mempty)
-                     <*> (o .:? "nextHopIp")
-                     <*> (o .:? "destRange")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "nextHopVpnTunnel")
-                     <*> (o .:? "description")
-                     <*> (o .:? "tags" .!= mempty)
-                     <*> (o .:? "nextHopInstance"))
-
-instance ToJSON Route where
-        toJSON Route'{..}
-          = object
-              (catMaybes
-                 [("priority" .=) <$> _rrPriority,
-                  Just ("kind" .= _rrKind),
-                  ("nextHopGateway" .=) <$> _rrNextHopGateway,
-                  ("nextHopNetwork" .=) <$> _rrNextHopNetwork,
-                  ("network" .=) <$> _rrNetwork,
-                  ("warnings" .=) <$> _rrWarnings,
-                  ("nextHopIp" .=) <$> _rrNextHopIP,
-                  ("destRange" .=) <$> _rrDestRange,
-                  ("selfLink" .=) <$> _rrSelfLink,
-                  ("name" .=) <$> _rrName,
-                  ("creationTimestamp" .=) <$> _rrCreationTimestamp,
-                  ("id" .=) <$> _rrId,
-                  ("nextHopVpnTunnel" .=) <$> _rrNextHopVPNTunnel,
-                  ("description" .=) <$> _rrDescription,
-                  ("tags" .=) <$> _rrTags,
-                  ("nextHopInstance" .=) <$> _rrNextHopInstance])
-
---
--- /See:/ 'targetVPNGatewaysScopedListWarningDataItem' smart constructor.
-data TargetVPNGatewaysScopedListWarningDataItem = TargetVPNGatewaysScopedListWarningDataItem'
-    { _tvgslwdiValue :: !(Maybe Text)
-    , _tvgslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewaysScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgslwdiValue'
---
--- * 'tvgslwdiKey'
-targetVPNGatewaysScopedListWarningDataItem
-    :: TargetVPNGatewaysScopedListWarningDataItem
-targetVPNGatewaysScopedListWarningDataItem =
-    TargetVPNGatewaysScopedListWarningDataItem'
-    { _tvgslwdiValue = Nothing
-    , _tvgslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
-tvgslwdiValue
-  = lens _tvgslwdiValue
-      (\ s a -> s{_tvgslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
-tvgslwdiKey
-  = lens _tvgslwdiKey (\ s a -> s{_tvgslwdiKey = a})
-
-instance FromJSON
-         TargetVPNGatewaysScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "TargetVPNGatewaysScopedListWarningDataItem"
-              (\ o ->
-                 TargetVPNGatewaysScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         TargetVPNGatewaysScopedListWarningDataItem where
-        toJSON
-          TargetVPNGatewaysScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _tvgslwdiValue,
-                  ("key" .=) <$> _tvgslwdiKey])
-
---
--- /See:/ 'targetHTTPSProxiesSetSSLCertificatesRequest' smart constructor.
-newtype TargetHTTPSProxiesSetSSLCertificatesRequest = TargetHTTPSProxiesSetSSLCertificatesRequest'
-    { _thpsscrSSLCertificates :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thpsscrSSLCertificates'
-targetHTTPSProxiesSetSSLCertificatesRequest
-    :: TargetHTTPSProxiesSetSSLCertificatesRequest
-targetHTTPSProxiesSetSSLCertificatesRequest =
-    TargetHTTPSProxiesSetSSLCertificatesRequest'
-    { _thpsscrSSLCertificates = Nothing
-    }
-
--- | New set of SslCertificate resources to associate with this
--- TargetHttpsProxy resource. Currently exactly one SslCertificate resource
--- must be specified.
-thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]
-thpsscrSSLCertificates
-  = lens _thpsscrSSLCertificates
-      (\ s a -> s{_thpsscrSSLCertificates = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         TargetHTTPSProxiesSetSSLCertificatesRequest where
-        parseJSON
-          = withObject
-              "TargetHTTPSProxiesSetSSLCertificatesRequest"
-              (\ o ->
-                 TargetHTTPSProxiesSetSSLCertificatesRequest' <$>
-                   (o .:? "sslCertificates" .!= mempty))
-
-instance ToJSON
-         TargetHTTPSProxiesSetSSLCertificatesRequest where
-        toJSON
-          TargetHTTPSProxiesSetSSLCertificatesRequest'{..}
-          = object
-              (catMaybes
-                 [("sslCertificates" .=) <$> _thpsscrSSLCertificates])
-
--- | An Instance Template resource.
---
--- /See:/ 'instanceTemplate' smart constructor.
-data InstanceTemplate = InstanceTemplate'
-    { _itKind              :: !Text
-    , _itSelfLink          :: !(Maybe Text)
-    , _itName              :: !(Maybe Text)
-    , _itCreationTimestamp :: !(Maybe Text)
-    , _itId                :: !(Maybe (Textual Word64))
-    , _itDescription       :: !(Maybe Text)
-    , _itProperties        :: !(Maybe InstanceProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'itKind'
---
--- * 'itSelfLink'
---
--- * 'itName'
---
--- * 'itCreationTimestamp'
---
--- * 'itId'
---
--- * 'itDescription'
---
--- * 'itProperties'
-instanceTemplate
-    :: InstanceTemplate
-instanceTemplate =
-    InstanceTemplate'
-    { _itKind = "compute#instanceTemplate"
-    , _itSelfLink = Nothing
-    , _itName = Nothing
-    , _itCreationTimestamp = Nothing
-    , _itId = Nothing
-    , _itDescription = Nothing
-    , _itProperties = Nothing
-    }
-
--- | [Output Only] The resource type, which is always
--- compute#instanceTemplate for instance templates.
-itKind :: Lens' InstanceTemplate Text
-itKind = lens _itKind (\ s a -> s{_itKind = a})
-
--- | [Output Only] The URL for this instance template. The server defines
--- this URL.
-itSelfLink :: Lens' InstanceTemplate (Maybe Text)
-itSelfLink
-  = lens _itSelfLink (\ s a -> s{_itSelfLink = a})
-
--- | Name of the resource; provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-itName :: Lens' InstanceTemplate (Maybe Text)
-itName = lens _itName (\ s a -> s{_itName = a})
-
--- | [Output Only] The creation timestamp for this instance template in
--- RFC3339 text format.
-itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)
-itCreationTimestamp
-  = lens _itCreationTimestamp
-      (\ s a -> s{_itCreationTimestamp = a})
-
--- | [Output Only] A unique identifier for this instance template. The server
--- defines this identifier.
-itId :: Lens' InstanceTemplate (Maybe Word64)
-itId
-  = lens _itId (\ s a -> s{_itId = a}) .
-      mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-itDescription :: Lens' InstanceTemplate (Maybe Text)
-itDescription
-  = lens _itDescription
-      (\ s a -> s{_itDescription = a})
-
--- | The instance properties for this instance template.
-itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)
-itProperties
-  = lens _itProperties (\ s a -> s{_itProperties = a})
-
-instance FromJSON InstanceTemplate where
-        parseJSON
-          = withObject "InstanceTemplate"
-              (\ o ->
-                 InstanceTemplate' <$>
-                   (o .:? "kind" .!= "compute#instanceTemplate") <*>
-                     (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "description")
-                     <*> (o .:? "properties"))
-
-instance ToJSON InstanceTemplate where
-        toJSON InstanceTemplate'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _itKind),
-                  ("selfLink" .=) <$> _itSelfLink,
-                  ("name" .=) <$> _itName,
-                  ("creationTimestamp" .=) <$> _itCreationTimestamp,
-                  ("id" .=) <$> _itId,
-                  ("description" .=) <$> _itDescription,
-                  ("properties" .=) <$> _itProperties])
-
--- | Contains a list of Router resources.
---
--- /See:/ 'routerList' smart constructor.
-data RouterList = RouterList'
-    { _rllNextPageToken :: !(Maybe Text)
-    , _rllKind          :: !Text
-    , _rllItems         :: !(Maybe [Router])
-    , _rllSelfLink      :: !(Maybe Text)
-    , _rllId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rllNextPageToken'
---
--- * 'rllKind'
---
--- * 'rllItems'
---
--- * 'rllSelfLink'
---
--- * 'rllId'
-routerList
-    :: RouterList
-routerList =
-    RouterList'
-    { _rllNextPageToken = Nothing
-    , _rllKind = "compute#routerList"
-    , _rllItems = Nothing
-    , _rllSelfLink = Nothing
-    , _rllId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-rllNextPageToken :: Lens' RouterList (Maybe Text)
-rllNextPageToken
-  = lens _rllNextPageToken
-      (\ s a -> s{_rllNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#router for routers.
-rllKind :: Lens' RouterList Text
-rllKind = lens _rllKind (\ s a -> s{_rllKind = a})
-
--- | A list of Router resources.
-rllItems :: Lens' RouterList [Router]
-rllItems
-  = lens _rllItems (\ s a -> s{_rllItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-rllSelfLink :: Lens' RouterList (Maybe Text)
-rllSelfLink
-  = lens _rllSelfLink (\ s a -> s{_rllSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-rllId :: Lens' RouterList (Maybe Text)
-rllId = lens _rllId (\ s a -> s{_rllId = a})
-
-instance FromJSON RouterList where
-        parseJSON
-          = withObject "RouterList"
-              (\ o ->
-                 RouterList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#routerList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RouterList where
-        toJSON RouterList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rllNextPageToken,
-                  Just ("kind" .= _rllKind),
-                  ("items" .=) <$> _rllItems,
-                  ("selfLink" .=) <$> _rllSelfLink,
-                  ("id" .=) <$> _rllId])
-
--- | A TargetSslProxy resource. This resource defines an SSL proxy.
---
--- /See:/ 'targetSSLProxy' smart constructor.
-data TargetSSLProxy = TargetSSLProxy'
-    { _tspSSLCertificates   :: !(Maybe [Text])
-    , _tspService           :: !(Maybe Text)
-    , _tspKind              :: !Text
-    , _tspSelfLink          :: !(Maybe Text)
-    , _tspName              :: !(Maybe Text)
-    , _tspCreationTimestamp :: !(Maybe Text)
-    , _tspId                :: !(Maybe (Textual Word64))
-    , _tspProxyHeader       :: !(Maybe TargetSSLProxyProxyHeader)
-    , _tspDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetSSLProxy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tspSSLCertificates'
---
--- * 'tspService'
---
--- * 'tspKind'
---
--- * 'tspSelfLink'
---
--- * 'tspName'
---
--- * 'tspCreationTimestamp'
---
--- * 'tspId'
---
--- * 'tspProxyHeader'
---
--- * 'tspDescription'
-targetSSLProxy
-    :: TargetSSLProxy
-targetSSLProxy =
-    TargetSSLProxy'
-    { _tspSSLCertificates = Nothing
-    , _tspService = Nothing
-    , _tspKind = "compute#targetSslProxy"
-    , _tspSelfLink = Nothing
-    , _tspName = Nothing
-    , _tspCreationTimestamp = Nothing
-    , _tspId = Nothing
-    , _tspProxyHeader = Nothing
-    , _tspDescription = Nothing
-    }
-
--- | URLs to SslCertificate resources that are used to authenticate
--- connections to Backends. Currently exactly one SSL certificate must be
--- specified.
-tspSSLCertificates :: Lens' TargetSSLProxy [Text]
-tspSSLCertificates
-  = lens _tspSSLCertificates
-      (\ s a -> s{_tspSSLCertificates = a})
-      . _Default
-      . _Coerce
-
--- | URL to the BackendService resource.
-tspService :: Lens' TargetSSLProxy (Maybe Text)
-tspService
-  = lens _tspService (\ s a -> s{_tspService = a})
-
--- | [Output Only] Type of the resource. Always compute#targetSslProxy for
--- target SSL proxies.
-tspKind :: Lens' TargetSSLProxy Text
-tspKind = lens _tspKind (\ s a -> s{_tspKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)
-tspSelfLink
-  = lens _tspSelfLink (\ s a -> s{_tspSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-tspName :: Lens' TargetSSLProxy (Maybe Text)
-tspName = lens _tspName (\ s a -> s{_tspName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)
-tspCreationTimestamp
-  = lens _tspCreationTimestamp
-      (\ s a -> s{_tspCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tspId :: Lens' TargetSSLProxy (Maybe Word64)
-tspId
-  = lens _tspId (\ s a -> s{_tspId = a}) .
-      mapping _Coerce
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)
-tspProxyHeader
-  = lens _tspProxyHeader
-      (\ s a -> s{_tspProxyHeader = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-tspDescription :: Lens' TargetSSLProxy (Maybe Text)
-tspDescription
-  = lens _tspDescription
-      (\ s a -> s{_tspDescription = a})
-
-instance FromJSON TargetSSLProxy where
-        parseJSON
-          = withObject "TargetSSLProxy"
-              (\ o ->
-                 TargetSSLProxy' <$>
-                   (o .:? "sslCertificates" .!= mempty) <*>
-                     (o .:? "service")
-                     <*> (o .:? "kind" .!= "compute#targetSslProxy")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "proxyHeader")
-                     <*> (o .:? "description"))
-
-instance ToJSON TargetSSLProxy where
-        toJSON TargetSSLProxy'{..}
-          = object
-              (catMaybes
-                 [("sslCertificates" .=) <$> _tspSSLCertificates,
-                  ("service" .=) <$> _tspService,
-                  Just ("kind" .= _tspKind),
-                  ("selfLink" .=) <$> _tspSelfLink,
-                  ("name" .=) <$> _tspName,
-                  ("creationTimestamp" .=) <$> _tspCreationTimestamp,
-                  ("id" .=) <$> _tspId,
-                  ("proxyHeader" .=) <$> _tspProxyHeader,
-                  ("description" .=) <$> _tspDescription])
-
--- | Represents a Target VPN gateway resource.
---
--- /See:/ 'targetVPNGateway' smart constructor.
-data TargetVPNGateway = TargetVPNGateway'
-    { _tvgStatus            :: !(Maybe TargetVPNGatewayStatus)
-    , _tvgKind              :: !Text
-    , _tvgNetwork           :: !(Maybe Text)
-    , _tvgSelfLink          :: !(Maybe Text)
-    , _tvgName              :: !(Maybe Text)
-    , _tvgCreationTimestamp :: !(Maybe Text)
-    , _tvgId                :: !(Maybe (Textual Word64))
-    , _tvgRegion            :: !(Maybe Text)
-    , _tvgTunnels           :: !(Maybe [Text])
-    , _tvgDescription       :: !(Maybe Text)
-    , _tvgForwardingRules   :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGateway' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgStatus'
---
--- * 'tvgKind'
---
--- * 'tvgNetwork'
---
--- * 'tvgSelfLink'
---
--- * 'tvgName'
---
--- * 'tvgCreationTimestamp'
---
--- * 'tvgId'
---
--- * 'tvgRegion'
---
--- * 'tvgTunnels'
---
--- * 'tvgDescription'
---
--- * 'tvgForwardingRules'
-targetVPNGateway
-    :: TargetVPNGateway
-targetVPNGateway =
-    TargetVPNGateway'
-    { _tvgStatus = Nothing
-    , _tvgKind = "compute#targetVpnGateway"
-    , _tvgNetwork = Nothing
-    , _tvgSelfLink = Nothing
-    , _tvgName = Nothing
-    , _tvgCreationTimestamp = Nothing
-    , _tvgId = Nothing
-    , _tvgRegion = Nothing
-    , _tvgTunnels = Nothing
-    , _tvgDescription = Nothing
-    , _tvgForwardingRules = Nothing
-    }
-
--- | [Output Only] The status of the VPN gateway.
-tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)
-tvgStatus
-  = lens _tvgStatus (\ s a -> s{_tvgStatus = a})
-
--- | [Output Only] Type of resource. Always compute#targetVpnGateway for
--- target VPN gateways.
-tvgKind :: Lens' TargetVPNGateway Text
-tvgKind = lens _tvgKind (\ s a -> s{_tvgKind = a})
-
--- | URL of the network to which this VPN gateway is attached. Provided by
--- the client when the VPN gateway is created.
-tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)
-tvgNetwork
-  = lens _tvgNetwork (\ s a -> s{_tvgNetwork = a})
-
--- | [Output Only] Server-defined URL for the resource.
-tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)
-tvgSelfLink
-  = lens _tvgSelfLink (\ s a -> s{_tvgSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-tvgName :: Lens' TargetVPNGateway (Maybe Text)
-tvgName = lens _tvgName (\ s a -> s{_tvgName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)
-tvgCreationTimestamp
-  = lens _tvgCreationTimestamp
-      (\ s a -> s{_tvgCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tvgId :: Lens' TargetVPNGateway (Maybe Word64)
-tvgId
-  = lens _tvgId (\ s a -> s{_tvgId = a}) .
-      mapping _Coerce
-
--- | [Output Only] URL of the region where the target VPN gateway resides.
-tvgRegion :: Lens' TargetVPNGateway (Maybe Text)
-tvgRegion
-  = lens _tvgRegion (\ s a -> s{_tvgRegion = a})
-
--- | [Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are
--- created using compute.vpntunnels.insert method and associated to a VPN
--- gateway.
-tvgTunnels :: Lens' TargetVPNGateway [Text]
-tvgTunnels
-  = lens _tvgTunnels (\ s a -> s{_tvgTunnels = a}) .
-      _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-tvgDescription :: Lens' TargetVPNGateway (Maybe Text)
-tvgDescription
-  = lens _tvgDescription
-      (\ s a -> s{_tvgDescription = a})
-
--- | [Output Only] A list of URLs to the ForwardingRule resources.
--- ForwardingRules are created using compute.forwardingRules.insert and
--- associated to a VPN gateway.
-tvgForwardingRules :: Lens' TargetVPNGateway [Text]
-tvgForwardingRules
-  = lens _tvgForwardingRules
-      (\ s a -> s{_tvgForwardingRules = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetVPNGateway where
-        parseJSON
-          = withObject "TargetVPNGateway"
-              (\ o ->
-                 TargetVPNGateway' <$>
-                   (o .:? "status") <*>
-                     (o .:? "kind" .!= "compute#targetVpnGateway")
-                     <*> (o .:? "network")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "tunnels" .!= mempty)
-                     <*> (o .:? "description")
-                     <*> (o .:? "forwardingRules" .!= mempty))
-
-instance ToJSON TargetVPNGateway where
-        toJSON TargetVPNGateway'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _tvgStatus,
-                  Just ("kind" .= _tvgKind),
-                  ("network" .=) <$> _tvgNetwork,
-                  ("selfLink" .=) <$> _tvgSelfLink,
-                  ("name" .=) <$> _tvgName,
-                  ("creationTimestamp" .=) <$> _tvgCreationTimestamp,
-                  ("id" .=) <$> _tvgId, ("region" .=) <$> _tvgRegion,
-                  ("tunnels" .=) <$> _tvgTunnels,
-                  ("description" .=) <$> _tvgDescription,
-                  ("forwardingRules" .=) <$> _tvgForwardingRules])
-
---
--- /See:/ 'urlMapsValidateResponse' smart constructor.
-newtype URLMapsValidateResponse = URLMapsValidateResponse'
-    { _umvrResult :: Maybe URLMapValidationResult
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapsValidateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umvrResult'
-urlMapsValidateResponse
-    :: URLMapsValidateResponse
-urlMapsValidateResponse =
-    URLMapsValidateResponse'
-    { _umvrResult = Nothing
-    }
-
-umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)
-umvrResult
-  = lens _umvrResult (\ s a -> s{_umvrResult = a})
-
-instance FromJSON URLMapsValidateResponse where
-        parseJSON
-          = withObject "URLMapsValidateResponse"
-              (\ o ->
-                 URLMapsValidateResponse' <$> (o .:? "result"))
-
-instance ToJSON URLMapsValidateResponse where
-        toJSON URLMapsValidateResponse'{..}
-          = object (catMaybes [("result" .=) <$> _umvrResult])
-
--- | An SslCertificate resource. This resource provides a mechanism to upload
--- an SSL key and certificate to the load balancer to serve secure
--- connections from the user.
---
--- /See:/ 'sslCertificate' smart constructor.
-data SSLCertificate = SSLCertificate'
-    { _scPrivateKey        :: !(Maybe Text)
-    , _scKind              :: !Text
-    , _scSelfLink          :: !(Maybe Text)
-    , _scName              :: !(Maybe Text)
-    , _scCreationTimestamp :: !(Maybe Text)
-    , _scId                :: !(Maybe (Textual Word64))
-    , _scCertificate       :: !(Maybe Text)
-    , _scDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SSLCertificate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scPrivateKey'
---
--- * 'scKind'
---
--- * 'scSelfLink'
---
--- * 'scName'
---
--- * 'scCreationTimestamp'
---
--- * 'scId'
---
--- * 'scCertificate'
---
--- * 'scDescription'
-sslCertificate
-    :: SSLCertificate
-sslCertificate =
-    SSLCertificate'
-    { _scPrivateKey = Nothing
-    , _scKind = "compute#sslCertificate"
-    , _scSelfLink = Nothing
-    , _scName = Nothing
-    , _scCreationTimestamp = Nothing
-    , _scId = Nothing
-    , _scCertificate = Nothing
-    , _scDescription = Nothing
-    }
-
--- | A write-only private key in PEM format. Only insert requests will
--- include this field.
-scPrivateKey :: Lens' SSLCertificate (Maybe Text)
-scPrivateKey
-  = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a})
-
--- | [Output Only] Type of the resource. Always compute#sslCertificate for
--- SSL certificates.
-scKind :: Lens' SSLCertificate Text
-scKind = lens _scKind (\ s a -> s{_scKind = a})
-
--- | [Output only] Server-defined URL for the resource.
-scSelfLink :: Lens' SSLCertificate (Maybe Text)
-scSelfLink
-  = lens _scSelfLink (\ s a -> s{_scSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-scName :: Lens' SSLCertificate (Maybe Text)
-scName = lens _scName (\ s a -> s{_scName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)
-scCreationTimestamp
-  = lens _scCreationTimestamp
-      (\ s a -> s{_scCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-scId :: Lens' SSLCertificate (Maybe Word64)
-scId
-  = lens _scId (\ s a -> s{_scId = a}) .
-      mapping _Coerce
-
--- | A local certificate file. The certificate must be in PEM format. The
--- certificate chain must be no greater than 5 certs long. The chain must
--- include at least one intermediate cert.
-scCertificate :: Lens' SSLCertificate (Maybe Text)
-scCertificate
-  = lens _scCertificate
-      (\ s a -> s{_scCertificate = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-scDescription :: Lens' SSLCertificate (Maybe Text)
-scDescription
-  = lens _scDescription
-      (\ s a -> s{_scDescription = a})
-
-instance FromJSON SSLCertificate where
-        parseJSON
-          = withObject "SSLCertificate"
-              (\ o ->
-                 SSLCertificate' <$>
-                   (o .:? "privateKey") <*>
-                     (o .:? "kind" .!= "compute#sslCertificate")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "certificate")
-                     <*> (o .:? "description"))
-
-instance ToJSON SSLCertificate where
-        toJSON SSLCertificate'{..}
-          = object
-              (catMaybes
-                 [("privateKey" .=) <$> _scPrivateKey,
-                  Just ("kind" .= _scKind),
-                  ("selfLink" .=) <$> _scSelfLink,
-                  ("name" .=) <$> _scName,
-                  ("creationTimestamp" .=) <$> _scCreationTimestamp,
-                  ("id" .=) <$> _scId,
-                  ("certificate" .=) <$> _scCertificate,
-                  ("description" .=) <$> _scDescription])
-
---
--- /See:/ 'routerStatusBGPPeerStatus' smart constructor.
-data RouterStatusBGPPeerStatus = RouterStatusBGPPeerStatus'
-    { _rsbpsStatus           :: !(Maybe RouterStatusBGPPeerStatusStatus)
-    , _rsbpsIPAddress        :: !(Maybe Text)
-    , _rsbpsState            :: !(Maybe Text)
-    , _rsbpsPeerIPAddress    :: !(Maybe Text)
-    , _rsbpsUptime           :: !(Maybe Text)
-    , _rsbpsNumLearnedRoutes :: !(Maybe (Textual Word32))
-    , _rsbpsName             :: !(Maybe Text)
-    , _rsbpsUptimeSeconds    :: !(Maybe Text)
-    , _rsbpsAdvertisedRoutes :: !(Maybe [Route])
-    , _rsbpsLinkedVPNTunnel  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterStatusBGPPeerStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rsbpsStatus'
---
--- * 'rsbpsIPAddress'
---
--- * 'rsbpsState'
---
--- * 'rsbpsPeerIPAddress'
---
--- * 'rsbpsUptime'
---
--- * 'rsbpsNumLearnedRoutes'
---
--- * 'rsbpsName'
---
--- * 'rsbpsUptimeSeconds'
---
--- * 'rsbpsAdvertisedRoutes'
---
--- * 'rsbpsLinkedVPNTunnel'
-routerStatusBGPPeerStatus
-    :: RouterStatusBGPPeerStatus
-routerStatusBGPPeerStatus =
-    RouterStatusBGPPeerStatus'
-    { _rsbpsStatus = Nothing
-    , _rsbpsIPAddress = Nothing
-    , _rsbpsState = Nothing
-    , _rsbpsPeerIPAddress = Nothing
-    , _rsbpsUptime = Nothing
-    , _rsbpsNumLearnedRoutes = Nothing
-    , _rsbpsName = Nothing
-    , _rsbpsUptimeSeconds = Nothing
-    , _rsbpsAdvertisedRoutes = Nothing
-    , _rsbpsLinkedVPNTunnel = Nothing
-    }
-
--- | Status of the BGP peer: {UP, DOWN}
-rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)
-rsbpsStatus
-  = lens _rsbpsStatus (\ s a -> s{_rsbpsStatus = a})
-
--- | IP address of the local BGP interface.
-rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsIPAddress
-  = lens _rsbpsIPAddress
-      (\ s a -> s{_rsbpsIPAddress = a})
-
--- | BGP state as specified in RFC1771.
-rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsState
-  = lens _rsbpsState (\ s a -> s{_rsbpsState = a})
-
--- | IP address of the remote BGP interface.
-rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsPeerIPAddress
-  = lens _rsbpsPeerIPAddress
-      (\ s a -> s{_rsbpsPeerIPAddress = a})
-
--- | Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23
--- hours, 59 minutes, 59 seconds
-rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsUptime
-  = lens _rsbpsUptime (\ s a -> s{_rsbpsUptime = a})
-
--- | Number of routes learned from the remote BGP Peer.
-rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)
-rsbpsNumLearnedRoutes
-  = lens _rsbpsNumLearnedRoutes
-      (\ s a -> s{_rsbpsNumLearnedRoutes = a})
-      . mapping _Coerce
-
--- | Name of this BGP peer. Unique within the Routers resource.
-rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsName
-  = lens _rsbpsName (\ s a -> s{_rsbpsName = a})
-
--- | Time this session has been up, in seconds. Format: 145
-rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsUptimeSeconds
-  = lens _rsbpsUptimeSeconds
-      (\ s a -> s{_rsbpsUptimeSeconds = a})
-
--- | Routes that were advertised to the remote BGP peer
-rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]
-rsbpsAdvertisedRoutes
-  = lens _rsbpsAdvertisedRoutes
-      (\ s a -> s{_rsbpsAdvertisedRoutes = a})
-      . _Default
-      . _Coerce
-
--- | URL of the VPN tunnel that this BGP peer controls.
-rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
-rsbpsLinkedVPNTunnel
-  = lens _rsbpsLinkedVPNTunnel
-      (\ s a -> s{_rsbpsLinkedVPNTunnel = a})
-
-instance FromJSON RouterStatusBGPPeerStatus where
-        parseJSON
-          = withObject "RouterStatusBGPPeerStatus"
-              (\ o ->
-                 RouterStatusBGPPeerStatus' <$>
-                   (o .:? "status") <*> (o .:? "ipAddress") <*>
-                     (o .:? "state")
-                     <*> (o .:? "peerIpAddress")
-                     <*> (o .:? "uptime")
-                     <*> (o .:? "numLearnedRoutes")
-                     <*> (o .:? "name")
-                     <*> (o .:? "uptimeSeconds")
-                     <*> (o .:? "advertisedRoutes" .!= mempty)
-                     <*> (o .:? "linkedVpnTunnel"))
-
-instance ToJSON RouterStatusBGPPeerStatus where
-        toJSON RouterStatusBGPPeerStatus'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _rsbpsStatus,
-                  ("ipAddress" .=) <$> _rsbpsIPAddress,
-                  ("state" .=) <$> _rsbpsState,
-                  ("peerIpAddress" .=) <$> _rsbpsPeerIPAddress,
-                  ("uptime" .=) <$> _rsbpsUptime,
-                  ("numLearnedRoutes" .=) <$> _rsbpsNumLearnedRoutes,
-                  ("name" .=) <$> _rsbpsName,
-                  ("uptimeSeconds" .=) <$> _rsbpsUptimeSeconds,
-                  ("advertisedRoutes" .=) <$> _rsbpsAdvertisedRoutes,
-                  ("linkedVpnTunnel" .=) <$> _rsbpsLinkedVPNTunnel])
-
---
--- /See:/ 'urlMapReference' smart constructor.
-newtype URLMapReference = URLMapReference'
-    { _umrURLMap :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umrURLMap'
-urlMapReference
-    :: URLMapReference
-urlMapReference =
-    URLMapReference'
-    { _umrURLMap = Nothing
-    }
-
-umrURLMap :: Lens' URLMapReference (Maybe Text)
-umrURLMap
-  = lens _umrURLMap (\ s a -> s{_umrURLMap = a})
-
-instance FromJSON URLMapReference where
-        parseJSON
-          = withObject "URLMapReference"
-              (\ o -> URLMapReference' <$> (o .:? "urlMap"))
-
-instance ToJSON URLMapReference where
-        toJSON URLMapReference'{..}
-          = object (catMaybes [("urlMap" .=) <$> _umrURLMap])
-
---
--- /See:/ 'targetPoolsAddHealthCheckRequest' smart constructor.
-newtype TargetPoolsAddHealthCheckRequest = TargetPoolsAddHealthCheckRequest'
-    { _tpahcrHealthChecks :: Maybe [HealthCheckReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsAddHealthCheckRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpahcrHealthChecks'
-targetPoolsAddHealthCheckRequest
-    :: TargetPoolsAddHealthCheckRequest
-targetPoolsAddHealthCheckRequest =
-    TargetPoolsAddHealthCheckRequest'
-    { _tpahcrHealthChecks = Nothing
-    }
-
--- | A list of HttpHealthCheck resources to add to the target pool.
-tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]
-tpahcrHealthChecks
-  = lens _tpahcrHealthChecks
-      (\ s a -> s{_tpahcrHealthChecks = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetPoolsAddHealthCheckRequest
-         where
-        parseJSON
-          = withObject "TargetPoolsAddHealthCheckRequest"
-              (\ o ->
-                 TargetPoolsAddHealthCheckRequest' <$>
-                   (o .:? "healthChecks" .!= mempty))
-
-instance ToJSON TargetPoolsAddHealthCheckRequest
-         where
-        toJSON TargetPoolsAddHealthCheckRequest'{..}
-          = object
-              (catMaybes
-                 [("healthChecks" .=) <$> _tpahcrHealthChecks])
-
--- | [Output Only] A map of scoped disk lists.
---
--- /See:/ 'diskAggregatedListItems' smart constructor.
-newtype DiskAggregatedListItems = DiskAggregatedListItems'
-    { _daliAddtional :: HashMap Text DisksScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daliAddtional'
-diskAggregatedListItems
-    :: HashMap Text DisksScopedList -- ^ 'daliAddtional'
-    -> DiskAggregatedListItems
-diskAggregatedListItems pDaliAddtional_ =
-    DiskAggregatedListItems'
-    { _daliAddtional = _Coerce # pDaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of disks.
-daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)
-daliAddtional
-  = lens _daliAddtional
-      (\ s a -> s{_daliAddtional = a})
-      . _Coerce
-
-instance FromJSON DiskAggregatedListItems where
-        parseJSON
-          = withObject "DiskAggregatedListItems"
-              (\ o ->
-                 DiskAggregatedListItems' <$> (parseJSONObject o))
-
-instance ToJSON DiskAggregatedListItems where
-        toJSON = toJSON . _daliAddtional
-
--- | The location in Cloud Storage and naming method of the daily usage
--- report. Contains bucket_name and report_name prefix.
---
--- /See:/ 'usageExportLocation' smart constructor.
-data UsageExportLocation = UsageExportLocation'
-    { _uelReportNamePrefix :: !(Maybe Text)
-    , _uelBucketName       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UsageExportLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uelReportNamePrefix'
---
--- * 'uelBucketName'
-usageExportLocation
-    :: UsageExportLocation
-usageExportLocation =
-    UsageExportLocation'
-    { _uelReportNamePrefix = Nothing
-    , _uelBucketName = Nothing
-    }
-
--- | An optional prefix for the name of the usage report object stored in
--- bucketName. If not supplied, defaults to usage. The report is stored as
--- a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is
--- the day of the usage according to Pacific Time. If you supply a prefix,
--- it should conform to Cloud Storage object naming conventions.
-uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)
-uelReportNamePrefix
-  = lens _uelReportNamePrefix
-      (\ s a -> s{_uelReportNamePrefix = a})
-
--- | The name of an existing bucket in Cloud Storage where the usage report
--- object is stored. The Google Service Account is granted write access to
--- this bucket. This can either be the bucket name by itself, such as
--- example-bucket, or the bucket name with gs:\/\/ or
--- https:\/\/storage.googleapis.com\/ in front of it, such as
--- gs:\/\/example-bucket.
-uelBucketName :: Lens' UsageExportLocation (Maybe Text)
-uelBucketName
-  = lens _uelBucketName
-      (\ s a -> s{_uelBucketName = a})
-
-instance FromJSON UsageExportLocation where
-        parseJSON
-          = withObject "UsageExportLocation"
-              (\ o ->
-                 UsageExportLocation' <$>
-                   (o .:? "reportNamePrefix") <*> (o .:? "bucketName"))
-
-instance ToJSON UsageExportLocation where
-        toJSON UsageExportLocation'{..}
-          = object
-              (catMaybes
-                 [("reportNamePrefix" .=) <$> _uelReportNamePrefix,
-                  ("bucketName" .=) <$> _uelBucketName])
-
--- | Contains a list of zone resources.
---
--- /See:/ 'zoneList' smart constructor.
-data ZoneList = ZoneList'
-    { _zlNextPageToken :: !(Maybe Text)
-    , _zlKind          :: !Text
-    , _zlItems         :: !(Maybe [Zone])
-    , _zlSelfLink      :: !(Maybe Text)
-    , _zlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ZoneList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'zlNextPageToken'
---
--- * 'zlKind'
---
--- * 'zlItems'
---
--- * 'zlSelfLink'
---
--- * 'zlId'
-zoneList
-    :: ZoneList
-zoneList =
-    ZoneList'
-    { _zlNextPageToken = Nothing
-    , _zlKind = "compute#zoneList"
-    , _zlItems = Nothing
-    , _zlSelfLink = Nothing
-    , _zlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-zlNextPageToken :: Lens' ZoneList (Maybe Text)
-zlNextPageToken
-  = lens _zlNextPageToken
-      (\ s a -> s{_zlNextPageToken = a})
-
--- | Type of resource.
-zlKind :: Lens' ZoneList Text
-zlKind = lens _zlKind (\ s a -> s{_zlKind = a})
-
--- | [Output Only] A list of Zone resources.
-zlItems :: Lens' ZoneList [Zone]
-zlItems
-  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-zlSelfLink :: Lens' ZoneList (Maybe Text)
-zlSelfLink
-  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-zlId :: Lens' ZoneList (Maybe Text)
-zlId = lens _zlId (\ s a -> s{_zlId = a})
-
-instance FromJSON ZoneList where
-        parseJSON
-          = withObject "ZoneList"
-              (\ o ->
-                 ZoneList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#zoneList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ZoneList where
-        toJSON ZoneList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _zlNextPageToken,
-                  Just ("kind" .= _zlKind), ("items" .=) <$> _zlItems,
-                  ("selfLink" .=) <$> _zlSelfLink,
-                  ("id" .=) <$> _zlId])
-
---
--- /See:/ 'routerBGPPeer' smart constructor.
-data RouterBGPPeer = RouterBGPPeer'
-    { _rbpIPAddress               :: !(Maybe Text)
-    , _rbpInterfaceName           :: !(Maybe Text)
-    , _rbpPeerIPAddress           :: !(Maybe Text)
-    , _rbpAdvertisedRoutePriority :: !(Maybe (Textual Word32))
-    , _rbpPeerASN                 :: !(Maybe (Textual Word32))
-    , _rbpName                    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterBGPPeer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rbpIPAddress'
---
--- * 'rbpInterfaceName'
---
--- * 'rbpPeerIPAddress'
---
--- * 'rbpAdvertisedRoutePriority'
---
--- * 'rbpPeerASN'
---
--- * 'rbpName'
-routerBGPPeer
-    :: RouterBGPPeer
-routerBGPPeer =
-    RouterBGPPeer'
-    { _rbpIPAddress = Nothing
-    , _rbpInterfaceName = Nothing
-    , _rbpPeerIPAddress = Nothing
-    , _rbpAdvertisedRoutePriority = Nothing
-    , _rbpPeerASN = Nothing
-    , _rbpName = Nothing
-    }
-
--- | IP address of the interface inside Google Cloud Platform. Only IPv4 is
--- supported.
-rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)
-rbpIPAddress
-  = lens _rbpIPAddress (\ s a -> s{_rbpIPAddress = a})
-
--- | Name of the interface the BGP peer is associated with.
-rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)
-rbpInterfaceName
-  = lens _rbpInterfaceName
-      (\ s a -> s{_rbpInterfaceName = a})
-
--- | IP address of the BGP interface outside Google cloud. Only IPv4 is
--- supported.
-rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)
-rbpPeerIPAddress
-  = lens _rbpPeerIPAddress
-      (\ s a -> s{_rbpPeerIPAddress = a})
-
--- | The priority of routes advertised to this BGP peer. In the case where
--- there is more than one matching route of maximum length, the routes with
--- lowest priority value win.
-rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)
-rbpAdvertisedRoutePriority
-  = lens _rbpAdvertisedRoutePriority
-      (\ s a -> s{_rbpAdvertisedRoutePriority = a})
-      . mapping _Coerce
-
--- | Peer BGP Autonomous System Number (ASN). For VPN use case, this value
--- can be different for every tunnel.
-rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)
-rbpPeerASN
-  = lens _rbpPeerASN (\ s a -> s{_rbpPeerASN = a}) .
-      mapping _Coerce
-
--- | Name of this BGP peer. The name must be 1-63 characters long and comply
--- with RFC1035.
-rbpName :: Lens' RouterBGPPeer (Maybe Text)
-rbpName = lens _rbpName (\ s a -> s{_rbpName = a})
-
-instance FromJSON RouterBGPPeer where
-        parseJSON
-          = withObject "RouterBGPPeer"
-              (\ o ->
-                 RouterBGPPeer' <$>
-                   (o .:? "ipAddress") <*> (o .:? "interfaceName") <*>
-                     (o .:? "peerIpAddress")
-                     <*> (o .:? "advertisedRoutePriority")
-                     <*> (o .:? "peerAsn")
-                     <*> (o .:? "name"))
-
-instance ToJSON RouterBGPPeer where
-        toJSON RouterBGPPeer'{..}
-          = object
-              (catMaybes
-                 [("ipAddress" .=) <$> _rbpIPAddress,
-                  ("interfaceName" .=) <$> _rbpInterfaceName,
-                  ("peerIpAddress" .=) <$> _rbpPeerIPAddress,
-                  ("advertisedRoutePriority" .=) <$>
-                    _rbpAdvertisedRoutePriority,
-                  ("peerAsn" .=) <$> _rbpPeerASN,
-                  ("name" .=) <$> _rbpName])
-
---
--- /See:/ 'subnetworksExpandIPCIdRRangeRequest' smart constructor.
-newtype SubnetworksExpandIPCIdRRangeRequest = SubnetworksExpandIPCIdRRangeRequest'
-    { _seicirrrIPCIdRRange :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworksExpandIPCIdRRangeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'seicirrrIPCIdRRange'
-subnetworksExpandIPCIdRRangeRequest
-    :: SubnetworksExpandIPCIdRRangeRequest
-subnetworksExpandIPCIdRRangeRequest =
-    SubnetworksExpandIPCIdRRangeRequest'
-    { _seicirrrIPCIdRRange = Nothing
-    }
-
--- | The IP (in CIDR format or netmask) of internal addresses that are legal
--- on this Subnetwork. This range should be disjoint from other subnetworks
--- within this network. This range can only be larger than (i.e. a superset
--- of) the range previously defined before the update.
-seicirrrIPCIdRRange :: Lens' SubnetworksExpandIPCIdRRangeRequest (Maybe Text)
-seicirrrIPCIdRRange
-  = lens _seicirrrIPCIdRRange
-      (\ s a -> s{_seicirrrIPCIdRRange = a})
-
-instance FromJSON SubnetworksExpandIPCIdRRangeRequest
-         where
-        parseJSON
-          = withObject "SubnetworksExpandIPCIdRRangeRequest"
-              (\ o ->
-                 SubnetworksExpandIPCIdRRangeRequest' <$>
-                   (o .:? "ipCidrRange"))
-
-instance ToJSON SubnetworksExpandIPCIdRRangeRequest
-         where
-        toJSON SubnetworksExpandIPCIdRRangeRequest'{..}
-          = object
-              (catMaybes
-                 [("ipCidrRange" .=) <$> _seicirrrIPCIdRRange])
-
---
--- /See:/ 'managedInstance' smart constructor.
-data ManagedInstance = ManagedInstance'
-    { _miLastAttempt    :: !(Maybe ManagedInstanceLastAttempt)
-    , _miCurrentAction  :: !(Maybe ManagedInstanceCurrentAction)
-    , _miId             :: !(Maybe (Textual Word64))
-    , _miInstanceStatus :: !(Maybe ManagedInstanceInstanceStatus)
-    , _miInstance       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'miLastAttempt'
---
--- * 'miCurrentAction'
---
--- * 'miId'
---
--- * 'miInstanceStatus'
---
--- * 'miInstance'
-managedInstance
-    :: ManagedInstance
-managedInstance =
-    ManagedInstance'
-    { _miLastAttempt = Nothing
-    , _miCurrentAction = Nothing
-    , _miId = Nothing
-    , _miInstanceStatus = Nothing
-    , _miInstance = Nothing
-    }
-
--- | [Output Only] Information about the last attempt to create or delete the
--- instance.
-miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)
-miLastAttempt
-  = lens _miLastAttempt
-      (\ s a -> s{_miLastAttempt = a})
-
--- | [Output Only] The current action that the managed instance group has
--- scheduled for the instance. Possible values: - NONE The instance is
--- running, and the managed instance group does not have any scheduled
--- actions for this instance. - CREATING The managed instance group is
--- creating this instance. If the group fails to create this instance, it
--- will try again until it is successful. - CREATING_WITHOUT_RETRIES The
--- managed instance group is attempting to create this instance only once.
--- If the group fails to create this instance, it does not try again and
--- the group\'s targetSize value is decreased instead. - RECREATING The
--- managed instance group is recreating this instance. - DELETING The
--- managed instance group is permanently deleting this instance. -
--- ABANDONING The managed instance group is abandoning this instance. The
--- instance will be removed from the instance group and from any target
--- pools that are associated with this group. - RESTARTING The managed
--- instance group is restarting the instance. - REFRESHING The managed
--- instance group is applying configuration changes to the instance without
--- stopping it. For example, the group can update the target pool list for
--- an instance without stopping that instance.
-miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)
-miCurrentAction
-  = lens _miCurrentAction
-      (\ s a -> s{_miCurrentAction = a})
-
--- | [Output only] The unique identifier for this resource. This field is
--- empty when instance does not exist.
-miId :: Lens' ManagedInstance (Maybe Word64)
-miId
-  = lens _miId (\ s a -> s{_miId = a}) .
-      mapping _Coerce
-
--- | [Output Only] The status of the instance. This field is empty when the
--- instance does not exist.
-miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)
-miInstanceStatus
-  = lens _miInstanceStatus
-      (\ s a -> s{_miInstanceStatus = a})
-
--- | [Output Only] The URL of the instance. The URL can exist even if the
--- instance has not yet been created.
-miInstance :: Lens' ManagedInstance (Maybe Text)
-miInstance
-  = lens _miInstance (\ s a -> s{_miInstance = a})
-
-instance FromJSON ManagedInstance where
-        parseJSON
-          = withObject "ManagedInstance"
-              (\ o ->
-                 ManagedInstance' <$>
-                   (o .:? "lastAttempt") <*> (o .:? "currentAction") <*>
-                     (o .:? "id")
-                     <*> (o .:? "instanceStatus")
-                     <*> (o .:? "instance"))
-
-instance ToJSON ManagedInstance where
-        toJSON ManagedInstance'{..}
-          = object
-              (catMaybes
-                 [("lastAttempt" .=) <$> _miLastAttempt,
-                  ("currentAction" .=) <$> _miCurrentAction,
-                  ("id" .=) <$> _miId,
-                  ("instanceStatus" .=) <$> _miInstanceStatus,
-                  ("instance" .=) <$> _miInstance])
-
--- | [Output Only] A map of filtered managed instance group lists.
---
--- /See:/ 'instanceGroupManagerAggregatedListItems' smart constructor.
-newtype InstanceGroupManagerAggregatedListItems = InstanceGroupManagerAggregatedListItems'
-    { _igmaliAddtional :: HashMap Text InstanceGroupManagersScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagerAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmaliAddtional'
-instanceGroupManagerAggregatedListItems
-    :: HashMap Text InstanceGroupManagersScopedList -- ^ 'igmaliAddtional'
-    -> InstanceGroupManagerAggregatedListItems
-instanceGroupManagerAggregatedListItems pIgmaliAddtional_ =
-    InstanceGroupManagerAggregatedListItems'
-    { _igmaliAddtional = _Coerce # pIgmaliAddtional_
-    }
-
--- | [Output Only] The name of the scope that contains this set of managed
--- instance groups.
-igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)
-igmaliAddtional
-  = lens _igmaliAddtional
-      (\ s a -> s{_igmaliAddtional = a})
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagerAggregatedListItems where
-        parseJSON
-          = withObject
-              "InstanceGroupManagerAggregatedListItems"
-              (\ o ->
-                 InstanceGroupManagerAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON
-         InstanceGroupManagerAggregatedListItems where
-        toJSON = toJSON . _igmaliAddtional
-
---
--- /See:/ 'instanceGroupManagersDeleteInstancesRequest' smart constructor.
-newtype InstanceGroupManagersDeleteInstancesRequest = InstanceGroupManagersDeleteInstancesRequest'
-    { _igmdirInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmdirInstances'
-instanceGroupManagersDeleteInstancesRequest
-    :: InstanceGroupManagersDeleteInstancesRequest
-instanceGroupManagersDeleteInstancesRequest =
-    InstanceGroupManagersDeleteInstancesRequest'
-    { _igmdirInstances = Nothing
-    }
-
--- | The list of instances to delete from this managed instance group.
--- Specify one or more instance URLs.
-igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]
-igmdirInstances
-  = lens _igmdirInstances
-      (\ s a -> s{_igmdirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagersDeleteInstancesRequest where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersDeleteInstancesRequest"
-              (\ o ->
-                 InstanceGroupManagersDeleteInstancesRequest' <$>
-                   (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         InstanceGroupManagersDeleteInstancesRequest where
-        toJSON
-          InstanceGroupManagersDeleteInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _igmdirInstances])
-
--- | Message containing information of one individual backend.
---
--- /See:/ 'backend' smart constructor.
-data Backend = Backend'
-    { _bGroup                     :: !(Maybe Text)
-    , _bBalancingMode             :: !(Maybe BackendBalancingMode)
-    , _bMaxUtilization            :: !(Maybe (Textual Double))
-    , _bMaxRate                   :: !(Maybe (Textual Int32))
-    , _bMaxConnections            :: !(Maybe (Textual Int32))
-    , _bMaxConnectionsPerInstance :: !(Maybe (Textual Int32))
-    , _bMaxRatePerInstance        :: !(Maybe (Textual Double))
-    , _bDescription               :: !(Maybe Text)
-    , _bCapacityScaler            :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Backend' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bGroup'
---
--- * 'bBalancingMode'
---
--- * 'bMaxUtilization'
---
--- * 'bMaxRate'
---
--- * 'bMaxConnections'
---
--- * 'bMaxConnectionsPerInstance'
---
--- * 'bMaxRatePerInstance'
---
--- * 'bDescription'
---
--- * 'bCapacityScaler'
-backend
-    :: Backend
-backend =
-    Backend'
-    { _bGroup = Nothing
-    , _bBalancingMode = Nothing
-    , _bMaxUtilization = Nothing
-    , _bMaxRate = Nothing
-    , _bMaxConnections = Nothing
-    , _bMaxConnectionsPerInstance = Nothing
-    , _bMaxRatePerInstance = Nothing
-    , _bDescription = Nothing
-    , _bCapacityScaler = Nothing
-    }
-
--- | The fully-qualified URL of a zonal Instance Group resource. This
--- instance group defines the list of instances that serve traffic. Member
--- virtual machine instances from each instance group must live in the same
--- zone as the instance group itself. No two backends in a backend service
--- are allowed to use same Instance Group resource. Note that you must
--- specify an Instance Group resource using the fully-qualified URL, rather
--- than a partial URL. When the BackendService has load balancing scheme
--- INTERNAL, the instance group must be in a zone within the same region as
--- the BackendService.
-bGroup :: Lens' Backend (Maybe Text)
-bGroup = lens _bGroup (\ s a -> s{_bGroup = a})
-
--- | Specifies the balancing mode for this backend. For global HTTP(S) or
--- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are
--- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). This
--- cannot be used for internal load balancing.
-bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)
-bBalancingMode
-  = lens _bBalancingMode
-      (\ s a -> s{_bBalancingMode = a})
-
--- | Used when balancingMode is UTILIZATION. This ratio defines the CPU
--- utilization target for the group. The default is 0.8. Valid range is
--- [0.0, 1.0]. This cannot be used for internal load balancing.
-bMaxUtilization :: Lens' Backend (Maybe Double)
-bMaxUtilization
-  = lens _bMaxUtilization
-      (\ s a -> s{_bMaxUtilization = a})
-      . mapping _Coerce
-
--- | The max requests per second (RPS) of the group. Can be used with either
--- RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE
--- mode, either maxRate or maxRatePerInstance must be set. This cannot be
--- used for internal load balancing.
-bMaxRate :: Lens' Backend (Maybe Int32)
-bMaxRate
-  = lens _bMaxRate (\ s a -> s{_bMaxRate = a}) .
-      mapping _Coerce
-
--- | The max number of simultaneous connections for the group. Can be used
--- with either CONNECTION or UTILIZATION balancing modes. For CONNECTION
--- mode, either maxConnections or maxConnectionsPerInstance must be set.
--- This cannot be used for internal load balancing.
-bMaxConnections :: Lens' Backend (Maybe Int32)
-bMaxConnections
-  = lens _bMaxConnections
-      (\ s a -> s{_bMaxConnections = a})
-      . mapping _Coerce
-
--- | The max number of simultaneous connections that a single backend
--- instance can handle. This is used to calculate the capacity of the
--- group. Can be used in either CONNECTION or UTILIZATION balancing modes.
--- For CONNECTION mode, either maxConnections or maxConnectionsPerInstance
--- must be set. This cannot be used for internal load balancing.
-bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)
-bMaxConnectionsPerInstance
-  = lens _bMaxConnectionsPerInstance
-      (\ s a -> s{_bMaxConnectionsPerInstance = a})
-      . mapping _Coerce
-
--- | The max requests per second (RPS) that a single backend instance can
--- handle.This is used to calculate the capacity of the group. Can be used
--- in either balancing mode. For RATE mode, either maxRate or
--- maxRatePerInstance must be set. This cannot be used for internal load
--- balancing.
-bMaxRatePerInstance :: Lens' Backend (Maybe Double)
-bMaxRatePerInstance
-  = lens _bMaxRatePerInstance
-      (\ s a -> s{_bMaxRatePerInstance = a})
-      . mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-bDescription :: Lens' Backend (Maybe Text)
-bDescription
-  = lens _bDescription (\ s a -> s{_bDescription = a})
-
--- | A multiplier applied to the group\'s maximum servicing capacity (based
--- on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the
--- group will serve up to 100% of its configured capacity (depending on
--- balancingMode). A setting of 0 means the group is completely drained,
--- offering 0% of its available Capacity. Valid range is [0.0,1.0]. This
--- cannot be used for internal load balancing.
-bCapacityScaler :: Lens' Backend (Maybe Double)
-bCapacityScaler
-  = lens _bCapacityScaler
-      (\ s a -> s{_bCapacityScaler = a})
-      . mapping _Coerce
-
-instance FromJSON Backend where
-        parseJSON
-          = withObject "Backend"
-              (\ o ->
-                 Backend' <$>
-                   (o .:? "group") <*> (o .:? "balancingMode") <*>
-                     (o .:? "maxUtilization")
-                     <*> (o .:? "maxRate")
-                     <*> (o .:? "maxConnections")
-                     <*> (o .:? "maxConnectionsPerInstance")
-                     <*> (o .:? "maxRatePerInstance")
-                     <*> (o .:? "description")
-                     <*> (o .:? "capacityScaler"))
-
-instance ToJSON Backend where
-        toJSON Backend'{..}
-          = object
-              (catMaybes
-                 [("group" .=) <$> _bGroup,
-                  ("balancingMode" .=) <$> _bBalancingMode,
-                  ("maxUtilization" .=) <$> _bMaxUtilization,
-                  ("maxRate" .=) <$> _bMaxRate,
-                  ("maxConnections" .=) <$> _bMaxConnections,
-                  ("maxConnectionsPerInstance" .=) <$>
-                    _bMaxConnectionsPerInstance,
-                  ("maxRatePerInstance" .=) <$> _bMaxRatePerInstance,
-                  ("description" .=) <$> _bDescription,
-                  ("capacityScaler" .=) <$> _bCapacityScaler])
-
--- | [Output Only] Informational warning which replaces the list of addresses
--- when the list is empty.
---
--- /See:/ 'targetVPNGatewaysScopedListWarning' smart constructor.
-data TargetVPNGatewaysScopedListWarning = TargetVPNGatewaysScopedListWarning'
-    { _tvgslwData    :: !(Maybe [TargetVPNGatewaysScopedListWarningDataItem])
-    , _tvgslwCode    :: !(Maybe TargetVPNGatewaysScopedListWarningCode)
-    , _tvgslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewaysScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgslwData'
---
--- * 'tvgslwCode'
---
--- * 'tvgslwMessage'
-targetVPNGatewaysScopedListWarning
-    :: TargetVPNGatewaysScopedListWarning
-targetVPNGatewaysScopedListWarning =
-    TargetVPNGatewaysScopedListWarning'
-    { _tvgslwData = Nothing
-    , _tvgslwCode = Nothing
-    , _tvgslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]
-tvgslwData
-  = lens _tvgslwData (\ s a -> s{_tvgslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)
-tvgslwCode
-  = lens _tvgslwCode (\ s a -> s{_tvgslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)
-tvgslwMessage
-  = lens _tvgslwMessage
-      (\ s a -> s{_tvgslwMessage = a})
-
-instance FromJSON TargetVPNGatewaysScopedListWarning
-         where
-        parseJSON
-          = withObject "TargetVPNGatewaysScopedListWarning"
-              (\ o ->
-                 TargetVPNGatewaysScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON TargetVPNGatewaysScopedListWarning
-         where
-        toJSON TargetVPNGatewaysScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _tvgslwData,
-                  ("code" .=) <$> _tvgslwCode,
-                  ("message" .=) <$> _tvgslwMessage])
-
--- | Contains a list of addresses.
---
--- /See:/ 'addressList' smart constructor.
-data AddressList = AddressList'
-    { _alNextPageToken :: !(Maybe Text)
-    , _alKind          :: !Text
-    , _alItems         :: !(Maybe [Address])
-    , _alSelfLink      :: !(Maybe Text)
-    , _alId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'alNextPageToken'
---
--- * 'alKind'
---
--- * 'alItems'
---
--- * 'alSelfLink'
---
--- * 'alId'
-addressList
-    :: AddressList
-addressList =
-    AddressList'
-    { _alNextPageToken = Nothing
-    , _alKind = "compute#addressList"
-    , _alItems = Nothing
-    , _alSelfLink = Nothing
-    , _alId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-alNextPageToken :: Lens' AddressList (Maybe Text)
-alNextPageToken
-  = lens _alNextPageToken
-      (\ s a -> s{_alNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#addressList for lists of
--- addresses.
-alKind :: Lens' AddressList Text
-alKind = lens _alKind (\ s a -> s{_alKind = a})
-
--- | [Output Only] A list of addresses.
-alItems :: Lens' AddressList [Address]
-alItems
-  = lens _alItems (\ s a -> s{_alItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-alSelfLink :: Lens' AddressList (Maybe Text)
-alSelfLink
-  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-alId :: Lens' AddressList (Maybe Text)
-alId = lens _alId (\ s a -> s{_alId = a})
-
-instance FromJSON AddressList where
-        parseJSON
-          = withObject "AddressList"
-              (\ o ->
-                 AddressList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#addressList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON AddressList where
-        toJSON AddressList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _alNextPageToken,
-                  Just ("kind" .= _alKind), ("items" .=) <$> _alItems,
-                  ("selfLink" .=) <$> _alSelfLink,
-                  ("id" .=) <$> _alId])
-
--- | A map of scoped forwarding rule lists.
---
--- /See:/ 'forwardingRuleAggregatedListItems' smart constructor.
-newtype ForwardingRuleAggregatedListItems = ForwardingRuleAggregatedListItems'
-    { _fraliAddtional :: HashMap Text ForwardingRulesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRuleAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fraliAddtional'
-forwardingRuleAggregatedListItems
-    :: HashMap Text ForwardingRulesScopedList -- ^ 'fraliAddtional'
-    -> ForwardingRuleAggregatedListItems
-forwardingRuleAggregatedListItems pFraliAddtional_ =
-    ForwardingRuleAggregatedListItems'
-    { _fraliAddtional = _Coerce # pFraliAddtional_
-    }
-
--- | Name of the scope containing this set of addresses.
-fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)
-fraliAddtional
-  = lens _fraliAddtional
-      (\ s a -> s{_fraliAddtional = a})
-      . _Coerce
-
-instance FromJSON ForwardingRuleAggregatedListItems
-         where
-        parseJSON
-          = withObject "ForwardingRuleAggregatedListItems"
-              (\ o ->
-                 ForwardingRuleAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON ForwardingRuleAggregatedListItems
-         where
-        toJSON = toJSON . _fraliAddtional
-
--- | [Output Only] A map of scoped operation lists.
---
--- /See:/ 'operationAggregatedListItems' smart constructor.
-newtype OperationAggregatedListItems = OperationAggregatedListItems'
-    { _oaliAddtional :: HashMap Text OperationsScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oaliAddtional'
-operationAggregatedListItems
-    :: HashMap Text OperationsScopedList -- ^ 'oaliAddtional'
-    -> OperationAggregatedListItems
-operationAggregatedListItems pOaliAddtional_ =
-    OperationAggregatedListItems'
-    { _oaliAddtional = _Coerce # pOaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of operations.
-oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)
-oaliAddtional
-  = lens _oaliAddtional
-      (\ s a -> s{_oaliAddtional = a})
-      . _Coerce
-
-instance FromJSON OperationAggregatedListItems where
-        parseJSON
-          = withObject "OperationAggregatedListItems"
-              (\ o ->
-                 OperationAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON OperationAggregatedListItems where
-        toJSON = toJSON . _oaliAddtional
-
---
--- /See:/ 'instanceGroupManagerActionsSummary' smart constructor.
-data InstanceGroupManagerActionsSummary = InstanceGroupManagerActionsSummary'
-    { _igmasDeleting               :: !(Maybe (Textual Int32))
-    , _igmasRestarting             :: !(Maybe (Textual Int32))
-    , _igmasNone                   :: !(Maybe (Textual Int32))
-    , _igmasCreating               :: !(Maybe (Textual Int32))
-    , _igmasRefreshing             :: !(Maybe (Textual Int32))
-    , _igmasCreatingWithoutRetries :: !(Maybe (Textual Int32))
-    , _igmasRecreating             :: !(Maybe (Textual Int32))
-    , _igmasAbandoning             :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagerActionsSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmasDeleting'
---
--- * 'igmasRestarting'
---
--- * 'igmasNone'
---
--- * 'igmasCreating'
---
--- * 'igmasRefreshing'
---
--- * 'igmasCreatingWithoutRetries'
---
--- * 'igmasRecreating'
---
--- * 'igmasAbandoning'
-instanceGroupManagerActionsSummary
-    :: InstanceGroupManagerActionsSummary
-instanceGroupManagerActionsSummary =
-    InstanceGroupManagerActionsSummary'
-    { _igmasDeleting = Nothing
-    , _igmasRestarting = Nothing
-    , _igmasNone = Nothing
-    , _igmasCreating = Nothing
-    , _igmasRefreshing = Nothing
-    , _igmasCreatingWithoutRetries = Nothing
-    , _igmasRecreating = Nothing
-    , _igmasAbandoning = Nothing
-    }
-
--- | [Output Only] The number of instances in the managed instance group that
--- are scheduled to be deleted or are currently being deleted.
-igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasDeleting
-  = lens _igmasDeleting
-      (\ s a -> s{_igmasDeleting = a})
-      . mapping _Coerce
-
--- | [Output Only] The number of instances in the managed instance group that
--- are scheduled to be restarted or are currently being restarted.
-igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasRestarting
-  = lens _igmasRestarting
-      (\ s a -> s{_igmasRestarting = a})
-      . mapping _Coerce
-
--- | [Output Only] The number of instances in the managed instance group that
--- are running and have no scheduled actions.
-igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasNone
-  = lens _igmasNone (\ s a -> s{_igmasNone = a}) .
-      mapping _Coerce
-
--- | [Output Only] The number of instances in the managed instance group that
--- are scheduled to be created or are currently being created. If the group
--- fails to create any of these instances, it tries again until it creates
--- the instance successfully. If you have disabled creation retries, this
--- field will not be populated; instead, the creatingWithoutRetries field
--- will be populated.
-igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasCreating
-  = lens _igmasCreating
-      (\ s a -> s{_igmasCreating = a})
-      . mapping _Coerce
-
--- | [Output Only] The number of instances in the managed instance group that
--- are being reconfigured with properties that do not require a restart or
--- a recreate action. For example, setting or removing target pools for the
--- instance.
-igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasRefreshing
-  = lens _igmasRefreshing
-      (\ s a -> s{_igmasRefreshing = a})
-      . mapping _Coerce
-
--- | [Output Only] The number of instances that the managed instance group
--- will attempt to create. The group attempts to create each instance only
--- once. If the group fails to create any of these instances, it decreases
--- the group\'s targetSize value accordingly.
-igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasCreatingWithoutRetries
-  = lens _igmasCreatingWithoutRetries
-      (\ s a -> s{_igmasCreatingWithoutRetries = a})
-      . mapping _Coerce
-
--- | [Output Only] The number of instances in the managed instance group that
--- are scheduled to be recreated or are currently being being recreated.
--- Recreating an instance deletes the existing root persistent disk and
--- creates a new disk from the image that is defined in the instance
--- template.
-igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasRecreating
-  = lens _igmasRecreating
-      (\ s a -> s{_igmasRecreating = a})
-      . mapping _Coerce
-
--- | [Output Only] The total number of instances in the managed instance
--- group that are scheduled to be abandoned. Abandoning an instance removes
--- it from the managed instance group without deleting it.
-igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
-igmasAbandoning
-  = lens _igmasAbandoning
-      (\ s a -> s{_igmasAbandoning = a})
-      . mapping _Coerce
-
-instance FromJSON InstanceGroupManagerActionsSummary
-         where
-        parseJSON
-          = withObject "InstanceGroupManagerActionsSummary"
-              (\ o ->
-                 InstanceGroupManagerActionsSummary' <$>
-                   (o .:? "deleting") <*> (o .:? "restarting") <*>
-                     (o .:? "none")
-                     <*> (o .:? "creating")
-                     <*> (o .:? "refreshing")
-                     <*> (o .:? "creatingWithoutRetries")
-                     <*> (o .:? "recreating")
-                     <*> (o .:? "abandoning"))
-
-instance ToJSON InstanceGroupManagerActionsSummary
-         where
-        toJSON InstanceGroupManagerActionsSummary'{..}
-          = object
-              (catMaybes
-                 [("deleting" .=) <$> _igmasDeleting,
-                  ("restarting" .=) <$> _igmasRestarting,
-                  ("none" .=) <$> _igmasNone,
-                  ("creating" .=) <$> _igmasCreating,
-                  ("refreshing" .=) <$> _igmasRefreshing,
-                  ("creatingWithoutRetries" .=) <$>
-                    _igmasCreatingWithoutRetries,
-                  ("recreating" .=) <$> _igmasRecreating,
-                  ("abandoning" .=) <$> _igmasAbandoning])
-
--- | A service account.
---
--- /See:/ 'serviceAccount' smart constructor.
-data ServiceAccount = ServiceAccount'
-    { _saEmail  :: !(Maybe Text)
-    , _saScopes :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saEmail'
---
--- * 'saScopes'
-serviceAccount
-    :: ServiceAccount
-serviceAccount =
-    ServiceAccount'
-    { _saEmail = Nothing
-    , _saScopes = Nothing
-    }
-
--- | Email address of the service account.
-saEmail :: Lens' ServiceAccount (Maybe Text)
-saEmail = lens _saEmail (\ s a -> s{_saEmail = a})
-
--- | The list of scopes to be made available for this service account.
-saScopes :: Lens' ServiceAccount [Text]
-saScopes
-  = lens _saScopes (\ s a -> s{_saScopes = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ServiceAccount where
-        parseJSON
-          = withObject "ServiceAccount"
-              (\ o ->
-                 ServiceAccount' <$>
-                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))
-
-instance ToJSON ServiceAccount where
-        toJSON ServiceAccount'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _saEmail,
-                  ("scopes" .=) <$> _saScopes])
-
---
--- /See:/ 'regionInstanceGroupManagersAbandonInstancesRequest' smart constructor.
-newtype RegionInstanceGroupManagersAbandonInstancesRequest = RegionInstanceGroupManagersAbandonInstancesRequest'
-    { _rigmairInstances :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmairInstances'
-regionInstanceGroupManagersAbandonInstancesRequest
-    :: RegionInstanceGroupManagersAbandonInstancesRequest
-regionInstanceGroupManagersAbandonInstancesRequest =
-    RegionInstanceGroupManagersAbandonInstancesRequest'
-    { _rigmairInstances = Nothing
-    }
-
--- | The names of one or more instances to abandon.
-rigmairInstances :: Lens' RegionInstanceGroupManagersAbandonInstancesRequest [Text]
-rigmairInstances
-  = lens _rigmairInstances
-      (\ s a -> s{_rigmairInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupManagersAbandonInstancesRequest
-         where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersAbandonInstancesRequest"
-              (\ o ->
-                 RegionInstanceGroupManagersAbandonInstancesRequest'
-                   <$> (o .:? "instances" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupManagersAbandonInstancesRequest
-         where
-        toJSON
-          RegionInstanceGroupManagersAbandonInstancesRequest'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _rigmairInstances])
-
--- | Contains a list of networks.
---
--- /See:/ 'networkList' smart constructor.
-data NetworkList = NetworkList'
-    { _nlNextPageToken :: !(Maybe Text)
-    , _nlKind          :: !Text
-    , _nlItems         :: !(Maybe [Network])
-    , _nlSelfLink      :: !(Maybe Text)
-    , _nlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nlNextPageToken'
---
--- * 'nlKind'
---
--- * 'nlItems'
---
--- * 'nlSelfLink'
---
--- * 'nlId'
-networkList
-    :: NetworkList
-networkList =
-    NetworkList'
-    { _nlNextPageToken = Nothing
-    , _nlKind = "compute#networkList"
-    , _nlItems = Nothing
-    , _nlSelfLink = Nothing
-    , _nlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-nlNextPageToken :: Lens' NetworkList (Maybe Text)
-nlNextPageToken
-  = lens _nlNextPageToken
-      (\ s a -> s{_nlNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#networkList for lists of
--- networks.
-nlKind :: Lens' NetworkList Text
-nlKind = lens _nlKind (\ s a -> s{_nlKind = a})
-
--- | [Output Only] A list of Network resources.
-nlItems :: Lens' NetworkList [Network]
-nlItems
-  = lens _nlItems (\ s a -> s{_nlItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-nlSelfLink :: Lens' NetworkList (Maybe Text)
-nlSelfLink
-  = lens _nlSelfLink (\ s a -> s{_nlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-nlId :: Lens' NetworkList (Maybe Text)
-nlId = lens _nlId (\ s a -> s{_nlId = a})
-
-instance FromJSON NetworkList where
-        parseJSON
-          = withObject "NetworkList"
-              (\ o ->
-                 NetworkList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#networkList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON NetworkList where
-        toJSON NetworkList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _nlNextPageToken,
-                  Just ("kind" .= _nlKind), ("items" .=) <$> _nlItems,
-                  ("selfLink" .=) <$> _nlSelfLink,
-                  ("id" .=) <$> _nlId])
-
---
--- /See:/ 'instanceGroupsListInstancesRequest' smart constructor.
-newtype InstanceGroupsListInstancesRequest = InstanceGroupsListInstancesRequest'
-    { _iglirInstanceState :: Maybe InstanceGroupsListInstancesRequestInstanceState
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsListInstancesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iglirInstanceState'
-instanceGroupsListInstancesRequest
-    :: InstanceGroupsListInstancesRequest
-instanceGroupsListInstancesRequest =
-    InstanceGroupsListInstancesRequest'
-    { _iglirInstanceState = Nothing
-    }
-
--- | A filter for the state of the instances in the instance group. Valid
--- options are ALL or RUNNING. If you do not specify this parameter the
--- list includes all instances regardless of their state.
-iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)
-iglirInstanceState
-  = lens _iglirInstanceState
-      (\ s a -> s{_iglirInstanceState = a})
-
-instance FromJSON InstanceGroupsListInstancesRequest
-         where
-        parseJSON
-          = withObject "InstanceGroupsListInstancesRequest"
-              (\ o ->
-                 InstanceGroupsListInstancesRequest' <$>
-                   (o .:? "instanceState"))
-
-instance ToJSON InstanceGroupsListInstancesRequest
-         where
-        toJSON InstanceGroupsListInstancesRequest'{..}
-          = object
-              (catMaybes
-                 [("instanceState" .=) <$> _iglirInstanceState])
-
--- | Contains a list of InstanceGroup resources.
---
--- /See:/ 'regionInstanceGroupList' smart constructor.
-data RegionInstanceGroupList = RegionInstanceGroupList'
-    { _riglNextPageToken :: !(Maybe Text)
-    , _riglKind          :: !Text
-    , _riglItems         :: !(Maybe [InstanceGroup])
-    , _riglSelfLink      :: !(Maybe Text)
-    , _riglId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riglNextPageToken'
---
--- * 'riglKind'
---
--- * 'riglItems'
---
--- * 'riglSelfLink'
---
--- * 'riglId'
-regionInstanceGroupList
-    :: RegionInstanceGroupList
-regionInstanceGroupList =
-    RegionInstanceGroupList'
-    { _riglNextPageToken = Nothing
-    , _riglKind = "compute#regionInstanceGroupList"
-    , _riglItems = Nothing
-    , _riglSelfLink = Nothing
-    , _riglId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-riglNextPageToken :: Lens' RegionInstanceGroupList (Maybe Text)
-riglNextPageToken
-  = lens _riglNextPageToken
-      (\ s a -> s{_riglNextPageToken = a})
-
--- | The resource type.
-riglKind :: Lens' RegionInstanceGroupList Text
-riglKind = lens _riglKind (\ s a -> s{_riglKind = a})
-
--- | A list of InstanceGroup resources.
-riglItems :: Lens' RegionInstanceGroupList [InstanceGroup]
-riglItems
-  = lens _riglItems (\ s a -> s{_riglItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The URL for this resource type. The server generates this
--- URL.
-riglSelfLink :: Lens' RegionInstanceGroupList (Maybe Text)
-riglSelfLink
-  = lens _riglSelfLink (\ s a -> s{_riglSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-riglId :: Lens' RegionInstanceGroupList (Maybe Text)
-riglId = lens _riglId (\ s a -> s{_riglId = a})
-
-instance FromJSON RegionInstanceGroupList where
-        parseJSON
-          = withObject "RegionInstanceGroupList"
-              (\ o ->
-                 RegionInstanceGroupList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#regionInstanceGroupList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RegionInstanceGroupList where
-        toJSON RegionInstanceGroupList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _riglNextPageToken,
-                  Just ("kind" .= _riglKind),
-                  ("items" .=) <$> _riglItems,
-                  ("selfLink" .=) <$> _riglSelfLink,
-                  ("id" .=) <$> _riglId])
-
--- | [Output Only] A map of scoped target pool lists.
---
--- /See:/ 'targetPoolAggregatedListItems' smart constructor.
-newtype TargetPoolAggregatedListItems = TargetPoolAggregatedListItems'
-    { _tpaliAddtional :: HashMap Text TargetPoolsScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpaliAddtional'
-targetPoolAggregatedListItems
-    :: HashMap Text TargetPoolsScopedList -- ^ 'tpaliAddtional'
-    -> TargetPoolAggregatedListItems
-targetPoolAggregatedListItems pTpaliAddtional_ =
-    TargetPoolAggregatedListItems'
-    { _tpaliAddtional = _Coerce # pTpaliAddtional_
-    }
-
--- | Name of the scope containing this set of target pools.
-tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)
-tpaliAddtional
-  = lens _tpaliAddtional
-      (\ s a -> s{_tpaliAddtional = a})
-      . _Coerce
-
-instance FromJSON TargetPoolAggregatedListItems where
-        parseJSON
-          = withObject "TargetPoolAggregatedListItems"
-              (\ o ->
-                 TargetPoolAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON TargetPoolAggregatedListItems where
-        toJSON = toJSON . _tpaliAddtional
-
---
--- /See:/ 'targetInstancesScopedList' smart constructor.
-data TargetInstancesScopedList = TargetInstancesScopedList'
-    { _tislWarning         :: !(Maybe TargetInstancesScopedListWarning)
-    , _tislTargetInstances :: !(Maybe [TargetInstance])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstancesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tislWarning'
---
--- * 'tislTargetInstances'
-targetInstancesScopedList
-    :: TargetInstancesScopedList
-targetInstancesScopedList =
-    TargetInstancesScopedList'
-    { _tislWarning = Nothing
-    , _tislTargetInstances = Nothing
-    }
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
-tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)
-tislWarning
-  = lens _tislWarning (\ s a -> s{_tislWarning = a})
-
--- | List of target instances contained in this scope.
-tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]
-tislTargetInstances
-  = lens _tislTargetInstances
-      (\ s a -> s{_tislTargetInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TargetInstancesScopedList where
-        parseJSON
-          = withObject "TargetInstancesScopedList"
-              (\ o ->
-                 TargetInstancesScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "targetInstances" .!= mempty))
-
-instance ToJSON TargetInstancesScopedList where
-        toJSON TargetInstancesScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _tislWarning,
-                  ("targetInstances" .=) <$> _tislTargetInstances])
-
--- | [Output Only] A map of scoped address lists.
---
--- /See:/ 'addressAggregatedListItems' smart constructor.
-newtype AddressAggregatedListItems = AddressAggregatedListItems'
-    { _aAddtional :: HashMap Text AddressesScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aAddtional'
-addressAggregatedListItems
-    :: HashMap Text AddressesScopedList -- ^ 'aAddtional'
-    -> AddressAggregatedListItems
-addressAggregatedListItems pAAddtional_ =
-    AddressAggregatedListItems'
-    { _aAddtional = _Coerce # pAAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of addresses.
-aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)
-aAddtional
-  = lens _aAddtional (\ s a -> s{_aAddtional = a}) .
-      _Coerce
-
-instance FromJSON AddressAggregatedListItems where
-        parseJSON
-          = withObject "AddressAggregatedListItems"
-              (\ o ->
-                 AddressAggregatedListItems' <$> (parseJSONObject o))
-
-instance ToJSON AddressAggregatedListItems where
-        toJSON = toJSON . _aAddtional
-
--- | Contains a list of Autoscaler resources.
---
--- /See:/ 'autoscalerList' smart constructor.
-data AutoscalerList = AutoscalerList'
-    { _autNextPageToken :: !(Maybe Text)
-    , _autKind          :: !Text
-    , _autItems         :: !(Maybe [Autoscaler])
-    , _autSelfLink      :: !(Maybe Text)
-    , _autId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalerList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'autNextPageToken'
---
--- * 'autKind'
---
--- * 'autItems'
---
--- * 'autSelfLink'
---
--- * 'autId'
-autoscalerList
-    :: AutoscalerList
-autoscalerList =
-    AutoscalerList'
-    { _autNextPageToken = Nothing
-    , _autKind = "compute#autoscalerList"
-    , _autItems = Nothing
-    , _autSelfLink = Nothing
-    , _autId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-autNextPageToken :: Lens' AutoscalerList (Maybe Text)
-autNextPageToken
-  = lens _autNextPageToken
-      (\ s a -> s{_autNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#autoscalerList for lists
--- of autoscalers.
-autKind :: Lens' AutoscalerList Text
-autKind = lens _autKind (\ s a -> s{_autKind = a})
-
--- | A list of Autoscaler resources.
-autItems :: Lens' AutoscalerList [Autoscaler]
-autItems
-  = lens _autItems (\ s a -> s{_autItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-autSelfLink :: Lens' AutoscalerList (Maybe Text)
-autSelfLink
-  = lens _autSelfLink (\ s a -> s{_autSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-autId :: Lens' AutoscalerList (Maybe Text)
-autId = lens _autId (\ s a -> s{_autId = a})
-
-instance FromJSON AutoscalerList where
-        parseJSON
-          = withObject "AutoscalerList"
-              (\ o ->
-                 AutoscalerList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#autoscalerList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON AutoscalerList where
-        toJSON AutoscalerList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _autNextPageToken,
-                  Just ("kind" .= _autKind),
-                  ("items" .=) <$> _autItems,
-                  ("selfLink" .=) <$> _autSelfLink,
-                  ("id" .=) <$> _autId])
-
---
--- /See:/ 'targetSSLProxiesSetProxyHeaderRequest' smart constructor.
-newtype TargetSSLProxiesSetProxyHeaderRequest = TargetSSLProxiesSetProxyHeaderRequest'
-    { _tspsphrProxyHeader :: Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetSSLProxiesSetProxyHeaderRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tspsphrProxyHeader'
-targetSSLProxiesSetProxyHeaderRequest
-    :: TargetSSLProxiesSetProxyHeaderRequest
-targetSSLProxiesSetProxyHeaderRequest =
-    TargetSSLProxiesSetProxyHeaderRequest'
-    { _tspsphrProxyHeader = Nothing
-    }
-
--- | The new type of proxy header to append before sending data to the
--- backend. NONE or PROXY_V1 are allowed.
-tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
-tspsphrProxyHeader
-  = lens _tspsphrProxyHeader
-      (\ s a -> s{_tspsphrProxyHeader = a})
-
-instance FromJSON
-         TargetSSLProxiesSetProxyHeaderRequest where
-        parseJSON
-          = withObject "TargetSSLProxiesSetProxyHeaderRequest"
-              (\ o ->
-                 TargetSSLProxiesSetProxyHeaderRequest' <$>
-                   (o .:? "proxyHeader"))
-
-instance ToJSON TargetSSLProxiesSetProxyHeaderRequest
-         where
-        toJSON TargetSSLProxiesSetProxyHeaderRequest'{..}
-          = object
-              (catMaybes
-                 [("proxyHeader" .=) <$> _tspsphrProxyHeader])
-
---
--- /See:/ 'vpnTunnelAggregatedList' smart constructor.
-data VPNTunnelAggregatedList = VPNTunnelAggregatedList'
-    { _vtalNextPageToken :: !(Maybe Text)
-    , _vtalKind          :: !Text
-    , _vtalItems         :: !(Maybe VPNTunnelAggregatedListItems)
-    , _vtalSelfLink      :: !(Maybe Text)
-    , _vtalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtalNextPageToken'
---
--- * 'vtalKind'
---
--- * 'vtalItems'
---
--- * 'vtalSelfLink'
---
--- * 'vtalId'
-vpnTunnelAggregatedList
-    :: VPNTunnelAggregatedList
-vpnTunnelAggregatedList =
-    VPNTunnelAggregatedList'
-    { _vtalNextPageToken = Nothing
-    , _vtalKind = "compute#vpnTunnelAggregatedList"
-    , _vtalItems = Nothing
-    , _vtalSelfLink = Nothing
-    , _vtalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)
-vtalNextPageToken
-  = lens _vtalNextPageToken
-      (\ s a -> s{_vtalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
--- tunnels.
-vtalKind :: Lens' VPNTunnelAggregatedList Text
-vtalKind = lens _vtalKind (\ s a -> s{_vtalKind = a})
-
--- | [Output Only] A map of scoped vpn tunnel lists.
-vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)
-vtalItems
-  = lens _vtalItems (\ s a -> s{_vtalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)
-vtalSelfLink
-  = lens _vtalSelfLink (\ s a -> s{_vtalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)
-vtalId = lens _vtalId (\ s a -> s{_vtalId = a})
-
-instance FromJSON VPNTunnelAggregatedList where
-        parseJSON
-          = withObject "VPNTunnelAggregatedList"
-              (\ o ->
-                 VPNTunnelAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#vpnTunnelAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON VPNTunnelAggregatedList where
-        toJSON VPNTunnelAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _vtalNextPageToken,
-                  Just ("kind" .= _vtalKind),
-                  ("items" .=) <$> _vtalItems,
-                  ("selfLink" .=) <$> _vtalSelfLink,
-                  ("id" .=) <$> _vtalId])
-
--- | An instance-attached disk resource.
---
--- /See:/ 'attachedDisk' smart constructor.
-data AttachedDisk = AttachedDisk'
-    { _adDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
-    , _adKind              :: !Text
-    , _adMode              :: !(Maybe AttachedDiskMode)
-    , _adBoot              :: !(Maybe Bool)
-    , _adAutoDelete        :: !(Maybe Bool)
-    , _adInitializeParams  :: !(Maybe AttachedDiskInitializeParams)
-    , _adDeviceName        :: !(Maybe Text)
-    , _adInterface         :: !(Maybe AttachedDiskInterface)
-    , _adSource            :: !(Maybe Text)
-    , _adLicenses          :: !(Maybe [Text])
-    , _adType              :: !(Maybe AttachedDiskType)
-    , _adIndex             :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AttachedDisk' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adDiskEncryptionKey'
---
--- * 'adKind'
---
--- * 'adMode'
---
--- * 'adBoot'
---
--- * 'adAutoDelete'
---
--- * 'adInitializeParams'
---
--- * 'adDeviceName'
---
--- * 'adInterface'
---
--- * 'adSource'
---
--- * 'adLicenses'
---
--- * 'adType'
---
--- * 'adIndex'
-attachedDisk
-    :: AttachedDisk
-attachedDisk =
-    AttachedDisk'
-    { _adDiskEncryptionKey = Nothing
-    , _adKind = "compute#attachedDisk"
-    , _adMode = Nothing
-    , _adBoot = Nothing
-    , _adAutoDelete = Nothing
-    , _adInitializeParams = Nothing
-    , _adDeviceName = Nothing
-    , _adInterface = Nothing
-    , _adSource = Nothing
-    , _adLicenses = Nothing
-    , _adType = Nothing
-    , _adIndex = Nothing
-    }
-
--- | Encrypts or decrypts a disk using a customer-supplied encryption key. If
--- you are creating a new disk, this field encrypts the new disk using an
--- encryption key that you provide. If you are attaching an existing disk
--- that is already encrypted, this field decrypts the disk using the
--- customer-supplied encryption key. If you encrypt a disk using a
--- customer-supplied key, you must provide the same key again when you
--- attempt to use this resource at a later time. For example, you must
--- provide the key when you create a snapshot or an image from the disk or
--- when you attach the disk to a virtual machine instance. If you do not
--- provide an encryption key, then the disk will be encrypted using an
--- automatically generated key and you do not need to provide a key to use
--- the disk later. Instance templates do not store customer-supplied
--- encryption keys, so you cannot use your own keys to encrypt disks in a
--- managed instance group.
-adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)
-adDiskEncryptionKey
-  = lens _adDiskEncryptionKey
-      (\ s a -> s{_adDiskEncryptionKey = a})
-
--- | [Output Only] Type of the resource. Always compute#attachedDisk for
--- attached disks.
-adKind :: Lens' AttachedDisk Text
-adKind = lens _adKind (\ s a -> s{_adKind = a})
-
--- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--- If not specified, the default is to attach the disk in READ_WRITE mode.
-adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)
-adMode = lens _adMode (\ s a -> s{_adMode = a})
-
--- | Indicates that this is a boot disk. The virtual machine will use the
--- first partition of the disk for its root filesystem.
-adBoot :: Lens' AttachedDisk (Maybe Bool)
-adBoot = lens _adBoot (\ s a -> s{_adBoot = a})
-
--- | Specifies whether the disk will be auto-deleted when the instance is
--- deleted (but not when the disk is detached from the instance).
-adAutoDelete :: Lens' AttachedDisk (Maybe Bool)
-adAutoDelete
-  = lens _adAutoDelete (\ s a -> s{_adAutoDelete = a})
-
--- | [Input Only] Specifies the parameters for a new disk that will be
--- created alongside the new instance. Use initialization parameters to
--- create boot disks or local SSDs attached to the new instance. This
--- property is mutually exclusive with the source property; you can only
--- define one or the other, but not both.
-adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)
-adInitializeParams
-  = lens _adInitializeParams
-      (\ s a -> s{_adInitializeParams = a})
-
--- | Specifies a unique device name of your choice that is reflected into the
--- \/dev\/disk\/by-id\/google-* tree of a Linux operating system running
--- within the instance. This name can be used to reference the device for
--- mounting, resizing, and so on, from within the instance. If not
--- specified, the server chooses a default device name to apply to this
--- disk, in the form persistent-disks-x, where x is a number assigned by
--- Google Compute Engine. This field is only applicable for persistent
--- disks.
-adDeviceName :: Lens' AttachedDisk (Maybe Text)
-adDeviceName
-  = lens _adDeviceName (\ s a -> s{_adDeviceName = a})
-
--- | Specifies the disk interface to use for attaching this disk, which is
--- either SCSI or NVME. The default is SCSI. Persistent disks must always
--- use SCSI and the request will fail if you attempt to attach a persistent
--- disk in any other format than SCSI. Local SSDs can use either NVME or
--- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD
--- performance.
-adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)
-adInterface
-  = lens _adInterface (\ s a -> s{_adInterface = a})
-
--- | Specifies a valid partial or full URL to an existing Persistent Disk
--- resource. When creating a new instance, one of
--- initializeParams.sourceImage or disks.source is required. If desired,
--- you can also attach existing non-root persistent disks using this
--- property. This field is only applicable for persistent disks. Note that
--- for InstanceTemplate, specify the disk name, not the URL for the disk.
-adSource :: Lens' AttachedDisk (Maybe Text)
-adSource = lens _adSource (\ s a -> s{_adSource = a})
-
--- | [Output Only] Any valid publicly visible licenses.
-adLicenses :: Lens' AttachedDisk [Text]
-adLicenses
-  = lens _adLicenses (\ s a -> s{_adLicenses = a}) .
-      _Default
-      . _Coerce
-
--- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--- specified, the default is PERSISTENT.
-adType :: Lens' AttachedDisk (Maybe AttachedDiskType)
-adType = lens _adType (\ s a -> s{_adType = a})
-
--- | Assigns a zero-based index to this disk, where 0 is reserved for the
--- boot disk. For example, if you have many disks attached to an instance,
--- each disk would have a unique index number. If not specified, the server
--- will choose an appropriate value.
-adIndex :: Lens' AttachedDisk (Maybe Int32)
-adIndex
-  = lens _adIndex (\ s a -> s{_adIndex = a}) .
-      mapping _Coerce
-
-instance FromJSON AttachedDisk where
-        parseJSON
-          = withObject "AttachedDisk"
-              (\ o ->
-                 AttachedDisk' <$>
-                   (o .:? "diskEncryptionKey") <*>
-                     (o .:? "kind" .!= "compute#attachedDisk")
-                     <*> (o .:? "mode")
-                     <*> (o .:? "boot")
-                     <*> (o .:? "autoDelete")
-                     <*> (o .:? "initializeParams")
-                     <*> (o .:? "deviceName")
-                     <*> (o .:? "interface")
-                     <*> (o .:? "source")
-                     <*> (o .:? "licenses" .!= mempty)
-                     <*> (o .:? "type")
-                     <*> (o .:? "index"))
-
-instance ToJSON AttachedDisk where
-        toJSON AttachedDisk'{..}
-          = object
-              (catMaybes
-                 [("diskEncryptionKey" .=) <$> _adDiskEncryptionKey,
-                  Just ("kind" .= _adKind), ("mode" .=) <$> _adMode,
-                  ("boot" .=) <$> _adBoot,
-                  ("autoDelete" .=) <$> _adAutoDelete,
-                  ("initializeParams" .=) <$> _adInitializeParams,
-                  ("deviceName" .=) <$> _adDeviceName,
-                  ("interface" .=) <$> _adInterface,
-                  ("source" .=) <$> _adSource,
-                  ("licenses" .=) <$> _adLicenses,
-                  ("type" .=) <$> _adType, ("index" .=) <$> _adIndex])
-
--- | Contains a list of disk types.
---
--- /See:/ 'diskTypeList' smart constructor.
-data DiskTypeList = DiskTypeList'
-    { _dtlNextPageToken :: !(Maybe Text)
-    , _dtlKind          :: !Text
-    , _dtlItems         :: !(Maybe [DiskType])
-    , _dtlSelfLink      :: !(Maybe Text)
-    , _dtlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypeList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtlNextPageToken'
---
--- * 'dtlKind'
---
--- * 'dtlItems'
---
--- * 'dtlSelfLink'
---
--- * 'dtlId'
-diskTypeList
-    :: DiskTypeList
-diskTypeList =
-    DiskTypeList'
-    { _dtlNextPageToken = Nothing
-    , _dtlKind = "compute#diskTypeList"
-    , _dtlItems = Nothing
-    , _dtlSelfLink = Nothing
-    , _dtlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)
-dtlNextPageToken
-  = lens _dtlNextPageToken
-      (\ s a -> s{_dtlNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#diskTypeList for disk
--- types.
-dtlKind :: Lens' DiskTypeList Text
-dtlKind = lens _dtlKind (\ s a -> s{_dtlKind = a})
-
--- | [Output Only] A list of Disk Type resources.
-dtlItems :: Lens' DiskTypeList [DiskType]
-dtlItems
-  = lens _dtlItems (\ s a -> s{_dtlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-dtlSelfLink :: Lens' DiskTypeList (Maybe Text)
-dtlSelfLink
-  = lens _dtlSelfLink (\ s a -> s{_dtlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dtlId :: Lens' DiskTypeList (Maybe Text)
-dtlId = lens _dtlId (\ s a -> s{_dtlId = a})
-
-instance FromJSON DiskTypeList where
-        parseJSON
-          = withObject "DiskTypeList"
-              (\ o ->
-                 DiskTypeList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#diskTypeList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON DiskTypeList where
-        toJSON DiskTypeList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _dtlNextPageToken,
-                  Just ("kind" .= _dtlKind),
-                  ("items" .=) <$> _dtlItems,
-                  ("selfLink" .=) <$> _dtlSelfLink,
-                  ("id" .=) <$> _dtlId])
-
---
--- /See:/ 'regionInstanceGroupsSetNamedPortsRequest' smart constructor.
-data RegionInstanceGroupsSetNamedPortsRequest = RegionInstanceGroupsSetNamedPortsRequest'
-    { _rigsnprFingerprint :: !(Maybe Bytes)
-    , _rigsnprNamedPorts  :: !(Maybe [NamedPort])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigsnprFingerprint'
---
--- * 'rigsnprNamedPorts'
-regionInstanceGroupsSetNamedPortsRequest
-    :: RegionInstanceGroupsSetNamedPortsRequest
-regionInstanceGroupsSetNamedPortsRequest =
-    RegionInstanceGroupsSetNamedPortsRequest'
-    { _rigsnprFingerprint = Nothing
-    , _rigsnprNamedPorts = Nothing
-    }
-
--- | The fingerprint of the named ports information for this instance group.
--- Use this optional property to prevent conflicts when multiple users
--- change the named ports settings concurrently. Obtain the fingerprint
--- with the instanceGroups.get method. Then, include the fingerprint in
--- your request to ensure that you do not overwrite changes that were
--- applied from another concurrent request.
-rigsnprFingerprint :: Lens' RegionInstanceGroupsSetNamedPortsRequest (Maybe ByteString)
-rigsnprFingerprint
-  = lens _rigsnprFingerprint
-      (\ s a -> s{_rigsnprFingerprint = a})
-      . mapping _Bytes
-
--- | The list of named ports to set for this instance group.
-rigsnprNamedPorts :: Lens' RegionInstanceGroupsSetNamedPortsRequest [NamedPort]
-rigsnprNamedPorts
-  = lens _rigsnprNamedPorts
-      (\ s a -> s{_rigsnprNamedPorts = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         RegionInstanceGroupsSetNamedPortsRequest where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupsSetNamedPortsRequest"
-              (\ o ->
-                 RegionInstanceGroupsSetNamedPortsRequest' <$>
-                   (o .:? "fingerprint") <*>
-                     (o .:? "namedPorts" .!= mempty))
-
-instance ToJSON
-         RegionInstanceGroupsSetNamedPortsRequest where
-        toJSON RegionInstanceGroupsSetNamedPortsRequest'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _rigsnprFingerprint,
-                  ("namedPorts" .=) <$> _rigsnprNamedPorts])
-
--- | Contains a list of machine types.
---
--- /See:/ 'machineTypeList' smart constructor.
-data MachineTypeList = MachineTypeList'
-    { _mtlNextPageToken :: !(Maybe Text)
-    , _mtlKind          :: !Text
-    , _mtlItems         :: !(Maybe [MachineType])
-    , _mtlSelfLink      :: !(Maybe Text)
-    , _mtlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypeList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtlNextPageToken'
---
--- * 'mtlKind'
---
--- * 'mtlItems'
---
--- * 'mtlSelfLink'
---
--- * 'mtlId'
-machineTypeList
-    :: MachineTypeList
-machineTypeList =
-    MachineTypeList'
-    { _mtlNextPageToken = Nothing
-    , _mtlKind = "compute#machineTypeList"
-    , _mtlItems = Nothing
-    , _mtlSelfLink = Nothing
-    , _mtlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)
-mtlNextPageToken
-  = lens _mtlNextPageToken
-      (\ s a -> s{_mtlNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#machineTypeList for lists
--- of machine types.
-mtlKind :: Lens' MachineTypeList Text
-mtlKind = lens _mtlKind (\ s a -> s{_mtlKind = a})
-
--- | [Output Only] A list of Machine Type resources.
-mtlItems :: Lens' MachineTypeList [MachineType]
-mtlItems
-  = lens _mtlItems (\ s a -> s{_mtlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-mtlSelfLink :: Lens' MachineTypeList (Maybe Text)
-mtlSelfLink
-  = lens _mtlSelfLink (\ s a -> s{_mtlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-mtlId :: Lens' MachineTypeList (Maybe Text)
-mtlId = lens _mtlId (\ s a -> s{_mtlId = a})
-
-instance FromJSON MachineTypeList where
-        parseJSON
-          = withObject "MachineTypeList"
-              (\ o ->
-                 MachineTypeList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#machineTypeList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON MachineTypeList where
-        toJSON MachineTypeList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _mtlNextPageToken,
-                  Just ("kind" .= _mtlKind),
-                  ("items" .=) <$> _mtlItems,
-                  ("selfLink" .=) <$> _mtlSelfLink,
-                  ("id" .=) <$> _mtlId])
-
--- | A list of TargetHttpProxy resources.
---
--- /See:/ 'targetHTTPProxyList' smart constructor.
-data TargetHTTPProxyList = TargetHTTPProxyList'
-    { _thttpplNextPageToken :: !(Maybe Text)
-    , _thttpplKind          :: !Text
-    , _thttpplItems         :: !(Maybe [TargetHTTPProxy])
-    , _thttpplSelfLink      :: !(Maybe Text)
-    , _thttpplId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetHTTPProxyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thttpplNextPageToken'
---
--- * 'thttpplKind'
---
--- * 'thttpplItems'
---
--- * 'thttpplSelfLink'
---
--- * 'thttpplId'
-targetHTTPProxyList
-    :: TargetHTTPProxyList
-targetHTTPProxyList =
-    TargetHTTPProxyList'
-    { _thttpplNextPageToken = Nothing
-    , _thttpplKind = "compute#targetHttpProxyList"
-    , _thttpplItems = Nothing
-    , _thttpplSelfLink = Nothing
-    , _thttpplId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)
-thttpplNextPageToken
-  = lens _thttpplNextPageToken
-      (\ s a -> s{_thttpplNextPageToken = a})
-
--- | Type of resource. Always compute#targetHttpProxyList for lists of target
--- HTTP proxies.
-thttpplKind :: Lens' TargetHTTPProxyList Text
-thttpplKind
-  = lens _thttpplKind (\ s a -> s{_thttpplKind = a})
-
--- | A list of TargetHttpProxy resources.
-thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]
-thttpplItems
-  = lens _thttpplItems (\ s a -> s{_thttpplItems = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)
-thttpplSelfLink
-  = lens _thttpplSelfLink
-      (\ s a -> s{_thttpplSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)
-thttpplId
-  = lens _thttpplId (\ s a -> s{_thttpplId = a})
-
-instance FromJSON TargetHTTPProxyList where
-        parseJSON
-          = withObject "TargetHTTPProxyList"
-              (\ o ->
-                 TargetHTTPProxyList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#targetHttpProxyList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetHTTPProxyList where
-        toJSON TargetHTTPProxyList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _thttpplNextPageToken,
-                  Just ("kind" .= _thttpplKind),
-                  ("items" .=) <$> _thttpplItems,
-                  ("selfLink" .=) <$> _thttpplSelfLink,
-                  ("id" .=) <$> _thttpplId])
-
--- | Contains a list of managed instance groups.
---
--- /See:/ 'regionInstanceGroupManagerList' smart constructor.
-data RegionInstanceGroupManagerList = RegionInstanceGroupManagerList'
-    { _rigmlNextPageToken :: !(Maybe Text)
-    , _rigmlKind          :: !Text
-    , _rigmlItems         :: !(Maybe [InstanceGroupManager])
-    , _rigmlSelfLink      :: !(Maybe Text)
-    , _rigmlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagerList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmlNextPageToken'
---
--- * 'rigmlKind'
---
--- * 'rigmlItems'
---
--- * 'rigmlSelfLink'
---
--- * 'rigmlId'
-regionInstanceGroupManagerList
-    :: RegionInstanceGroupManagerList
-regionInstanceGroupManagerList =
-    RegionInstanceGroupManagerList'
-    { _rigmlNextPageToken = Nothing
-    , _rigmlKind = "compute#regionInstanceGroupManagerList"
-    , _rigmlItems = Nothing
-    , _rigmlSelfLink = Nothing
-    , _rigmlId = Nothing
-    }
-
--- | [Output only] A token used to continue a truncated list request.
-rigmlNextPageToken :: Lens' RegionInstanceGroupManagerList (Maybe Text)
-rigmlNextPageToken
-  = lens _rigmlNextPageToken
-      (\ s a -> s{_rigmlNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupManagerList for a list of managed instance groups
--- that exist in th regional scope.
-rigmlKind :: Lens' RegionInstanceGroupManagerList Text
-rigmlKind
-  = lens _rigmlKind (\ s a -> s{_rigmlKind = a})
-
--- | A list of managed instance groups.
-rigmlItems :: Lens' RegionInstanceGroupManagerList [InstanceGroupManager]
-rigmlItems
-  = lens _rigmlItems (\ s a -> s{_rigmlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output only] The URL for this resource type. The server generates this
--- URL.
-rigmlSelfLink :: Lens' RegionInstanceGroupManagerList (Maybe Text)
-rigmlSelfLink
-  = lens _rigmlSelfLink
-      (\ s a -> s{_rigmlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-rigmlId :: Lens' RegionInstanceGroupManagerList (Maybe Text)
-rigmlId = lens _rigmlId (\ s a -> s{_rigmlId = a})
-
-instance FromJSON RegionInstanceGroupManagerList
-         where
-        parseJSON
-          = withObject "RegionInstanceGroupManagerList"
-              (\ o ->
-                 RegionInstanceGroupManagerList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#regionInstanceGroupManagerList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RegionInstanceGroupManagerList where
-        toJSON RegionInstanceGroupManagerList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rigmlNextPageToken,
-                  Just ("kind" .= _rigmlKind),
-                  ("items" .=) <$> _rigmlItems,
-                  ("selfLink" .=) <$> _rigmlSelfLink,
-                  ("id" .=) <$> _rigmlId])
-
---
--- /See:/ 'diskTypesScopedList' smart constructor.
-data DiskTypesScopedList = DiskTypesScopedList'
-    { _dtslDiskTypes :: !(Maybe [DiskType])
-    , _dtslWarning   :: !(Maybe DiskTypesScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtslDiskTypes'
---
--- * 'dtslWarning'
-diskTypesScopedList
-    :: DiskTypesScopedList
-diskTypesScopedList =
-    DiskTypesScopedList'
-    { _dtslDiskTypes = Nothing
-    , _dtslWarning = Nothing
-    }
-
--- | [Output Only] List of disk types contained in this scope.
-dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]
-dtslDiskTypes
-  = lens _dtslDiskTypes
-      (\ s a -> s{_dtslDiskTypes = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Informational warning which replaces the list of disk
--- types when the list is empty.
-dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)
-dtslWarning
-  = lens _dtslWarning (\ s a -> s{_dtslWarning = a})
-
-instance FromJSON DiskTypesScopedList where
-        parseJSON
-          = withObject "DiskTypesScopedList"
-              (\ o ->
-                 DiskTypesScopedList' <$>
-                   (o .:? "diskTypes" .!= mempty) <*> (o .:? "warning"))
-
-instance ToJSON DiskTypesScopedList where
-        toJSON DiskTypesScopedList'{..}
-          = object
-              (catMaybes
-                 [("diskTypes" .=) <$> _dtslDiskTypes,
-                  ("warning" .=) <$> _dtslWarning])
-
---
--- /See:/ 'diskTypeAggregatedList' smart constructor.
-data DiskTypeAggregatedList = DiskTypeAggregatedList'
-    { _dtalNextPageToken :: !(Maybe Text)
-    , _dtalKind          :: !Text
-    , _dtalItems         :: !(Maybe DiskTypeAggregatedListItems)
-    , _dtalSelfLink      :: !(Maybe Text)
-    , _dtalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypeAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtalNextPageToken'
---
--- * 'dtalKind'
---
--- * 'dtalItems'
---
--- * 'dtalSelfLink'
---
--- * 'dtalId'
-diskTypeAggregatedList
-    :: DiskTypeAggregatedList
-diskTypeAggregatedList =
-    DiskTypeAggregatedList'
-    { _dtalNextPageToken = Nothing
-    , _dtalKind = "compute#diskTypeAggregatedList"
-    , _dtalItems = Nothing
-    , _dtalSelfLink = Nothing
-    , _dtalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)
-dtalNextPageToken
-  = lens _dtalNextPageToken
-      (\ s a -> s{_dtalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#diskTypeAggregatedList.
-dtalKind :: Lens' DiskTypeAggregatedList Text
-dtalKind = lens _dtalKind (\ s a -> s{_dtalKind = a})
-
--- | [Output Only] A map of scoped disk type lists.
-dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)
-dtalItems
-  = lens _dtalItems (\ s a -> s{_dtalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)
-dtalSelfLink
-  = lens _dtalSelfLink (\ s a -> s{_dtalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)
-dtalId = lens _dtalId (\ s a -> s{_dtalId = a})
-
-instance FromJSON DiskTypeAggregatedList where
-        parseJSON
-          = withObject "DiskTypeAggregatedList"
-              (\ o ->
-                 DiskTypeAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#diskTypeAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON DiskTypeAggregatedList where
-        toJSON DiskTypeAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _dtalNextPageToken,
-                  Just ("kind" .= _dtalKind),
-                  ("items" .=) <$> _dtalItems,
-                  ("selfLink" .=) <$> _dtalSelfLink,
-                  ("id" .=) <$> _dtalId])
-
---
--- /See:/ 'hTTPHealthCheck' smart constructor.
-data HTTPHealthCheck = HTTPHealthCheck'
-    { _httphcRequestPath :: !(Maybe Text)
-    , _httphcHost        :: !(Maybe Text)
-    , _httphcProxyHeader :: !(Maybe HTTPHealthCheckProxyHeader)
-    , _httphcPortName    :: !(Maybe Text)
-    , _httphcPort        :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HTTPHealthCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'httphcRequestPath'
---
--- * 'httphcHost'
---
--- * 'httphcProxyHeader'
---
--- * 'httphcPortName'
---
--- * 'httphcPort'
-hTTPHealthCheck
-    :: HTTPHealthCheck
-hTTPHealthCheck =
-    HTTPHealthCheck'
-    { _httphcRequestPath = Nothing
-    , _httphcHost = Nothing
-    , _httphcProxyHeader = Nothing
-    , _httphcPortName = Nothing
-    , _httphcPort = Nothing
-    }
-
--- | The request path of the HTTP health check request. The default value is
--- \/.
-httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
-httphcRequestPath
-  = lens _httphcRequestPath
-      (\ s a -> s{_httphcRequestPath = a})
-
--- | The value of the host header in the HTTP health check request. If left
--- empty (default value), the IP on behalf of which this health check is
--- performed will be used.
-httphcHost :: Lens' HTTPHealthCheck (Maybe Text)
-httphcHost
-  = lens _httphcHost (\ s a -> s{_httphcHost = a})
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-httphcProxyHeader :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckProxyHeader)
-httphcProxyHeader
-  = lens _httphcProxyHeader
-      (\ s a -> s{_httphcProxyHeader = a})
-
--- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
--- port_name are defined, port takes precedence.
-httphcPortName :: Lens' HTTPHealthCheck (Maybe Text)
-httphcPortName
-  = lens _httphcPortName
-      (\ s a -> s{_httphcPortName = a})
-
--- | The TCP port number for the health check request. The default value is
--- 80.
-httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
-httphcPort
-  = lens _httphcPort (\ s a -> s{_httphcPort = a}) .
-      mapping _Coerce
-
-instance FromJSON HTTPHealthCheck where
-        parseJSON
-          = withObject "HTTPHealthCheck"
-              (\ o ->
-                 HTTPHealthCheck' <$>
-                   (o .:? "requestPath") <*> (o .:? "host") <*>
-                     (o .:? "proxyHeader")
-                     <*> (o .:? "portName")
-                     <*> (o .:? "port"))
-
-instance ToJSON HTTPHealthCheck where
-        toJSON HTTPHealthCheck'{..}
-          = object
-              (catMaybes
-                 [("requestPath" .=) <$> _httphcRequestPath,
-                  ("host" .=) <$> _httphcHost,
-                  ("proxyHeader" .=) <$> _httphcProxyHeader,
-                  ("portName" .=) <$> _httphcPortName,
-                  ("port" .=) <$> _httphcPort])
-
---
--- /See:/ 'backendServiceGroupHealth' smart constructor.
-data BackendServiceGroupHealth = BackendServiceGroupHealth'
-    { _bsghKind         :: !Text
-    , _bsghHealthStatus :: !(Maybe [HealthStatus])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServiceGroupHealth' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsghKind'
---
--- * 'bsghHealthStatus'
-backendServiceGroupHealth
-    :: BackendServiceGroupHealth
-backendServiceGroupHealth =
-    BackendServiceGroupHealth'
-    { _bsghKind = "compute#backendServiceGroupHealth"
-    , _bsghHealthStatus = Nothing
-    }
-
--- | [Output Only] Type of resource. Always compute#backendServiceGroupHealth
--- for the health of backend services.
-bsghKind :: Lens' BackendServiceGroupHealth Text
-bsghKind = lens _bsghKind (\ s a -> s{_bsghKind = a})
-
-bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]
-bsghHealthStatus
-  = lens _bsghHealthStatus
-      (\ s a -> s{_bsghHealthStatus = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BackendServiceGroupHealth where
-        parseJSON
-          = withObject "BackendServiceGroupHealth"
-              (\ o ->
-                 BackendServiceGroupHealth' <$>
-                   (o .:? "kind" .!=
-                      "compute#backendServiceGroupHealth")
-                     <*> (o .:? "healthStatus" .!= mempty))
-
-instance ToJSON BackendServiceGroupHealth where
-        toJSON BackendServiceGroupHealth'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _bsghKind),
-                  ("healthStatus" .=) <$> _bsghHealthStatus])
-
---
--- /See:/ 'autoscalersScopedList' smart constructor.
-data AutoscalersScopedList = AutoscalersScopedList'
-    { _aAutoscalers :: !(Maybe [Autoscaler])
-    , _aWarning     :: !(Maybe AutoscalersScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalersScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aAutoscalers'
---
--- * 'aWarning'
-autoscalersScopedList
-    :: AutoscalersScopedList
-autoscalersScopedList =
-    AutoscalersScopedList'
-    { _aAutoscalers = Nothing
-    , _aWarning = Nothing
-    }
-
--- | [Output Only] List of autoscalers contained in this scope.
-aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]
-aAutoscalers
-  = lens _aAutoscalers (\ s a -> s{_aAutoscalers = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Informational warning which replaces the list of
--- autoscalers when the list is empty.
-aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)
-aWarning = lens _aWarning (\ s a -> s{_aWarning = a})
-
-instance FromJSON AutoscalersScopedList where
-        parseJSON
-          = withObject "AutoscalersScopedList"
-              (\ o ->
-                 AutoscalersScopedList' <$>
-                   (o .:? "autoscalers" .!= mempty) <*>
-                     (o .:? "warning"))
-
-instance ToJSON AutoscalersScopedList where
-        toJSON AutoscalersScopedList'{..}
-          = object
-              (catMaybes
-                 [("autoscalers" .=) <$> _aAutoscalers,
-                  ("warning" .=) <$> _aWarning])
-
---
--- /See:/ 'autoscalerAggregatedList' smart constructor.
-data AutoscalerAggregatedList = AutoscalerAggregatedList'
-    { _aalNextPageToken :: !(Maybe Text)
-    , _aalKind          :: !Text
-    , _aalItems         :: !(Maybe AutoscalerAggregatedListItems)
-    , _aalSelfLink      :: !(Maybe Text)
-    , _aalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalerAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aalNextPageToken'
---
--- * 'aalKind'
---
--- * 'aalItems'
---
--- * 'aalSelfLink'
---
--- * 'aalId'
-autoscalerAggregatedList
-    :: AutoscalerAggregatedList
-autoscalerAggregatedList =
-    AutoscalerAggregatedList'
-    { _aalNextPageToken = Nothing
-    , _aalKind = "compute#autoscalerAggregatedList"
-    , _aalItems = Nothing
-    , _aalSelfLink = Nothing
-    , _aalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)
-aalNextPageToken
-  = lens _aalNextPageToken
-      (\ s a -> s{_aalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#autoscalerAggregatedList
--- for aggregated lists of autoscalers.
-aalKind :: Lens' AutoscalerAggregatedList Text
-aalKind = lens _aalKind (\ s a -> s{_aalKind = a})
-
--- | A map of scoped autoscaler lists.
-aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)
-aalItems = lens _aalItems (\ s a -> s{_aalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)
-aalSelfLink
-  = lens _aalSelfLink (\ s a -> s{_aalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-aalId :: Lens' AutoscalerAggregatedList (Maybe Text)
-aalId = lens _aalId (\ s a -> s{_aalId = a})
-
-instance FromJSON AutoscalerAggregatedList where
-        parseJSON
-          = withObject "AutoscalerAggregatedList"
-              (\ o ->
-                 AutoscalerAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#autoscalerAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON AutoscalerAggregatedList where
-        toJSON AutoscalerAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _aalNextPageToken,
-                  Just ("kind" .= _aalKind),
-                  ("items" .=) <$> _aalItems,
-                  ("selfLink" .=) <$> _aalSelfLink,
-                  ("id" .=) <$> _aalId])
-
--- | A map of scoped router lists.
---
--- /See:/ 'routerAggregatedListItems' smart constructor.
-newtype RouterAggregatedListItems = RouterAggregatedListItems'
-    { _raliAddtional :: HashMap Text RoutersScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'raliAddtional'
-routerAggregatedListItems
-    :: HashMap Text RoutersScopedList -- ^ 'raliAddtional'
-    -> RouterAggregatedListItems
-routerAggregatedListItems pRaliAddtional_ =
-    RouterAggregatedListItems'
-    { _raliAddtional = _Coerce # pRaliAddtional_
-    }
-
--- | Name of the scope containing this set of routers.
-raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)
-raliAddtional
-  = lens _raliAddtional
-      (\ s a -> s{_raliAddtional = a})
-      . _Coerce
-
-instance FromJSON RouterAggregatedListItems where
-        parseJSON
-          = withObject "RouterAggregatedListItems"
-              (\ o ->
-                 RouterAggregatedListItems' <$> (parseJSONObject o))
-
-instance ToJSON RouterAggregatedListItems where
-        toJSON = toJSON . _raliAddtional
-
--- | Cloud Autoscaler policy.
---
--- /See:/ 'autoscalingPolicy' smart constructor.
-data AutoscalingPolicy = AutoscalingPolicy'
-    { _apCustomMetricUtilizations :: !(Maybe [AutoscalingPolicyCustomMetricUtilization])
-    , _apMaxNumReplicas           :: !(Maybe (Textual Int32))
-    , _apCPUUtilization           :: !(Maybe AutoscalingPolicyCPUUtilization)
-    , _apLoadBalancingUtilization :: !(Maybe AutoscalingPolicyLoadBalancingUtilization)
-    , _apMinNumReplicas           :: !(Maybe (Textual Int32))
-    , _apCoolDownPeriodSec        :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalingPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apCustomMetricUtilizations'
---
--- * 'apMaxNumReplicas'
---
--- * 'apCPUUtilization'
---
--- * 'apLoadBalancingUtilization'
---
--- * 'apMinNumReplicas'
---
--- * 'apCoolDownPeriodSec'
-autoscalingPolicy
-    :: AutoscalingPolicy
-autoscalingPolicy =
-    AutoscalingPolicy'
-    { _apCustomMetricUtilizations = Nothing
-    , _apMaxNumReplicas = Nothing
-    , _apCPUUtilization = Nothing
-    , _apLoadBalancingUtilization = Nothing
-    , _apMinNumReplicas = Nothing
-    , _apCoolDownPeriodSec = Nothing
-    }
-
--- | Configuration parameters of autoscaling based on a custom metric.
-apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]
-apCustomMetricUtilizations
-  = lens _apCustomMetricUtilizations
-      (\ s a -> s{_apCustomMetricUtilizations = a})
-      . _Default
-      . _Coerce
-
--- | The maximum number of instances that the autoscaler can scale up to.
--- This is required when creating or updating an autoscaler. The maximum
--- number of replicas should not be lower than minimal number of replicas.
-apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
-apMaxNumReplicas
-  = lens _apMaxNumReplicas
-      (\ s a -> s{_apMaxNumReplicas = a})
-      . mapping _Coerce
-
--- | Defines the CPU utilization policy that allows the autoscaler to scale
--- based on the average CPU utilization of a managed instance group.
-apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)
-apCPUUtilization
-  = lens _apCPUUtilization
-      (\ s a -> s{_apCPUUtilization = a})
-
--- | Configuration parameters of autoscaling based on load balancer.
-apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)
-apLoadBalancingUtilization
-  = lens _apLoadBalancingUtilization
-      (\ s a -> s{_apLoadBalancingUtilization = a})
-
--- | The minimum number of replicas that the autoscaler can scale down to.
--- This cannot be less than 0. If not provided, autoscaler will choose a
--- default value depending on maximum number of instances allowed.
-apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
-apMinNumReplicas
-  = lens _apMinNumReplicas
-      (\ s a -> s{_apMinNumReplicas = a})
-      . mapping _Coerce
-
--- | The number of seconds that the autoscaler should wait before it starts
--- collecting information from a new instance. This prevents the autoscaler
--- from collecting information when the instance is initializing, during
--- which the collected usage would not be reliable. The default time
--- autoscaler waits is 60 seconds. Virtual machine initialization times
--- might vary because of numerous factors. We recommend that you test how
--- long an instance may take to initialize. To do this, create an instance
--- and time the startup process.
-apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)
-apCoolDownPeriodSec
-  = lens _apCoolDownPeriodSec
-      (\ s a -> s{_apCoolDownPeriodSec = a})
-      . mapping _Coerce
-
-instance FromJSON AutoscalingPolicy where
-        parseJSON
-          = withObject "AutoscalingPolicy"
-              (\ o ->
-                 AutoscalingPolicy' <$>
-                   (o .:? "customMetricUtilizations" .!= mempty) <*>
-                     (o .:? "maxNumReplicas")
-                     <*> (o .:? "cpuUtilization")
-                     <*> (o .:? "loadBalancingUtilization")
-                     <*> (o .:? "minNumReplicas")
-                     <*> (o .:? "coolDownPeriodSec"))
-
-instance ToJSON AutoscalingPolicy where
-        toJSON AutoscalingPolicy'{..}
-          = object
-              (catMaybes
-                 [("customMetricUtilizations" .=) <$>
-                    _apCustomMetricUtilizations,
-                  ("maxNumReplicas" .=) <$> _apMaxNumReplicas,
-                  ("cpuUtilization" .=) <$> _apCPUUtilization,
-                  ("loadBalancingUtilization" .=) <$>
-                    _apLoadBalancingUtilization,
-                  ("minNumReplicas" .=) <$> _apMinNumReplicas,
-                  ("coolDownPeriodSec" .=) <$> _apCoolDownPeriodSec])
-
--- | Contains a list of region resources.
---
--- /See:/ 'regionList' smart constructor.
-data RegionList = RegionList'
-    { _regNextPageToken :: !(Maybe Text)
-    , _regKind          :: !Text
-    , _regItems         :: !(Maybe [Region])
-    , _regSelfLink      :: !(Maybe Text)
-    , _regId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'regNextPageToken'
---
--- * 'regKind'
---
--- * 'regItems'
---
--- * 'regSelfLink'
---
--- * 'regId'
-regionList
-    :: RegionList
-regionList =
-    RegionList'
-    { _regNextPageToken = Nothing
-    , _regKind = "compute#regionList"
-    , _regItems = Nothing
-    , _regSelfLink = Nothing
-    , _regId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-regNextPageToken :: Lens' RegionList (Maybe Text)
-regNextPageToken
-  = lens _regNextPageToken
-      (\ s a -> s{_regNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#regionList for lists of
--- regions.
-regKind :: Lens' RegionList Text
-regKind = lens _regKind (\ s a -> s{_regKind = a})
-
--- | [Output Only] A list of Region resources.
-regItems :: Lens' RegionList [Region]
-regItems
-  = lens _regItems (\ s a -> s{_regItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-regSelfLink :: Lens' RegionList (Maybe Text)
-regSelfLink
-  = lens _regSelfLink (\ s a -> s{_regSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-regId :: Lens' RegionList (Maybe Text)
-regId = lens _regId (\ s a -> s{_regId = a})
-
-instance FromJSON RegionList where
-        parseJSON
-          = withObject "RegionList"
-              (\ o ->
-                 RegionList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#regionList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON RegionList where
-        toJSON RegionList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _regNextPageToken,
-                  Just ("kind" .= _regKind),
-                  ("items" .=) <$> _regItems,
-                  ("selfLink" .=) <$> _regSelfLink,
-                  ("id" .=) <$> _regId])
-
--- | Contains a list of VpnTunnel resources.
---
--- /See:/ 'vpnTunnelList' smart constructor.
-data VPNTunnelList = VPNTunnelList'
-    { _vtlNextPageToken :: !(Maybe Text)
-    , _vtlKind          :: !Text
-    , _vtlItems         :: !(Maybe [VPNTunnel])
-    , _vtlSelfLink      :: !(Maybe Text)
-    , _vtlId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtlNextPageToken'
---
--- * 'vtlKind'
---
--- * 'vtlItems'
---
--- * 'vtlSelfLink'
---
--- * 'vtlId'
-vpnTunnelList
-    :: VPNTunnelList
-vpnTunnelList =
-    VPNTunnelList'
-    { _vtlNextPageToken = Nothing
-    , _vtlKind = "compute#vpnTunnelList"
-    , _vtlItems = Nothing
-    , _vtlSelfLink = Nothing
-    , _vtlId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)
-vtlNextPageToken
-  = lens _vtlNextPageToken
-      (\ s a -> s{_vtlNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
--- tunnels.
-vtlKind :: Lens' VPNTunnelList Text
-vtlKind = lens _vtlKind (\ s a -> s{_vtlKind = a})
-
--- | [Output Only] A list of VpnTunnel resources.
-vtlItems :: Lens' VPNTunnelList [VPNTunnel]
-vtlItems
-  = lens _vtlItems (\ s a -> s{_vtlItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)
-vtlSelfLink
-  = lens _vtlSelfLink (\ s a -> s{_vtlSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-vtlId :: Lens' VPNTunnelList (Maybe Text)
-vtlId = lens _vtlId (\ s a -> s{_vtlId = a})
-
-instance FromJSON VPNTunnelList where
-        parseJSON
-          = withObject "VPNTunnelList"
-              (\ o ->
-                 VPNTunnelList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#vpnTunnelList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON VPNTunnelList where
-        toJSON VPNTunnelList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _vtlNextPageToken,
-                  Just ("kind" .= _vtlKind),
-                  ("items" .=) <$> _vtlItems,
-                  ("selfLink" .=) <$> _vtlSelfLink,
-                  ("id" .=) <$> _vtlId])
-
---
--- /See:/ 'machineTypeScratchDisksItem' smart constructor.
-newtype MachineTypeScratchDisksItem = MachineTypeScratchDisksItem'
-    { _mtsdiDiskGb :: Maybe (Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypeScratchDisksItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtsdiDiskGb'
-machineTypeScratchDisksItem
-    :: MachineTypeScratchDisksItem
-machineTypeScratchDisksItem =
-    MachineTypeScratchDisksItem'
-    { _mtsdiDiskGb = Nothing
-    }
-
--- | Size of the scratch disk, defined in GB.
-mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)
-mtsdiDiskGb
-  = lens _mtsdiDiskGb (\ s a -> s{_mtsdiDiskGb = a}) .
-      mapping _Coerce
-
-instance FromJSON MachineTypeScratchDisksItem where
-        parseJSON
-          = withObject "MachineTypeScratchDisksItem"
-              (\ o ->
-                 MachineTypeScratchDisksItem' <$> (o .:? "diskGb"))
-
-instance ToJSON MachineTypeScratchDisksItem where
-        toJSON MachineTypeScratchDisksItem'{..}
-          = object (catMaybes [("diskGb" .=) <$> _mtsdiDiskGb])
-
---
--- /See:/ 'subnetworksScopedListWarningDataItem' smart constructor.
-data SubnetworksScopedListWarningDataItem = SubnetworksScopedListWarningDataItem'
-    { _sslwdiValue :: !(Maybe Text)
-    , _sslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworksScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sslwdiValue'
---
--- * 'sslwdiKey'
-subnetworksScopedListWarningDataItem
-    :: SubnetworksScopedListWarningDataItem
-subnetworksScopedListWarningDataItem =
-    SubnetworksScopedListWarningDataItem'
-    { _sslwdiValue = Nothing
-    , _sslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
-sslwdiValue
-  = lens _sslwdiValue (\ s a -> s{_sslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
-sslwdiKey
-  = lens _sslwdiKey (\ s a -> s{_sslwdiKey = a})
-
-instance FromJSON
-         SubnetworksScopedListWarningDataItem where
-        parseJSON
-          = withObject "SubnetworksScopedListWarningDataItem"
-              (\ o ->
-                 SubnetworksScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON SubnetworksScopedListWarningDataItem
-         where
-        toJSON SubnetworksScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _sslwdiValue,
-                  ("key" .=) <$> _sslwdiKey])
-
---
--- /See:/ 'machineTypesScopedList' smart constructor.
-data MachineTypesScopedList = MachineTypesScopedList'
-    { _mtslMachineTypes :: !(Maybe [MachineType])
-    , _mtslWarning      :: !(Maybe MachineTypesScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypesScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtslMachineTypes'
---
--- * 'mtslWarning'
-machineTypesScopedList
-    :: MachineTypesScopedList
-machineTypesScopedList =
-    MachineTypesScopedList'
-    { _mtslMachineTypes = Nothing
-    , _mtslWarning = Nothing
-    }
-
--- | [Output Only] List of machine types contained in this scope.
-mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]
-mtslMachineTypes
-  = lens _mtslMachineTypes
-      (\ s a -> s{_mtslMachineTypes = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] An informational warning that appears when the machine
--- types list is empty.
-mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)
-mtslWarning
-  = lens _mtslWarning (\ s a -> s{_mtslWarning = a})
-
-instance FromJSON MachineTypesScopedList where
-        parseJSON
-          = withObject "MachineTypesScopedList"
-              (\ o ->
-                 MachineTypesScopedList' <$>
-                   (o .:? "machineTypes" .!= mempty) <*>
-                     (o .:? "warning"))
-
-instance ToJSON MachineTypesScopedList where
-        toJSON MachineTypesScopedList'{..}
-          = object
-              (catMaybes
-                 [("machineTypes" .=) <$> _mtslMachineTypes,
-                  ("warning" .=) <$> _mtslWarning])
-
--- | A Subnetwork resource.
---
--- /See:/ 'subnetwork' smart constructor.
-data Subnetwork = Subnetwork'
-    { _subKind              :: !Text
-    , _subNetwork           :: !(Maybe Text)
-    , _subGatewayAddress    :: !(Maybe Text)
-    , _subSelfLink          :: !(Maybe Text)
-    , _subName              :: !(Maybe Text)
-    , _subCreationTimestamp :: !(Maybe Text)
-    , _subIPCIdRRange       :: !(Maybe Text)
-    , _subId                :: !(Maybe (Textual Word64))
-    , _subRegion            :: !(Maybe Text)
-    , _subDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Subnetwork' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'subKind'
---
--- * 'subNetwork'
---
--- * 'subGatewayAddress'
---
--- * 'subSelfLink'
---
--- * 'subName'
---
--- * 'subCreationTimestamp'
---
--- * 'subIPCIdRRange'
---
--- * 'subId'
---
--- * 'subRegion'
---
--- * 'subDescription'
-subnetwork
-    :: Subnetwork
-subnetwork =
-    Subnetwork'
-    { _subKind = "compute#subnetwork"
-    , _subNetwork = Nothing
-    , _subGatewayAddress = Nothing
-    , _subSelfLink = Nothing
-    , _subName = Nothing
-    , _subCreationTimestamp = Nothing
-    , _subIPCIdRRange = Nothing
-    , _subId = Nothing
-    , _subRegion = Nothing
-    , _subDescription = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#subnetwork for
--- Subnetwork resources.
-subKind :: Lens' Subnetwork Text
-subKind = lens _subKind (\ s a -> s{_subKind = a})
-
--- | The URL of the network to which this subnetwork belongs, provided by the
--- client when initially creating the subnetwork. Only networks that are in
--- the distributed mode can have subnetworks.
-subNetwork :: Lens' Subnetwork (Maybe Text)
-subNetwork
-  = lens _subNetwork (\ s a -> s{_subNetwork = a})
-
--- | [Output Only] The gateway address for default routes to reach
--- destination addresses outside this subnetwork.
-subGatewayAddress :: Lens' Subnetwork (Maybe Text)
-subGatewayAddress
-  = lens _subGatewayAddress
-      (\ s a -> s{_subGatewayAddress = a})
-
--- | [Output Only] Server-defined URL for the resource.
-subSelfLink :: Lens' Subnetwork (Maybe Text)
-subSelfLink
-  = lens _subSelfLink (\ s a -> s{_subSelfLink = a})
-
--- | The name of the resource, provided by the client when initially creating
--- the resource. The name must be 1-63 characters long, and comply with
--- RFC1035. Specifically, the name must be 1-63 characters long and match
--- the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-subName :: Lens' Subnetwork (Maybe Text)
-subName = lens _subName (\ s a -> s{_subName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-subCreationTimestamp :: Lens' Subnetwork (Maybe Text)
-subCreationTimestamp
-  = lens _subCreationTimestamp
-      (\ s a -> s{_subCreationTimestamp = a})
-
--- | The range of internal addresses that are owned by this subnetwork.
--- Provide this property when you create the subnetwork. For example,
--- 10.0.0.0\/8 or 192.168.0.0\/16. Ranges must be unique and
--- non-overlapping within a network. Only IPv4 is supported.
-subIPCIdRRange :: Lens' Subnetwork (Maybe Text)
-subIPCIdRRange
-  = lens _subIPCIdRRange
-      (\ s a -> s{_subIPCIdRRange = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-subId :: Lens' Subnetwork (Maybe Word64)
-subId
-  = lens _subId (\ s a -> s{_subId = a}) .
-      mapping _Coerce
-
--- | URL of the region where the Subnetwork resides.
-subRegion :: Lens' Subnetwork (Maybe Text)
-subRegion
-  = lens _subRegion (\ s a -> s{_subRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-subDescription :: Lens' Subnetwork (Maybe Text)
-subDescription
-  = lens _subDescription
-      (\ s a -> s{_subDescription = a})
-
-instance FromJSON Subnetwork where
-        parseJSON
-          = withObject "Subnetwork"
-              (\ o ->
-                 Subnetwork' <$>
-                   (o .:? "kind" .!= "compute#subnetwork") <*>
-                     (o .:? "network")
-                     <*> (o .:? "gatewayAddress")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "ipCidrRange")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description"))
-
-instance ToJSON Subnetwork where
-        toJSON Subnetwork'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _subKind),
-                  ("network" .=) <$> _subNetwork,
-                  ("gatewayAddress" .=) <$> _subGatewayAddress,
-                  ("selfLink" .=) <$> _subSelfLink,
-                  ("name" .=) <$> _subName,
-                  ("creationTimestamp" .=) <$> _subCreationTimestamp,
-                  ("ipCidrRange" .=) <$> _subIPCIdRRange,
-                  ("id" .=) <$> _subId, ("region" .=) <$> _subRegion,
-                  ("description" .=) <$> _subDescription])
-
---
--- /See:/ 'machineTypeAggregatedList' smart constructor.
-data MachineTypeAggregatedList = MachineTypeAggregatedList'
-    { _mtalNextPageToken :: !(Maybe Text)
-    , _mtalKind          :: !Text
-    , _mtalItems         :: !(Maybe MachineTypeAggregatedListItems)
-    , _mtalSelfLink      :: !(Maybe Text)
-    , _mtalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypeAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtalNextPageToken'
---
--- * 'mtalKind'
---
--- * 'mtalItems'
---
--- * 'mtalSelfLink'
---
--- * 'mtalId'
-machineTypeAggregatedList
-    :: MachineTypeAggregatedList
-machineTypeAggregatedList =
-    MachineTypeAggregatedList'
-    { _mtalNextPageToken = Nothing
-    , _mtalKind = "compute#machineTypeAggregatedList"
-    , _mtalItems = Nothing
-    , _mtalSelfLink = Nothing
-    , _mtalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)
-mtalNextPageToken
-  = lens _mtalNextPageToken
-      (\ s a -> s{_mtalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#machineTypeAggregatedList
--- for aggregated lists of machine types.
-mtalKind :: Lens' MachineTypeAggregatedList Text
-mtalKind = lens _mtalKind (\ s a -> s{_mtalKind = a})
-
--- | [Output Only] A map of scoped machine type lists.
-mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)
-mtalItems
-  = lens _mtalItems (\ s a -> s{_mtalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)
-mtalSelfLink
-  = lens _mtalSelfLink (\ s a -> s{_mtalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)
-mtalId = lens _mtalId (\ s a -> s{_mtalId = a})
-
-instance FromJSON MachineTypeAggregatedList where
-        parseJSON
-          = withObject "MachineTypeAggregatedList"
-              (\ o ->
-                 MachineTypeAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#machineTypeAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON MachineTypeAggregatedList where
-        toJSON MachineTypeAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _mtalNextPageToken,
-                  Just ("kind" .= _mtalKind),
-                  ("items" .=) <$> _mtalItems,
-                  ("selfLink" .=) <$> _mtalSelfLink,
-                  ("id" .=) <$> _mtalId])
-
--- | A DiskType resource.
---
--- /See:/ 'diskType' smart constructor.
-data DiskType = DiskType'
-    { _dtKind              :: !Text
-    , _dtZone              :: !(Maybe Text)
-    , _dtSelfLink          :: !(Maybe Text)
-    , _dtName              :: !(Maybe Text)
-    , _dtCreationTimestamp :: !(Maybe Text)
-    , _dtId                :: !(Maybe (Textual Word64))
-    , _dtValidDiskSize     :: !(Maybe Text)
-    , _dtDescription       :: !(Maybe Text)
-    , _dtDefaultDiskSizeGb :: !(Maybe (Textual Int64))
-    , _dtDeprecated        :: !(Maybe DeprecationStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtKind'
---
--- * 'dtZone'
---
--- * 'dtSelfLink'
---
--- * 'dtName'
---
--- * 'dtCreationTimestamp'
---
--- * 'dtId'
---
--- * 'dtValidDiskSize'
---
--- * 'dtDescription'
---
--- * 'dtDefaultDiskSizeGb'
---
--- * 'dtDeprecated'
-diskType
-    :: DiskType
-diskType =
-    DiskType'
-    { _dtKind = "compute#diskType"
-    , _dtZone = Nothing
-    , _dtSelfLink = Nothing
-    , _dtName = Nothing
-    , _dtCreationTimestamp = Nothing
-    , _dtId = Nothing
-    , _dtValidDiskSize = Nothing
-    , _dtDescription = Nothing
-    , _dtDefaultDiskSizeGb = Nothing
-    , _dtDeprecated = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#diskType for disk
--- types.
-dtKind :: Lens' DiskType Text
-dtKind = lens _dtKind (\ s a -> s{_dtKind = a})
-
--- | [Output Only] URL of the zone where the disk type resides.
-dtZone :: Lens' DiskType (Maybe Text)
-dtZone = lens _dtZone (\ s a -> s{_dtZone = a})
-
--- | [Output Only] Server-defined URL for the resource.
-dtSelfLink :: Lens' DiskType (Maybe Text)
-dtSelfLink
-  = lens _dtSelfLink (\ s a -> s{_dtSelfLink = a})
-
--- | [Output Only] Name of the resource.
-dtName :: Lens' DiskType (Maybe Text)
-dtName = lens _dtName (\ s a -> s{_dtName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-dtCreationTimestamp :: Lens' DiskType (Maybe Text)
-dtCreationTimestamp
-  = lens _dtCreationTimestamp
-      (\ s a -> s{_dtCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-dtId :: Lens' DiskType (Maybe Word64)
-dtId
-  = lens _dtId (\ s a -> s{_dtId = a}) .
-      mapping _Coerce
-
--- | [Output Only] An optional textual description of the valid disk size,
--- such as \"10GB-10TB\".
-dtValidDiskSize :: Lens' DiskType (Maybe Text)
-dtValidDiskSize
-  = lens _dtValidDiskSize
-      (\ s a -> s{_dtValidDiskSize = a})
-
--- | [Output Only] An optional description of this resource.
-dtDescription :: Lens' DiskType (Maybe Text)
-dtDescription
-  = lens _dtDescription
-      (\ s a -> s{_dtDescription = a})
-
--- | [Output Only] Server-defined default disk size in GB.
-dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)
-dtDefaultDiskSizeGb
-  = lens _dtDefaultDiskSizeGb
-      (\ s a -> s{_dtDefaultDiskSizeGb = a})
-      . mapping _Coerce
-
--- | [Output Only] The deprecation status associated with this disk type.
-dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)
-dtDeprecated
-  = lens _dtDeprecated (\ s a -> s{_dtDeprecated = a})
-
-instance FromJSON DiskType where
-        parseJSON
-          = withObject "DiskType"
-              (\ o ->
-                 DiskType' <$>
-                   (o .:? "kind" .!= "compute#diskType") <*>
-                     (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "validDiskSize")
-                     <*> (o .:? "description")
-                     <*> (o .:? "defaultDiskSizeGb")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON DiskType where
-        toJSON DiskType'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _dtKind), ("zone" .=) <$> _dtZone,
-                  ("selfLink" .=) <$> _dtSelfLink,
-                  ("name" .=) <$> _dtName,
-                  ("creationTimestamp" .=) <$> _dtCreationTimestamp,
-                  ("id" .=) <$> _dtId,
-                  ("validDiskSize" .=) <$> _dtValidDiskSize,
-                  ("description" .=) <$> _dtDescription,
-                  ("defaultDiskSizeGb" .=) <$> _dtDefaultDiskSizeGb,
-                  ("deprecated" .=) <$> _dtDeprecated])
-
--- | Message representing the validation result for a UrlMap.
---
--- /See:/ 'urlMapValidationResult' smart constructor.
-data URLMapValidationResult = URLMapValidationResult'
-    { _umvrLoadErrors    :: !(Maybe [Text])
-    , _umvrLoadSucceeded :: !(Maybe Bool)
-    , _umvrTestPassed    :: !(Maybe Bool)
-    , _umvrTestFailures  :: !(Maybe [TestFailure])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapValidationResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umvrLoadErrors'
---
--- * 'umvrLoadSucceeded'
---
--- * 'umvrTestPassed'
---
--- * 'umvrTestFailures'
-urlMapValidationResult
-    :: URLMapValidationResult
-urlMapValidationResult =
-    URLMapValidationResult'
-    { _umvrLoadErrors = Nothing
-    , _umvrLoadSucceeded = Nothing
-    , _umvrTestPassed = Nothing
-    , _umvrTestFailures = Nothing
-    }
-
-umvrLoadErrors :: Lens' URLMapValidationResult [Text]
-umvrLoadErrors
-  = lens _umvrLoadErrors
-      (\ s a -> s{_umvrLoadErrors = a})
-      . _Default
-      . _Coerce
-
--- | Whether the given UrlMap can be successfully loaded. If false,
--- \'loadErrors\' indicates the reasons.
-umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)
-umvrLoadSucceeded
-  = lens _umvrLoadSucceeded
-      (\ s a -> s{_umvrLoadSucceeded = a})
-
--- | If successfully loaded, this field indicates whether the test passed. If
--- false, \'testFailures\'s indicate the reason of failure.
-umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)
-umvrTestPassed
-  = lens _umvrTestPassed
-      (\ s a -> s{_umvrTestPassed = a})
-
-umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]
-umvrTestFailures
-  = lens _umvrTestFailures
-      (\ s a -> s{_umvrTestFailures = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON URLMapValidationResult where
-        parseJSON
-          = withObject "URLMapValidationResult"
-              (\ o ->
-                 URLMapValidationResult' <$>
-                   (o .:? "loadErrors" .!= mempty) <*>
-                     (o .:? "loadSucceeded")
-                     <*> (o .:? "testPassed")
-                     <*> (o .:? "testFailures" .!= mempty))
-
-instance ToJSON URLMapValidationResult where
-        toJSON URLMapValidationResult'{..}
-          = object
-              (catMaybes
-                 [("loadErrors" .=) <$> _umvrLoadErrors,
-                  ("loadSucceeded" .=) <$> _umvrLoadSucceeded,
-                  ("testPassed" .=) <$> _umvrTestPassed,
-                  ("testFailures" .=) <$> _umvrTestFailures])
-
--- | A metadata key\/value entry.
---
--- /See:/ 'metadata' smart constructor.
-data Metadata = Metadata'
-    { _mKind        :: !Text
-    , _mFingerprint :: !(Maybe Bytes)
-    , _mItems       :: !(Maybe [MetadataItemsItem])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Metadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mKind'
---
--- * 'mFingerprint'
---
--- * 'mItems'
-metadata
-    :: Metadata
-metadata =
-    Metadata'
-    { _mKind = "compute#metadata"
-    , _mFingerprint = Nothing
-    , _mItems = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#metadata for
--- metadata.
-mKind :: Lens' Metadata Text
-mKind = lens _mKind (\ s a -> s{_mKind = a})
-
--- | Specifies a fingerprint for this request, which is essentially a hash of
--- the metadata\'s contents and used for optimistic locking. The
--- fingerprint is initially generated by Compute Engine and changes after
--- every request to modify or update metadata. You must always provide an
--- up-to-date fingerprint hash in order to update or change metadata.
-mFingerprint :: Lens' Metadata (Maybe ByteString)
-mFingerprint
-  = lens _mFingerprint (\ s a -> s{_mFingerprint = a})
-      . mapping _Bytes
-
--- | Array of key\/value pairs. The total size of all keys and values must be
--- less than 512 KB.
-mItems :: Lens' Metadata [MetadataItemsItem]
-mItems
-  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON Metadata where
-        parseJSON
-          = withObject "Metadata"
-              (\ o ->
-                 Metadata' <$>
-                   (o .:? "kind" .!= "compute#metadata") <*>
-                     (o .:? "fingerprint")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Metadata where
-        toJSON Metadata'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _mKind),
-                  ("fingerprint" .=) <$> _mFingerprint,
-                  ("items" .=) <$> _mItems])
-
---
--- /See:/ 'routeWarningsItem' smart constructor.
-data RouteWarningsItem = RouteWarningsItem'
-    { _rwiData    :: !(Maybe [RouteWarningsItemDataItem])
-    , _rwiCode    :: !(Maybe RouteWarningsItemCode)
-    , _rwiMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouteWarningsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rwiData'
---
--- * 'rwiCode'
---
--- * 'rwiMessage'
-routeWarningsItem
-    :: RouteWarningsItem
-routeWarningsItem =
-    RouteWarningsItem'
-    { _rwiData = Nothing
-    , _rwiCode = Nothing
-    , _rwiMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]
-rwiData
-  = lens _rwiData (\ s a -> s{_rwiData = a}) . _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)
-rwiCode = lens _rwiCode (\ s a -> s{_rwiCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-rwiMessage :: Lens' RouteWarningsItem (Maybe Text)
-rwiMessage
-  = lens _rwiMessage (\ s a -> s{_rwiMessage = a})
-
-instance FromJSON RouteWarningsItem where
-        parseJSON
-          = withObject "RouteWarningsItem"
-              (\ o ->
-                 RouteWarningsItem' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON RouteWarningsItem where
-        toJSON RouteWarningsItem'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _rwiData, ("code" .=) <$> _rwiCode,
-                  ("message" .=) <$> _rwiMessage])
-
---
--- /See:/ 'machineTypesScopedListWarningDataItem' smart constructor.
-data MachineTypesScopedListWarningDataItem = MachineTypesScopedListWarningDataItem'
-    { _mtslwdiValue :: !(Maybe Text)
-    , _mtslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineTypesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtslwdiValue'
---
--- * 'mtslwdiKey'
-machineTypesScopedListWarningDataItem
-    :: MachineTypesScopedListWarningDataItem
-machineTypesScopedListWarningDataItem =
-    MachineTypesScopedListWarningDataItem'
-    { _mtslwdiValue = Nothing
-    , _mtslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
-mtslwdiValue
-  = lens _mtslwdiValue (\ s a -> s{_mtslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
-mtslwdiKey
-  = lens _mtslwdiKey (\ s a -> s{_mtslwdiKey = a})
-
-instance FromJSON
-         MachineTypesScopedListWarningDataItem where
-        parseJSON
-          = withObject "MachineTypesScopedListWarningDataItem"
-              (\ o ->
-                 MachineTypesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON MachineTypesScopedListWarningDataItem
-         where
-        toJSON MachineTypesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _mtslwdiValue,
-                  ("key" .=) <$> _mtslwdiKey])
-
---
--- /See:/ 'instancesSetServiceAccountRequest' smart constructor.
-data InstancesSetServiceAccountRequest = InstancesSetServiceAccountRequest'
-    { _issarEmail  :: !(Maybe Text)
-    , _issarScopes :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesSetServiceAccountRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'issarEmail'
---
--- * 'issarScopes'
-instancesSetServiceAccountRequest
-    :: InstancesSetServiceAccountRequest
-instancesSetServiceAccountRequest =
-    InstancesSetServiceAccountRequest'
-    { _issarEmail = Nothing
-    , _issarScopes = Nothing
-    }
-
--- | Email address of the service account.
-issarEmail :: Lens' InstancesSetServiceAccountRequest (Maybe Text)
-issarEmail
-  = lens _issarEmail (\ s a -> s{_issarEmail = a})
-
--- | The list of scopes to be made available for this service account.
-issarScopes :: Lens' InstancesSetServiceAccountRequest [Text]
-issarScopes
-  = lens _issarScopes (\ s a -> s{_issarScopes = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON InstancesSetServiceAccountRequest
-         where
-        parseJSON
-          = withObject "InstancesSetServiceAccountRequest"
-              (\ o ->
-                 InstancesSetServiceAccountRequest' <$>
-                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))
-
-instance ToJSON InstancesSetServiceAccountRequest
-         where
-        toJSON InstancesSetServiceAccountRequest'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _issarEmail,
-                  ("scopes" .=) <$> _issarScopes])
-
---
--- /See:/ 'diskTypesScopedListWarningDataItem' smart constructor.
-data DiskTypesScopedListWarningDataItem = DiskTypesScopedListWarningDataItem'
-    { _dtslwdiValue :: !(Maybe Text)
-    , _dtslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskTypesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtslwdiValue'
---
--- * 'dtslwdiKey'
-diskTypesScopedListWarningDataItem
-    :: DiskTypesScopedListWarningDataItem
-diskTypesScopedListWarningDataItem =
-    DiskTypesScopedListWarningDataItem'
-    { _dtslwdiValue = Nothing
-    , _dtslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
-dtslwdiValue
-  = lens _dtslwdiValue (\ s a -> s{_dtslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
-dtslwdiKey
-  = lens _dtslwdiKey (\ s a -> s{_dtslwdiKey = a})
-
-instance FromJSON DiskTypesScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "DiskTypesScopedListWarningDataItem"
-              (\ o ->
-                 DiskTypesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON DiskTypesScopedListWarningDataItem
-         where
-        toJSON DiskTypesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _dtslwdiValue,
-                  ("key" .=) <$> _dtslwdiKey])
-
--- | A TargetHttpProxy resource. This resource defines an HTTP proxy.
---
--- /See:/ 'targetHTTPProxy' smart constructor.
-data TargetHTTPProxy = TargetHTTPProxy'
-    { _thttppURLMap            :: !(Maybe Text)
-    , _thttppKind              :: !Text
-    , _thttppSelfLink          :: !(Maybe Text)
-    , _thttppName              :: !(Maybe Text)
-    , _thttppCreationTimestamp :: !(Maybe Text)
-    , _thttppId                :: !(Maybe (Textual Word64))
-    , _thttppDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetHTTPProxy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thttppURLMap'
---
--- * 'thttppKind'
---
--- * 'thttppSelfLink'
---
--- * 'thttppName'
---
--- * 'thttppCreationTimestamp'
---
--- * 'thttppId'
---
--- * 'thttppDescription'
-targetHTTPProxy
-    :: TargetHTTPProxy
-targetHTTPProxy =
-    TargetHTTPProxy'
-    { _thttppURLMap = Nothing
-    , _thttppKind = "compute#targetHttpProxy"
-    , _thttppSelfLink = Nothing
-    , _thttppName = Nothing
-    , _thttppCreationTimestamp = Nothing
-    , _thttppId = Nothing
-    , _thttppDescription = Nothing
-    }
-
--- | URL to the UrlMap resource that defines the mapping from URL to the
--- BackendService.
-thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)
-thttppURLMap
-  = lens _thttppURLMap (\ s a -> s{_thttppURLMap = a})
-
--- | [Output Only] Type of resource. Always compute#targetHttpProxy for
--- target HTTP proxies.
-thttppKind :: Lens' TargetHTTPProxy Text
-thttppKind
-  = lens _thttppKind (\ s a -> s{_thttppKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)
-thttppSelfLink
-  = lens _thttppSelfLink
-      (\ s a -> s{_thttppSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-thttppName :: Lens' TargetHTTPProxy (Maybe Text)
-thttppName
-  = lens _thttppName (\ s a -> s{_thttppName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)
-thttppCreationTimestamp
-  = lens _thttppCreationTimestamp
-      (\ s a -> s{_thttppCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-thttppId :: Lens' TargetHTTPProxy (Maybe Word64)
-thttppId
-  = lens _thttppId (\ s a -> s{_thttppId = a}) .
-      mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)
-thttppDescription
-  = lens _thttppDescription
-      (\ s a -> s{_thttppDescription = a})
-
-instance FromJSON TargetHTTPProxy where
-        parseJSON
-          = withObject "TargetHTTPProxy"
-              (\ o ->
-                 TargetHTTPProxy' <$>
-                   (o .:? "urlMap") <*>
-                     (o .:? "kind" .!= "compute#targetHttpProxy")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "description"))
-
-instance ToJSON TargetHTTPProxy where
-        toJSON TargetHTTPProxy'{..}
-          = object
-              (catMaybes
-                 [("urlMap" .=) <$> _thttppURLMap,
-                  Just ("kind" .= _thttppKind),
-                  ("selfLink" .=) <$> _thttppSelfLink,
-                  ("name" .=) <$> _thttppName,
-                  ("creationTimestamp" .=) <$>
-                    _thttppCreationTimestamp,
-                  ("id" .=) <$> _thttppId,
-                  ("description" .=) <$> _thttppDescription])
-
--- | A Machine Type resource.
---
--- /See:/ 'machineType' smart constructor.
-data MachineType = MachineType'
-    { _mtIsSharedCPU                  :: !(Maybe Bool)
-    , _mtKind                         :: !Text
-    , _mtImageSpaceGb                 :: !(Maybe (Textual Int32))
-    , _mtZone                         :: !(Maybe Text)
-    , _mtSelfLink                     :: !(Maybe Text)
-    , _mtName                         :: !(Maybe Text)
-    , _mtCreationTimestamp            :: !(Maybe Text)
-    , _mtScratchDisks                 :: !(Maybe [MachineTypeScratchDisksItem])
-    , _mtId                           :: !(Maybe (Textual Word64))
-    , _mtGuestCPUs                    :: !(Maybe (Textual Int32))
-    , _mtMaximumPersistentDisksSizeGb :: !(Maybe (Textual Int64))
-    , _mtMaximumPersistentDisks       :: !(Maybe (Textual Int32))
-    , _mtMemoryMb                     :: !(Maybe (Textual Int32))
-    , _mtDescription                  :: !(Maybe Text)
-    , _mtDeprecated                   :: !(Maybe DeprecationStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MachineType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtIsSharedCPU'
---
--- * 'mtKind'
---
--- * 'mtImageSpaceGb'
---
--- * 'mtZone'
---
--- * 'mtSelfLink'
---
--- * 'mtName'
---
--- * 'mtCreationTimestamp'
---
--- * 'mtScratchDisks'
---
--- * 'mtId'
---
--- * 'mtGuestCPUs'
---
--- * 'mtMaximumPersistentDisksSizeGb'
---
--- * 'mtMaximumPersistentDisks'
---
--- * 'mtMemoryMb'
---
--- * 'mtDescription'
---
--- * 'mtDeprecated'
-machineType
-    :: MachineType
-machineType =
-    MachineType'
-    { _mtIsSharedCPU = Nothing
-    , _mtKind = "compute#machineType"
-    , _mtImageSpaceGb = Nothing
-    , _mtZone = Nothing
-    , _mtSelfLink = Nothing
-    , _mtName = Nothing
-    , _mtCreationTimestamp = Nothing
-    , _mtScratchDisks = Nothing
-    , _mtId = Nothing
-    , _mtGuestCPUs = Nothing
-    , _mtMaximumPersistentDisksSizeGb = Nothing
-    , _mtMaximumPersistentDisks = Nothing
-    , _mtMemoryMb = Nothing
-    , _mtDescription = Nothing
-    , _mtDeprecated = Nothing
-    }
-
--- | [Output Only] Whether this machine type has a shared CPU. See
--- Shared-core machine types for more information.
-mtIsSharedCPU :: Lens' MachineType (Maybe Bool)
-mtIsSharedCPU
-  = lens _mtIsSharedCPU
-      (\ s a -> s{_mtIsSharedCPU = a})
-
--- | [Output Only] The type of the resource. Always compute#machineType for
--- machine types.
-mtKind :: Lens' MachineType Text
-mtKind = lens _mtKind (\ s a -> s{_mtKind = a})
-
--- | [Deprecated] This property is deprecated and will never be populated
--- with any relevant values.
-mtImageSpaceGb :: Lens' MachineType (Maybe Int32)
-mtImageSpaceGb
-  = lens _mtImageSpaceGb
-      (\ s a -> s{_mtImageSpaceGb = a})
-      . mapping _Coerce
-
--- | [Output Only] The name of the zone where the machine type resides, such
--- as us-central1-a.
-mtZone :: Lens' MachineType (Maybe Text)
-mtZone = lens _mtZone (\ s a -> s{_mtZone = a})
-
--- | [Output Only] Server-defined URL for the resource.
-mtSelfLink :: Lens' MachineType (Maybe Text)
-mtSelfLink
-  = lens _mtSelfLink (\ s a -> s{_mtSelfLink = a})
-
--- | [Output Only] Name of the resource.
-mtName :: Lens' MachineType (Maybe Text)
-mtName = lens _mtName (\ s a -> s{_mtName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-mtCreationTimestamp :: Lens' MachineType (Maybe Text)
-mtCreationTimestamp
-  = lens _mtCreationTimestamp
-      (\ s a -> s{_mtCreationTimestamp = a})
-
--- | [Output Only] List of extended scratch disks assigned to the instance.
-mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]
-mtScratchDisks
-  = lens _mtScratchDisks
-      (\ s a -> s{_mtScratchDisks = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-mtId :: Lens' MachineType (Maybe Word64)
-mtId
-  = lens _mtId (\ s a -> s{_mtId = a}) .
-      mapping _Coerce
-
--- | [Output Only] The number of virtual CPUs that are available to the
--- instance.
-mtGuestCPUs :: Lens' MachineType (Maybe Int32)
-mtGuestCPUs
-  = lens _mtGuestCPUs (\ s a -> s{_mtGuestCPUs = a}) .
-      mapping _Coerce
-
--- | [Output Only] Maximum total persistent disks size (GB) allowed.
-mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)
-mtMaximumPersistentDisksSizeGb
-  = lens _mtMaximumPersistentDisksSizeGb
-      (\ s a -> s{_mtMaximumPersistentDisksSizeGb = a})
-      . mapping _Coerce
-
--- | [Output Only] Maximum persistent disks allowed.
-mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)
-mtMaximumPersistentDisks
-  = lens _mtMaximumPersistentDisks
-      (\ s a -> s{_mtMaximumPersistentDisks = a})
-      . mapping _Coerce
-
--- | [Output Only] The amount of physical memory available to the instance,
--- defined in MB.
-mtMemoryMb :: Lens' MachineType (Maybe Int32)
-mtMemoryMb
-  = lens _mtMemoryMb (\ s a -> s{_mtMemoryMb = a}) .
-      mapping _Coerce
-
--- | [Output Only] An optional textual description of the resource.
-mtDescription :: Lens' MachineType (Maybe Text)
-mtDescription
-  = lens _mtDescription
-      (\ s a -> s{_mtDescription = a})
-
--- | [Output Only] The deprecation status associated with this machine type.
-mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)
-mtDeprecated
-  = lens _mtDeprecated (\ s a -> s{_mtDeprecated = a})
-
-instance FromJSON MachineType where
-        parseJSON
-          = withObject "MachineType"
-              (\ o ->
-                 MachineType' <$>
-                   (o .:? "isSharedCpu") <*>
-                     (o .:? "kind" .!= "compute#machineType")
-                     <*> (o .:? "imageSpaceGb")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "scratchDisks" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "guestCpus")
-                     <*> (o .:? "maximumPersistentDisksSizeGb")
-                     <*> (o .:? "maximumPersistentDisks")
-                     <*> (o .:? "memoryMb")
-                     <*> (o .:? "description")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON MachineType where
-        toJSON MachineType'{..}
-          = object
-              (catMaybes
-                 [("isSharedCpu" .=) <$> _mtIsSharedCPU,
-                  Just ("kind" .= _mtKind),
-                  ("imageSpaceGb" .=) <$> _mtImageSpaceGb,
-                  ("zone" .=) <$> _mtZone,
-                  ("selfLink" .=) <$> _mtSelfLink,
-                  ("name" .=) <$> _mtName,
-                  ("creationTimestamp" .=) <$> _mtCreationTimestamp,
-                  ("scratchDisks" .=) <$> _mtScratchDisks,
-                  ("id" .=) <$> _mtId,
-                  ("guestCpus" .=) <$> _mtGuestCPUs,
-                  ("maximumPersistentDisksSizeGb" .=) <$>
-                    _mtMaximumPersistentDisksSizeGb,
-                  ("maximumPersistentDisks" .=) <$>
-                    _mtMaximumPersistentDisks,
-                  ("memoryMb" .=) <$> _mtMemoryMb,
-                  ("description" .=) <$> _mtDescription,
-                  ("deprecated" .=) <$> _mtDeprecated])
-
--- | [Output Only] If errors are generated during processing of the
--- operation, this field will be populated.
---
--- /See:/ 'operationError' smart constructor.
-newtype OperationError = OperationError'
-    { _oeErrors :: Maybe [OperationErrorErrorsItem]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationError' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oeErrors'
-operationError
-    :: OperationError
-operationError =
-    OperationError'
-    { _oeErrors = Nothing
-    }
-
--- | [Output Only] The array of errors encountered while processing this
--- operation.
-oeErrors :: Lens' OperationError [OperationErrorErrorsItem]
-oeErrors
-  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON OperationError where
-        parseJSON
-          = withObject "OperationError"
-              (\ o ->
-                 OperationError' <$> (o .:? "errors" .!= mempty))
-
-instance ToJSON OperationError where
-        toJSON OperationError'{..}
-          = object (catMaybes [("errors" .=) <$> _oeErrors])
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
---
--- /See:/ 'targetInstancesScopedListWarning' smart constructor.
-data TargetInstancesScopedListWarning = TargetInstancesScopedListWarning'
-    { _tislwData    :: !(Maybe [TargetInstancesScopedListWarningDataItem])
-    , _tislwCode    :: !(Maybe TargetInstancesScopedListWarningCode)
-    , _tislwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetInstancesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tislwData'
---
--- * 'tislwCode'
---
--- * 'tislwMessage'
-targetInstancesScopedListWarning
-    :: TargetInstancesScopedListWarning
-targetInstancesScopedListWarning =
-    TargetInstancesScopedListWarning'
-    { _tislwData = Nothing
-    , _tislwCode = Nothing
-    , _tislwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]
-tislwData
-  = lens _tislwData (\ s a -> s{_tislwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)
-tislwCode
-  = lens _tislwCode (\ s a -> s{_tislwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)
-tislwMessage
-  = lens _tislwMessage (\ s a -> s{_tislwMessage = a})
-
-instance FromJSON TargetInstancesScopedListWarning
-         where
-        parseJSON
-          = withObject "TargetInstancesScopedListWarning"
-              (\ o ->
-                 TargetInstancesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON TargetInstancesScopedListWarning
-         where
-        toJSON TargetInstancesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _tislwData,
-                  ("code" .=) <$> _tislwCode,
-                  ("message" .=) <$> _tislwMessage])
-
---
--- /See:/ 'subnetworkAggregatedList' smart constructor.
-data SubnetworkAggregatedList = SubnetworkAggregatedList'
-    { _salNextPageToken :: !(Maybe Text)
-    , _salKind          :: !Text
-    , _salItems         :: !(Maybe SubnetworkAggregatedListItems)
-    , _salSelfLink      :: !(Maybe Text)
-    , _salId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworkAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'salNextPageToken'
---
--- * 'salKind'
---
--- * 'salItems'
---
--- * 'salSelfLink'
---
--- * 'salId'
-subnetworkAggregatedList
-    :: SubnetworkAggregatedList
-subnetworkAggregatedList =
-    SubnetworkAggregatedList'
-    { _salNextPageToken = Nothing
-    , _salKind = "compute#subnetworkAggregatedList"
-    , _salItems = Nothing
-    , _salSelfLink = Nothing
-    , _salId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)
-salNextPageToken
-  = lens _salNextPageToken
-      (\ s a -> s{_salNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#subnetworkAggregatedList
--- for aggregated lists of subnetworks.
-salKind :: Lens' SubnetworkAggregatedList Text
-salKind = lens _salKind (\ s a -> s{_salKind = a})
-
--- | [Output] A map of scoped Subnetwork lists.
-salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)
-salItems = lens _salItems (\ s a -> s{_salItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)
-salSelfLink
-  = lens _salSelfLink (\ s a -> s{_salSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-salId :: Lens' SubnetworkAggregatedList (Maybe Text)
-salId = lens _salId (\ s a -> s{_salId = a})
-
-instance FromJSON SubnetworkAggregatedList where
-        parseJSON
-          = withObject "SubnetworkAggregatedList"
-              (\ o ->
-                 SubnetworkAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#subnetworkAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON SubnetworkAggregatedList where
-        toJSON SubnetworkAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _salNextPageToken,
-                  Just ("kind" .= _salKind),
-                  ("items" .=) <$> _salItems,
-                  ("selfLink" .=) <$> _salSelfLink,
-                  ("id" .=) <$> _salId])
-
---
--- /See:/ 'disksResizeRequest' smart constructor.
-newtype DisksResizeRequest = DisksResizeRequest'
-    { _drrSizeGb :: Maybe (Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DisksResizeRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drrSizeGb'
-disksResizeRequest
-    :: DisksResizeRequest
-disksResizeRequest =
-    DisksResizeRequest'
-    { _drrSizeGb = Nothing
-    }
-
--- | The new size of the persistent disk, which is specified in GB.
-drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)
-drrSizeGb
-  = lens _drrSizeGb (\ s a -> s{_drrSizeGb = a}) .
-      mapping _Coerce
-
-instance FromJSON DisksResizeRequest where
-        parseJSON
-          = withObject "DisksResizeRequest"
-              (\ o -> DisksResizeRequest' <$> (o .:? "sizeGb"))
-
-instance ToJSON DisksResizeRequest where
-        toJSON DisksResizeRequest'{..}
-          = object (catMaybes [("sizeGb" .=) <$> _drrSizeGb])
-
---
--- /See:/ 'autoscalersScopedListWarningDataItem' smart constructor.
-data AutoscalersScopedListWarningDataItem = AutoscalersScopedListWarningDataItem'
-    { _aValue :: !(Maybe Text)
-    , _aKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalersScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aValue'
---
--- * 'aKey'
-autoscalersScopedListWarningDataItem
-    :: AutoscalersScopedListWarningDataItem
-autoscalersScopedListWarningDataItem =
-    AutoscalersScopedListWarningDataItem'
-    { _aValue = Nothing
-    , _aKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
-aValue = lens _aValue (\ s a -> s{_aValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
-aKey = lens _aKey (\ s a -> s{_aKey = a})
-
-instance FromJSON
-         AutoscalersScopedListWarningDataItem where
-        parseJSON
-          = withObject "AutoscalersScopedListWarningDataItem"
-              (\ o ->
-                 AutoscalersScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON AutoscalersScopedListWarningDataItem
-         where
-        toJSON AutoscalersScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])
-
---
--- /See:/ 'regionInstanceGroupManagersSetTemplateRequest' smart constructor.
-newtype RegionInstanceGroupManagersSetTemplateRequest = RegionInstanceGroupManagersSetTemplateRequest'
-    { _rigmstrInstanceTemplate :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegionInstanceGroupManagersSetTemplateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rigmstrInstanceTemplate'
-regionInstanceGroupManagersSetTemplateRequest
-    :: RegionInstanceGroupManagersSetTemplateRequest
-regionInstanceGroupManagersSetTemplateRequest =
-    RegionInstanceGroupManagersSetTemplateRequest'
-    { _rigmstrInstanceTemplate = Nothing
-    }
-
--- | URL of the InstanceTemplate resource from which all new instances will
--- be created.
-rigmstrInstanceTemplate :: Lens' RegionInstanceGroupManagersSetTemplateRequest (Maybe Text)
-rigmstrInstanceTemplate
-  = lens _rigmstrInstanceTemplate
-      (\ s a -> s{_rigmstrInstanceTemplate = a})
-
-instance FromJSON
-         RegionInstanceGroupManagersSetTemplateRequest where
-        parseJSON
-          = withObject
-              "RegionInstanceGroupManagersSetTemplateRequest"
-              (\ o ->
-                 RegionInstanceGroupManagersSetTemplateRequest' <$>
-                   (o .:? "instanceTemplate"))
-
-instance ToJSON
-         RegionInstanceGroupManagersSetTemplateRequest where
-        toJSON
-          RegionInstanceGroupManagersSetTemplateRequest'{..}
-          = object
-              (catMaybes
-                 [("instanceTemplate" .=) <$>
-                    _rigmstrInstanceTemplate])
-
---
--- /See:/ 'instanceGroupsListInstances' smart constructor.
-data InstanceGroupsListInstances = InstanceGroupsListInstances'
-    { _igliNextPageToken :: !(Maybe Text)
-    , _igliKind          :: !Text
-    , _igliItems         :: !(Maybe [InstanceWithNamedPorts])
-    , _igliSelfLink      :: !(Maybe Text)
-    , _igliId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsListInstances' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igliNextPageToken'
---
--- * 'igliKind'
---
--- * 'igliItems'
---
--- * 'igliSelfLink'
---
--- * 'igliId'
-instanceGroupsListInstances
-    :: InstanceGroupsListInstances
-instanceGroupsListInstances =
-    InstanceGroupsListInstances'
-    { _igliNextPageToken = Nothing
-    , _igliKind = "compute#instanceGroupsListInstances"
-    , _igliItems = Nothing
-    , _igliSelfLink = Nothing
-    , _igliId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)
-igliNextPageToken
-  = lens _igliNextPageToken
-      (\ s a -> s{_igliNextPageToken = a})
-
--- | [Output Only] The resource type, which is always
--- compute#instanceGroupsListInstances for the list of instances in the
--- specified instance group.
-igliKind :: Lens' InstanceGroupsListInstances Text
-igliKind = lens _igliKind (\ s a -> s{_igliKind = a})
-
--- | [Output Only] A list of instances and any named ports that are assigned
--- to those instances.
-igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]
-igliItems
-  = lens _igliItems (\ s a -> s{_igliItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The URL for this list of instances in the specified
--- instance groups. The server generates this URL.
-igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)
-igliSelfLink
-  = lens _igliSelfLink (\ s a -> s{_igliSelfLink = a})
-
--- | [Output Only] A unique identifier for this list of instances in the
--- specified instance group. The server generates this identifier.
-igliId :: Lens' InstanceGroupsListInstances (Maybe Text)
-igliId = lens _igliId (\ s a -> s{_igliId = a})
-
-instance FromJSON InstanceGroupsListInstances where
-        parseJSON
-          = withObject "InstanceGroupsListInstances"
-              (\ o ->
-                 InstanceGroupsListInstances' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#instanceGroupsListInstances")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceGroupsListInstances where
-        toJSON InstanceGroupsListInstances'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _igliNextPageToken,
-                  Just ("kind" .= _igliKind),
-                  ("items" .=) <$> _igliItems,
-                  ("selfLink" .=) <$> _igliSelfLink,
-                  ("id" .=) <$> _igliId])
-
--- | Represents an Autoscaler resource. Autoscalers allow you to
--- automatically scale virtual machine instances in managed instance groups
--- according to an autoscaling policy that you define. For more
--- information, read Autoscaling Groups of Instances.
---
--- /See:/ 'autoscaler' smart constructor.
-data Autoscaler = Autoscaler'
-    { _aaKind              :: !Text
-    , _aaZone              :: !(Maybe Text)
-    , _aaSelfLink          :: !(Maybe Text)
-    , _aaName              :: !(Maybe Text)
-    , _aaCreationTimestamp :: !(Maybe Text)
-    , _aaAutoscalingPolicy :: !(Maybe AutoscalingPolicy)
-    , _aaId                :: !(Maybe (Textual Word64))
-    , _aaRegion            :: !(Maybe Text)
-    , _aaDescription       :: !(Maybe Text)
-    , _aaTarget            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Autoscaler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaKind'
---
--- * 'aaZone'
---
--- * 'aaSelfLink'
---
--- * 'aaName'
---
--- * 'aaCreationTimestamp'
---
--- * 'aaAutoscalingPolicy'
---
--- * 'aaId'
---
--- * 'aaRegion'
---
--- * 'aaDescription'
---
--- * 'aaTarget'
-autoscaler
-    :: Autoscaler
-autoscaler =
-    Autoscaler'
-    { _aaKind = "compute#autoscaler"
-    , _aaZone = Nothing
-    , _aaSelfLink = Nothing
-    , _aaName = Nothing
-    , _aaCreationTimestamp = Nothing
-    , _aaAutoscalingPolicy = Nothing
-    , _aaId = Nothing
-    , _aaRegion = Nothing
-    , _aaDescription = Nothing
-    , _aaTarget = Nothing
-    }
-
--- | [Output Only] Type of the resource. Always compute#autoscaler for
--- autoscalers.
-aaKind :: Lens' Autoscaler Text
-aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
-
--- | [Output Only] URL of the zone where the instance group resides (for
--- autoscalers living in zonal scope).
-aaZone :: Lens' Autoscaler (Maybe Text)
-aaZone = lens _aaZone (\ s a -> s{_aaZone = a})
-
--- | [Output Only] Server-defined URL for the resource.
-aaSelfLink :: Lens' Autoscaler (Maybe Text)
-aaSelfLink
-  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-aaName :: Lens' Autoscaler (Maybe Text)
-aaName = lens _aaName (\ s a -> s{_aaName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)
-aaCreationTimestamp
-  = lens _aaCreationTimestamp
-      (\ s a -> s{_aaCreationTimestamp = a})
-
--- | The configuration parameters for the autoscaling algorithm. You can
--- define one or more of the policies for an autoscaler: cpuUtilization,
--- customMetricUtilizations, and loadBalancingUtilization. If none of these
--- are specified, the default will be to autoscale based on cpuUtilization
--- to 0.6 or 60%.
-aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)
-aaAutoscalingPolicy
-  = lens _aaAutoscalingPolicy
-      (\ s a -> s{_aaAutoscalingPolicy = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-aaId :: Lens' Autoscaler (Maybe Word64)
-aaId
-  = lens _aaId (\ s a -> s{_aaId = a}) .
-      mapping _Coerce
-
--- | [Output Only] URL of the region where the instance group resides (for
--- autoscalers living in regional scope).
-aaRegion :: Lens' Autoscaler (Maybe Text)
-aaRegion = lens _aaRegion (\ s a -> s{_aaRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-aaDescription :: Lens' Autoscaler (Maybe Text)
-aaDescription
-  = lens _aaDescription
-      (\ s a -> s{_aaDescription = a})
-
--- | URL of the managed instance group that this autoscaler will scale.
-aaTarget :: Lens' Autoscaler (Maybe Text)
-aaTarget = lens _aaTarget (\ s a -> s{_aaTarget = a})
-
-instance FromJSON Autoscaler where
-        parseJSON
-          = withObject "Autoscaler"
-              (\ o ->
-                 Autoscaler' <$>
-                   (o .:? "kind" .!= "compute#autoscaler") <*>
-                     (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "autoscalingPolicy")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "target"))
-
-instance ToJSON Autoscaler where
-        toJSON Autoscaler'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _aaKind), ("zone" .=) <$> _aaZone,
-                  ("selfLink" .=) <$> _aaSelfLink,
-                  ("name" .=) <$> _aaName,
-                  ("creationTimestamp" .=) <$> _aaCreationTimestamp,
-                  ("autoscalingPolicy" .=) <$> _aaAutoscalingPolicy,
-                  ("id" .=) <$> _aaId, ("region" .=) <$> _aaRegion,
-                  ("description" .=) <$> _aaDescription,
-                  ("target" .=) <$> _aaTarget])
-
--- | [Output Only] Informational warning which replaces the list of disks
--- when the list is empty.
---
--- /See:/ 'disksScopedListWarning' smart constructor.
-data DisksScopedListWarning = DisksScopedListWarning'
-    { _dslwData    :: !(Maybe [DisksScopedListWarningDataItem])
-    , _dslwCode    :: !(Maybe DisksScopedListWarningCode)
-    , _dslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DisksScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dslwData'
---
--- * 'dslwCode'
---
--- * 'dslwMessage'
-disksScopedListWarning
-    :: DisksScopedListWarning
-disksScopedListWarning =
-    DisksScopedListWarning'
-    { _dslwData = Nothing
-    , _dslwCode = Nothing
-    , _dslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]
-dslwData
-  = lens _dslwData (\ s a -> s{_dslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)
-dslwCode = lens _dslwCode (\ s a -> s{_dslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)
-dslwMessage
-  = lens _dslwMessage (\ s a -> s{_dslwMessage = a})
-
-instance FromJSON DisksScopedListWarning where
-        parseJSON
-          = withObject "DisksScopedListWarning"
-              (\ o ->
-                 DisksScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON DisksScopedListWarning where
-        toJSON DisksScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _dslwData,
-                  ("code" .=) <$> _dslwCode,
-                  ("message" .=) <$> _dslwMessage])
-
--- | A map of scoped target vpn gateway lists.
---
--- /See:/ 'targetVPNGatewayAggregatedListItems' smart constructor.
-newtype TargetVPNGatewayAggregatedListItems = TargetVPNGatewayAggregatedListItems'
-    { _tvgaliAddtional :: HashMap Text TargetVPNGatewaysScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewayAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgaliAddtional'
-targetVPNGatewayAggregatedListItems
-    :: HashMap Text TargetVPNGatewaysScopedList -- ^ 'tvgaliAddtional'
-    -> TargetVPNGatewayAggregatedListItems
-targetVPNGatewayAggregatedListItems pTvgaliAddtional_ =
-    TargetVPNGatewayAggregatedListItems'
-    { _tvgaliAddtional = _Coerce # pTvgaliAddtional_
-    }
-
--- | [Output Only] Name of the scope containing this set of target VPN
--- gateways.
-tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)
-tvgaliAddtional
-  = lens _tvgaliAddtional
-      (\ s a -> s{_tvgaliAddtional = a})
-      . _Coerce
-
-instance FromJSON TargetVPNGatewayAggregatedListItems
-         where
-        parseJSON
-          = withObject "TargetVPNGatewayAggregatedListItems"
-              (\ o ->
-                 TargetVPNGatewayAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON TargetVPNGatewayAggregatedListItems
-         where
-        toJSON = toJSON . _tvgaliAddtional
-
--- | Informational warning which replaces the list of addresses when the list
--- is empty.
---
--- /See:/ 'targetPoolsScopedListWarning' smart constructor.
-data TargetPoolsScopedListWarning = TargetPoolsScopedListWarning'
-    { _tpslwData    :: !(Maybe [TargetPoolsScopedListWarningDataItem])
-    , _tpslwCode    :: !(Maybe TargetPoolsScopedListWarningCode)
-    , _tpslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetPoolsScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpslwData'
---
--- * 'tpslwCode'
---
--- * 'tpslwMessage'
-targetPoolsScopedListWarning
-    :: TargetPoolsScopedListWarning
-targetPoolsScopedListWarning =
-    TargetPoolsScopedListWarning'
-    { _tpslwData = Nothing
-    , _tpslwCode = Nothing
-    , _tpslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]
-tpslwData
-  = lens _tpslwData (\ s a -> s{_tpslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)
-tpslwCode
-  = lens _tpslwCode (\ s a -> s{_tpslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)
-tpslwMessage
-  = lens _tpslwMessage (\ s a -> s{_tpslwMessage = a})
-
-instance FromJSON TargetPoolsScopedListWarning where
-        parseJSON
-          = withObject "TargetPoolsScopedListWarning"
-              (\ o ->
-                 TargetPoolsScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON TargetPoolsScopedListWarning where
-        toJSON TargetPoolsScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _tpslwData,
-                  ("code" .=) <$> _tpslwCode,
-                  ("message" .=) <$> _tpslwMessage])
-
---
--- /See:/ 'healthStatus' smart constructor.
-data HealthStatus = HealthStatus'
-    { _hsIPAddress   :: !(Maybe Text)
-    , _hsHealthState :: !(Maybe HealthStatusHealthState)
-    , _hsPort        :: !(Maybe (Textual Int32))
-    , _hsInstance    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HealthStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hsIPAddress'
---
--- * 'hsHealthState'
---
--- * 'hsPort'
---
--- * 'hsInstance'
-healthStatus
-    :: HealthStatus
-healthStatus =
-    HealthStatus'
-    { _hsIPAddress = Nothing
-    , _hsHealthState = Nothing
-    , _hsPort = Nothing
-    , _hsInstance = Nothing
-    }
-
--- | The IP address represented by this resource.
-hsIPAddress :: Lens' HealthStatus (Maybe Text)
-hsIPAddress
-  = lens _hsIPAddress (\ s a -> s{_hsIPAddress = a})
-
--- | Health state of the instance.
-hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)
-hsHealthState
-  = lens _hsHealthState
-      (\ s a -> s{_hsHealthState = a})
-
--- | The port on the instance.
-hsPort :: Lens' HealthStatus (Maybe Int32)
-hsPort
-  = lens _hsPort (\ s a -> s{_hsPort = a}) .
-      mapping _Coerce
-
--- | URL of the instance resource.
-hsInstance :: Lens' HealthStatus (Maybe Text)
-hsInstance
-  = lens _hsInstance (\ s a -> s{_hsInstance = a})
-
-instance FromJSON HealthStatus where
-        parseJSON
-          = withObject "HealthStatus"
-              (\ o ->
-                 HealthStatus' <$>
-                   (o .:? "ipAddress") <*> (o .:? "healthState") <*>
-                     (o .:? "port")
-                     <*> (o .:? "instance"))
-
-instance ToJSON HealthStatus where
-        toJSON HealthStatus'{..}
-          = object
-              (catMaybes
-                 [("ipAddress" .=) <$> _hsIPAddress,
-                  ("healthState" .=) <$> _hsHealthState,
-                  ("port" .=) <$> _hsPort,
-                  ("instance" .=) <$> _hsInstance])
-
--- | Region resource.
---
--- /See:/ 'region' smart constructor.
-data Region = Region'
-    { _regeStatus            :: !(Maybe RegionStatus)
-    , _regeZones             :: !(Maybe [Text])
-    , _regeKind              :: !Text
-    , _regeSelfLink          :: !(Maybe Text)
-    , _regeName              :: !(Maybe Text)
-    , _regeCreationTimestamp :: !(Maybe Text)
-    , _regeQuotas            :: !(Maybe [Quota])
-    , _regeId                :: !(Maybe (Textual Word64))
-    , _regeDescription       :: !(Maybe Text)
-    , _regeDeprecated        :: !(Maybe DeprecationStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Region' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'regeStatus'
---
--- * 'regeZones'
---
--- * 'regeKind'
---
--- * 'regeSelfLink'
---
--- * 'regeName'
---
--- * 'regeCreationTimestamp'
---
--- * 'regeQuotas'
---
--- * 'regeId'
---
--- * 'regeDescription'
---
--- * 'regeDeprecated'
-region
-    :: Region
-region =
-    Region'
-    { _regeStatus = Nothing
-    , _regeZones = Nothing
-    , _regeKind = "compute#region"
-    , _regeSelfLink = Nothing
-    , _regeName = Nothing
-    , _regeCreationTimestamp = Nothing
-    , _regeQuotas = Nothing
-    , _regeId = Nothing
-    , _regeDescription = Nothing
-    , _regeDeprecated = Nothing
-    }
-
--- | [Output Only] Status of the region, either UP or DOWN.
-regeStatus :: Lens' Region (Maybe RegionStatus)
-regeStatus
-  = lens _regeStatus (\ s a -> s{_regeStatus = a})
-
--- | [Output Only] A list of zones available in this region, in the form of
--- resource URLs.
-regeZones :: Lens' Region [Text]
-regeZones
-  = lens _regeZones (\ s a -> s{_regeZones = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Type of the resource. Always compute#region for regions.
-regeKind :: Lens' Region Text
-regeKind = lens _regeKind (\ s a -> s{_regeKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-regeSelfLink :: Lens' Region (Maybe Text)
-regeSelfLink
-  = lens _regeSelfLink (\ s a -> s{_regeSelfLink = a})
-
--- | [Output Only] Name of the resource.
-regeName :: Lens' Region (Maybe Text)
-regeName = lens _regeName (\ s a -> s{_regeName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-regeCreationTimestamp :: Lens' Region (Maybe Text)
-regeCreationTimestamp
-  = lens _regeCreationTimestamp
-      (\ s a -> s{_regeCreationTimestamp = a})
-
--- | [Output Only] Quotas assigned to this region.
-regeQuotas :: Lens' Region [Quota]
-regeQuotas
-  = lens _regeQuotas (\ s a -> s{_regeQuotas = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-regeId :: Lens' Region (Maybe Word64)
-regeId
-  = lens _regeId (\ s a -> s{_regeId = a}) .
-      mapping _Coerce
-
--- | [Output Only] Textual description of the resource.
-regeDescription :: Lens' Region (Maybe Text)
-regeDescription
-  = lens _regeDescription
-      (\ s a -> s{_regeDescription = a})
-
--- | [Output Only] The deprecation status associated with this region.
-regeDeprecated :: Lens' Region (Maybe DeprecationStatus)
-regeDeprecated
-  = lens _regeDeprecated
-      (\ s a -> s{_regeDeprecated = a})
-
-instance FromJSON Region where
-        parseJSON
-          = withObject "Region"
-              (\ o ->
-                 Region' <$>
-                   (o .:? "status") <*> (o .:? "zones" .!= mempty) <*>
-                     (o .:? "kind" .!= "compute#region")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "quotas" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "description")
-                     <*> (o .:? "deprecated"))
-
-instance ToJSON Region where
-        toJSON Region'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _regeStatus,
-                  ("zones" .=) <$> _regeZones,
-                  Just ("kind" .= _regeKind),
-                  ("selfLink" .=) <$> _regeSelfLink,
-                  ("name" .=) <$> _regeName,
-                  ("creationTimestamp" .=) <$> _regeCreationTimestamp,
-                  ("quotas" .=) <$> _regeQuotas, ("id" .=) <$> _regeId,
-                  ("description" .=) <$> _regeDescription,
-                  ("deprecated" .=) <$> _regeDeprecated])
-
--- | Guest OS features.
---
--- /See:/ 'guestOSFeature' smart constructor.
-newtype GuestOSFeature = GuestOSFeature'
-    { _gofType :: Maybe GuestOSFeatureType
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GuestOSFeature' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gofType'
-guestOSFeature
-    :: GuestOSFeature
-guestOSFeature =
-    GuestOSFeature'
-    { _gofType = Nothing
-    }
-
--- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--- supported. For newer Windows images, the server might also populate this
--- property with the value WINDOWS to indicate that this is a Windows
--- image. This value is purely informational and does not enable or disable
--- any features.
-gofType :: Lens' GuestOSFeature (Maybe GuestOSFeatureType)
-gofType = lens _gofType (\ s a -> s{_gofType = a})
-
-instance FromJSON GuestOSFeature where
-        parseJSON
-          = withObject "GuestOSFeature"
-              (\ o -> GuestOSFeature' <$> (o .:? "type"))
-
-instance ToJSON GuestOSFeature where
-        toJSON GuestOSFeature'{..}
-          = object (catMaybes [("type" .=) <$> _gofType])
-
---
--- /See:/ 'vpnTunnel' smart constructor.
-data VPNTunnel = VPNTunnel'
-    { _vtDetailedStatus        :: !(Maybe Text)
-    , _vtStatus                :: !(Maybe VPNTunnelStatus)
-    , _vtLocalTrafficSelector  :: !(Maybe [Text])
-    , _vtKind                  :: !Text
-    , _vtPeerIP                :: !(Maybe Text)
-    , _vtRouter                :: !(Maybe Text)
-    , _vtTargetVPNGateway      :: !(Maybe Text)
-    , _vtRemoteTrafficSelector :: !(Maybe [Text])
-    , _vtSelfLink              :: !(Maybe Text)
-    , _vtSharedSecret          :: !(Maybe Text)
-    , _vtName                  :: !(Maybe Text)
-    , _vtCreationTimestamp     :: !(Maybe Text)
-    , _vtSharedSecretHash      :: !(Maybe Text)
-    , _vtId                    :: !(Maybe (Textual Word64))
-    , _vtIkeVersion            :: !(Maybe (Textual Int32))
-    , _vtRegion                :: !(Maybe Text)
-    , _vtDescription           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtDetailedStatus'
---
--- * 'vtStatus'
---
--- * 'vtLocalTrafficSelector'
---
--- * 'vtKind'
---
--- * 'vtPeerIP'
---
--- * 'vtRouter'
---
--- * 'vtTargetVPNGateway'
---
--- * 'vtRemoteTrafficSelector'
---
--- * 'vtSelfLink'
---
--- * 'vtSharedSecret'
---
--- * 'vtName'
---
--- * 'vtCreationTimestamp'
---
--- * 'vtSharedSecretHash'
---
--- * 'vtId'
---
--- * 'vtIkeVersion'
---
--- * 'vtRegion'
---
--- * 'vtDescription'
-vpnTunnel
-    :: VPNTunnel
-vpnTunnel =
-    VPNTunnel'
-    { _vtDetailedStatus = Nothing
-    , _vtStatus = Nothing
-    , _vtLocalTrafficSelector = Nothing
-    , _vtKind = "compute#vpnTunnel"
-    , _vtPeerIP = Nothing
-    , _vtRouter = Nothing
-    , _vtTargetVPNGateway = Nothing
-    , _vtRemoteTrafficSelector = Nothing
-    , _vtSelfLink = Nothing
-    , _vtSharedSecret = Nothing
-    , _vtName = Nothing
-    , _vtCreationTimestamp = Nothing
-    , _vtSharedSecretHash = Nothing
-    , _vtId = Nothing
-    , _vtIkeVersion = Nothing
-    , _vtRegion = Nothing
-    , _vtDescription = Nothing
-    }
-
--- | [Output Only] Detailed status message for the VPN tunnel.
-vtDetailedStatus :: Lens' VPNTunnel (Maybe Text)
-vtDetailedStatus
-  = lens _vtDetailedStatus
-      (\ s a -> s{_vtDetailedStatus = a})
-
--- | [Output Only] The status of the VPN tunnel.
-vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)
-vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a})
-
--- | Local traffic selector to use when establishing the VPN tunnel with peer
--- VPN gateway. The value should be a CIDR formatted string, for example:
--- 192.168.0.0\/16. The ranges should be disjoint. Only IPv4 is supported.
-vtLocalTrafficSelector :: Lens' VPNTunnel [Text]
-vtLocalTrafficSelector
-  = lens _vtLocalTrafficSelector
-      (\ s a -> s{_vtLocalTrafficSelector = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
--- tunnels.
-vtKind :: Lens' VPNTunnel Text
-vtKind = lens _vtKind (\ s a -> s{_vtKind = a})
-
--- | IP address of the peer VPN gateway. Only IPv4 is supported.
-vtPeerIP :: Lens' VPNTunnel (Maybe Text)
-vtPeerIP = lens _vtPeerIP (\ s a -> s{_vtPeerIP = a})
-
--- | URL of router resource to be used for dynamic routing.
-vtRouter :: Lens' VPNTunnel (Maybe Text)
-vtRouter = lens _vtRouter (\ s a -> s{_vtRouter = a})
-
--- | URL of the VPN gateway with which this VPN tunnel is associated.
--- Provided by the client when the VPN tunnel is created.
-vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)
-vtTargetVPNGateway
-  = lens _vtTargetVPNGateway
-      (\ s a -> s{_vtTargetVPNGateway = a})
-
--- | Remote traffic selectors to use when establishing the VPN tunnel with
--- peer VPN gateway. The value should be a CIDR formatted string, for
--- example: 192.168.0.0\/16. The ranges should be disjoint. Only IPv4 is
--- supported.
-vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]
-vtRemoteTrafficSelector
-  = lens _vtRemoteTrafficSelector
-      (\ s a -> s{_vtRemoteTrafficSelector = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-vtSelfLink :: Lens' VPNTunnel (Maybe Text)
-vtSelfLink
-  = lens _vtSelfLink (\ s a -> s{_vtSelfLink = a})
-
--- | Shared secret used to set the secure session between the Cloud VPN
--- gateway and the peer VPN gateway.
-vtSharedSecret :: Lens' VPNTunnel (Maybe Text)
-vtSharedSecret
-  = lens _vtSharedSecret
-      (\ s a -> s{_vtSharedSecret = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-vtName :: Lens' VPNTunnel (Maybe Text)
-vtName = lens _vtName (\ s a -> s{_vtName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)
-vtCreationTimestamp
-  = lens _vtCreationTimestamp
-      (\ s a -> s{_vtCreationTimestamp = a})
-
--- | Hash of the shared secret.
-vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)
-vtSharedSecretHash
-  = lens _vtSharedSecretHash
-      (\ s a -> s{_vtSharedSecretHash = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-vtId :: Lens' VPNTunnel (Maybe Word64)
-vtId
-  = lens _vtId (\ s a -> s{_vtId = a}) .
-      mapping _Coerce
-
--- | IKE protocol version to use when establishing the VPN tunnel with peer
--- VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.
-vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)
-vtIkeVersion
-  = lens _vtIkeVersion (\ s a -> s{_vtIkeVersion = a})
-      . mapping _Coerce
-
--- | [Output Only] URL of the region where the VPN tunnel resides.
-vtRegion :: Lens' VPNTunnel (Maybe Text)
-vtRegion = lens _vtRegion (\ s a -> s{_vtRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-vtDescription :: Lens' VPNTunnel (Maybe Text)
-vtDescription
-  = lens _vtDescription
-      (\ s a -> s{_vtDescription = a})
-
-instance FromJSON VPNTunnel where
-        parseJSON
-          = withObject "VPNTunnel"
-              (\ o ->
-                 VPNTunnel' <$>
-                   (o .:? "detailedStatus") <*> (o .:? "status") <*>
-                     (o .:? "localTrafficSelector" .!= mempty)
-                     <*> (o .:? "kind" .!= "compute#vpnTunnel")
-                     <*> (o .:? "peerIp")
-                     <*> (o .:? "router")
-                     <*> (o .:? "targetVpnGateway")
-                     <*> (o .:? "remoteTrafficSelector" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "sharedSecret")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "sharedSecretHash")
-                     <*> (o .:? "id")
-                     <*> (o .:? "ikeVersion")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description"))
-
-instance ToJSON VPNTunnel where
-        toJSON VPNTunnel'{..}
-          = object
-              (catMaybes
-                 [("detailedStatus" .=) <$> _vtDetailedStatus,
-                  ("status" .=) <$> _vtStatus,
-                  ("localTrafficSelector" .=) <$>
-                    _vtLocalTrafficSelector,
-                  Just ("kind" .= _vtKind),
-                  ("peerIp" .=) <$> _vtPeerIP,
-                  ("router" .=) <$> _vtRouter,
-                  ("targetVpnGateway" .=) <$> _vtTargetVPNGateway,
-                  ("remoteTrafficSelector" .=) <$>
-                    _vtRemoteTrafficSelector,
-                  ("selfLink" .=) <$> _vtSelfLink,
-                  ("sharedSecret" .=) <$> _vtSharedSecret,
-                  ("name" .=) <$> _vtName,
-                  ("creationTimestamp" .=) <$> _vtCreationTimestamp,
-                  ("sharedSecretHash" .=) <$> _vtSharedSecretHash,
-                  ("id" .=) <$> _vtId,
-                  ("ikeVersion" .=) <$> _vtIkeVersion,
-                  ("region" .=) <$> _vtRegion,
-                  ("description" .=) <$> _vtDescription])
-
--- | [Output Only] Informational warning which replaces the list of
--- operations when the list is empty.
---
--- /See:/ 'operationsScopedListWarning' smart constructor.
-data OperationsScopedListWarning = OperationsScopedListWarning'
-    { _oslwData    :: !(Maybe [OperationsScopedListWarningDataItem])
-    , _oslwCode    :: !(Maybe OperationsScopedListWarningCode)
-    , _oslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationsScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oslwData'
---
--- * 'oslwCode'
---
--- * 'oslwMessage'
-operationsScopedListWarning
-    :: OperationsScopedListWarning
-operationsScopedListWarning =
-    OperationsScopedListWarning'
-    { _oslwData = Nothing
-    , _oslwCode = Nothing
-    , _oslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]
-oslwData
-  = lens _oslwData (\ s a -> s{_oslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)
-oslwCode = lens _oslwCode (\ s a -> s{_oslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)
-oslwMessage
-  = lens _oslwMessage (\ s a -> s{_oslwMessage = a})
-
-instance FromJSON OperationsScopedListWarning where
-        parseJSON
-          = withObject "OperationsScopedListWarning"
-              (\ o ->
-                 OperationsScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON OperationsScopedListWarning where
-        toJSON OperationsScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _oslwData,
-                  ("code" .=) <$> _oslwCode,
-                  ("message" .=) <$> _oslwMessage])
-
--- | Sets the scheduling options for an Instance.
---
--- /See:/ 'scheduling' smart constructor.
-data Scheduling = Scheduling'
-    { _sAutomaticRestart  :: !(Maybe Bool)
-    , _sOnHostMaintenance :: !(Maybe SchedulingOnHostMaintenance)
-    , _sPreemptible       :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Scheduling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sAutomaticRestart'
---
--- * 'sOnHostMaintenance'
---
--- * 'sPreemptible'
-scheduling
-    :: Scheduling
-scheduling =
-    Scheduling'
-    { _sAutomaticRestart = Nothing
-    , _sOnHostMaintenance = Nothing
-    , _sPreemptible = Nothing
-    }
-
--- | Specifies whether the instance should be automatically restarted if it
--- is terminated by Compute Engine (not terminated by a user). You can only
--- set the automatic restart option for standard instances. Preemptible
--- instances cannot be automatically restarted.
-sAutomaticRestart :: Lens' Scheduling (Maybe Bool)
-sAutomaticRestart
-  = lens _sAutomaticRestart
-      (\ s a -> s{_sAutomaticRestart = a})
-
--- | Defines the maintenance behavior for this instance. For standard
--- instances, the default behavior is MIGRATE. For preemptible instances,
--- the default and only possible behavior is TERMINATE. For more
--- information, see Setting Instance Scheduling Options.
-sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)
-sOnHostMaintenance
-  = lens _sOnHostMaintenance
-      (\ s a -> s{_sOnHostMaintenance = a})
-
--- | Whether the instance is preemptible.
-sPreemptible :: Lens' Scheduling (Maybe Bool)
-sPreemptible
-  = lens _sPreemptible (\ s a -> s{_sPreemptible = a})
-
-instance FromJSON Scheduling where
-        parseJSON
-          = withObject "Scheduling"
-              (\ o ->
-                 Scheduling' <$>
-                   (o .:? "automaticRestart") <*>
-                     (o .:? "onHostMaintenance")
-                     <*> (o .:? "preemptible"))
-
-instance ToJSON Scheduling where
-        toJSON Scheduling'{..}
-          = object
-              (catMaybes
-                 [("automaticRestart" .=) <$> _sAutomaticRestart,
-                  ("onHostMaintenance" .=) <$> _sOnHostMaintenance,
-                  ("preemptible" .=) <$> _sPreemptible])
-
---
--- /See:/ 'vpnTunnelsScopedListWarningDataItem' smart constructor.
-data VPNTunnelsScopedListWarningDataItem = VPNTunnelsScopedListWarningDataItem'
-    { _vtslwdiValue :: !(Maybe Text)
-    , _vtslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelsScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtslwdiValue'
---
--- * 'vtslwdiKey'
-vpnTunnelsScopedListWarningDataItem
-    :: VPNTunnelsScopedListWarningDataItem
-vpnTunnelsScopedListWarningDataItem =
-    VPNTunnelsScopedListWarningDataItem'
-    { _vtslwdiValue = Nothing
-    , _vtslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
-vtslwdiValue
-  = lens _vtslwdiValue (\ s a -> s{_vtslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
-vtslwdiKey
-  = lens _vtslwdiKey (\ s a -> s{_vtslwdiKey = a})
-
-instance FromJSON VPNTunnelsScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "VPNTunnelsScopedListWarningDataItem"
-              (\ o ->
-                 VPNTunnelsScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON VPNTunnelsScopedListWarningDataItem
-         where
-        toJSON VPNTunnelsScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _vtslwdiValue,
-                  ("key" .=) <$> _vtslwdiKey])
-
--- | Contains a list of Subnetwork resources.
---
--- /See:/ 'subnetworkList' smart constructor.
-data SubnetworkList = SubnetworkList'
-    { _slNextPageToken :: !(Maybe Text)
-    , _slKind          :: !Text
-    , _slItems         :: !(Maybe [Subnetwork])
-    , _slSelfLink      :: !(Maybe Text)
-    , _slId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworkList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slNextPageToken'
---
--- * 'slKind'
---
--- * 'slItems'
---
--- * 'slSelfLink'
---
--- * 'slId'
-subnetworkList
-    :: SubnetworkList
-subnetworkList =
-    SubnetworkList'
-    { _slNextPageToken = Nothing
-    , _slKind = "compute#subnetworkList"
-    , _slItems = Nothing
-    , _slSelfLink = Nothing
-    , _slId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-slNextPageToken :: Lens' SubnetworkList (Maybe Text)
-slNextPageToken
-  = lens _slNextPageToken
-      (\ s a -> s{_slNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#subnetworkList for lists
--- of subnetworks.
-slKind :: Lens' SubnetworkList Text
-slKind = lens _slKind (\ s a -> s{_slKind = a})
-
--- | The Subnetwork resources.
-slItems :: Lens' SubnetworkList [Subnetwork]
-slItems
-  = lens _slItems (\ s a -> s{_slItems = a}) . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-slSelfLink :: Lens' SubnetworkList (Maybe Text)
-slSelfLink
-  = lens _slSelfLink (\ s a -> s{_slSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-slId :: Lens' SubnetworkList (Maybe Text)
-slId = lens _slId (\ s a -> s{_slId = a})
-
-instance FromJSON SubnetworkList where
-        parseJSON
-          = withObject "SubnetworkList"
-              (\ o ->
-                 SubnetworkList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#subnetworkList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON SubnetworkList where
-        toJSON SubnetworkList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _slNextPageToken,
-                  Just ("kind" .= _slKind), ("items" .=) <$> _slItems,
-                  ("selfLink" .=) <$> _slSelfLink,
-                  ("id" .=) <$> _slId])
-
--- | Informational warning which replaces the list of forwarding rules when
--- the list is empty.
---
--- /See:/ 'forwardingRulesScopedListWarning' smart constructor.
-data ForwardingRulesScopedListWarning = ForwardingRulesScopedListWarning'
-    { _frslwData    :: !(Maybe [ForwardingRulesScopedListWarningDataItem])
-    , _frslwCode    :: !(Maybe ForwardingRulesScopedListWarningCode)
-    , _frslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ForwardingRulesScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frslwData'
---
--- * 'frslwCode'
---
--- * 'frslwMessage'
-forwardingRulesScopedListWarning
-    :: ForwardingRulesScopedListWarning
-forwardingRulesScopedListWarning =
-    ForwardingRulesScopedListWarning'
-    { _frslwData = Nothing
-    , _frslwCode = Nothing
-    , _frslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]
-frslwData
-  = lens _frslwData (\ s a -> s{_frslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)
-frslwCode
-  = lens _frslwCode (\ s a -> s{_frslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)
-frslwMessage
-  = lens _frslwMessage (\ s a -> s{_frslwMessage = a})
-
-instance FromJSON ForwardingRulesScopedListWarning
-         where
-        parseJSON
-          = withObject "ForwardingRulesScopedListWarning"
-              (\ o ->
-                 ForwardingRulesScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON ForwardingRulesScopedListWarning
-         where
-        toJSON ForwardingRulesScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _frslwData,
-                  ("code" .=) <$> _frslwCode,
-                  ("message" .=) <$> _frslwMessage])
-
--- | Contains a list of HttpHealthCheck resources.
---
--- /See:/ 'hTTPHealthCheckList' smart constructor.
-data HTTPHealthCheckList = HTTPHealthCheckList'
-    { _httphclNextPageToken :: !(Maybe Text)
-    , _httphclKind          :: !Text
-    , _httphclItems         :: !(Maybe [HTTPHealthCheck])
-    , _httphclSelfLink      :: !(Maybe Text)
-    , _httphclId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HTTPHealthCheckList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'httphclNextPageToken'
---
--- * 'httphclKind'
---
--- * 'httphclItems'
---
--- * 'httphclSelfLink'
---
--- * 'httphclId'
-hTTPHealthCheckList
-    :: HTTPHealthCheckList
-hTTPHealthCheckList =
-    HTTPHealthCheckList'
-    { _httphclNextPageToken = Nothing
-    , _httphclKind = "compute#httpHealthCheckList"
-    , _httphclItems = Nothing
-    , _httphclSelfLink = Nothing
-    , _httphclId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)
-httphclNextPageToken
-  = lens _httphclNextPageToken
-      (\ s a -> s{_httphclNextPageToken = a})
-
--- | Type of resource.
-httphclKind :: Lens' HTTPHealthCheckList Text
-httphclKind
-  = lens _httphclKind (\ s a -> s{_httphclKind = a})
-
--- | A list of HttpHealthCheck resources.
-httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]
-httphclItems
-  = lens _httphclItems (\ s a -> s{_httphclItems = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)
-httphclSelfLink
-  = lens _httphclSelfLink
-      (\ s a -> s{_httphclSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource. Defined by the server.
-httphclId :: Lens' HTTPHealthCheckList (Maybe Text)
-httphclId
-  = lens _httphclId (\ s a -> s{_httphclId = a})
-
-instance FromJSON HTTPHealthCheckList where
-        parseJSON
-          = withObject "HTTPHealthCheckList"
-              (\ o ->
-                 HTTPHealthCheckList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#httpHealthCheckList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON HTTPHealthCheckList where
-        toJSON HTTPHealthCheckList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _httphclNextPageToken,
-                  Just ("kind" .= _httphclKind),
-                  ("items" .=) <$> _httphclItems,
-                  ("selfLink" .=) <$> _httphclSelfLink,
-                  ("id" .=) <$> _httphclId])
-
--- | [Output Only] The warning that replaces the list of managed instance
--- groups when the list is empty.
---
--- /See:/ 'instanceGroupManagersScopedListWarning' smart constructor.
-data InstanceGroupManagersScopedListWarning = InstanceGroupManagersScopedListWarning'
-    { _igmslwData    :: !(Maybe [InstanceGroupManagersScopedListWarningDataItem])
-    , _igmslwCode    :: !(Maybe InstanceGroupManagersScopedListWarningCode)
-    , _igmslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmslwData'
---
--- * 'igmslwCode'
---
--- * 'igmslwMessage'
-instanceGroupManagersScopedListWarning
-    :: InstanceGroupManagersScopedListWarning
-instanceGroupManagersScopedListWarning =
-    InstanceGroupManagersScopedListWarning'
-    { _igmslwData = Nothing
-    , _igmslwCode = Nothing
-    , _igmslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]
-igmslwData
-  = lens _igmslwData (\ s a -> s{_igmslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)
-igmslwCode
-  = lens _igmslwCode (\ s a -> s{_igmslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)
-igmslwMessage
-  = lens _igmslwMessage
-      (\ s a -> s{_igmslwMessage = a})
-
-instance FromJSON
-         InstanceGroupManagersScopedListWarning where
-        parseJSON
-          = withObject "InstanceGroupManagersScopedListWarning"
-              (\ o ->
-                 InstanceGroupManagersScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON
-         InstanceGroupManagersScopedListWarning where
-        toJSON InstanceGroupManagersScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _igmslwData,
-                  ("code" .=) <$> _igmslwCode,
-                  ("message" .=) <$> _igmslwMessage])
-
---
--- /See:/ 'urlMapsValidateRequest' smart constructor.
-newtype URLMapsValidateRequest = URLMapsValidateRequest'
-    { _umvrResource :: Maybe URLMap
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapsValidateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umvrResource'
-urlMapsValidateRequest
-    :: URLMapsValidateRequest
-urlMapsValidateRequest =
-    URLMapsValidateRequest'
-    { _umvrResource = Nothing
-    }
-
--- | Content of the UrlMap to be validated.
-umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)
-umvrResource
-  = lens _umvrResource (\ s a -> s{_umvrResource = a})
-
-instance FromJSON URLMapsValidateRequest where
-        parseJSON
-          = withObject "URLMapsValidateRequest"
-              (\ o ->
-                 URLMapsValidateRequest' <$> (o .:? "resource"))
-
-instance ToJSON URLMapsValidateRequest where
-        toJSON URLMapsValidateRequest'{..}
-          = object
-              (catMaybes [("resource" .=) <$> _umvrResource])
-
---
--- /See:/ 'instanceGroupManagersSetTargetPoolsRequest' smart constructor.
-data InstanceGroupManagersSetTargetPoolsRequest = InstanceGroupManagersSetTargetPoolsRequest'
-    { _igmstprFingerprint :: !(Maybe Bytes)
-    , _igmstprTargetPools :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupManagersSetTargetPoolsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igmstprFingerprint'
---
--- * 'igmstprTargetPools'
-instanceGroupManagersSetTargetPoolsRequest
-    :: InstanceGroupManagersSetTargetPoolsRequest
-instanceGroupManagersSetTargetPoolsRequest =
-    InstanceGroupManagersSetTargetPoolsRequest'
-    { _igmstprFingerprint = Nothing
-    , _igmstprTargetPools = Nothing
-    }
-
--- | The fingerprint of the target pools information. Use this optional
--- property to prevent conflicts when multiple users change the target
--- pools settings concurrently. Obtain the fingerprint with the
--- instanceGroupManagers.get method. Then, include the fingerprint in your
--- request to ensure that you do not overwrite changes that were applied
--- from another concurrent request.
-igmstprFingerprint :: Lens' InstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)
-igmstprFingerprint
-  = lens _igmstprFingerprint
-      (\ s a -> s{_igmstprFingerprint = a})
-      . mapping _Bytes
-
--- | The list of target pool URLs that instances in this managed instance
--- group belong to. The managed instance group applies these target pools
--- to all of the instances in the group. Existing instances and new
--- instances in the group all receive these target pool settings.
-igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]
-igmstprTargetPools
-  = lens _igmstprTargetPools
-      (\ s a -> s{_igmstprTargetPools = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         InstanceGroupManagersSetTargetPoolsRequest where
-        parseJSON
-          = withObject
-              "InstanceGroupManagersSetTargetPoolsRequest"
-              (\ o ->
-                 InstanceGroupManagersSetTargetPoolsRequest' <$>
-                   (o .:? "fingerprint") <*>
-                     (o .:? "targetPools" .!= mempty))
-
-instance ToJSON
-         InstanceGroupManagersSetTargetPoolsRequest where
-        toJSON
-          InstanceGroupManagersSetTargetPoolsRequest'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _igmstprFingerprint,
-                  ("targetPools" .=) <$> _igmstprTargetPools])
-
--- | Contains a list of HttpsHealthCheck resources.
---
--- /See:/ 'httpsHealthCheckList' smart constructor.
-data HTTPSHealthCheckList = HTTPSHealthCheckList'
-    { _hhclNextPageToken :: !(Maybe Text)
-    , _hhclKind          :: !Text
-    , _hhclItems         :: !(Maybe [HTTPSHealthCheck])
-    , _hhclSelfLink      :: !(Maybe Text)
-    , _hhclId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HTTPSHealthCheckList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hhclNextPageToken'
---
--- * 'hhclKind'
---
--- * 'hhclItems'
---
--- * 'hhclSelfLink'
---
--- * 'hhclId'
-httpsHealthCheckList
-    :: HTTPSHealthCheckList
-httpsHealthCheckList =
-    HTTPSHealthCheckList'
-    { _hhclNextPageToken = Nothing
-    , _hhclKind = "compute#httpsHealthCheckList"
-    , _hhclItems = Nothing
-    , _hhclSelfLink = Nothing
-    , _hhclId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)
-hhclNextPageToken
-  = lens _hhclNextPageToken
-      (\ s a -> s{_hhclNextPageToken = a})
-
--- | Type of resource.
-hhclKind :: Lens' HTTPSHealthCheckList Text
-hhclKind = lens _hhclKind (\ s a -> s{_hhclKind = a})
-
--- | A list of HttpsHealthCheck resources.
-hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]
-hhclItems
-  = lens _hhclItems (\ s a -> s{_hhclItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)
-hhclSelfLink
-  = lens _hhclSelfLink (\ s a -> s{_hhclSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)
-hhclId = lens _hhclId (\ s a -> s{_hhclId = a})
-
-instance FromJSON HTTPSHealthCheckList where
-        parseJSON
-          = withObject "HTTPSHealthCheckList"
-              (\ o ->
-                 HTTPSHealthCheckList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#httpsHealthCheckList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON HTTPSHealthCheckList where
-        toJSON HTTPSHealthCheckList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _hhclNextPageToken,
-                  Just ("kind" .= _hhclKind),
-                  ("items" .=) <$> _hhclItems,
-                  ("selfLink" .=) <$> _hhclSelfLink,
-                  ("id" .=) <$> _hhclId])
-
---
--- /See:/ 'operationErrorErrorsItem' smart constructor.
-data OperationErrorErrorsItem = OperationErrorErrorsItem'
-    { _oeeiLocation :: !(Maybe Text)
-    , _oeeiCode     :: !(Maybe Text)
-    , _oeeiMessage  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oeeiLocation'
---
--- * 'oeeiCode'
---
--- * 'oeeiMessage'
-operationErrorErrorsItem
-    :: OperationErrorErrorsItem
-operationErrorErrorsItem =
-    OperationErrorErrorsItem'
-    { _oeeiLocation = Nothing
-    , _oeeiCode = Nothing
-    , _oeeiMessage = Nothing
-    }
-
--- | [Output Only] Indicates the field in the request that caused the error.
--- This property is optional.
-oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)
-oeeiLocation
-  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})
-
--- | [Output Only] The error type identifier for this error.
-oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)
-oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})
-
--- | [Output Only] An optional, human-readable error message.
-oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)
-oeeiMessage
-  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})
-
-instance FromJSON OperationErrorErrorsItem where
-        parseJSON
-          = withObject "OperationErrorErrorsItem"
-              (\ o ->
-                 OperationErrorErrorsItem' <$>
-                   (o .:? "location") <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON OperationErrorErrorsItem where
-        toJSON OperationErrorErrorsItem'{..}
-          = object
-              (catMaybes
-                 [("location" .=) <$> _oeeiLocation,
-                  ("code" .=) <$> _oeeiCode,
-                  ("message" .=) <$> _oeeiMessage])
-
--- | A license resource.
---
--- /See:/ 'license' smart constructor.
-data License = License'
-    { _lChargesUseFee :: !(Maybe Bool)
-    , _lKind          :: !Text
-    , _lSelfLink      :: !(Maybe Text)
-    , _lName          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'License' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lChargesUseFee'
---
--- * 'lKind'
---
--- * 'lSelfLink'
---
--- * 'lName'
-license
-    :: License
-license =
-    License'
-    { _lChargesUseFee = Nothing
-    , _lKind = "compute#license"
-    , _lSelfLink = Nothing
-    , _lName = Nothing
-    }
-
--- | [Output Only] If true, the customer will be charged license fee for
--- running software that contains this license on an instance.
-lChargesUseFee :: Lens' License (Maybe Bool)
-lChargesUseFee
-  = lens _lChargesUseFee
-      (\ s a -> s{_lChargesUseFee = a})
-
--- | [Output Only] Type of resource. Always compute#license for licenses.
-lKind :: Lens' License Text
-lKind = lens _lKind (\ s a -> s{_lKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-lSelfLink :: Lens' License (Maybe Text)
-lSelfLink
-  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})
-
--- | [Output Only] Name of the resource. The name is 1-63 characters long and
--- complies with RFC1035.
-lName :: Lens' License (Maybe Text)
-lName = lens _lName (\ s a -> s{_lName = a})
-
-instance FromJSON License where
-        parseJSON
-          = withObject "License"
-              (\ o ->
-                 License' <$>
-                   (o .:? "chargesUseFee") <*>
-                     (o .:? "kind" .!= "compute#license")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name"))
-
-instance ToJSON License where
-        toJSON License'{..}
-          = object
-              (catMaybes
-                 [("chargesUseFee" .=) <$> _lChargesUseFee,
-                  Just ("kind" .= _lKind),
-                  ("selfLink" .=) <$> _lSelfLink,
-                  ("name" .=) <$> _lName])
-
--- | A path-matching rule for a URL. If matched, will use the specified
--- BackendService to handle the traffic arriving at this URL.
---
--- /See:/ 'pathRule' smart constructor.
-data PathRule = PathRule'
-    { _prService :: !(Maybe Text)
-    , _prPaths   :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PathRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prService'
---
--- * 'prPaths'
-pathRule
-    :: PathRule
-pathRule =
-    PathRule'
-    { _prService = Nothing
-    , _prPaths = Nothing
-    }
-
--- | The URL of the BackendService resource if this rule is matched.
-prService :: Lens' PathRule (Maybe Text)
-prService
-  = lens _prService (\ s a -> s{_prService = a})
-
--- | The list of path patterns to match. Each must start with \/ and the only
--- place a * is allowed is at the end following a \/. The string fed to the
--- path matcher does not include any text after the first ? or #, and those
--- chars are not allowed here.
-prPaths :: Lens' PathRule [Text]
-prPaths
-  = lens _prPaths (\ s a -> s{_prPaths = a}) . _Default
-      . _Coerce
-
-instance FromJSON PathRule where
-        parseJSON
-          = withObject "PathRule"
-              (\ o ->
-                 PathRule' <$>
-                   (o .:? "service") <*> (o .:? "paths" .!= mempty))
-
-instance ToJSON PathRule where
-        toJSON PathRule'{..}
-          = object
-              (catMaybes
-                 [("service" .=) <$> _prService,
-                  ("paths" .=) <$> _prPaths])
-
--- | Contains a list of instances.
---
--- /See:/ 'instanceList' smart constructor.
-data InstanceList = InstanceList'
-    { _insNextPageToken :: !(Maybe Text)
-    , _insKind          :: !Text
-    , _insItems         :: !(Maybe [Instance])
-    , _insSelfLink      :: !(Maybe Text)
-    , _insId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'insNextPageToken'
---
--- * 'insKind'
---
--- * 'insItems'
---
--- * 'insSelfLink'
---
--- * 'insId'
-instanceList
-    :: InstanceList
-instanceList =
-    InstanceList'
-    { _insNextPageToken = Nothing
-    , _insKind = "compute#instanceList"
-    , _insItems = Nothing
-    , _insSelfLink = Nothing
-    , _insId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-insNextPageToken :: Lens' InstanceList (Maybe Text)
-insNextPageToken
-  = lens _insNextPageToken
-      (\ s a -> s{_insNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#instanceList for lists of
--- Instance resources.
-insKind :: Lens' InstanceList Text
-insKind = lens _insKind (\ s a -> s{_insKind = a})
-
--- | [Output Only] A list of instances.
-insItems :: Lens' InstanceList [Instance]
-insItems
-  = lens _insItems (\ s a -> s{_insItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-insSelfLink :: Lens' InstanceList (Maybe Text)
-insSelfLink
-  = lens _insSelfLink (\ s a -> s{_insSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-insId :: Lens' InstanceList (Maybe Text)
-insId = lens _insId (\ s a -> s{_insId = a})
-
-instance FromJSON InstanceList where
-        parseJSON
-          = withObject "InstanceList"
-              (\ o ->
-                 InstanceList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#instanceList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON InstanceList where
-        toJSON InstanceList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _insNextPageToken,
-                  Just ("kind" .= _insKind),
-                  ("items" .=) <$> _insItems,
-                  ("selfLink" .=) <$> _insSelfLink,
-                  ("id" .=) <$> _insId])
-
--- | [Output] A map of scoped Subnetwork lists.
---
--- /See:/ 'subnetworkAggregatedListItems' smart constructor.
-newtype SubnetworkAggregatedListItems = SubnetworkAggregatedListItems'
-    { _saliAddtional :: HashMap Text SubnetworksScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubnetworkAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saliAddtional'
-subnetworkAggregatedListItems
-    :: HashMap Text SubnetworksScopedList -- ^ 'saliAddtional'
-    -> SubnetworkAggregatedListItems
-subnetworkAggregatedListItems pSaliAddtional_ =
-    SubnetworkAggregatedListItems'
-    { _saliAddtional = _Coerce # pSaliAddtional_
-    }
-
--- | Name of the scope containing this set of Subnetworks.
-saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)
-saliAddtional
-  = lens _saliAddtional
-      (\ s a -> s{_saliAddtional = a})
-      . _Coerce
-
-instance FromJSON SubnetworkAggregatedListItems where
-        parseJSON
-          = withObject "SubnetworkAggregatedListItems"
-              (\ o ->
-                 SubnetworkAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON SubnetworkAggregatedListItems where
-        toJSON = toJSON . _saliAddtional
-
---
--- /See:/ 'managedInstanceLastAttempt' smart constructor.
-newtype ManagedInstanceLastAttempt = ManagedInstanceLastAttempt'
-    { _milaErrors :: Maybe ManagedInstanceLastAttemptErrors
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedInstanceLastAttempt' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'milaErrors'
-managedInstanceLastAttempt
-    :: ManagedInstanceLastAttempt
-managedInstanceLastAttempt =
-    ManagedInstanceLastAttempt'
-    { _milaErrors = Nothing
-    }
-
--- | [Output Only] Encountered errors during the last attempt to create or
--- delete the instance.
-milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)
-milaErrors
-  = lens _milaErrors (\ s a -> s{_milaErrors = a})
-
-instance FromJSON ManagedInstanceLastAttempt where
-        parseJSON
-          = withObject "ManagedInstanceLastAttempt"
-              (\ o ->
-                 ManagedInstanceLastAttempt' <$> (o .:? "errors"))
-
-instance ToJSON ManagedInstanceLastAttempt where
-        toJSON ManagedInstanceLastAttempt'{..}
-          = object (catMaybes [("errors" .=) <$> _milaErrors])
-
--- | Contains a list of BackendService resources.
---
--- /See:/ 'backendServiceList' smart constructor.
-data BackendServiceList = BackendServiceList'
-    { _bslNextPageToken :: !(Maybe Text)
-    , _bslKind          :: !Text
-    , _bslItems         :: !(Maybe [BackendService])
-    , _bslSelfLink      :: !(Maybe Text)
-    , _bslId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServiceList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bslNextPageToken'
---
--- * 'bslKind'
---
--- * 'bslItems'
---
--- * 'bslSelfLink'
---
--- * 'bslId'
-backendServiceList
-    :: BackendServiceList
-backendServiceList =
-    BackendServiceList'
-    { _bslNextPageToken = Nothing
-    , _bslKind = "compute#backendServiceList"
-    , _bslItems = Nothing
-    , _bslSelfLink = Nothing
-    , _bslId = Nothing
-    }
-
--- | [Output Only] A token used to continue a truncated list request.
-bslNextPageToken :: Lens' BackendServiceList (Maybe Text)
-bslNextPageToken
-  = lens _bslNextPageToken
-      (\ s a -> s{_bslNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#backendServiceList for
--- lists of backend services.
-bslKind :: Lens' BackendServiceList Text
-bslKind = lens _bslKind (\ s a -> s{_bslKind = a})
-
--- | A list of BackendService resources.
-bslItems :: Lens' BackendServiceList [BackendService]
-bslItems
-  = lens _bslItems (\ s a -> s{_bslItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-bslSelfLink :: Lens' BackendServiceList (Maybe Text)
-bslSelfLink
-  = lens _bslSelfLink (\ s a -> s{_bslSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-bslId :: Lens' BackendServiceList (Maybe Text)
-bslId = lens _bslId (\ s a -> s{_bslId = a})
-
-instance FromJSON BackendServiceList where
-        parseJSON
-          = withObject "BackendServiceList"
-              (\ o ->
-                 BackendServiceList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#backendServiceList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON BackendServiceList where
-        toJSON BackendServiceList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _bslNextPageToken,
-                  Just ("kind" .= _bslKind),
-                  ("items" .=) <$> _bslItems,
-                  ("selfLink" .=) <$> _bslSelfLink,
-                  ("id" .=) <$> _bslId])
-
--- | [Output Only] An informational warning that replaces the list of
--- instance groups when the list is empty.
---
--- /See:/ 'instanceGroupsScopedListWarning' smart constructor.
-data InstanceGroupsScopedListWarning = InstanceGroupsScopedListWarning'
-    { _igslwData    :: !(Maybe [InstanceGroupsScopedListWarningDataItem])
-    , _igslwCode    :: !(Maybe InstanceGroupsScopedListWarningCode)
-    , _igslwMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsScopedListWarning' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igslwData'
---
--- * 'igslwCode'
---
--- * 'igslwMessage'
-instanceGroupsScopedListWarning
-    :: InstanceGroupsScopedListWarning
-instanceGroupsScopedListWarning =
-    InstanceGroupsScopedListWarning'
-    { _igslwData = Nothing
-    , _igslwCode = Nothing
-    , _igslwMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]
-igslwData
-  = lens _igslwData (\ s a -> s{_igslwData = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)
-igslwCode
-  = lens _igslwCode (\ s a -> s{_igslwCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)
-igslwMessage
-  = lens _igslwMessage (\ s a -> s{_igslwMessage = a})
-
-instance FromJSON InstanceGroupsScopedListWarning
-         where
-        parseJSON
-          = withObject "InstanceGroupsScopedListWarning"
-              (\ o ->
-                 InstanceGroupsScopedListWarning' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON InstanceGroupsScopedListWarning where
-        toJSON InstanceGroupsScopedListWarning'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _igslwData,
-                  ("code" .=) <$> _igslwCode,
-                  ("message" .=) <$> _igslwMessage])
-
--- | CPU utilization policy.
---
--- /See:/ 'autoscalingPolicyCPUUtilization' smart constructor.
-newtype AutoscalingPolicyCPUUtilization = AutoscalingPolicyCPUUtilization'
-    { _apcuUtilizationTarget :: Maybe (Textual Double)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoscalingPolicyCPUUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'apcuUtilizationTarget'
-autoscalingPolicyCPUUtilization
-    :: AutoscalingPolicyCPUUtilization
-autoscalingPolicyCPUUtilization =
-    AutoscalingPolicyCPUUtilization'
-    { _apcuUtilizationTarget = Nothing
-    }
-
--- | The target CPU utilization that the autoscaler should maintain. Must be
--- a float value in the range (0, 1]. If not specified, the default is 0.6.
--- If the CPU level is below the target utilization, the autoscaler scales
--- down the number of instances until it reaches the minimum number of
--- instances you specified or until the average CPU of your instances
--- reaches the target utilization. If the average CPU is above the target
--- utilization, the autoscaler scales up until it reaches the maximum
--- number of instances you specified or until the average utilization
--- reaches the target utilization.
-apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)
-apcuUtilizationTarget
-  = lens _apcuUtilizationTarget
-      (\ s a -> s{_apcuUtilizationTarget = a})
-      . mapping _Coerce
-
-instance FromJSON AutoscalingPolicyCPUUtilization
-         where
-        parseJSON
-          = withObject "AutoscalingPolicyCPUUtilization"
-              (\ o ->
-                 AutoscalingPolicyCPUUtilization' <$>
-                   (o .:? "utilizationTarget"))
-
-instance ToJSON AutoscalingPolicyCPUUtilization where
-        toJSON AutoscalingPolicyCPUUtilization'{..}
-          = object
-              (catMaybes
-                 [("utilizationTarget" .=) <$>
-                    _apcuUtilizationTarget])
-
---
--- /See:/ 'instanceGroupsScopedListWarningDataItem' smart constructor.
-data InstanceGroupsScopedListWarningDataItem = InstanceGroupsScopedListWarningDataItem'
-    { _igslwdiValue :: !(Maybe Text)
-    , _igslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igslwdiValue'
---
--- * 'igslwdiKey'
-instanceGroupsScopedListWarningDataItem
-    :: InstanceGroupsScopedListWarningDataItem
-instanceGroupsScopedListWarningDataItem =
-    InstanceGroupsScopedListWarningDataItem'
-    { _igslwdiValue = Nothing
-    , _igslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
-igslwdiValue
-  = lens _igslwdiValue (\ s a -> s{_igslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
-igslwdiKey
-  = lens _igslwdiKey (\ s a -> s{_igslwdiKey = a})
-
-instance FromJSON
-         InstanceGroupsScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "InstanceGroupsScopedListWarningDataItem"
-              (\ o ->
-                 InstanceGroupsScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         InstanceGroupsScopedListWarningDataItem where
-        toJSON InstanceGroupsScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _igslwdiValue,
-                  ("key" .=) <$> _igslwdiKey])
-
---
--- /See:/ 'resourceGroupReference' smart constructor.
-newtype ResourceGroupReference = ResourceGroupReference'
-    { _rgrGroup :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ResourceGroupReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rgrGroup'
-resourceGroupReference
-    :: ResourceGroupReference
-resourceGroupReference =
-    ResourceGroupReference'
-    { _rgrGroup = Nothing
-    }
-
--- | A URI referencing one of the instance groups listed in the backend
--- service.
-rgrGroup :: Lens' ResourceGroupReference (Maybe Text)
-rgrGroup = lens _rgrGroup (\ s a -> s{_rgrGroup = a})
-
-instance FromJSON ResourceGroupReference where
-        parseJSON
-          = withObject "ResourceGroupReference"
-              (\ o -> ResourceGroupReference' <$> (o .:? "group"))
-
-instance ToJSON ResourceGroupReference where
-        toJSON ResourceGroupReference'{..}
-          = object (catMaybes [("group" .=) <$> _rgrGroup])
-
--- | Represents a Firewall resource.
---
--- /See:/ 'firewall' smart constructor.
-data Firewall = Firewall'
-    { _fSourceTags        :: !(Maybe [Text])
-    , _fKind              :: !Text
-    , _fTargetTags        :: !(Maybe [Text])
-    , _fNetwork           :: !(Maybe Text)
-    , _fSourceRanges      :: !(Maybe [Text])
-    , _fSelfLink          :: !(Maybe Text)
-    , _fName              :: !(Maybe Text)
-    , _fCreationTimestamp :: !(Maybe Text)
-    , _fId                :: !(Maybe (Textual Word64))
-    , _fAllowed           :: !(Maybe [FirewallAllowedItem])
-    , _fDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Firewall' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fSourceTags'
---
--- * 'fKind'
---
--- * 'fTargetTags'
---
--- * 'fNetwork'
---
--- * 'fSourceRanges'
---
--- * 'fSelfLink'
---
--- * 'fName'
---
--- * 'fCreationTimestamp'
---
--- * 'fId'
---
--- * 'fAllowed'
---
--- * 'fDescription'
-firewall
-    :: Firewall
-firewall =
-    Firewall'
-    { _fSourceTags = Nothing
-    , _fKind = "compute#firewall"
-    , _fTargetTags = Nothing
-    , _fNetwork = Nothing
-    , _fSourceRanges = Nothing
-    , _fSelfLink = Nothing
-    , _fName = Nothing
-    , _fCreationTimestamp = Nothing
-    , _fId = Nothing
-    , _fAllowed = Nothing
-    , _fDescription = Nothing
-    }
-
--- | If source tags are specified, the firewall will apply only to traffic
--- with source IP that belongs to a tag listed in source tags. Source tags
--- cannot be used to control traffic to an instance\'s external IP address.
--- Because tags are associated with an instance, not an IP address. One or
--- both of sourceRanges and sourceTags may be set. If both properties are
--- set, the firewall will apply to traffic that has source IP address
--- within sourceRanges OR the source IP that belongs to a tag listed in the
--- sourceTags property. The connection does not need to match both
--- properties for the firewall to apply.
-fSourceTags :: Lens' Firewall [Text]
-fSourceTags
-  = lens _fSourceTags (\ s a -> s{_fSourceTags = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Ony] Type of the resource. Always compute#firewall for firewall
--- rules.
-fKind :: Lens' Firewall Text
-fKind = lens _fKind (\ s a -> s{_fKind = a})
-
--- | A list of instance tags indicating sets of instances located in the
--- network that may make network connections as specified in allowed[]. If
--- no targetTags are specified, the firewall rule applies to all instances
--- on the specified network.
-fTargetTags :: Lens' Firewall [Text]
-fTargetTags
-  = lens _fTargetTags (\ s a -> s{_fTargetTags = a}) .
-      _Default
-      . _Coerce
-
--- | URL of the network resource for this firewall rule. If not specified
--- when creating a firewall rule, the default network is used:
--- global\/networks\/default If you choose to specify this property, you
--- can specify the network as a full or partial URL. For example, the
--- following are all valid URLs: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/myproject\/global\/networks\/my-network
--- - projects\/myproject\/global\/networks\/my-network -
--- global\/networks\/default
-fNetwork :: Lens' Firewall (Maybe Text)
-fNetwork = lens _fNetwork (\ s a -> s{_fNetwork = a})
-
--- | If source ranges are specified, the firewall will apply only to traffic
--- that has source IP address in these ranges. These ranges must be
--- expressed in CIDR format. One or both of sourceRanges and sourceTags may
--- be set. If both properties are set, the firewall will apply to traffic
--- that has source IP address within sourceRanges OR the source IP that
--- belongs to a tag listed in the sourceTags property. The connection does
--- not need to match both properties for the firewall to apply. Only IPv4
--- is supported.
-fSourceRanges :: Lens' Firewall [Text]
-fSourceRanges
-  = lens _fSourceRanges
-      (\ s a -> s{_fSourceRanges = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for the resource.
-fSelfLink :: Lens' Firewall (Maybe Text)
-fSelfLink
-  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})
-
--- | Name of the resource; provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-fName :: Lens' Firewall (Maybe Text)
-fName = lens _fName (\ s a -> s{_fName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-fCreationTimestamp :: Lens' Firewall (Maybe Text)
-fCreationTimestamp
-  = lens _fCreationTimestamp
-      (\ s a -> s{_fCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-fId :: Lens' Firewall (Maybe Word64)
-fId
-  = lens _fId (\ s a -> s{_fId = a}) . mapping _Coerce
-
--- | The list of ALLOW rules specified by this firewall. Each rule specifies
--- a protocol and port-range tuple that describes a permitted connection.
-fAllowed :: Lens' Firewall [FirewallAllowedItem]
-fAllowed
-  = lens _fAllowed (\ s a -> s{_fAllowed = a}) .
-      _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-fDescription :: Lens' Firewall (Maybe Text)
-fDescription
-  = lens _fDescription (\ s a -> s{_fDescription = a})
-
-instance FromJSON Firewall where
-        parseJSON
-          = withObject "Firewall"
-              (\ o ->
-                 Firewall' <$>
-                   (o .:? "sourceTags" .!= mempty) <*>
-                     (o .:? "kind" .!= "compute#firewall")
-                     <*> (o .:? "targetTags" .!= mempty)
-                     <*> (o .:? "network")
-                     <*> (o .:? "sourceRanges" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "allowed" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON Firewall where
-        toJSON Firewall'{..}
-          = object
-              (catMaybes
-                 [("sourceTags" .=) <$> _fSourceTags,
-                  Just ("kind" .= _fKind),
-                  ("targetTags" .=) <$> _fTargetTags,
-                  ("network" .=) <$> _fNetwork,
-                  ("sourceRanges" .=) <$> _fSourceRanges,
-                  ("selfLink" .=) <$> _fSelfLink,
-                  ("name" .=) <$> _fName,
-                  ("creationTimestamp" .=) <$> _fCreationTimestamp,
-                  ("id" .=) <$> _fId, ("allowed" .=) <$> _fAllowed,
-                  ("description" .=) <$> _fDescription])
-
--- | UrlMaps A host-matching rule for a URL. If matched, will use the named
--- PathMatcher to select the BackendService.
---
--- /See:/ 'hostRule' smart constructor.
-data HostRule = HostRule'
-    { _hrHosts       :: !(Maybe [Text])
-    , _hrDescription :: !(Maybe Text)
-    , _hrPathMatcher :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HostRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hrHosts'
---
--- * 'hrDescription'
---
--- * 'hrPathMatcher'
-hostRule
-    :: HostRule
-hostRule =
-    HostRule'
-    { _hrHosts = Nothing
-    , _hrDescription = Nothing
-    , _hrPathMatcher = Nothing
-    }
-
--- | The list of host patterns to match. They must be valid hostnames, except
--- * will match any string of ([a-z0-9-.]*). In that case, * must be the
--- first character and must be followed in the pattern by either - or ..
-hrHosts :: Lens' HostRule [Text]
-hrHosts
-  = lens _hrHosts (\ s a -> s{_hrHosts = a}) . _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-hrDescription :: Lens' HostRule (Maybe Text)
-hrDescription
-  = lens _hrDescription
-      (\ s a -> s{_hrDescription = a})
-
--- | The name of the PathMatcher to use to match the path portion of the URL
--- if the hostRule matches the URL\'s host portion.
-hrPathMatcher :: Lens' HostRule (Maybe Text)
-hrPathMatcher
-  = lens _hrPathMatcher
-      (\ s a -> s{_hrPathMatcher = a})
-
-instance FromJSON HostRule where
-        parseJSON
-          = withObject "HostRule"
-              (\ o ->
-                 HostRule' <$>
-                   (o .:? "hosts" .!= mempty) <*> (o .:? "description")
-                     <*> (o .:? "pathMatcher"))
-
-instance ToJSON HostRule where
-        toJSON HostRule'{..}
-          = object
-              (catMaybes
-                 [("hosts" .=) <$> _hrHosts,
-                  ("description" .=) <$> _hrDescription,
-                  ("pathMatcher" .=) <$> _hrPathMatcher])
-
--- | A quotas entry.
---
--- /See:/ 'quota' smart constructor.
-data Quota = Quota'
-    { _qMetric :: !(Maybe QuotaMetric)
-    , _qLimit  :: !(Maybe (Textual Double))
-    , _qUsage  :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Quota' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qMetric'
---
--- * 'qLimit'
---
--- * 'qUsage'
-quota
-    :: Quota
-quota =
-    Quota'
-    { _qMetric = Nothing
-    , _qLimit = Nothing
-    , _qUsage = Nothing
-    }
-
--- | [Output Only] Name of the quota metric.
-qMetric :: Lens' Quota (Maybe QuotaMetric)
-qMetric = lens _qMetric (\ s a -> s{_qMetric = a})
-
--- | [Output Only] Quota limit for this metric.
-qLimit :: Lens' Quota (Maybe Double)
-qLimit
-  = lens _qLimit (\ s a -> s{_qLimit = a}) .
-      mapping _Coerce
-
--- | [Output Only] Current usage of this metric.
-qUsage :: Lens' Quota (Maybe Double)
-qUsage
-  = lens _qUsage (\ s a -> s{_qUsage = a}) .
-      mapping _Coerce
-
-instance FromJSON Quota where
-        parseJSON
-          = withObject "Quota"
-              (\ o ->
-                 Quota' <$>
-                   (o .:? "metric") <*> (o .:? "limit") <*>
-                     (o .:? "usage"))
-
-instance ToJSON Quota where
-        toJSON Quota'{..}
-          = object
-              (catMaybes
-                 [("metric" .=) <$> _qMetric,
-                  ("limit" .=) <$> _qLimit, ("usage" .=) <$> _qUsage])
-
---
--- /See:/ 'instanceGroup' smart constructor.
-data InstanceGroup = InstanceGroup'
-    { _iiSize              :: !(Maybe (Textual Int32))
-    , _iiKind              :: !Text
-    , _iiFingerprint       :: !(Maybe Bytes)
-    , _iiNetwork           :: !(Maybe Text)
-    , _iiZone              :: !(Maybe Text)
-    , _iiSelfLink          :: !(Maybe Text)
-    , _iiName              :: !(Maybe Text)
-    , _iiCreationTimestamp :: !(Maybe Text)
-    , _iiSubnetwork        :: !(Maybe Text)
-    , _iiId                :: !(Maybe (Textual Word64))
-    , _iiRegion            :: !(Maybe Text)
-    , _iiDescription       :: !(Maybe Text)
-    , _iiNamedPorts        :: !(Maybe [NamedPort])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiSize'
---
--- * 'iiKind'
---
--- * 'iiFingerprint'
---
--- * 'iiNetwork'
---
--- * 'iiZone'
---
--- * 'iiSelfLink'
---
--- * 'iiName'
---
--- * 'iiCreationTimestamp'
---
--- * 'iiSubnetwork'
---
--- * 'iiId'
---
--- * 'iiRegion'
---
--- * 'iiDescription'
---
--- * 'iiNamedPorts'
-instanceGroup
-    :: InstanceGroup
-instanceGroup =
-    InstanceGroup'
-    { _iiSize = Nothing
-    , _iiKind = "compute#instanceGroup"
-    , _iiFingerprint = Nothing
-    , _iiNetwork = Nothing
-    , _iiZone = Nothing
-    , _iiSelfLink = Nothing
-    , _iiName = Nothing
-    , _iiCreationTimestamp = Nothing
-    , _iiSubnetwork = Nothing
-    , _iiId = Nothing
-    , _iiRegion = Nothing
-    , _iiDescription = Nothing
-    , _iiNamedPorts = Nothing
-    }
-
--- | [Output Only] The total number of instances in the instance group.
-iiSize :: Lens' InstanceGroup (Maybe Int32)
-iiSize
-  = lens _iiSize (\ s a -> s{_iiSize = a}) .
-      mapping _Coerce
-
--- | [Output Only] The resource type, which is always compute#instanceGroup
--- for instance groups.
-iiKind :: Lens' InstanceGroup Text
-iiKind = lens _iiKind (\ s a -> s{_iiKind = a})
-
--- | [Output Only] The fingerprint of the named ports. The system uses this
--- fingerprint to detect conflicts when multiple users change the named
--- ports concurrently.
-iiFingerprint :: Lens' InstanceGroup (Maybe ByteString)
-iiFingerprint
-  = lens _iiFingerprint
-      (\ s a -> s{_iiFingerprint = a})
-      . mapping _Bytes
-
--- | The URL of the network to which all instances in the instance group
--- belong.
-iiNetwork :: Lens' InstanceGroup (Maybe Text)
-iiNetwork
-  = lens _iiNetwork (\ s a -> s{_iiNetwork = a})
-
--- | [Output Only] The URL of the zone where the instance group is located
--- (for zonal resources).
-iiZone :: Lens' InstanceGroup (Maybe Text)
-iiZone = lens _iiZone (\ s a -> s{_iiZone = a})
-
--- | [Output Only] The URL for this instance group. The server generates this
--- URL.
-iiSelfLink :: Lens' InstanceGroup (Maybe Text)
-iiSelfLink
-  = lens _iiSelfLink (\ s a -> s{_iiSelfLink = a})
-
--- | The name of the instance group. The name must be 1-63 characters long,
--- and comply with RFC1035.
-iiName :: Lens' InstanceGroup (Maybe Text)
-iiName = lens _iiName (\ s a -> s{_iiName = a})
-
--- | [Output Only] The creation timestamp for this instance group in RFC3339
--- text format.
-iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)
-iiCreationTimestamp
-  = lens _iiCreationTimestamp
-      (\ s a -> s{_iiCreationTimestamp = a})
-
--- | The URL of the subnetwork to which all instances in the instance group
--- belong.
-iiSubnetwork :: Lens' InstanceGroup (Maybe Text)
-iiSubnetwork
-  = lens _iiSubnetwork (\ s a -> s{_iiSubnetwork = a})
-
--- | [Output Only] A unique identifier for this instance group, generated by
--- the server.
-iiId :: Lens' InstanceGroup (Maybe Word64)
-iiId
-  = lens _iiId (\ s a -> s{_iiId = a}) .
-      mapping _Coerce
-
--- | The URL of the region where the instance group is located (for regional
--- resources).
-iiRegion :: Lens' InstanceGroup (Maybe Text)
-iiRegion = lens _iiRegion (\ s a -> s{_iiRegion = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-iiDescription :: Lens' InstanceGroup (Maybe Text)
-iiDescription
-  = lens _iiDescription
-      (\ s a -> s{_iiDescription = a})
-
--- | Assigns a name to a port number. For example: {name: \"http\", port: 80}
--- This allows the system to reference ports by the assigned name instead
--- of a port number. Named ports can also contain multiple ports. For
--- example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] Named
--- ports apply to all instances in this instance group.
-iiNamedPorts :: Lens' InstanceGroup [NamedPort]
-iiNamedPorts
-  = lens _iiNamedPorts (\ s a -> s{_iiNamedPorts = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroup where
-        parseJSON
-          = withObject "InstanceGroup"
-              (\ o ->
-                 InstanceGroup' <$>
-                   (o .:? "size") <*>
-                     (o .:? "kind" .!= "compute#instanceGroup")
-                     <*> (o .:? "fingerprint")
-                     <*> (o .:? "network")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "subnetwork")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "description")
-                     <*> (o .:? "namedPorts" .!= mempty))
-
-instance ToJSON InstanceGroup where
-        toJSON InstanceGroup'{..}
-          = object
-              (catMaybes
-                 [("size" .=) <$> _iiSize, Just ("kind" .= _iiKind),
-                  ("fingerprint" .=) <$> _iiFingerprint,
-                  ("network" .=) <$> _iiNetwork,
-                  ("zone" .=) <$> _iiZone,
-                  ("selfLink" .=) <$> _iiSelfLink,
-                  ("name" .=) <$> _iiName,
-                  ("creationTimestamp" .=) <$> _iiCreationTimestamp,
-                  ("subnetwork" .=) <$> _iiSubnetwork,
-                  ("id" .=) <$> _iiId, ("region" .=) <$> _iiRegion,
-                  ("description" .=) <$> _iiDescription,
-                  ("namedPorts" .=) <$> _iiNamedPorts])
-
---
--- /See:/ 'routerInterface' smart constructor.
-data RouterInterface = RouterInterface'
-    { _riName            :: !(Maybe Text)
-    , _riIPRange         :: !(Maybe Text)
-    , _riLinkedVPNTunnel :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RouterInterface' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riName'
---
--- * 'riIPRange'
---
--- * 'riLinkedVPNTunnel'
-routerInterface
-    :: RouterInterface
-routerInterface =
-    RouterInterface'
-    { _riName = Nothing
-    , _riIPRange = Nothing
-    , _riLinkedVPNTunnel = Nothing
-    }
-
--- | Name of this interface entry. The name must be 1-63 characters long and
--- comply with RFC1035.
-riName :: Lens' RouterInterface (Maybe Text)
-riName = lens _riName (\ s a -> s{_riName = a})
-
--- | IP address and range of the interface. The IP range must be in the
--- RFC3927 link-local IP space. The value must be a CIDR-formatted string,
--- for example: 169.254.0.1\/30. NOTE: Do not truncate the address as it
--- represents the IP address of the interface.
-riIPRange :: Lens' RouterInterface (Maybe Text)
-riIPRange
-  = lens _riIPRange (\ s a -> s{_riIPRange = a})
-
--- | URI of linked VPN tunnel. It must be in the same region as the router.
--- Each interface can have at most one linked resource.
-riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)
-riLinkedVPNTunnel
-  = lens _riLinkedVPNTunnel
-      (\ s a -> s{_riLinkedVPNTunnel = a})
-
-instance FromJSON RouterInterface where
-        parseJSON
-          = withObject "RouterInterface"
-              (\ o ->
-                 RouterInterface' <$>
-                   (o .:? "name") <*> (o .:? "ipRange") <*>
-                     (o .:? "linkedVpnTunnel"))
-
-instance ToJSON RouterInterface where
-        toJSON RouterInterface'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _riName,
-                  ("ipRange" .=) <$> _riIPRange,
-                  ("linkedVpnTunnel" .=) <$> _riLinkedVPNTunnel])
-
--- | Contains a list of Snapshot resources.
---
--- /See:/ 'snapshotList' smart constructor.
-data SnapshotList = SnapshotList'
-    { _snaNextPageToken :: !(Maybe Text)
-    , _snaKind          :: !Text
-    , _snaItems         :: !(Maybe [Snapshot])
-    , _snaSelfLink      :: !(Maybe Text)
-    , _snaId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SnapshotList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'snaNextPageToken'
---
--- * 'snaKind'
---
--- * 'snaItems'
---
--- * 'snaSelfLink'
---
--- * 'snaId'
-snapshotList
-    :: SnapshotList
-snapshotList =
-    SnapshotList'
-    { _snaNextPageToken = Nothing
-    , _snaKind = "compute#snapshotList"
-    , _snaItems = Nothing
-    , _snaSelfLink = Nothing
-    , _snaId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-snaNextPageToken :: Lens' SnapshotList (Maybe Text)
-snaNextPageToken
-  = lens _snaNextPageToken
-      (\ s a -> s{_snaNextPageToken = a})
-
--- | Type of resource.
-snaKind :: Lens' SnapshotList Text
-snaKind = lens _snaKind (\ s a -> s{_snaKind = a})
-
--- | [Output Only] A list of Snapshot resources.
-snaItems :: Lens' SnapshotList [Snapshot]
-snaItems
-  = lens _snaItems (\ s a -> s{_snaItems = a}) .
-      _Default
-      . _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-snaSelfLink :: Lens' SnapshotList (Maybe Text)
-snaSelfLink
-  = lens _snaSelfLink (\ s a -> s{_snaSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-snaId :: Lens' SnapshotList (Maybe Text)
-snaId = lens _snaId (\ s a -> s{_snaId = a})
-
-instance FromJSON SnapshotList where
-        parseJSON
-          = withObject "SnapshotList"
-              (\ o ->
-                 SnapshotList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#snapshotList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON SnapshotList where
-        toJSON SnapshotList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _snaNextPageToken,
-                  Just ("kind" .= _snaKind),
-                  ("items" .=) <$> _snaItems,
-                  ("selfLink" .=) <$> _snaSelfLink,
-                  ("id" .=) <$> _snaId])
-
---
--- /See:/ 'testFailure' smart constructor.
-data TestFailure = TestFailure'
-    { _tfPath            :: !(Maybe Text)
-    , _tfExpectedService :: !(Maybe Text)
-    , _tfHost            :: !(Maybe Text)
-    , _tfActualService   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TestFailure' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tfPath'
---
--- * 'tfExpectedService'
---
--- * 'tfHost'
---
--- * 'tfActualService'
-testFailure
-    :: TestFailure
-testFailure =
-    TestFailure'
-    { _tfPath = Nothing
-    , _tfExpectedService = Nothing
-    , _tfHost = Nothing
-    , _tfActualService = Nothing
-    }
-
-tfPath :: Lens' TestFailure (Maybe Text)
-tfPath = lens _tfPath (\ s a -> s{_tfPath = a})
-
-tfExpectedService :: Lens' TestFailure (Maybe Text)
-tfExpectedService
-  = lens _tfExpectedService
-      (\ s a -> s{_tfExpectedService = a})
-
-tfHost :: Lens' TestFailure (Maybe Text)
-tfHost = lens _tfHost (\ s a -> s{_tfHost = a})
-
-tfActualService :: Lens' TestFailure (Maybe Text)
-tfActualService
-  = lens _tfActualService
-      (\ s a -> s{_tfActualService = a})
-
-instance FromJSON TestFailure where
-        parseJSON
-          = withObject "TestFailure"
-              (\ o ->
-                 TestFailure' <$>
-                   (o .:? "path") <*> (o .:? "expectedService") <*>
-                     (o .:? "host")
-                     <*> (o .:? "actualService"))
-
-instance ToJSON TestFailure where
-        toJSON TestFailure'{..}
-          = object
-              (catMaybes
-                 [("path" .=) <$> _tfPath,
-                  ("expectedService" .=) <$> _tfExpectedService,
-                  ("host" .=) <$> _tfHost,
-                  ("actualService" .=) <$> _tfActualService])
-
--- | An instance\'s serial console output.
---
--- /See:/ 'serialPortOutput' smart constructor.
-data SerialPortOutput = SerialPortOutput'
-    { _spoNext     :: !(Maybe (Textual Int64))
-    , _spoContents :: !(Maybe Text)
-    , _spoKind     :: !Text
-    , _spoStart    :: !(Maybe (Textual Int64))
-    , _spoSelfLink :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SerialPortOutput' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spoNext'
---
--- * 'spoContents'
---
--- * 'spoKind'
---
--- * 'spoStart'
---
--- * 'spoSelfLink'
-serialPortOutput
-    :: SerialPortOutput
-serialPortOutput =
-    SerialPortOutput'
-    { _spoNext = Nothing
-    , _spoContents = Nothing
-    , _spoKind = "compute#serialPortOutput"
-    , _spoStart = Nothing
-    , _spoSelfLink = Nothing
-    }
-
--- | [Output Only] The position of the next byte of content from the serial
--- console output. Use this value in the next request as the start
--- parameter.
-spoNext :: Lens' SerialPortOutput (Maybe Int64)
-spoNext
-  = lens _spoNext (\ s a -> s{_spoNext = a}) .
-      mapping _Coerce
-
--- | [Output Only] The contents of the console output.
-spoContents :: Lens' SerialPortOutput (Maybe Text)
-spoContents
-  = lens _spoContents (\ s a -> s{_spoContents = a})
-
--- | [Output Only] Type of the resource. Always compute#serialPortOutput for
--- serial port output.
-spoKind :: Lens' SerialPortOutput Text
-spoKind = lens _spoKind (\ s a -> s{_spoKind = a})
-
--- | [Output Only] The starting byte position of the output that was
--- returned. This should match the start parameter sent with the request.
--- If the serial console output exceeds the size of the buffer, older
--- output will be overwritten by newer content and the start values will be
--- mismatched.
-spoStart :: Lens' SerialPortOutput (Maybe Int64)
-spoStart
-  = lens _spoStart (\ s a -> s{_spoStart = a}) .
-      mapping _Coerce
-
--- | [Output Only] Server-defined URL for this resource.
-spoSelfLink :: Lens' SerialPortOutput (Maybe Text)
-spoSelfLink
-  = lens _spoSelfLink (\ s a -> s{_spoSelfLink = a})
-
-instance FromJSON SerialPortOutput where
-        parseJSON
-          = withObject "SerialPortOutput"
-              (\ o ->
-                 SerialPortOutput' <$>
-                   (o .:? "next") <*> (o .:? "contents") <*>
-                     (o .:? "kind" .!= "compute#serialPortOutput")
-                     <*> (o .:? "start")
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON SerialPortOutput where
-        toJSON SerialPortOutput'{..}
-          = object
-              (catMaybes
-                 [("next" .=) <$> _spoNext,
-                  ("contents" .=) <$> _spoContents,
-                  Just ("kind" .= _spoKind),
-                  ("start" .=) <$> _spoStart,
-                  ("selfLink" .=) <$> _spoSelfLink])
-
---
--- /See:/ 'targetVPNGatewayAggregatedList' smart constructor.
-data TargetVPNGatewayAggregatedList = TargetVPNGatewayAggregatedList'
-    { _tvgalNextPageToken :: !(Maybe Text)
-    , _tvgalKind          :: !Text
-    , _tvgalItems         :: !(Maybe TargetVPNGatewayAggregatedListItems)
-    , _tvgalSelfLink      :: !(Maybe Text)
-    , _tvgalId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewayAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgalNextPageToken'
---
--- * 'tvgalKind'
---
--- * 'tvgalItems'
---
--- * 'tvgalSelfLink'
---
--- * 'tvgalId'
-targetVPNGatewayAggregatedList
-    :: TargetVPNGatewayAggregatedList
-targetVPNGatewayAggregatedList =
-    TargetVPNGatewayAggregatedList'
-    { _tvgalNextPageToken = Nothing
-    , _tvgalKind = "compute#targetVpnGatewayAggregatedList"
-    , _tvgalItems = Nothing
-    , _tvgalSelfLink = Nothing
-    , _tvgalId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
-tvgalNextPageToken
-  = lens _tvgalNextPageToken
-      (\ s a -> s{_tvgalNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#targetVpnGateway for
--- target VPN gateways.
-tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text
-tvgalKind
-  = lens _tvgalKind (\ s a -> s{_tvgalKind = a})
-
--- | A map of scoped target vpn gateway lists.
-tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)
-tvgalItems
-  = lens _tvgalItems (\ s a -> s{_tvgalItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
-tvgalSelfLink
-  = lens _tvgalSelfLink
-      (\ s a -> s{_tvgalSelfLink = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
-tvgalId = lens _tvgalId (\ s a -> s{_tvgalId = a})
-
-instance FromJSON TargetVPNGatewayAggregatedList
-         where
-        parseJSON
-          = withObject "TargetVPNGatewayAggregatedList"
-              (\ o ->
-                 TargetVPNGatewayAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "compute#targetVpnGatewayAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON TargetVPNGatewayAggregatedList where
-        toJSON TargetVPNGatewayAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tvgalNextPageToken,
-                  Just ("kind" .= _tvgalKind),
-                  ("items" .=) <$> _tvgalItems,
-                  ("selfLink" .=) <$> _tvgalSelfLink,
-                  ("id" .=) <$> _tvgalId])
-
---
--- /See:/ 'metadataItemsItem' smart constructor.
-data MetadataItemsItem = MetadataItemsItem'
-    { _miiValue :: !(Maybe Text)
-    , _miiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'miiValue'
---
--- * 'miiKey'
-metadataItemsItem
-    :: MetadataItemsItem
-metadataItemsItem =
-    MetadataItemsItem'
-    { _miiValue = Nothing
-    , _miiKey = Nothing
-    }
-
--- | Value for the metadata entry. These are free-form strings, and only have
--- meaning as interpreted by the image running in the instance. The only
--- restriction placed on values is that their size must be less than or
--- equal to 32768 bytes.
-miiValue :: Lens' MetadataItemsItem (Maybe Text)
-miiValue = lens _miiValue (\ s a -> s{_miiValue = a})
-
--- | Key for the metadata entry. Keys must conform to the following regexp:
--- [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected
--- as part of a URL in the metadata server. Additionally, to avoid
--- ambiguity, keys must not conflict with any other metadata keys for the
--- project.
-miiKey :: Lens' MetadataItemsItem (Maybe Text)
-miiKey = lens _miiKey (\ s a -> s{_miiKey = a})
-
-instance FromJSON MetadataItemsItem where
-        parseJSON
-          = withObject "MetadataItemsItem"
-              (\ o ->
-                 MetadataItemsItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON MetadataItemsItem where
-        toJSON MetadataItemsItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _miiValue, ("key" .=) <$> _miiKey])
-
--- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.
---
--- /See:/ 'targetHTTPSProxy' smart constructor.
-data TargetHTTPSProxy = TargetHTTPSProxy'
-    { _thpURLMap            :: !(Maybe Text)
-    , _thpSSLCertificates   :: !(Maybe [Text])
-    , _thpKind              :: !Text
-    , _thpSelfLink          :: !(Maybe Text)
-    , _thpName              :: !(Maybe Text)
-    , _thpCreationTimestamp :: !(Maybe Text)
-    , _thpId                :: !(Maybe (Textual Word64))
-    , _thpDescription       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetHTTPSProxy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'thpURLMap'
---
--- * 'thpSSLCertificates'
---
--- * 'thpKind'
---
--- * 'thpSelfLink'
---
--- * 'thpName'
---
--- * 'thpCreationTimestamp'
---
--- * 'thpId'
---
--- * 'thpDescription'
-targetHTTPSProxy
-    :: TargetHTTPSProxy
-targetHTTPSProxy =
-    TargetHTTPSProxy'
-    { _thpURLMap = Nothing
-    , _thpSSLCertificates = Nothing
-    , _thpKind = "compute#targetHttpsProxy"
-    , _thpSelfLink = Nothing
-    , _thpName = Nothing
-    , _thpCreationTimestamp = Nothing
-    , _thpId = Nothing
-    , _thpDescription = Nothing
-    }
-
--- | A fully-qualified or valid partial URL to the UrlMap resource that
--- defines the mapping from URL to the BackendService. For example, the
--- following are all valid URLs for specifying a URL map: -
--- https:\/\/www.googleapis.compute\/v1\/projects\/project\/global\/urlMaps\/url-map
--- - projects\/project\/global\/urlMaps\/url-map - global\/urlMaps\/url-map
-thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)
-thpURLMap
-  = lens _thpURLMap (\ s a -> s{_thpURLMap = a})
-
--- | URLs to SslCertificate resources that are used to authenticate
--- connections between users and the load balancer. Currently, exactly one
--- SSL certificate must be specified.
-thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]
-thpSSLCertificates
-  = lens _thpSSLCertificates
-      (\ s a -> s{_thpSSLCertificates = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Type of resource. Always compute#targetHttpsProxy for
--- target HTTPS proxies.
-thpKind :: Lens' TargetHTTPSProxy Text
-thpKind = lens _thpKind (\ s a -> s{_thpKind = a})
-
--- | [Output Only] Server-defined URL for the resource.
-thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)
-thpSelfLink
-  = lens _thpSelfLink (\ s a -> s{_thpSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-thpName :: Lens' TargetHTTPSProxy (Maybe Text)
-thpName = lens _thpName (\ s a -> s{_thpName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)
-thpCreationTimestamp
-  = lens _thpCreationTimestamp
-      (\ s a -> s{_thpCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-thpId :: Lens' TargetHTTPSProxy (Maybe Word64)
-thpId
-  = lens _thpId (\ s a -> s{_thpId = a}) .
-      mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)
-thpDescription
-  = lens _thpDescription
-      (\ s a -> s{_thpDescription = a})
-
-instance FromJSON TargetHTTPSProxy where
-        parseJSON
-          = withObject "TargetHTTPSProxy"
-              (\ o ->
-                 TargetHTTPSProxy' <$>
-                   (o .:? "urlMap") <*>
-                     (o .:? "sslCertificates" .!= mempty)
-                     <*> (o .:? "kind" .!= "compute#targetHttpsProxy")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "description"))
-
-instance ToJSON TargetHTTPSProxy where
-        toJSON TargetHTTPSProxy'{..}
-          = object
-              (catMaybes
-                 [("urlMap" .=) <$> _thpURLMap,
-                  ("sslCertificates" .=) <$> _thpSSLCertificates,
-                  Just ("kind" .= _thpKind),
-                  ("selfLink" .=) <$> _thpSelfLink,
-                  ("name" .=) <$> _thpName,
-                  ("creationTimestamp" .=) <$> _thpCreationTimestamp,
-                  ("id" .=) <$> _thpId,
-                  ("description" .=) <$> _thpDescription])
-
--- | Message containing connection draining configuration.
---
--- /See:/ 'connectionDraining' smart constructor.
-newtype ConnectionDraining = ConnectionDraining'
-    { _cdDrainingTimeoutSec :: Maybe (Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ConnectionDraining' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdDrainingTimeoutSec'
-connectionDraining
-    :: ConnectionDraining
-connectionDraining =
-    ConnectionDraining'
-    { _cdDrainingTimeoutSec = Nothing
-    }
-
--- | Time for which instance will be drained (not accept new connections, but
--- still work to finish started).
-cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
-cdDrainingTimeoutSec
-  = lens _cdDrainingTimeoutSec
-      (\ s a -> s{_cdDrainingTimeoutSec = a})
-      . mapping _Coerce
-
-instance FromJSON ConnectionDraining where
-        parseJSON
-          = withObject "ConnectionDraining"
-              (\ o ->
-                 ConnectionDraining' <$> (o .:? "drainingTimeoutSec"))
-
-instance ToJSON ConnectionDraining where
-        toJSON ConnectionDraining'{..}
-          = object
-              (catMaybes
-                 [("drainingTimeoutSec" .=) <$>
-                    _cdDrainingTimeoutSec])
-
---
--- /See:/ 'cacheInvalidationRule' smart constructor.
-data CacheInvalidationRule = CacheInvalidationRule'
-    { _cirPath :: !(Maybe Text)
-    , _cirHost :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CacheInvalidationRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cirPath'
---
--- * 'cirHost'
-cacheInvalidationRule
-    :: CacheInvalidationRule
-cacheInvalidationRule =
-    CacheInvalidationRule'
-    { _cirPath = Nothing
-    , _cirHost = Nothing
-    }
-
-cirPath :: Lens' CacheInvalidationRule (Maybe Text)
-cirPath = lens _cirPath (\ s a -> s{_cirPath = a})
-
--- | If set, this invalidation rule will only apply to requests with a Host
--- header matching host.
-cirHost :: Lens' CacheInvalidationRule (Maybe Text)
-cirHost = lens _cirHost (\ s a -> s{_cirHost = a})
-
-instance FromJSON CacheInvalidationRule where
-        parseJSON
-          = withObject "CacheInvalidationRule"
-              (\ o ->
-                 CacheInvalidationRule' <$>
-                   (o .:? "path") <*> (o .:? "host"))
-
-instance ToJSON CacheInvalidationRule where
-        toJSON CacheInvalidationRule'{..}
-          = object
-              (catMaybes
-                 [("path" .=) <$> _cirPath, ("host" .=) <$> _cirHost])
-
---
--- /See:/ 'targetVPNGatewaysScopedList' smart constructor.
-data TargetVPNGatewaysScopedList = TargetVPNGatewaysScopedList'
-    { _tvgslTargetVPNGateways :: !(Maybe [TargetVPNGateway])
-    , _tvgslWarning           :: !(Maybe TargetVPNGatewaysScopedListWarning)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetVPNGatewaysScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tvgslTargetVPNGateways'
---
--- * 'tvgslWarning'
-targetVPNGatewaysScopedList
-    :: TargetVPNGatewaysScopedList
-targetVPNGatewaysScopedList =
-    TargetVPNGatewaysScopedList'
-    { _tvgslTargetVPNGateways = Nothing
-    , _tvgslWarning = Nothing
-    }
-
--- | [Output Only] List of target vpn gateways contained in this scope.
-tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]
-tvgslTargetVPNGateways
-  = lens _tvgslTargetVPNGateways
-      (\ s a -> s{_tvgslTargetVPNGateways = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Informational warning which replaces the list of addresses
--- when the list is empty.
-tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)
-tvgslWarning
-  = lens _tvgslWarning (\ s a -> s{_tvgslWarning = a})
-
-instance FromJSON TargetVPNGatewaysScopedList where
-        parseJSON
-          = withObject "TargetVPNGatewaysScopedList"
-              (\ o ->
-                 TargetVPNGatewaysScopedList' <$>
-                   (o .:? "targetVpnGateways" .!= mempty) <*>
-                     (o .:? "warning"))
-
-instance ToJSON TargetVPNGatewaysScopedList where
-        toJSON TargetVPNGatewaysScopedList'{..}
-          = object
-              (catMaybes
-                 [("targetVpnGateways" .=) <$>
-                    _tvgslTargetVPNGateways,
-                  ("warning" .=) <$> _tvgslWarning])
-
--- | An access configuration attached to an instance\'s network interface.
--- Only one access config per instance is supported.
---
--- /See:/ 'accessConfig' smart constructor.
-data AccessConfig = AccessConfig'
-    { _acKind  :: !Text
-    , _acName  :: !(Maybe Text)
-    , _acNATIP :: !(Maybe Text)
-    , _acType  :: !AccessConfigType
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AccessConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acKind'
---
--- * 'acName'
---
--- * 'acNATIP'
---
--- * 'acType'
-accessConfig
-    :: AccessConfig
-accessConfig =
-    AccessConfig'
-    { _acKind = "compute#accessConfig"
-    , _acName = Nothing
-    , _acNATIP = Nothing
-    , _acType = OneToOneNAT
-    }
-
--- | [Output Only] Type of the resource. Always compute#accessConfig for
--- access configs.
-acKind :: Lens' AccessConfig Text
-acKind = lens _acKind (\ s a -> s{_acKind = a})
-
--- | Name of this access configuration.
-acName :: Lens' AccessConfig (Maybe Text)
-acName = lens _acName (\ s a -> s{_acName = a})
-
--- | An external IP address associated with this instance. Specify an unused
--- static external IP address available to the project or leave this field
--- undefined to use an IP from a shared ephemeral IP address pool. If you
--- specify a static external IP address, it must live in the same region as
--- the zone of the instance.
-acNATIP :: Lens' AccessConfig (Maybe Text)
-acNATIP = lens _acNATIP (\ s a -> s{_acNATIP = a})
-
--- | The type of configuration. The default and only option is
--- ONE_TO_ONE_NAT.
-acType :: Lens' AccessConfig AccessConfigType
-acType = lens _acType (\ s a -> s{_acType = a})
-
-instance FromJSON AccessConfig where
-        parseJSON
-          = withObject "AccessConfig"
-              (\ o ->
-                 AccessConfig' <$>
-                   (o .:? "kind" .!= "compute#accessConfig") <*>
-                     (o .:? "name")
-                     <*> (o .:? "natIP")
-                     <*> (o .:? "type" .!= OneToOneNAT))
-
-instance ToJSON AccessConfig where
-        toJSON AccessConfig'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _acKind), ("name" .=) <$> _acName,
-                  ("natIP" .=) <$> _acNATIP, Just ("type" .= _acType)])
-
---
--- /See:/ 'managedInstanceLastAttemptErrorsErrorsItem' smart constructor.
-data ManagedInstanceLastAttemptErrorsErrorsItem = ManagedInstanceLastAttemptErrorsErrorsItem'
-    { _milaeeiLocation :: !(Maybe Text)
-    , _milaeeiCode     :: !(Maybe Text)
-    , _milaeeiMessage  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedInstanceLastAttemptErrorsErrorsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'milaeeiLocation'
---
--- * 'milaeeiCode'
---
--- * 'milaeeiMessage'
-managedInstanceLastAttemptErrorsErrorsItem
-    :: ManagedInstanceLastAttemptErrorsErrorsItem
-managedInstanceLastAttemptErrorsErrorsItem =
-    ManagedInstanceLastAttemptErrorsErrorsItem'
-    { _milaeeiLocation = Nothing
-    , _milaeeiCode = Nothing
-    , _milaeeiMessage = Nothing
-    }
-
--- | [Output Only] Indicates the field in the request that caused the error.
--- This property is optional.
-milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
-milaeeiLocation
-  = lens _milaeeiLocation
-      (\ s a -> s{_milaeeiLocation = a})
-
--- | [Output Only] The error type identifier for this error.
-milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
-milaeeiCode
-  = lens _milaeeiCode (\ s a -> s{_milaeeiCode = a})
-
--- | [Output Only] An optional, human-readable error message.
-milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
-milaeeiMessage
-  = lens _milaeeiMessage
-      (\ s a -> s{_milaeeiMessage = a})
-
-instance FromJSON
-         ManagedInstanceLastAttemptErrorsErrorsItem where
-        parseJSON
-          = withObject
-              "ManagedInstanceLastAttemptErrorsErrorsItem"
-              (\ o ->
-                 ManagedInstanceLastAttemptErrorsErrorsItem' <$>
-                   (o .:? "location") <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON
-         ManagedInstanceLastAttemptErrorsErrorsItem where
-        toJSON
-          ManagedInstanceLastAttemptErrorsErrorsItem'{..}
-          = object
-              (catMaybes
-                 [("location" .=) <$> _milaeeiLocation,
-                  ("code" .=) <$> _milaeeiCode,
-                  ("message" .=) <$> _milaeeiMessage])
-
---
--- /See:/ 'instancesScopedListWarningDataItem' smart constructor.
-data InstancesScopedListWarningDataItem = InstancesScopedListWarningDataItem'
-    { _islwdiValue :: !(Maybe Text)
-    , _islwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'islwdiValue'
---
--- * 'islwdiKey'
-instancesScopedListWarningDataItem
-    :: InstancesScopedListWarningDataItem
-instancesScopedListWarningDataItem =
-    InstancesScopedListWarningDataItem'
-    { _islwdiValue = Nothing
-    , _islwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
-islwdiValue
-  = lens _islwdiValue (\ s a -> s{_islwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
-islwdiKey
-  = lens _islwdiKey (\ s a -> s{_islwdiKey = a})
-
-instance FromJSON InstancesScopedListWarningDataItem
-         where
-        parseJSON
-          = withObject "InstancesScopedListWarningDataItem"
-              (\ o ->
-                 InstancesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON InstancesScopedListWarningDataItem
-         where
-        toJSON InstancesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _islwdiValue,
-                  ("key" .=) <$> _islwdiKey])
-
---
--- /See:/ 'backendServicesScopedListWarningDataItem' smart constructor.
-data BackendServicesScopedListWarningDataItem = BackendServicesScopedListWarningDataItem'
-    { _bsslwdiValue :: !(Maybe Text)
-    , _bsslwdiKey   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendServicesScopedListWarningDataItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsslwdiValue'
---
--- * 'bsslwdiKey'
-backendServicesScopedListWarningDataItem
-    :: BackendServicesScopedListWarningDataItem
-backendServicesScopedListWarningDataItem =
-    BackendServicesScopedListWarningDataItem'
-    { _bsslwdiValue = Nothing
-    , _bsslwdiKey = Nothing
-    }
-
--- | [Output Only] A warning data value corresponding to the key.
-bsslwdiValue :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)
-bsslwdiValue
-  = lens _bsslwdiValue (\ s a -> s{_bsslwdiValue = a})
-
--- | [Output Only] A key that provides more detail on the warning being
--- returned. For example, for warnings where there are no results in a list
--- request for a particular zone, this key might be scope and the key value
--- might be the zone name. Other examples might be a key indicating a
--- deprecated resource and a suggested replacement, or a warning about
--- invalid network settings (for example, if an instance attempts to
--- perform IP forwarding but is not enabled for IP forwarding).
-bsslwdiKey :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)
-bsslwdiKey
-  = lens _bsslwdiKey (\ s a -> s{_bsslwdiKey = a})
-
-instance FromJSON
-         BackendServicesScopedListWarningDataItem where
-        parseJSON
-          = withObject
-              "BackendServicesScopedListWarningDataItem"
-              (\ o ->
-                 BackendServicesScopedListWarningDataItem' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON
-         BackendServicesScopedListWarningDataItem where
-        toJSON BackendServicesScopedListWarningDataItem'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _bsslwdiValue,
-                  ("key" .=) <$> _bsslwdiKey])
-
--- | A BackendService resource. This resource defines a group of backend
--- virtual machines and their serving capacity.
---
--- /See:/ 'backendService' smart constructor.
-data BackendService = BackendService'
-    { _bsSessionAffinity      :: !(Maybe BackendServiceSessionAffinity)
-    , _bsBackends             :: !(Maybe [Backend])
-    , _bsAffinityCookieTtlSec :: !(Maybe (Textual Int32))
-    , _bsLoadBalancingScheme  :: !(Maybe BackendServiceLoadBalancingScheme)
-    , _bsKind                 :: !Text
-    , _bsEnableCDN            :: !(Maybe Bool)
-    , _bsFingerprint          :: !(Maybe Bytes)
-    , _bsProtocol             :: !(Maybe BackendServiceProtocol)
-    , _bsSelfLink             :: !(Maybe Text)
-    , _bsName                 :: !(Maybe Text)
-    , _bsCreationTimestamp    :: !(Maybe Text)
-    , _bsId                   :: !(Maybe (Textual Word64))
-    , _bsRegion               :: !(Maybe Text)
-    , _bsConnectionDraining   :: !(Maybe ConnectionDraining)
-    , _bsTimeoutSec           :: !(Maybe (Textual Int32))
-    , _bsDescription          :: !(Maybe Text)
-    , _bsPortName             :: !(Maybe Text)
-    , _bsHealthChecks         :: !(Maybe [Text])
-    , _bsPort                 :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BackendService' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsSessionAffinity'
---
--- * 'bsBackends'
---
--- * 'bsAffinityCookieTtlSec'
---
--- * 'bsLoadBalancingScheme'
---
--- * 'bsKind'
---
--- * 'bsEnableCDN'
---
--- * 'bsFingerprint'
---
--- * 'bsProtocol'
---
--- * 'bsSelfLink'
---
--- * 'bsName'
---
--- * 'bsCreationTimestamp'
---
--- * 'bsId'
---
--- * 'bsRegion'
---
--- * 'bsConnectionDraining'
---
--- * 'bsTimeoutSec'
---
--- * 'bsDescription'
---
--- * 'bsPortName'
---
--- * 'bsHealthChecks'
---
--- * 'bsPort'
-backendService
-    :: BackendService
-backendService =
-    BackendService'
-    { _bsSessionAffinity = Nothing
-    , _bsBackends = Nothing
-    , _bsAffinityCookieTtlSec = Nothing
-    , _bsLoadBalancingScheme = Nothing
-    , _bsKind = "compute#backendService"
-    , _bsEnableCDN = Nothing
-    , _bsFingerprint = Nothing
-    , _bsProtocol = Nothing
-    , _bsSelfLink = Nothing
-    , _bsName = Nothing
-    , _bsCreationTimestamp = Nothing
-    , _bsId = Nothing
-    , _bsRegion = Nothing
-    , _bsConnectionDraining = Nothing
-    , _bsTimeoutSec = Nothing
-    , _bsDescription = Nothing
-    , _bsPortName = Nothing
-    , _bsHealthChecks = Nothing
-    , _bsPort = Nothing
-    }
-
--- | Type of session affinity to use. The default is NONE. When the load
--- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--- protocol is UDP, this field is not used.
-bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)
-bsSessionAffinity
-  = lens _bsSessionAffinity
-      (\ s a -> s{_bsSessionAffinity = a})
-
--- | The list of backends that serve this BackendService.
-bsBackends :: Lens' BackendService [Backend]
-bsBackends
-  = lens _bsBackends (\ s a -> s{_bsBackends = a}) .
-      _Default
-      . _Coerce
-
--- | Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE.
--- If set to 0, the cookie is non-persistent and lasts only until the end
--- of the browser session (or equivalent). The maximum allowed value for
--- TTL is one day. When the load balancing scheme is INTERNAL, this field
--- is not used.
-bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
-bsAffinityCookieTtlSec
-  = lens _bsAffinityCookieTtlSec
-      (\ s a -> s{_bsAffinityCookieTtlSec = a})
-      . mapping _Coerce
-
-bsLoadBalancingScheme :: Lens' BackendService (Maybe BackendServiceLoadBalancingScheme)
-bsLoadBalancingScheme
-  = lens _bsLoadBalancingScheme
-      (\ s a -> s{_bsLoadBalancingScheme = a})
-
--- | [Output Only] Type of resource. Always compute#backendService for
--- backend services.
-bsKind :: Lens' BackendService Text
-bsKind = lens _bsKind (\ s a -> s{_bsKind = a})
-
--- | If true, enable Cloud CDN for this BackendService. When the load
--- balancing scheme is INTERNAL, this field is not used.
-bsEnableCDN :: Lens' BackendService (Maybe Bool)
-bsEnableCDN
-  = lens _bsEnableCDN (\ s a -> s{_bsEnableCDN = a})
-
--- | Fingerprint of this resource. A hash of the contents stored in this
--- object. This field is used in optimistic locking. This field will be
--- ignored when inserting a BackendService. An up-to-date fingerprint must
--- be provided in order to update the BackendService.
-bsFingerprint :: Lens' BackendService (Maybe ByteString)
-bsFingerprint
-  = lens _bsFingerprint
-      (\ s a -> s{_bsFingerprint = a})
-      . mapping _Bytes
-
--- | The protocol this BackendService uses to communicate with backends.
--- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--- HTTP. For internal load balancing, the possible values are TCP and UDP,
--- and the default is TCP.
-bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)
-bsProtocol
-  = lens _bsProtocol (\ s a -> s{_bsProtocol = a})
-
--- | [Output Only] Server-defined URL for the resource.
-bsSelfLink :: Lens' BackendService (Maybe Text)
-bsSelfLink
-  = lens _bsSelfLink (\ s a -> s{_bsSelfLink = a})
-
--- | Name of the resource. Provided by the client when the resource is
--- created. The name must be 1-63 characters long, and comply with RFC1035.
--- Specifically, the name must be 1-63 characters long and match the
--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
--- character must be a lowercase letter, and all following characters must
--- be a dash, lowercase letter, or digit, except the last character, which
--- cannot be a dash.
-bsName :: Lens' BackendService (Maybe Text)
-bsName = lens _bsName (\ s a -> s{_bsName = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-bsCreationTimestamp :: Lens' BackendService (Maybe Text)
-bsCreationTimestamp
-  = lens _bsCreationTimestamp
-      (\ s a -> s{_bsCreationTimestamp = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-bsId :: Lens' BackendService (Maybe Word64)
-bsId
-  = lens _bsId (\ s a -> s{_bsId = a}) .
-      mapping _Coerce
-
--- | [Output Only] URL of the region where the regional backend service
--- resides. This field is not applicable to global backend services.
-bsRegion :: Lens' BackendService (Maybe Text)
-bsRegion = lens _bsRegion (\ s a -> s{_bsRegion = a})
-
-bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)
-bsConnectionDraining
-  = lens _bsConnectionDraining
-      (\ s a -> s{_bsConnectionDraining = a})
-
--- | How many seconds to wait for the backend before considering it a failed
--- request. Default is 30 seconds.
-bsTimeoutSec :: Lens' BackendService (Maybe Int32)
-bsTimeoutSec
-  = lens _bsTimeoutSec (\ s a -> s{_bsTimeoutSec = a})
-      . mapping _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-bsDescription :: Lens' BackendService (Maybe Text)
-bsDescription
-  = lens _bsDescription
-      (\ s a -> s{_bsDescription = a})
-
--- | Name of backend port. The same name should appear in the instance groups
--- referenced by this service. Required when the load balancing scheme is
--- EXTERNAL. When the load balancing scheme is INTERNAL, this field is not
--- used.
-bsPortName :: Lens' BackendService (Maybe Text)
-bsPortName
-  = lens _bsPortName (\ s a -> s{_bsPortName = a})
-
--- | The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for
--- health checking this BackendService. Currently at most one health check
--- can be specified, and a health check is required. For internal load
--- balancing, a URL to a HealthCheck resource must be specified instead.
-bsHealthChecks :: Lens' BackendService [Text]
-bsHealthChecks
-  = lens _bsHealthChecks
-      (\ s a -> s{_bsHealthChecks = a})
-      . _Default
-      . _Coerce
-
--- | Deprecated in favor of portName. The TCP port to connect on the backend.
--- The default value is 80. This cannot be used for internal load
--- balancing.
-bsPort :: Lens' BackendService (Maybe Int32)
-bsPort
-  = lens _bsPort (\ s a -> s{_bsPort = a}) .
-      mapping _Coerce
-
-instance FromJSON BackendService where
-        parseJSON
-          = withObject "BackendService"
-              (\ o ->
-                 BackendService' <$>
-                   (o .:? "sessionAffinity") <*>
-                     (o .:? "backends" .!= mempty)
-                     <*> (o .:? "affinityCookieTtlSec")
-                     <*> (o .:? "loadBalancingScheme")
-                     <*> (o .:? "kind" .!= "compute#backendService")
-                     <*> (o .:? "enableCDN")
-                     <*> (o .:? "fingerprint")
-                     <*> (o .:? "protocol")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "id")
-                     <*> (o .:? "region")
-                     <*> (o .:? "connectionDraining")
-                     <*> (o .:? "timeoutSec")
-                     <*> (o .:? "description")
-                     <*> (o .:? "portName")
-                     <*> (o .:? "healthChecks" .!= mempty)
-                     <*> (o .:? "port"))
-
-instance ToJSON BackendService where
-        toJSON BackendService'{..}
-          = object
-              (catMaybes
-                 [("sessionAffinity" .=) <$> _bsSessionAffinity,
-                  ("backends" .=) <$> _bsBackends,
-                  ("affinityCookieTtlSec" .=) <$>
-                    _bsAffinityCookieTtlSec,
-                  ("loadBalancingScheme" .=) <$>
-                    _bsLoadBalancingScheme,
-                  Just ("kind" .= _bsKind),
-                  ("enableCDN" .=) <$> _bsEnableCDN,
-                  ("fingerprint" .=) <$> _bsFingerprint,
-                  ("protocol" .=) <$> _bsProtocol,
-                  ("selfLink" .=) <$> _bsSelfLink,
-                  ("name" .=) <$> _bsName,
-                  ("creationTimestamp" .=) <$> _bsCreationTimestamp,
-                  ("id" .=) <$> _bsId, ("region" .=) <$> _bsRegion,
-                  ("connectionDraining" .=) <$> _bsConnectionDraining,
-                  ("timeoutSec" .=) <$> _bsTimeoutSec,
-                  ("description" .=) <$> _bsDescription,
-                  ("portName" .=) <$> _bsPortName,
-                  ("healthChecks" .=) <$> _bsHealthChecks,
-                  ("port" .=) <$> _bsPort])
-
---
--- /See:/ 'instanceMoveRequest' smart constructor.
-data InstanceMoveRequest = InstanceMoveRequest'
-    { _imrTargetInstance  :: !(Maybe Text)
-    , _imrDestinationZone :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceMoveRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imrTargetInstance'
---
--- * 'imrDestinationZone'
-instanceMoveRequest
-    :: InstanceMoveRequest
-instanceMoveRequest =
-    InstanceMoveRequest'
-    { _imrTargetInstance = Nothing
-    , _imrDestinationZone = Nothing
-    }
-
--- | The URL of the target instance to move. This can be a full or partial
--- URL. For example, the following are all valid URLs to an instance: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
--- - projects\/project\/zones\/zone\/instances\/instance -
--- zones\/zone\/instances\/instance
-imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)
-imrTargetInstance
-  = lens _imrTargetInstance
-      (\ s a -> s{_imrTargetInstance = a})
-
--- | The URL of the destination zone to move the instance. This can be a full
--- or partial URL. For example, the following are all valid URLs to a zone:
--- -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
--- - projects\/project\/zones\/zone - zones\/zone
-imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)
-imrDestinationZone
-  = lens _imrDestinationZone
-      (\ s a -> s{_imrDestinationZone = a})
-
-instance FromJSON InstanceMoveRequest where
-        parseJSON
-          = withObject "InstanceMoveRequest"
-              (\ o ->
-                 InstanceMoveRequest' <$>
-                   (o .:? "targetInstance") <*>
-                     (o .:? "destinationZone"))
-
-instance ToJSON InstanceMoveRequest where
-        toJSON InstanceMoveRequest'{..}
-          = object
-              (catMaybes
-                 [("targetInstance" .=) <$> _imrTargetInstance,
-                  ("destinationZone" .=) <$> _imrDestinationZone])
-
---
--- /See:/ 'instanceGroupsScopedList' smart constructor.
-data InstanceGroupsScopedList = InstanceGroupsScopedList'
-    { _igslWarning        :: !(Maybe InstanceGroupsScopedListWarning)
-    , _igslInstanceGroups :: !(Maybe [InstanceGroup])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupsScopedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igslWarning'
---
--- * 'igslInstanceGroups'
-instanceGroupsScopedList
-    :: InstanceGroupsScopedList
-instanceGroupsScopedList =
-    InstanceGroupsScopedList'
-    { _igslWarning = Nothing
-    , _igslInstanceGroups = Nothing
-    }
-
--- | [Output Only] An informational warning that replaces the list of
--- instance groups when the list is empty.
-igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)
-igslWarning
-  = lens _igslWarning (\ s a -> s{_igslWarning = a})
-
--- | [Output Only] The list of instance groups that are contained in this
--- scope.
-igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]
-igslInstanceGroups
-  = lens _igslInstanceGroups
-      (\ s a -> s{_igslInstanceGroups = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON InstanceGroupsScopedList where
-        parseJSON
-          = withObject "InstanceGroupsScopedList"
-              (\ o ->
-                 InstanceGroupsScopedList' <$>
-                   (o .:? "warning") <*>
-                     (o .:? "instanceGroups" .!= mempty))
-
-instance ToJSON InstanceGroupsScopedList where
-        toJSON InstanceGroupsScopedList'{..}
-          = object
-              (catMaybes
-                 [("warning" .=) <$> _igslWarning,
-                  ("instanceGroups" .=) <$> _igslInstanceGroups])
-
---
--- /See:/ 'instancesStartWithEncryptionKeyRequest' smart constructor.
-newtype InstancesStartWithEncryptionKeyRequest = InstancesStartWithEncryptionKeyRequest'
-    { _iswekrDisks :: Maybe [CustomerEncryptionKeyProtectedDisk]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesStartWithEncryptionKeyRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iswekrDisks'
-instancesStartWithEncryptionKeyRequest
-    :: InstancesStartWithEncryptionKeyRequest
-instancesStartWithEncryptionKeyRequest =
-    InstancesStartWithEncryptionKeyRequest'
-    { _iswekrDisks = Nothing
-    }
-
--- | Array of disks associated with this instance that are protected with a
--- customer-supplied encryption key. In order to start the instance, the
--- disk url and its corresponding key must be provided. If the disk is not
--- protected with a customer-supplied encryption key it should not be
--- specified.
-iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
-iswekrDisks
-  = lens _iswekrDisks (\ s a -> s{_iswekrDisks = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON
-         InstancesStartWithEncryptionKeyRequest where
-        parseJSON
-          = withObject "InstancesStartWithEncryptionKeyRequest"
-              (\ o ->
-                 InstancesStartWithEncryptionKeyRequest' <$>
-                   (o .:? "disks" .!= mempty))
-
-instance ToJSON
-         InstancesStartWithEncryptionKeyRequest where
-        toJSON InstancesStartWithEncryptionKeyRequest'{..}
-          = object (catMaybes [("disks" .=) <$> _iswekrDisks])
-
---
--- /See:/ 'httpsHealthCheck' smart constructor.
-data HTTPSHealthCheck = HTTPSHealthCheck'
-    { _hhcRequestPath :: !(Maybe Text)
-    , _hhcHost        :: !(Maybe Text)
-    , _hhcProxyHeader :: !(Maybe HTTPSHealthCheckProxyHeader)
-    , _hhcPortName    :: !(Maybe Text)
-    , _hhcPort        :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HTTPSHealthCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hhcRequestPath'
---
--- * 'hhcHost'
---
--- * 'hhcProxyHeader'
---
--- * 'hhcPortName'
---
--- * 'hhcPort'
-httpsHealthCheck
-    :: HTTPSHealthCheck
-httpsHealthCheck =
-    HTTPSHealthCheck'
-    { _hhcRequestPath = Nothing
-    , _hhcHost = Nothing
-    , _hhcProxyHeader = Nothing
-    , _hhcPortName = Nothing
-    , _hhcPort = Nothing
-    }
-
--- | The request path of the HTTPS health check request. The default value is
--- \/.
-hhcRequestPath :: Lens' HTTPSHealthCheck (Maybe Text)
-hhcRequestPath
-  = lens _hhcRequestPath
-      (\ s a -> s{_hhcRequestPath = a})
-
--- | The value of the host header in the HTTPS health check request. If left
--- empty (default value), the IP on behalf of which this health check is
--- performed will be used.
-hhcHost :: Lens' HTTPSHealthCheck (Maybe Text)
-hhcHost = lens _hhcHost (\ s a -> s{_hhcHost = a})
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-hhcProxyHeader :: Lens' HTTPSHealthCheck (Maybe HTTPSHealthCheckProxyHeader)
-hhcProxyHeader
-  = lens _hhcProxyHeader
-      (\ s a -> s{_hhcProxyHeader = a})
-
--- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
--- port_name are defined, port takes precedence.
-hhcPortName :: Lens' HTTPSHealthCheck (Maybe Text)
-hhcPortName
-  = lens _hhcPortName (\ s a -> s{_hhcPortName = a})
-
--- | The TCP port number for the health check request. The default value is
--- 443.
-hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)
-hhcPort
-  = lens _hhcPort (\ s a -> s{_hhcPort = a}) .
-      mapping _Coerce
-
-instance FromJSON HTTPSHealthCheck where
-        parseJSON
-          = withObject "HTTPSHealthCheck"
-              (\ o ->
-                 HTTPSHealthCheck' <$>
-                   (o .:? "requestPath") <*> (o .:? "host") <*>
-                     (o .:? "proxyHeader")
-                     <*> (o .:? "portName")
-                     <*> (o .:? "port"))
-
-instance ToJSON HTTPSHealthCheck where
-        toJSON HTTPSHealthCheck'{..}
-          = object
-              (catMaybes
-                 [("requestPath" .=) <$> _hhcRequestPath,
-                  ("host" .=) <$> _hhcHost,
-                  ("proxyHeader" .=) <$> _hhcProxyHeader,
-                  ("portName" .=) <$> _hhcPortName,
-                  ("port" .=) <$> _hhcPort])
-
--- | [Output Only] A map of scoped vpn tunnel lists.
---
--- /See:/ 'vpnTunnelAggregatedListItems' smart constructor.
-newtype VPNTunnelAggregatedListItems = VPNTunnelAggregatedListItems'
-    { _vtaliAddtional :: HashMap Text VPNTunnelsScopedList
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VPNTunnelAggregatedListItems' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vtaliAddtional'
-vpnTunnelAggregatedListItems
-    :: HashMap Text VPNTunnelsScopedList -- ^ 'vtaliAddtional'
-    -> VPNTunnelAggregatedListItems
-vpnTunnelAggregatedListItems pVtaliAddtional_ =
-    VPNTunnelAggregatedListItems'
-    { _vtaliAddtional = _Coerce # pVtaliAddtional_
-    }
-
--- | Name of the scope containing this set of vpn tunnels.
-vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)
-vtaliAddtional
-  = lens _vtaliAddtional
-      (\ s a -> s{_vtaliAddtional = a})
-      . _Coerce
-
-instance FromJSON VPNTunnelAggregatedListItems where
-        parseJSON
-          = withObject "VPNTunnelAggregatedListItems"
-              (\ o ->
-                 VPNTunnelAggregatedListItems' <$>
-                   (parseJSONObject o))
-
-instance ToJSON VPNTunnelAggregatedListItems where
-        toJSON = toJSON . _vtaliAddtional
-
--- | A set of instance tags.
---
--- /See:/ 'tags' smart constructor.
-data Tags = Tags'
-    { _tFingerprint :: !(Maybe Bytes)
-    , _tItems       :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Tags' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tFingerprint'
---
--- * 'tItems'
-tags
-    :: Tags
-tags =
-    Tags'
-    { _tFingerprint = Nothing
-    , _tItems = Nothing
-    }
-
--- | Specifies a fingerprint for this request, which is essentially a hash of
--- the metadata\'s contents and used for optimistic locking. The
--- fingerprint is initially generated by Compute Engine and changes after
--- every request to modify or update metadata. You must always provide an
--- up-to-date fingerprint hash in order to update or change metadata. To
--- see the latest fingerprint, make get() request to the instance.
-tFingerprint :: Lens' Tags (Maybe ByteString)
-tFingerprint
-  = lens _tFingerprint (\ s a -> s{_tFingerprint = a})
-      . mapping _Bytes
-
--- | An array of tags. Each tag must be 1-63 characters long, and comply with
--- RFC1035.
-tItems :: Lens' Tags [Text]
-tItems
-  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON Tags where
-        parseJSON
-          = withObject "Tags"
-              (\ o ->
-                 Tags' <$>
-                   (o .:? "fingerprint") <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Tags where
-        toJSON Tags'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _tFingerprint,
-                  ("items" .=) <$> _tItems])
-
---
--- /See:/ 'addressAggregatedList' smart constructor.
-data AddressAggregatedList = AddressAggregatedList'
-    { _addNextPageToken :: !(Maybe Text)
-    , _addKind          :: !Text
-    , _addItems         :: !(Maybe AddressAggregatedListItems)
-    , _addSelfLink      :: !(Maybe Text)
-    , _addId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AddressAggregatedList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'addNextPageToken'
---
--- * 'addKind'
---
--- * 'addItems'
---
--- * 'addSelfLink'
---
--- * 'addId'
-addressAggregatedList
-    :: AddressAggregatedList
-addressAggregatedList =
-    AddressAggregatedList'
-    { _addNextPageToken = Nothing
-    , _addKind = "compute#addressAggregatedList"
-    , _addItems = Nothing
-    , _addSelfLink = Nothing
-    , _addId = Nothing
-    }
-
--- | [Output Only] This token allows you to get the next page of results for
--- list requests. If the number of results is larger than maxResults, use
--- the nextPageToken as a value for the query parameter pageToken in the
--- next list request. Subsequent list requests will have their own
--- nextPageToken to continue paging through the results.
-addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)
-addNextPageToken
-  = lens _addNextPageToken
-      (\ s a -> s{_addNextPageToken = a})
-
--- | [Output Only] Type of resource. Always compute#addressAggregatedList for
--- aggregated lists of addresses.
-addKind :: Lens' AddressAggregatedList Text
-addKind = lens _addKind (\ s a -> s{_addKind = a})
-
--- | [Output Only] A map of scoped address lists.
-addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)
-addItems = lens _addItems (\ s a -> s{_addItems = a})
-
--- | [Output Only] Server-defined URL for this resource.
-addSelfLink :: Lens' AddressAggregatedList (Maybe Text)
-addSelfLink
-  = lens _addSelfLink (\ s a -> s{_addSelfLink = a})
-
--- | [Output Only] Unique identifier for the resource; defined by the server.
-addId :: Lens' AddressAggregatedList (Maybe Text)
-addId = lens _addId (\ s a -> s{_addId = a})
-
-instance FromJSON AddressAggregatedList where
-        parseJSON
-          = withObject "AddressAggregatedList"
-              (\ o ->
-                 AddressAggregatedList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "compute#addressAggregatedList")
-                     <*> (o .:? "items")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON AddressAggregatedList where
-        toJSON AddressAggregatedList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _addNextPageToken,
-                  Just ("kind" .= _addKind),
-                  ("items" .=) <$> _addItems,
-                  ("selfLink" .=) <$> _addSelfLink,
-                  ("id" .=) <$> _addId])
-
---
--- /See:/ 'operationWarningsItem' smart constructor.
-data OperationWarningsItem = OperationWarningsItem'
-    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])
-    , _owiCode    :: !(Maybe OperationWarningsItemCode)
-    , _owiMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'owiData'
---
--- * 'owiCode'
---
--- * 'owiMessage'
-operationWarningsItem
-    :: OperationWarningsItem
-operationWarningsItem =
-    OperationWarningsItem'
-    { _owiData = Nothing
-    , _owiCode = Nothing
-    , _owiMessage = Nothing
-    }
-
--- | [Output Only] Metadata about this warning in key: value format. For
--- example: \"data\": [ { \"key\": \"scope\", \"value\":
--- \"zones\/us-east1-d\" }
-owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]
-owiData
-  = lens _owiData (\ s a -> s{_owiData = a}) . _Default
-      . _Coerce
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)
-owiCode = lens _owiCode (\ s a -> s{_owiCode = a})
-
--- | [Output Only] A human-readable description of the warning code.
-owiMessage :: Lens' OperationWarningsItem (Maybe Text)
-owiMessage
-  = lens _owiMessage (\ s a -> s{_owiMessage = a})
-
-instance FromJSON OperationWarningsItem where
-        parseJSON
-          = withObject "OperationWarningsItem"
-              (\ o ->
-                 OperationWarningsItem' <$>
-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON OperationWarningsItem where
-        toJSON OperationWarningsItem'{..}
-          = object
-              (catMaybes
-                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,
-                  ("message" .=) <$> _owiMessage])
-
--- | Message for the expected URL mappings.
---
--- /See:/ 'urlMapTest' smart constructor.
-data URLMapTest = URLMapTest'
-    { _umtPath        :: !(Maybe Text)
-    , _umtService     :: !(Maybe Text)
-    , _umtHost        :: !(Maybe Text)
-    , _umtDescription :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLMapTest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umtPath'
---
--- * 'umtService'
---
--- * 'umtHost'
---
--- * 'umtDescription'
-urlMapTest
-    :: URLMapTest
-urlMapTest =
-    URLMapTest'
-    { _umtPath = Nothing
-    , _umtService = Nothing
-    , _umtHost = Nothing
-    , _umtDescription = Nothing
-    }
-
--- | Path portion of the URL.
-umtPath :: Lens' URLMapTest (Maybe Text)
-umtPath = lens _umtPath (\ s a -> s{_umtPath = a})
-
--- | Expected BackendService resource the given URL should be mapped to.
-umtService :: Lens' URLMapTest (Maybe Text)
-umtService
-  = lens _umtService (\ s a -> s{_umtService = a})
-
--- | Host portion of the URL.
-umtHost :: Lens' URLMapTest (Maybe Text)
-umtHost = lens _umtHost (\ s a -> s{_umtHost = a})
-
--- | Description of this test case.
-umtDescription :: Lens' URLMapTest (Maybe Text)
-umtDescription
-  = lens _umtDescription
-      (\ s a -> s{_umtDescription = a})
-
-instance FromJSON URLMapTest where
-        parseJSON
-          = withObject "URLMapTest"
-              (\ o ->
-                 URLMapTest' <$>
-                   (o .:? "path") <*> (o .:? "service") <*>
-                     (o .:? "host")
-                     <*> (o .:? "description"))
-
-instance ToJSON URLMapTest where
-        toJSON URLMapTest'{..}
-          = object
-              (catMaybes
-                 [("path" .=) <$> _umtPath,
-                  ("service" .=) <$> _umtService,
-                  ("host" .=) <$> _umtHost,
-                  ("description" .=) <$> _umtDescription])
-
---
--- /See:/ 'routersPreviewResponse' smart constructor.
-newtype RoutersPreviewResponse = RoutersPreviewResponse'
-    { _rprResource :: Maybe Router
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoutersPreviewResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rprResource'
-routersPreviewResponse
-    :: RoutersPreviewResponse
-routersPreviewResponse =
-    RoutersPreviewResponse'
-    { _rprResource = Nothing
-    }
-
--- | Preview of given router.
-rprResource :: Lens' RoutersPreviewResponse (Maybe Router)
-rprResource
-  = lens _rprResource (\ s a -> s{_rprResource = a})
-
-instance FromJSON RoutersPreviewResponse where
-        parseJSON
-          = withObject "RoutersPreviewResponse"
-              (\ o ->
-                 RoutersPreviewResponse' <$> (o .:? "resource"))
-
-instance ToJSON RoutersPreviewResponse where
-        toJSON RoutersPreviewResponse'{..}
-          = object
-              (catMaybes [("resource" .=) <$> _rprResource])
-
--- | An Instance resource.
---
--- /See:/ 'instance'' smart constructor.
-data Instance = Instance'
-    { _insnStatus            :: !(Maybe InstanceStatus)
-    , _insnServiceAccounts   :: !(Maybe [ServiceAccount])
-    , _insnNetworkInterfaces :: !(Maybe [NetworkInterface])
-    , _insnKind              :: !Text
-    , _insnZone              :: !(Maybe Text)
-    , _insnCPUPlatform       :: !(Maybe Text)
-    , _insnSelfLink          :: !(Maybe Text)
-    , _insnName              :: !(Maybe Text)
-    , _insnStatusMessage     :: !(Maybe Text)
-    , _insnCreationTimestamp :: !(Maybe Text)
-    , _insnMachineType       :: !(Maybe Text)
-    , _insnMetadata          :: !(Maybe Metadata)
-    , _insnId                :: !(Maybe (Textual Word64))
-    , _insnScheduling        :: !(Maybe Scheduling)
-    , _insnDisks             :: !(Maybe [AttachedDisk])
-    , _insnCanIPForward      :: !(Maybe Bool)
-    , _insnDescription       :: !(Maybe Text)
-    , _insnTags              :: !(Maybe Tags)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Instance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'insnStatus'
---
--- * 'insnServiceAccounts'
---
--- * 'insnNetworkInterfaces'
---
--- * 'insnKind'
---
--- * 'insnZone'
---
--- * 'insnCPUPlatform'
---
--- * 'insnSelfLink'
---
--- * 'insnName'
---
--- * 'insnStatusMessage'
---
--- * 'insnCreationTimestamp'
---
--- * 'insnMachineType'
---
--- * 'insnMetadata'
---
--- * 'insnId'
---
--- * 'insnScheduling'
---
--- * 'insnDisks'
---
--- * 'insnCanIPForward'
---
--- * 'insnDescription'
---
--- * 'insnTags'
-instance'
-    :: Instance
-instance' =
-    Instance'
-    { _insnStatus = Nothing
-    , _insnServiceAccounts = Nothing
-    , _insnNetworkInterfaces = Nothing
-    , _insnKind = "compute#instance"
-    , _insnZone = Nothing
-    , _insnCPUPlatform = Nothing
-    , _insnSelfLink = Nothing
-    , _insnName = Nothing
-    , _insnStatusMessage = Nothing
-    , _insnCreationTimestamp = Nothing
-    , _insnMachineType = Nothing
-    , _insnMetadata = Nothing
-    , _insnId = Nothing
-    , _insnScheduling = Nothing
-    , _insnDisks = Nothing
-    , _insnCanIPForward = Nothing
-    , _insnDescription = Nothing
-    , _insnTags = Nothing
-    }
-
--- | [Output Only] The status of the instance. One of the following values:
--- PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, and
--- TERMINATED.
-insnStatus :: Lens' Instance (Maybe InstanceStatus)
-insnStatus
-  = lens _insnStatus (\ s a -> s{_insnStatus = a})
-
--- | A list of service accounts, with their specified scopes, authorized for
--- this instance. Service accounts generate access tokens that can be
--- accessed through the metadata server and used to authenticate
--- applications on the instance. See Service Accounts for more information.
-insnServiceAccounts :: Lens' Instance [ServiceAccount]
-insnServiceAccounts
-  = lens _insnServiceAccounts
-      (\ s a -> s{_insnServiceAccounts = a})
-      . _Default
-      . _Coerce
-
--- | An array of configurations for this interface. This specifies how this
--- interface is configured to interact with other network services, such as
--- connecting to the internet. Only one interface is supported per
--- instance.
-insnNetworkInterfaces :: Lens' Instance [NetworkInterface]
-insnNetworkInterfaces
-  = lens _insnNetworkInterfaces
-      (\ s a -> s{_insnNetworkInterfaces = a})
-      . _Default
-      . _Coerce
-
--- | [Output Only] Type of the resource. Always compute#instance for
--- instances.
-insnKind :: Lens' Instance Text
-insnKind = lens _insnKind (\ s a -> s{_insnKind = a})
-
--- | [Output Only] URL of the zone where the instance resides.
-insnZone :: Lens' Instance (Maybe Text)
-insnZone = lens _insnZone (\ s a -> s{_insnZone = a})
-
--- | [Output Only] The CPU platform used by this instance.
-insnCPUPlatform :: Lens' Instance (Maybe Text)
-insnCPUPlatform
-  = lens _insnCPUPlatform
-      (\ s a -> s{_insnCPUPlatform = a})
-
--- | [Output Only] Server-defined URL for this resource.
-insnSelfLink :: Lens' Instance (Maybe Text)
-insnSelfLink
-  = lens _insnSelfLink (\ s a -> s{_insnSelfLink = a})
-
--- | The name of the resource, provided by the client when initially creating
--- the resource. The resource name must be 1-63 characters long, and comply
--- with RFC1035. Specifically, the name must be 1-63 characters long and
--- match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the
--- first character must be a lowercase letter, and all following characters
--- must be a dash, lowercase letter, or digit, except the last character,
--- which cannot be a dash.
-insnName :: Lens' Instance (Maybe Text)
-insnName = lens _insnName (\ s a -> s{_insnName = a})
-
--- | [Output Only] An optional, human-readable explanation of the status.
-insnStatusMessage :: Lens' Instance (Maybe Text)
-insnStatusMessage
-  = lens _insnStatusMessage
-      (\ s a -> s{_insnStatusMessage = a})
-
--- | [Output Only] Creation timestamp in RFC3339 text format.
-insnCreationTimestamp :: Lens' Instance (Maybe Text)
-insnCreationTimestamp
-  = lens _insnCreationTimestamp
-      (\ s a -> s{_insnCreationTimestamp = a})
-
--- | Full or partial URL of the machine type resource to use for this
--- instance, in the format: zones\/zone\/machineTypes\/machine-type. This
--- is provided by the client when the instance is created. For example, the
--- following is a valid partial url to a predefined machine type:
--- zones\/us-central1-f\/machineTypes\/n1-standard-1 To create a custom
--- machine type, provide a URL to a machine type in the following format,
--- where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and
--- MEMORY is the total memory for this instance. Memory must be a multiple
--- of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):
--- zones\/zone\/machineTypes\/custom-CPUS-MEMORY For example:
--- zones\/us-central1-f\/machineTypes\/custom-4-5120 For a full list of
--- restrictions, read the Specifications for custom machine types.
-insnMachineType :: Lens' Instance (Maybe Text)
-insnMachineType
-  = lens _insnMachineType
-      (\ s a -> s{_insnMachineType = a})
-
--- | The metadata key\/value pairs assigned to this instance. This includes
--- custom metadata and predefined keys.
-insnMetadata :: Lens' Instance (Maybe Metadata)
-insnMetadata
-  = lens _insnMetadata (\ s a -> s{_insnMetadata = a})
-
--- | [Output Only] The unique identifier for the resource. This identifier is
--- defined by the server.
-insnId :: Lens' Instance (Maybe Word64)
-insnId
-  = lens _insnId (\ s a -> s{_insnId = a}) .
-      mapping _Coerce
-
--- | Scheduling options for this instance.
-insnScheduling :: Lens' Instance (Maybe Scheduling)
-insnScheduling
-  = lens _insnScheduling
-      (\ s a -> s{_insnScheduling = a})
-
--- | Array of disks associated with this instance. Persistent disks must be
--- created before you can assign them.
-insnDisks :: Lens' Instance [AttachedDisk]
-insnDisks
-  = lens _insnDisks (\ s a -> s{_insnDisks = a}) .
-      _Default
-      . _Coerce
-
--- | Allows this instance to send and receive packets with non-matching
--- destination or source IPs. This is required if you plan to use this
--- instance to forward routes. For more information, see Enabling IP
--- Forwarding.
-insnCanIPForward :: Lens' Instance (Maybe Bool)
-insnCanIPForward
-  = lens _insnCanIPForward
-      (\ s a -> s{_insnCanIPForward = a})
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-insnDescription :: Lens' Instance (Maybe Text)
-insnDescription
-  = lens _insnDescription
-      (\ s a -> s{_insnDescription = a})
-
--- | A list of tags to apply to this instance. Tags are used to identify
--- valid sources or targets for network firewalls and are specified by the
--- client during instance creation. The tags can be later modified by the
--- setTags method. Each tag within the list must comply with RFC1035.
-insnTags :: Lens' Instance (Maybe Tags)
-insnTags = lens _insnTags (\ s a -> s{_insnTags = a})
-
-instance FromJSON Instance where
-        parseJSON
-          = withObject "Instance"
-              (\ o ->
-                 Instance' <$>
-                   (o .:? "status") <*>
-                     (o .:? "serviceAccounts" .!= mempty)
-                     <*> (o .:? "networkInterfaces" .!= mempty)
-                     <*> (o .:? "kind" .!= "compute#instance")
-                     <*> (o .:? "zone")
-                     <*> (o .:? "cpuPlatform")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "creationTimestamp")
-                     <*> (o .:? "machineType")
-                     <*> (o .:? "metadata")
-                     <*> (o .:? "id")
-                     <*> (o .:? "scheduling")
-                     <*> (o .:? "disks" .!= mempty)
-                     <*> (o .:? "canIpForward")
-                     <*> (o .:? "description")
-                     <*> (o .:? "tags"))
-
-instance ToJSON Instance where
-        toJSON Instance'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _insnStatus,
-                  ("serviceAccounts" .=) <$> _insnServiceAccounts,
-                  ("networkInterfaces" .=) <$> _insnNetworkInterfaces,
-                  Just ("kind" .= _insnKind),
-                  ("zone" .=) <$> _insnZone,
-                  ("cpuPlatform" .=) <$> _insnCPUPlatform,
-                  ("selfLink" .=) <$> _insnSelfLink,
-                  ("name" .=) <$> _insnName,
-                  ("statusMessage" .=) <$> _insnStatusMessage,
-                  ("creationTimestamp" .=) <$> _insnCreationTimestamp,
-                  ("machineType" .=) <$> _insnMachineType,
-                  ("metadata" .=) <$> _insnMetadata,
-                  ("id" .=) <$> _insnId,
-                  ("scheduling" .=) <$> _insnScheduling,
-                  ("disks" .=) <$> _insnDisks,
-                  ("canIpForward" .=) <$> _insnCanIPForward,
-                  ("description" .=) <$> _insnDescription,
-                  ("tags" .=) <$> _insnTags])
-
--- | A matcher for the path portion of the URL. The BackendService from the
--- longest-matched rule will serve the URL. If no rule was matched, the
--- default service will be used.
---
--- /See:/ 'pathMatcher' smart constructor.
-data PathMatcher = PathMatcher'
-    { _pmDefaultService :: !(Maybe Text)
-    , _pmName           :: !(Maybe Text)
-    , _pmPathRules      :: !(Maybe [PathRule])
-    , _pmDescription    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PathMatcher' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pmDefaultService'
---
--- * 'pmName'
---
--- * 'pmPathRules'
---
--- * 'pmDescription'
-pathMatcher
-    :: PathMatcher
-pathMatcher =
-    PathMatcher'
-    { _pmDefaultService = Nothing
-    , _pmName = Nothing
-    , _pmPathRules = Nothing
-    , _pmDescription = Nothing
-    }
-
--- | The full or partial URL to the BackendService resource. This will be
--- used if none of the pathRules defined by this PathMatcher is matched by
--- the URL\'s path portion. For example, the following are all valid URLs
--- to a BackendService resource: -
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/backendServices\/backendService
--- -
--- compute\/v1\/projects\/project\/global\/backendServices\/backendService
--- - global\/backendServices\/backendService
-pmDefaultService :: Lens' PathMatcher (Maybe Text)
-pmDefaultService
-  = lens _pmDefaultService
-      (\ s a -> s{_pmDefaultService = a})
-
--- | The name to which this PathMatcher is referred by the HostRule.
-pmName :: Lens' PathMatcher (Maybe Text)
-pmName = lens _pmName (\ s a -> s{_pmName = a})
-
--- | The list of path rules.
-pmPathRules :: Lens' PathMatcher [PathRule]
-pmPathRules
-  = lens _pmPathRules (\ s a -> s{_pmPathRules = a}) .
-      _Default
-      . _Coerce
-
--- | An optional description of this resource. Provide this property when you
--- create the resource.
-pmDescription :: Lens' PathMatcher (Maybe Text)
-pmDescription
-  = lens _pmDescription
-      (\ s a -> s{_pmDescription = a})
-
-instance FromJSON PathMatcher where
-        parseJSON
-          = withObject "PathMatcher"
-              (\ o ->
-                 PathMatcher' <$>
-                   (o .:? "defaultService") <*> (o .:? "name") <*>
-                     (o .:? "pathRules" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON PathMatcher where
-        toJSON PathMatcher'{..}
-          = object
-              (catMaybes
-                 [("defaultService" .=) <$> _pmDefaultService,
-                  ("name" .=) <$> _pmName,
-                  ("pathRules" .=) <$> _pmPathRules,
-                  ("description" .=) <$> _pmDescription])
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceAggregatedListWarning' smart constructor.
+data InstanceAggregatedListWarning = InstanceAggregatedListWarning'
+    { _ialwData    :: !(Maybe [InstanceAggregatedListWarningDataItem])
+    , _ialwCode    :: !(Maybe InstanceAggregatedListWarningCode)
+    , _ialwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialwData'
+--
+-- * 'ialwCode'
+--
+-- * 'ialwMessage'
+instanceAggregatedListWarning
+    :: InstanceAggregatedListWarning
+instanceAggregatedListWarning =
+    InstanceAggregatedListWarning'
+    { _ialwData = Nothing
+    , _ialwCode = Nothing
+    , _ialwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ialwData :: Lens' InstanceAggregatedListWarning [InstanceAggregatedListWarningDataItem]
+ialwData
+  = lens _ialwData (\ s a -> s{_ialwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ialwCode :: Lens' InstanceAggregatedListWarning (Maybe InstanceAggregatedListWarningCode)
+ialwCode = lens _ialwCode (\ s a -> s{_ialwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ialwMessage :: Lens' InstanceAggregatedListWarning (Maybe Text)
+ialwMessage
+  = lens _ialwMessage (\ s a -> s{_ialwMessage = a})
+
+instance FromJSON InstanceAggregatedListWarning where
+        parseJSON
+          = withObject "InstanceAggregatedListWarning"
+              (\ o ->
+                 InstanceAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceAggregatedListWarning where
+        toJSON InstanceAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ialwData,
+                  ("code" .=) <$> _ialwCode,
+                  ("message" .=) <$> _ialwMessage])
+
+-- | Contains a list of TargetHttpsProxy resources.
+--
+-- /See:/ 'targetHTTPSProxyList' smart constructor.
+data TargetHTTPSProxyList = TargetHTTPSProxyList'
+    { _thplNextPageToken :: !(Maybe Text)
+    , _thplKind          :: !Text
+    , _thplItems         :: !(Maybe [TargetHTTPSProxy])
+    , _thplSelfLink      :: !(Maybe Text)
+    , _thplWarning       :: !(Maybe TargetHTTPSProxyListWarning)
+    , _thplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thplNextPageToken'
+--
+-- * 'thplKind'
+--
+-- * 'thplItems'
+--
+-- * 'thplSelfLink'
+--
+-- * 'thplWarning'
+--
+-- * 'thplId'
+targetHTTPSProxyList
+    :: TargetHTTPSProxyList
+targetHTTPSProxyList =
+    TargetHTTPSProxyList'
+    { _thplNextPageToken = Nothing
+    , _thplKind = "compute#targetHttpsProxyList"
+    , _thplItems = Nothing
+    , _thplSelfLink = Nothing
+    , _thplWarning = Nothing
+    , _thplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+thplNextPageToken :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplNextPageToken
+  = lens _thplNextPageToken
+      (\ s a -> s{_thplNextPageToken = a})
+
+-- | Type of resource. Always compute#targetHttpsProxyList for lists of
+-- target HTTPS proxies.
+thplKind :: Lens' TargetHTTPSProxyList Text
+thplKind = lens _thplKind (\ s a -> s{_thplKind = a})
+
+-- | A list of TargetHttpsProxy resources.
+thplItems :: Lens' TargetHTTPSProxyList [TargetHTTPSProxy]
+thplItems
+  = lens _thplItems (\ s a -> s{_thplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+thplSelfLink :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplSelfLink
+  = lens _thplSelfLink (\ s a -> s{_thplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+thplWarning :: Lens' TargetHTTPSProxyList (Maybe TargetHTTPSProxyListWarning)
+thplWarning
+  = lens _thplWarning (\ s a -> s{_thplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+thplId :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplId = lens _thplId (\ s a -> s{_thplId = a})
+
+instance FromJSON TargetHTTPSProxyList where
+        parseJSON
+          = withObject "TargetHTTPSProxyList"
+              (\ o ->
+                 TargetHTTPSProxyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetHttpsProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetHTTPSProxyList where
+        toJSON TargetHTTPSProxyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _thplNextPageToken,
+                  Just ("kind" .= _thplKind),
+                  ("items" .=) <$> _thplItems,
+                  ("selfLink" .=) <$> _thplSelfLink,
+                  ("warning" .=) <$> _thplWarning,
+                  ("id" .=) <$> _thplId])
+
+--
+-- /See:/ 'routersScopedList' smart constructor.
+data RoutersScopedList = RoutersScopedList'
+    { _rslRouters :: !(Maybe [Router])
+    , _rslWarning :: !(Maybe RoutersScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutersScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslRouters'
+--
+-- * 'rslWarning'
+routersScopedList
+    :: RoutersScopedList
+routersScopedList =
+    RoutersScopedList'
+    { _rslRouters = Nothing
+    , _rslWarning = Nothing
+    }
+
+-- | A list of routers contained in this scope.
+rslRouters :: Lens' RoutersScopedList [Router]
+rslRouters
+  = lens _rslRouters (\ s a -> s{_rslRouters = a}) .
+      _Default
+      . _Coerce
+
+-- | Informational warning which replaces the list of routers when the list
+-- is empty.
+rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
+rslWarning
+  = lens _rslWarning (\ s a -> s{_rslWarning = a})
+
+instance FromJSON RoutersScopedList where
+        parseJSON
+          = withObject "RoutersScopedList"
+              (\ o ->
+                 RoutersScopedList' <$>
+                   (o .:? "routers" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON RoutersScopedList where
+        toJSON RoutersScopedList'{..}
+          = object
+              (catMaybes
+                 [("routers" .=) <$> _rslRouters,
+                  ("warning" .=) <$> _rslWarning])
+
+--
+-- /See:/ 'routerStatusResponse' smart constructor.
+data RouterStatusResponse = RouterStatusResponse'
+    { _rsrKind   :: !Text
+    , _rsrResult :: !(Maybe RouterStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterStatusResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsrKind'
+--
+-- * 'rsrResult'
+routerStatusResponse
+    :: RouterStatusResponse
+routerStatusResponse =
+    RouterStatusResponse'
+    { _rsrKind = "compute#routerStatusResponse"
+    , _rsrResult = Nothing
+    }
+
+-- | Type of resource.
+rsrKind :: Lens' RouterStatusResponse Text
+rsrKind = lens _rsrKind (\ s a -> s{_rsrKind = a})
+
+rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
+rsrResult
+  = lens _rsrResult (\ s a -> s{_rsrResult = a})
+
+instance FromJSON RouterStatusResponse where
+        parseJSON
+          = withObject "RouterStatusResponse"
+              (\ o ->
+                 RouterStatusResponse' <$>
+                   (o .:? "kind" .!= "compute#routerStatusResponse") <*>
+                     (o .:? "result"))
+
+instance ToJSON RouterStatusResponse where
+        toJSON RouterStatusResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _rsrKind),
+                  ("result" .=) <$> _rsrResult])
+
+--
+-- /See:/ 'regionInstanceGroupManagersDeleteInstancesRequest' smart constructor.
+newtype RegionInstanceGroupManagersDeleteInstancesRequest = RegionInstanceGroupManagersDeleteInstancesRequest'
+    { _rigmdirInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmdirInstances'
+regionInstanceGroupManagersDeleteInstancesRequest
+    :: RegionInstanceGroupManagersDeleteInstancesRequest
+regionInstanceGroupManagersDeleteInstancesRequest =
+    RegionInstanceGroupManagersDeleteInstancesRequest'
+    { _rigmdirInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to delete. This can be a full URL or a
+-- partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+rigmdirInstances :: Lens' RegionInstanceGroupManagersDeleteInstancesRequest [Text]
+rigmdirInstances
+  = lens _rigmdirInstances
+      (\ s a -> s{_rigmdirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupManagersDeleteInstancesRequest
+         where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersDeleteInstancesRequest"
+              (\ o ->
+                 RegionInstanceGroupManagersDeleteInstancesRequest'
+                   <$> (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupManagersDeleteInstancesRequest
+         where
+        toJSON
+          RegionInstanceGroupManagersDeleteInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _rigmdirInstances])
+
+--
+-- /See:/ 'interconnectDiagnosticsLinkLACPStatus' smart constructor.
+data InterconnectDiagnosticsLinkLACPStatus = InterconnectDiagnosticsLinkLACPStatus'
+    { _idllacpsState            :: !(Maybe InterconnectDiagnosticsLinkLACPStatusState)
+    , _idllacpsNeighborSystemId :: !(Maybe Text)
+    , _idllacpsGoogleSystemId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectDiagnosticsLinkLACPStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idllacpsState'
+--
+-- * 'idllacpsNeighborSystemId'
+--
+-- * 'idllacpsGoogleSystemId'
+interconnectDiagnosticsLinkLACPStatus
+    :: InterconnectDiagnosticsLinkLACPStatus
+interconnectDiagnosticsLinkLACPStatus =
+    InterconnectDiagnosticsLinkLACPStatus'
+    { _idllacpsState = Nothing
+    , _idllacpsNeighborSystemId = Nothing
+    , _idllacpsGoogleSystemId = Nothing
+    }
+
+idllacpsState :: Lens' InterconnectDiagnosticsLinkLACPStatus (Maybe InterconnectDiagnosticsLinkLACPStatusState)
+idllacpsState
+  = lens _idllacpsState
+      (\ s a -> s{_idllacpsState = a})
+
+-- | System ID of the port on the neighbor?s side of the LACP exchange.
+idllacpsNeighborSystemId :: Lens' InterconnectDiagnosticsLinkLACPStatus (Maybe Text)
+idllacpsNeighborSystemId
+  = lens _idllacpsNeighborSystemId
+      (\ s a -> s{_idllacpsNeighborSystemId = a})
+
+-- | System ID of the port on Google?s side of the LACP exchange.
+idllacpsGoogleSystemId :: Lens' InterconnectDiagnosticsLinkLACPStatus (Maybe Text)
+idllacpsGoogleSystemId
+  = lens _idllacpsGoogleSystemId
+      (\ s a -> s{_idllacpsGoogleSystemId = a})
+
+instance FromJSON
+         InterconnectDiagnosticsLinkLACPStatus where
+        parseJSON
+          = withObject "InterconnectDiagnosticsLinkLACPStatus"
+              (\ o ->
+                 InterconnectDiagnosticsLinkLACPStatus' <$>
+                   (o .:? "state") <*> (o .:? "neighborSystemId") <*>
+                     (o .:? "googleSystemId"))
+
+instance ToJSON InterconnectDiagnosticsLinkLACPStatus
+         where
+        toJSON InterconnectDiagnosticsLinkLACPStatus'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _idllacpsState,
+                  ("neighborSystemId" .=) <$>
+                    _idllacpsNeighborSystemId,
+                  ("googleSystemId" .=) <$> _idllacpsGoogleSystemId])
+
+--
+-- /See:/ 'addressesScopedList' smart constructor.
+data AddressesScopedList = AddressesScopedList'
+    { _aslAddresses :: !(Maybe [Address])
+    , _aslWarning   :: !(Maybe AddressesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslAddresses'
+--
+-- * 'aslWarning'
+addressesScopedList
+    :: AddressesScopedList
+addressesScopedList =
+    AddressesScopedList'
+    { _aslAddresses = Nothing
+    , _aslWarning = Nothing
+    }
+
+-- | [Output Only] A list of addresses contained in this scope.
+aslAddresses :: Lens' AddressesScopedList [Address]
+aslAddresses
+  = lens _aslAddresses (\ s a -> s{_aslAddresses = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)
+aslWarning
+  = lens _aslWarning (\ s a -> s{_aslWarning = a})
+
+instance FromJSON AddressesScopedList where
+        parseJSON
+          = withObject "AddressesScopedList"
+              (\ o ->
+                 AddressesScopedList' <$>
+                   (o .:? "addresses" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON AddressesScopedList where
+        toJSON AddressesScopedList'{..}
+          = object
+              (catMaybes
+                 [("addresses" .=) <$> _aslAddresses,
+                  ("warning" .=) <$> _aslWarning])
+
+--
+-- /See:/ 'operationWarningsItemDataItem' smart constructor.
+data OperationWarningsItemDataItem = OperationWarningsItemDataItem'
+    { _owidiValue :: !(Maybe Text)
+    , _owidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owidiValue'
+--
+-- * 'owidiKey'
+operationWarningsItemDataItem
+    :: OperationWarningsItemDataItem
+operationWarningsItemDataItem =
+    OperationWarningsItemDataItem'
+    { _owidiValue = Nothing
+    , _owidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiValue
+  = lens _owidiValue (\ s a -> s{_owidiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})
+
+instance FromJSON OperationWarningsItemDataItem where
+        parseJSON
+          = withObject "OperationWarningsItemDataItem"
+              (\ o ->
+                 OperationWarningsItemDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationWarningsItemDataItem where
+        toJSON OperationWarningsItemDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _owidiValue,
+                  ("key" .=) <$> _owidiKey])
+
+--
+-- /See:/ 'regionInstanceGroupsListInstancesRequest' smart constructor.
+data RegionInstanceGroupsListInstancesRequest = RegionInstanceGroupsListInstancesRequest'
+    { _riglirInstanceState :: !(Maybe RegionInstanceGroupsListInstancesRequestInstanceState)
+    , _riglirPortName      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupsListInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riglirInstanceState'
+--
+-- * 'riglirPortName'
+regionInstanceGroupsListInstancesRequest
+    :: RegionInstanceGroupsListInstancesRequest
+regionInstanceGroupsListInstancesRequest =
+    RegionInstanceGroupsListInstancesRequest'
+    { _riglirInstanceState = Nothing
+    , _riglirPortName = Nothing
+    }
+
+-- | Instances in which state should be returned. Valid options are: \'ALL\',
+-- \'RUNNING\'. By default, it lists all instances.
+riglirInstanceState :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe RegionInstanceGroupsListInstancesRequestInstanceState)
+riglirInstanceState
+  = lens _riglirInstanceState
+      (\ s a -> s{_riglirInstanceState = a})
+
+-- | Name of port user is interested in. It is optional. If it is set, only
+-- information about this ports will be returned. If it is not set, all the
+-- named ports will be returned. Always lists all instances.
+riglirPortName :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe Text)
+riglirPortName
+  = lens _riglirPortName
+      (\ s a -> s{_riglirPortName = a})
+
+instance FromJSON
+         RegionInstanceGroupsListInstancesRequest where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupsListInstancesRequest"
+              (\ o ->
+                 RegionInstanceGroupsListInstancesRequest' <$>
+                   (o .:? "instanceState") <*> (o .:? "portName"))
+
+instance ToJSON
+         RegionInstanceGroupsListInstancesRequest where
+        toJSON RegionInstanceGroupsListInstancesRequest'{..}
+          = object
+              (catMaybes
+                 [("instanceState" .=) <$> _riglirInstanceState,
+                  ("portName" .=) <$> _riglirPortName])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'backendServiceAggregatedListWarning' smart constructor.
+data BackendServiceAggregatedListWarning = BackendServiceAggregatedListWarning'
+    { _bsalwData    :: !(Maybe [BackendServiceAggregatedListWarningDataItem])
+    , _bsalwCode    :: !(Maybe BackendServiceAggregatedListWarningCode)
+    , _bsalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsalwData'
+--
+-- * 'bsalwCode'
+--
+-- * 'bsalwMessage'
+backendServiceAggregatedListWarning
+    :: BackendServiceAggregatedListWarning
+backendServiceAggregatedListWarning =
+    BackendServiceAggregatedListWarning'
+    { _bsalwData = Nothing
+    , _bsalwCode = Nothing
+    , _bsalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+bsalwData :: Lens' BackendServiceAggregatedListWarning [BackendServiceAggregatedListWarningDataItem]
+bsalwData
+  = lens _bsalwData (\ s a -> s{_bsalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+bsalwCode :: Lens' BackendServiceAggregatedListWarning (Maybe BackendServiceAggregatedListWarningCode)
+bsalwCode
+  = lens _bsalwCode (\ s a -> s{_bsalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+bsalwMessage :: Lens' BackendServiceAggregatedListWarning (Maybe Text)
+bsalwMessage
+  = lens _bsalwMessage (\ s a -> s{_bsalwMessage = a})
+
+instance FromJSON BackendServiceAggregatedListWarning
+         where
+        parseJSON
+          = withObject "BackendServiceAggregatedListWarning"
+              (\ o ->
+                 BackendServiceAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON BackendServiceAggregatedListWarning
+         where
+        toJSON BackendServiceAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _bsalwData,
+                  ("code" .=) <$> _bsalwCode,
+                  ("message" .=) <$> _bsalwMessage])
+
+-- | A SSL policy specifies the server-side support for SSL features. This
+-- can be attached to a TargetHttpsProxy or a TargetSslProxy. This affects
+-- connections between clients and the HTTPS or SSL proxy load balancer.
+-- They do not affect the connection between the load balancers and the
+-- backends.
+--
+-- /See:/ 'sslPolicy' smart constructor.
+data SSLPolicy = SSLPolicy'
+    { _spKind              :: !Text
+    , _spFingerprint       :: !(Maybe Bytes)
+    , _spProFile           :: !(Maybe SSLPolicyProFile)
+    , _spWarnings          :: !(Maybe [SSLPolicyWarningsItem])
+    , _spCustomFeatures    :: !(Maybe [Text])
+    , _spSelfLink          :: !(Maybe Text)
+    , _spName              :: !(Maybe Text)
+    , _spCreationTimestamp :: !(Maybe Text)
+    , _spEnabledFeatures   :: !(Maybe [Text])
+    , _spId                :: !(Maybe (Textual Word64))
+    , _spMinTLSVersion     :: !(Maybe SSLPolicyMinTLSVersion)
+    , _spDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spKind'
+--
+-- * 'spFingerprint'
+--
+-- * 'spProFile'
+--
+-- * 'spWarnings'
+--
+-- * 'spCustomFeatures'
+--
+-- * 'spSelfLink'
+--
+-- * 'spName'
+--
+-- * 'spCreationTimestamp'
+--
+-- * 'spEnabledFeatures'
+--
+-- * 'spId'
+--
+-- * 'spMinTLSVersion'
+--
+-- * 'spDescription'
+sslPolicy
+    :: SSLPolicy
+sslPolicy =
+    SSLPolicy'
+    { _spKind = "compute#sslPolicy"
+    , _spFingerprint = Nothing
+    , _spProFile = Nothing
+    , _spWarnings = Nothing
+    , _spCustomFeatures = Nothing
+    , _spSelfLink = Nothing
+    , _spName = Nothing
+    , _spCreationTimestamp = Nothing
+    , _spEnabledFeatures = Nothing
+    , _spId = Nothing
+    , _spMinTLSVersion = Nothing
+    , _spDescription = Nothing
+    }
+
+-- | [Output only] Type of the resource. Always compute#sslPolicyfor SSL
+-- policies.
+spKind :: Lens' SSLPolicy Text
+spKind = lens _spKind (\ s a -> s{_spKind = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a SslPolicy. An up-to-date fingerprint must be
+-- provided in order to update the SslPolicy, otherwise the request will
+-- fail with error 412 conditionNotMet. To see the latest fingerprint, make
+-- a get() request to retrieve an SslPolicy.
+spFingerprint :: Lens' SSLPolicy (Maybe ByteString)
+spFingerprint
+  = lens _spFingerprint
+      (\ s a -> s{_spFingerprint = a})
+      . mapping _Bytes
+
+-- | Profile specifies the set of SSL features that can be used by the load
+-- balancer when negotiating SSL with clients. This can be one of
+-- COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of
+-- SSL features to enable must be specified in the customFeatures field.
+spProFile :: Lens' SSLPolicy (Maybe SSLPolicyProFile)
+spProFile
+  = lens _spProFile (\ s a -> s{_spProFile = a})
+
+-- | [Output Only] If potential misconfigurations are detected for this SSL
+-- policy, this field will be populated with warning messages.
+spWarnings :: Lens' SSLPolicy [SSLPolicyWarningsItem]
+spWarnings
+  = lens _spWarnings (\ s a -> s{_spWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | A list of features enabled when the selected profile is CUSTOM. The -
+-- method returns the set of features that can be specified in this list.
+-- This field must be empty if the profile is not CUSTOM.
+spCustomFeatures :: Lens' SSLPolicy [Text]
+spCustomFeatures
+  = lens _spCustomFeatures
+      (\ s a -> s{_spCustomFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+spSelfLink :: Lens' SSLPolicy (Maybe Text)
+spSelfLink
+  = lens _spSelfLink (\ s a -> s{_spSelfLink = a})
+
+-- | Name of the resource. The name must be 1-63 characters long, and comply
+-- with RFC1035. Specifically, the name must be 1-63 characters long and
+-- match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means
+-- the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash.
+spName :: Lens' SSLPolicy (Maybe Text)
+spName = lens _spName (\ s a -> s{_spName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+spCreationTimestamp :: Lens' SSLPolicy (Maybe Text)
+spCreationTimestamp
+  = lens _spCreationTimestamp
+      (\ s a -> s{_spCreationTimestamp = a})
+
+-- | [Output Only] The list of features enabled in the SSL policy.
+spEnabledFeatures :: Lens' SSLPolicy [Text]
+spEnabledFeatures
+  = lens _spEnabledFeatures
+      (\ s a -> s{_spEnabledFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+spId :: Lens' SSLPolicy (Maybe Word64)
+spId
+  = lens _spId (\ s a -> s{_spId = a}) .
+      mapping _Coerce
+
+-- | The minimum version of SSL protocol that can be used by the clients to
+-- establish a connection with the load balancer. This can be one of
+-- TLS_1_0, TLS_1_1, TLS_1_2.
+spMinTLSVersion :: Lens' SSLPolicy (Maybe SSLPolicyMinTLSVersion)
+spMinTLSVersion
+  = lens _spMinTLSVersion
+      (\ s a -> s{_spMinTLSVersion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+spDescription :: Lens' SSLPolicy (Maybe Text)
+spDescription
+  = lens _spDescription
+      (\ s a -> s{_spDescription = a})
+
+instance FromJSON SSLPolicy where
+        parseJSON
+          = withObject "SSLPolicy"
+              (\ o ->
+                 SSLPolicy' <$>
+                   (o .:? "kind" .!= "compute#sslPolicy") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "profile")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "customFeatures" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "enabledFeatures" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "minTlsVersion")
+                     <*> (o .:? "description"))
+
+instance ToJSON SSLPolicy where
+        toJSON SSLPolicy'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _spKind),
+                  ("fingerprint" .=) <$> _spFingerprint,
+                  ("profile" .=) <$> _spProFile,
+                  ("warnings" .=) <$> _spWarnings,
+                  ("customFeatures" .=) <$> _spCustomFeatures,
+                  ("selfLink" .=) <$> _spSelfLink,
+                  ("name" .=) <$> _spName,
+                  ("creationTimestamp" .=) <$> _spCreationTimestamp,
+                  ("enabledFeatures" .=) <$> _spEnabledFeatures,
+                  ("id" .=) <$> _spId,
+                  ("minTlsVersion" .=) <$> _spMinTLSVersion,
+                  ("description" .=) <$> _spDescription])
+
+--
+-- /See:/ 'backendServiceListWarningDataItem' smart constructor.
+data BackendServiceListWarningDataItem = BackendServiceListWarningDataItem'
+    { _bslwdiValue :: !(Maybe Text)
+    , _bslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bslwdiValue'
+--
+-- * 'bslwdiKey'
+backendServiceListWarningDataItem
+    :: BackendServiceListWarningDataItem
+backendServiceListWarningDataItem =
+    BackendServiceListWarningDataItem'
+    { _bslwdiValue = Nothing
+    , _bslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+bslwdiValue :: Lens' BackendServiceListWarningDataItem (Maybe Text)
+bslwdiValue
+  = lens _bslwdiValue (\ s a -> s{_bslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+bslwdiKey :: Lens' BackendServiceListWarningDataItem (Maybe Text)
+bslwdiKey
+  = lens _bslwdiKey (\ s a -> s{_bslwdiKey = a})
+
+instance FromJSON BackendServiceListWarningDataItem
+         where
+        parseJSON
+          = withObject "BackendServiceListWarningDataItem"
+              (\ o ->
+                 BackendServiceListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON BackendServiceListWarningDataItem
+         where
+        toJSON BackendServiceListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _bslwdiValue,
+                  ("key" .=) <$> _bslwdiKey])
+
+--
+-- /See:/ 'firewallDeniedItem' smart constructor.
+data FirewallDeniedItem = FirewallDeniedItem'
+    { _fdiIPProtocol :: !(Maybe Text)
+    , _fdiPorts      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallDeniedItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdiIPProtocol'
+--
+-- * 'fdiPorts'
+firewallDeniedItem
+    :: FirewallDeniedItem
+firewallDeniedItem =
+    FirewallDeniedItem'
+    { _fdiIPProtocol = Nothing
+    , _fdiPorts = Nothing
+    }
+
+-- | The IP protocol to which this rule applies. The protocol type is
+-- required when creating a firewall rule. This value can either be one of
+-- the following well known protocol strings (tcp, udp, icmp, esp, ah,
+-- ipip, sctp), or the IP protocol number.
+fdiIPProtocol :: Lens' FirewallDeniedItem (Maybe Text)
+fdiIPProtocol
+  = lens _fdiIPProtocol
+      (\ s a -> s{_fdiIPProtocol = a})
+
+-- | An optional list of ports to which this rule applies. This field is only
+-- applicable for UDP or TCP protocol. Each entry must be either an integer
+-- or a range. If not specified, this rule applies to connections through
+-- any port. Example inputs include: [\"22\"], [\"80\",\"443\"], and
+-- [\"12345-12349\"].
+fdiPorts :: Lens' FirewallDeniedItem [Text]
+fdiPorts
+  = lens _fdiPorts (\ s a -> s{_fdiPorts = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON FirewallDeniedItem where
+        parseJSON
+          = withObject "FirewallDeniedItem"
+              (\ o ->
+                 FirewallDeniedItem' <$>
+                   (o .:? "IPProtocol") <*> (o .:? "ports" .!= mempty))
+
+instance ToJSON FirewallDeniedItem where
+        toJSON FirewallDeniedItem'{..}
+          = object
+              (catMaybes
+                 [("IPProtocol" .=) <$> _fdiIPProtocol,
+                  ("ports" .=) <$> _fdiPorts])
+
+--
+-- /See:/ 'instanceGroupManagersAbandonInstancesRequest' smart constructor.
+newtype InstanceGroupManagersAbandonInstancesRequest = InstanceGroupManagersAbandonInstancesRequest'
+    { _igmairInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmairInstances'
+instanceGroupManagersAbandonInstancesRequest
+    :: InstanceGroupManagersAbandonInstancesRequest
+instanceGroupManagersAbandonInstancesRequest =
+    InstanceGroupManagersAbandonInstancesRequest'
+    { _igmairInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to abandon. This can be a full URL or
+-- a partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]
+igmairInstances
+  = lens _igmairInstances
+      (\ s a -> s{_igmairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersAbandonInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersAbandonInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersAbandonInstancesRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersAbandonInstancesRequest where
+        toJSON
+          InstanceGroupManagersAbandonInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmairInstances])
+
+-- | A list of MachineTypesScopedList resources.
+--
+-- /See:/ 'machineTypeAggregatedListItems' smart constructor.
+newtype MachineTypeAggregatedListItems = MachineTypeAggregatedListItems'
+    { _mtaliAddtional :: HashMap Text MachineTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtaliAddtional'
+machineTypeAggregatedListItems
+    :: HashMap Text MachineTypesScopedList -- ^ 'mtaliAddtional'
+    -> MachineTypeAggregatedListItems
+machineTypeAggregatedListItems pMtaliAddtional_ =
+    MachineTypeAggregatedListItems'
+    { _mtaliAddtional = _Coerce # pMtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of machine types.
+mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)
+mtaliAddtional
+  = lens _mtaliAddtional
+      (\ s a -> s{_mtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON MachineTypeAggregatedListItems
+         where
+        parseJSON
+          = withObject "MachineTypeAggregatedListItems"
+              (\ o ->
+                 MachineTypeAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON MachineTypeAggregatedListItems where
+        toJSON = toJSON . _mtaliAddtional
+
+-- | A list of DiskTypesScopedList resources.
+--
+-- /See:/ 'diskTypeAggregatedListItems' smart constructor.
+newtype DiskTypeAggregatedListItems = DiskTypeAggregatedListItems'
+    { _dtaliAddtional :: HashMap Text DiskTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtaliAddtional'
+diskTypeAggregatedListItems
+    :: HashMap Text DiskTypesScopedList -- ^ 'dtaliAddtional'
+    -> DiskTypeAggregatedListItems
+diskTypeAggregatedListItems pDtaliAddtional_ =
+    DiskTypeAggregatedListItems'
+    { _dtaliAddtional = _Coerce # pDtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of disk types.
+dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)
+dtaliAddtional
+  = lens _dtaliAddtional
+      (\ s a -> s{_dtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON DiskTypeAggregatedListItems where
+        parseJSON
+          = withObject "DiskTypeAggregatedListItems"
+              (\ o ->
+                 DiskTypeAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON DiskTypeAggregatedListItems where
+        toJSON = toJSON . _dtaliAddtional
+
+--
+-- /See:/ 'instancesSetLabelsRequest' smart constructor.
+data InstancesSetLabelsRequest = InstancesSetLabelsRequest'
+    { _islrLabels           :: !(Maybe InstancesSetLabelsRequestLabels)
+    , _islrLabelFingerprint :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islrLabels'
+--
+-- * 'islrLabelFingerprint'
+instancesSetLabelsRequest
+    :: InstancesSetLabelsRequest
+instancesSetLabelsRequest =
+    InstancesSetLabelsRequest'
+    { _islrLabels = Nothing
+    , _islrLabelFingerprint = Nothing
+    }
+
+islrLabels :: Lens' InstancesSetLabelsRequest (Maybe InstancesSetLabelsRequestLabels)
+islrLabels
+  = lens _islrLabels (\ s a -> s{_islrLabels = a})
+
+-- | Fingerprint of the previous set of labels for this resource, used to
+-- prevent conflicts. Provide the latest fingerprint value when making a
+-- request to add or change labels.
+islrLabelFingerprint :: Lens' InstancesSetLabelsRequest (Maybe ByteString)
+islrLabelFingerprint
+  = lens _islrLabelFingerprint
+      (\ s a -> s{_islrLabelFingerprint = a})
+      . mapping _Bytes
+
+instance FromJSON InstancesSetLabelsRequest where
+        parseJSON
+          = withObject "InstancesSetLabelsRequest"
+              (\ o ->
+                 InstancesSetLabelsRequest' <$>
+                   (o .:? "labels") <*> (o .:? "labelFingerprint"))
+
+instance ToJSON InstancesSetLabelsRequest where
+        toJSON InstancesSetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("labels" .=) <$> _islrLabels,
+                  ("labelFingerprint" .=) <$> _islrLabelFingerprint])
+
+-- | Contains a list of routers.
+--
+-- /See:/ 'routerAggregatedList' smart constructor.
+data RouterAggregatedList = RouterAggregatedList'
+    { _ralNextPageToken :: !(Maybe Text)
+    , _ralKind          :: !Text
+    , _ralItems         :: !(Maybe RouterAggregatedListItems)
+    , _ralSelfLink      :: !(Maybe Text)
+    , _ralWarning       :: !(Maybe RouterAggregatedListWarning)
+    , _ralId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ralNextPageToken'
+--
+-- * 'ralKind'
+--
+-- * 'ralItems'
+--
+-- * 'ralSelfLink'
+--
+-- * 'ralWarning'
+--
+-- * 'ralId'
+routerAggregatedList
+    :: RouterAggregatedList
+routerAggregatedList =
+    RouterAggregatedList'
+    { _ralNextPageToken = Nothing
+    , _ralKind = "compute#routerAggregatedList"
+    , _ralItems = Nothing
+    , _ralSelfLink = Nothing
+    , _ralWarning = Nothing
+    , _ralId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)
+ralNextPageToken
+  = lens _ralNextPageToken
+      (\ s a -> s{_ralNextPageToken = a})
+
+-- | Type of resource.
+ralKind :: Lens' RouterAggregatedList Text
+ralKind = lens _ralKind (\ s a -> s{_ralKind = a})
+
+-- | A list of Router resources.
+ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)
+ralItems = lens _ralItems (\ s a -> s{_ralItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)
+ralSelfLink
+  = lens _ralSelfLink (\ s a -> s{_ralSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ralWarning :: Lens' RouterAggregatedList (Maybe RouterAggregatedListWarning)
+ralWarning
+  = lens _ralWarning (\ s a -> s{_ralWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ralId :: Lens' RouterAggregatedList (Maybe Text)
+ralId = lens _ralId (\ s a -> s{_ralId = a})
+
+instance FromJSON RouterAggregatedList where
+        parseJSON
+          = withObject "RouterAggregatedList"
+              (\ o ->
+                 RouterAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#routerAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RouterAggregatedList where
+        toJSON RouterAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ralNextPageToken,
+                  Just ("kind" .= _ralKind),
+                  ("items" .=) <$> _ralItems,
+                  ("selfLink" .=) <$> _ralSelfLink,
+                  ("warning" .=) <$> _ralWarning,
+                  ("id" .=) <$> _ralId])
+
+-- | Contains a list of firewalls.
+--
+-- /See:/ 'firewallList' smart constructor.
+data FirewallList = FirewallList'
+    { _flNextPageToken :: !(Maybe Text)
+    , _flKind          :: !Text
+    , _flItems         :: !(Maybe [Firewall])
+    , _flSelfLink      :: !(Maybe Text)
+    , _flWarning       :: !(Maybe FirewallListWarning)
+    , _flId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flNextPageToken'
+--
+-- * 'flKind'
+--
+-- * 'flItems'
+--
+-- * 'flSelfLink'
+--
+-- * 'flWarning'
+--
+-- * 'flId'
+firewallList
+    :: FirewallList
+firewallList =
+    FirewallList'
+    { _flNextPageToken = Nothing
+    , _flKind = "compute#firewallList"
+    , _flItems = Nothing
+    , _flSelfLink = Nothing
+    , _flWarning = Nothing
+    , _flId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+flNextPageToken :: Lens' FirewallList (Maybe Text)
+flNextPageToken
+  = lens _flNextPageToken
+      (\ s a -> s{_flNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#firewallList for lists of
+-- firewalls.
+flKind :: Lens' FirewallList Text
+flKind = lens _flKind (\ s a -> s{_flKind = a})
+
+-- | A list of Firewall resources.
+flItems :: Lens' FirewallList [Firewall]
+flItems
+  = lens _flItems (\ s a -> s{_flItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+flSelfLink :: Lens' FirewallList (Maybe Text)
+flSelfLink
+  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+flWarning :: Lens' FirewallList (Maybe FirewallListWarning)
+flWarning
+  = lens _flWarning (\ s a -> s{_flWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+flId :: Lens' FirewallList (Maybe Text)
+flId = lens _flId (\ s a -> s{_flId = a})
+
+instance FromJSON FirewallList where
+        parseJSON
+          = withObject "FirewallList"
+              (\ o ->
+                 FirewallList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#firewallList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON FirewallList where
+        toJSON FirewallList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _flNextPageToken,
+                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,
+                  ("selfLink" .=) <$> _flSelfLink,
+                  ("warning" .=) <$> _flWarning, ("id" .=) <$> _flId])
+
+-- | [Output Only] Informational warning which replaces the list of instances
+-- when the list is empty.
+--
+-- /See:/ 'instancesScopedListWarning' smart constructor.
+data InstancesScopedListWarning = InstancesScopedListWarning'
+    { _islwData    :: !(Maybe [InstancesScopedListWarningDataItem])
+    , _islwCode    :: !(Maybe InstancesScopedListWarningCode)
+    , _islwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islwData'
+--
+-- * 'islwCode'
+--
+-- * 'islwMessage'
+instancesScopedListWarning
+    :: InstancesScopedListWarning
+instancesScopedListWarning =
+    InstancesScopedListWarning'
+    { _islwData = Nothing
+    , _islwCode = Nothing
+    , _islwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]
+islwData
+  = lens _islwData (\ s a -> s{_islwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)
+islwCode = lens _islwCode (\ s a -> s{_islwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)
+islwMessage
+  = lens _islwMessage (\ s a -> s{_islwMessage = a})
+
+instance FromJSON InstancesScopedListWarning where
+        parseJSON
+          = withObject "InstancesScopedListWarning"
+              (\ o ->
+                 InstancesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstancesScopedListWarning where
+        toJSON InstancesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _islwData,
+                  ("code" .=) <$> _islwCode,
+                  ("message" .=) <$> _islwMessage])
+
+--
+-- /See:/ 'regionInstanceGroupManagersRecreateRequest' smart constructor.
+newtype RegionInstanceGroupManagersRecreateRequest = RegionInstanceGroupManagersRecreateRequest'
+    { _rigmrrInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersRecreateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmrrInstances'
+regionInstanceGroupManagersRecreateRequest
+    :: RegionInstanceGroupManagersRecreateRequest
+regionInstanceGroupManagersRecreateRequest =
+    RegionInstanceGroupManagersRecreateRequest'
+    { _rigmrrInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to recreate. This can be a full URL or
+-- a partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+rigmrrInstances :: Lens' RegionInstanceGroupManagersRecreateRequest [Text]
+rigmrrInstances
+  = lens _rigmrrInstances
+      (\ s a -> s{_rigmrrInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupManagersRecreateRequest where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersRecreateRequest"
+              (\ o ->
+                 RegionInstanceGroupManagersRecreateRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupManagersRecreateRequest where
+        toJSON
+          RegionInstanceGroupManagersRecreateRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _rigmrrInstances])
+
+-- | Labels to apply to this instance. These can be later modified by the
+-- setLabels method.
+--
+-- /See:/ 'instanceLabels' smart constructor.
+newtype InstanceLabels = InstanceLabels'
+    { _ilAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilAddtional'
+instanceLabels
+    :: HashMap Text Text -- ^ 'ilAddtional'
+    -> InstanceLabels
+instanceLabels pIlAddtional_ =
+    InstanceLabels'
+    { _ilAddtional = _Coerce # pIlAddtional_
+    }
+
+ilAddtional :: Lens' InstanceLabels (HashMap Text Text)
+ilAddtional
+  = lens _ilAddtional (\ s a -> s{_ilAddtional = a}) .
+      _Coerce
+
+instance FromJSON InstanceLabels where
+        parseJSON
+          = withObject "InstanceLabels"
+              (\ o -> InstanceLabels' <$> (parseJSONObject o))
+
+instance ToJSON InstanceLabels where
+        toJSON = toJSON . _ilAddtional
+
+-- | Informational warning which replaces the list of backend services when
+-- the list is empty.
+--
+-- /See:/ 'backendServicesScopedListWarning' smart constructor.
+data BackendServicesScopedListWarning = BackendServicesScopedListWarning'
+    { _bsslwData    :: !(Maybe [BackendServicesScopedListWarningDataItem])
+    , _bsslwCode    :: !(Maybe BackendServicesScopedListWarningCode)
+    , _bsslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsslwData'
+--
+-- * 'bsslwCode'
+--
+-- * 'bsslwMessage'
+backendServicesScopedListWarning
+    :: BackendServicesScopedListWarning
+backendServicesScopedListWarning =
+    BackendServicesScopedListWarning'
+    { _bsslwData = Nothing
+    , _bsslwCode = Nothing
+    , _bsslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+bsslwData :: Lens' BackendServicesScopedListWarning [BackendServicesScopedListWarningDataItem]
+bsslwData
+  = lens _bsslwData (\ s a -> s{_bsslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+bsslwCode :: Lens' BackendServicesScopedListWarning (Maybe BackendServicesScopedListWarningCode)
+bsslwCode
+  = lens _bsslwCode (\ s a -> s{_bsslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+bsslwMessage :: Lens' BackendServicesScopedListWarning (Maybe Text)
+bsslwMessage
+  = lens _bsslwMessage (\ s a -> s{_bsslwMessage = a})
+
+instance FromJSON BackendServicesScopedListWarning
+         where
+        parseJSON
+          = withObject "BackendServicesScopedListWarning"
+              (\ o ->
+                 BackendServicesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON BackendServicesScopedListWarning
+         where
+        toJSON BackendServicesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _bsslwData,
+                  ("code" .=) <$> _bsslwCode,
+                  ("message" .=) <$> _bsslwMessage])
+
+-- | Represents a match condition that incoming traffic is evaluated against.
+-- Exactly one field must be specified.
+--
+-- /See:/ 'securityPolicyRuleMatcher' smart constructor.
+data SecurityPolicyRuleMatcher = SecurityPolicyRuleMatcher'
+    { _sprmVersionedExpr :: !(Maybe SecurityPolicyRuleMatcherVersionedExpr)
+    , _sprmConfig        :: !(Maybe SecurityPolicyRuleMatcherConfig)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyRuleMatcher' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprmVersionedExpr'
+--
+-- * 'sprmConfig'
+securityPolicyRuleMatcher
+    :: SecurityPolicyRuleMatcher
+securityPolicyRuleMatcher =
+    SecurityPolicyRuleMatcher'
+    { _sprmVersionedExpr = Nothing
+    , _sprmConfig = Nothing
+    }
+
+-- | Preconfigured versioned expression. If this field is specified, config
+-- must also be specified. Available preconfigured expressions along with
+-- their requirements are: SRC_IPS_V1 - must specify the corresponding
+-- src_ip_range field in config.
+sprmVersionedExpr :: Lens' SecurityPolicyRuleMatcher (Maybe SecurityPolicyRuleMatcherVersionedExpr)
+sprmVersionedExpr
+  = lens _sprmVersionedExpr
+      (\ s a -> s{_sprmVersionedExpr = a})
+
+-- | The configuration options available when specifying versioned_expr. This
+-- field must be specified if versioned_expr is specified and cannot be
+-- specified if versioned_expr is not specified.
+sprmConfig :: Lens' SecurityPolicyRuleMatcher (Maybe SecurityPolicyRuleMatcherConfig)
+sprmConfig
+  = lens _sprmConfig (\ s a -> s{_sprmConfig = a})
+
+instance FromJSON SecurityPolicyRuleMatcher where
+        parseJSON
+          = withObject "SecurityPolicyRuleMatcher"
+              (\ o ->
+                 SecurityPolicyRuleMatcher' <$>
+                   (o .:? "versionedExpr") <*> (o .:? "config"))
+
+instance ToJSON SecurityPolicyRuleMatcher where
+        toJSON SecurityPolicyRuleMatcher'{..}
+          = object
+              (catMaybes
+                 [("versionedExpr" .=) <$> _sprmVersionedExpr,
+                  ("config" .=) <$> _sprmConfig])
+
+-- | A list of InstanceGroup resources.
+--
+-- /See:/ 'instanceGroupList' smart constructor.
+data InstanceGroupList = InstanceGroupList'
+    { _iglNextPageToken :: !(Maybe Text)
+    , _iglKind          :: !Text
+    , _iglItems         :: !(Maybe [InstanceGroup])
+    , _iglSelfLink      :: !(Maybe Text)
+    , _iglWarning       :: !(Maybe InstanceGroupListWarning)
+    , _iglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglNextPageToken'
+--
+-- * 'iglKind'
+--
+-- * 'iglItems'
+--
+-- * 'iglSelfLink'
+--
+-- * 'iglWarning'
+--
+-- * 'iglId'
+instanceGroupList
+    :: InstanceGroupList
+instanceGroupList =
+    InstanceGroupList'
+    { _iglNextPageToken = Nothing
+    , _iglKind = "compute#instanceGroupList"
+    , _iglItems = Nothing
+    , _iglSelfLink = Nothing
+    , _iglWarning = Nothing
+    , _iglId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)
+iglNextPageToken
+  = lens _iglNextPageToken
+      (\ s a -> s{_iglNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupList for instance group lists.
+iglKind :: Lens' InstanceGroupList Text
+iglKind = lens _iglKind (\ s a -> s{_iglKind = a})
+
+-- | A list of InstanceGroup resources.
+iglItems :: Lens' InstanceGroupList [InstanceGroup]
+iglItems
+  = lens _iglItems (\ s a -> s{_iglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+iglSelfLink :: Lens' InstanceGroupList (Maybe Text)
+iglSelfLink
+  = lens _iglSelfLink (\ s a -> s{_iglSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+iglWarning :: Lens' InstanceGroupList (Maybe InstanceGroupListWarning)
+iglWarning
+  = lens _iglWarning (\ s a -> s{_iglWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+iglId :: Lens' InstanceGroupList (Maybe Text)
+iglId = lens _iglId (\ s a -> s{_iglId = a})
+
+instance FromJSON InstanceGroupList where
+        parseJSON
+          = withObject "InstanceGroupList"
+              (\ o ->
+                 InstanceGroupList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceGroupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupList where
+        toJSON InstanceGroupList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _iglNextPageToken,
+                  Just ("kind" .= _iglKind),
+                  ("items" .=) <$> _iglItems,
+                  ("selfLink" .=) <$> _iglSelfLink,
+                  ("warning" .=) <$> _iglWarning,
+                  ("id" .=) <$> _iglId])
+
+--
+-- /See:/ 'instancesSetMachineTypeRequest' smart constructor.
+newtype InstancesSetMachineTypeRequest = InstancesSetMachineTypeRequest'
+    { _ismtrMachineType :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMachineTypeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismtrMachineType'
+instancesSetMachineTypeRequest
+    :: InstancesSetMachineTypeRequest
+instancesSetMachineTypeRequest =
+    InstancesSetMachineTypeRequest'
+    { _ismtrMachineType = Nothing
+    }
+
+-- | Full or partial URL of the machine type resource. See Machine Types for
+-- a full list of machine types. For example:
+-- zones\/us-central1-f\/machineTypes\/n1-standard-1
+ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)
+ismtrMachineType
+  = lens _ismtrMachineType
+      (\ s a -> s{_ismtrMachineType = a})
+
+instance FromJSON InstancesSetMachineTypeRequest
+         where
+        parseJSON
+          = withObject "InstancesSetMachineTypeRequest"
+              (\ o ->
+                 InstancesSetMachineTypeRequest' <$>
+                   (o .:? "machineType"))
+
+instance ToJSON InstancesSetMachineTypeRequest where
+        toJSON InstancesSetMachineTypeRequest'{..}
+          = object
+              (catMaybes
+                 [("machineType" .=) <$> _ismtrMachineType])
+
+-- | Contain information of Nat mapping for a VM endpoint (i.e., NIC).
+--
+-- /See:/ 'vMEndpointNATMAppings' smart constructor.
+data VMEndpointNATMAppings = VMEndpointNATMAppings'
+    { _vmenatmaInstanceName         :: !(Maybe Text)
+    , _vmenatmaInterfaceNATMAppings :: !(Maybe [VMEndpointNATMAppingsInterfaceNATMAppings])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VMEndpointNATMAppings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vmenatmaInstanceName'
+--
+-- * 'vmenatmaInterfaceNATMAppings'
+vMEndpointNATMAppings
+    :: VMEndpointNATMAppings
+vMEndpointNATMAppings =
+    VMEndpointNATMAppings'
+    { _vmenatmaInstanceName = Nothing
+    , _vmenatmaInterfaceNATMAppings = Nothing
+    }
+
+-- | Name of the VM instance which the endpoint belongs to
+vmenatmaInstanceName :: Lens' VMEndpointNATMAppings (Maybe Text)
+vmenatmaInstanceName
+  = lens _vmenatmaInstanceName
+      (\ s a -> s{_vmenatmaInstanceName = a})
+
+vmenatmaInterfaceNATMAppings :: Lens' VMEndpointNATMAppings [VMEndpointNATMAppingsInterfaceNATMAppings]
+vmenatmaInterfaceNATMAppings
+  = lens _vmenatmaInterfaceNATMAppings
+      (\ s a -> s{_vmenatmaInterfaceNATMAppings = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON VMEndpointNATMAppings where
+        parseJSON
+          = withObject "VMEndpointNATMAppings"
+              (\ o ->
+                 VMEndpointNATMAppings' <$>
+                   (o .:? "instanceName") <*>
+                     (o .:? "interfaceNatMappings" .!= mempty))
+
+instance ToJSON VMEndpointNATMAppings where
+        toJSON VMEndpointNATMAppings'{..}
+          = object
+              (catMaybes
+                 [("instanceName" .=) <$> _vmenatmaInstanceName,
+                  ("interfaceNatMappings" .=) <$>
+                    _vmenatmaInterfaceNATMAppings])
+
+-- | Represents a customer-supplied encryption key
+--
+-- /See:/ 'customerEncryptionKey' smart constructor.
+data CustomerEncryptionKey = CustomerEncryptionKey'
+    { _cekKmsKeyName :: !(Maybe Text)
+    , _cekSha256     :: !(Maybe Text)
+    , _cekRawKey     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomerEncryptionKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cekKmsKeyName'
+--
+-- * 'cekSha256'
+--
+-- * 'cekRawKey'
+customerEncryptionKey
+    :: CustomerEncryptionKey
+customerEncryptionKey =
+    CustomerEncryptionKey'
+    { _cekKmsKeyName = Nothing
+    , _cekSha256 = Nothing
+    , _cekRawKey = Nothing
+    }
+
+-- | The name of the encryption key that is stored in Google Cloud KMS.
+cekKmsKeyName :: Lens' CustomerEncryptionKey (Maybe Text)
+cekKmsKeyName
+  = lens _cekKmsKeyName
+      (\ s a -> s{_cekKmsKeyName = a})
+
+-- | [Output only] The RFC 4648 base64 encoded SHA-256 hash of the
+-- customer-supplied encryption key that protects this resource.
+cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)
+cekSha256
+  = lens _cekSha256 (\ s a -> s{_cekSha256 = a})
+
+-- | Specifies a 256-bit customer-supplied encryption key, encoded in RFC
+-- 4648 base64 to either encrypt or decrypt this resource.
+cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)
+cekRawKey
+  = lens _cekRawKey (\ s a -> s{_cekRawKey = a})
+
+instance FromJSON CustomerEncryptionKey where
+        parseJSON
+          = withObject "CustomerEncryptionKey"
+              (\ o ->
+                 CustomerEncryptionKey' <$>
+                   (o .:? "kmsKeyName") <*> (o .:? "sha256") <*>
+                     (o .:? "rawKey"))
+
+instance ToJSON CustomerEncryptionKey where
+        toJSON CustomerEncryptionKey'{..}
+          = object
+              (catMaybes
+                 [("kmsKeyName" .=) <$> _cekKmsKeyName,
+                  ("sha256" .=) <$> _cekSha256,
+                  ("rawKey" .=) <$> _cekRawKey])
+
+-- | A list of AutoscalersScopedList resources.
+--
+-- /See:/ 'autoscalerAggregatedListItems' smart constructor.
+newtype AutoscalerAggregatedListItems = AutoscalerAggregatedListItems'
+    { _aaliAddtional :: HashMap Text AutoscalersScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaliAddtional'
+autoscalerAggregatedListItems
+    :: HashMap Text AutoscalersScopedList -- ^ 'aaliAddtional'
+    -> AutoscalerAggregatedListItems
+autoscalerAggregatedListItems pAaliAddtional_ =
+    AutoscalerAggregatedListItems'
+    { _aaliAddtional = _Coerce # pAaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of autoscalers.
+aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)
+aaliAddtional
+  = lens _aaliAddtional
+      (\ s a -> s{_aaliAddtional = a})
+      . _Coerce
+
+instance FromJSON AutoscalerAggregatedListItems where
+        parseJSON
+          = withObject "AutoscalerAggregatedListItems"
+              (\ o ->
+                 AutoscalerAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON AutoscalerAggregatedListItems where
+        toJSON = toJSON . _aaliAddtional
+
+--
+-- /See:/ 'instanceListWarningDataItem' smart constructor.
+data InstanceListWarningDataItem = InstanceListWarningDataItem'
+    { _ilwdiValue :: !(Maybe Text)
+    , _ilwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilwdiValue'
+--
+-- * 'ilwdiKey'
+instanceListWarningDataItem
+    :: InstanceListWarningDataItem
+instanceListWarningDataItem =
+    InstanceListWarningDataItem'
+    { _ilwdiValue = Nothing
+    , _ilwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ilwdiValue :: Lens' InstanceListWarningDataItem (Maybe Text)
+ilwdiValue
+  = lens _ilwdiValue (\ s a -> s{_ilwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ilwdiKey :: Lens' InstanceListWarningDataItem (Maybe Text)
+ilwdiKey = lens _ilwdiKey (\ s a -> s{_ilwdiKey = a})
+
+instance FromJSON InstanceListWarningDataItem where
+        parseJSON
+          = withObject "InstanceListWarningDataItem"
+              (\ o ->
+                 InstanceListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstanceListWarningDataItem where
+        toJSON InstanceListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ilwdiValue,
+                  ("key" .=) <$> _ilwdiKey])
+
+--
+-- /See:/ 'instanceGroupManagersSetInstanceTemplateRequest' smart constructor.
+newtype InstanceGroupManagersSetInstanceTemplateRequest = InstanceGroupManagersSetInstanceTemplateRequest'
+    { _igmsitrInstanceTemplate :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetInstanceTemplateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmsitrInstanceTemplate'
+instanceGroupManagersSetInstanceTemplateRequest
+    :: InstanceGroupManagersSetInstanceTemplateRequest
+instanceGroupManagersSetInstanceTemplateRequest =
+    InstanceGroupManagersSetInstanceTemplateRequest'
+    { _igmsitrInstanceTemplate = Nothing
+    }
+
+-- | The URL of the instance template that is specified for this managed
+-- instance group. The group uses this template to create all new instances
+-- in the managed instance group.
+igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)
+igmsitrInstanceTemplate
+  = lens _igmsitrInstanceTemplate
+      (\ s a -> s{_igmsitrInstanceTemplate = a})
+
+instance FromJSON
+         InstanceGroupManagersSetInstanceTemplateRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersSetInstanceTemplateRequest"
+              (\ o ->
+                 InstanceGroupManagersSetInstanceTemplateRequest' <$>
+                   (o .:? "instanceTemplate"))
+
+instance ToJSON
+         InstanceGroupManagersSetInstanceTemplateRequest where
+        toJSON
+          InstanceGroupManagersSetInstanceTemplateRequest'{..}
+          = object
+              (catMaybes
+                 [("instanceTemplate" .=) <$>
+                    _igmsitrInstanceTemplate])
+
+-- | Deprecation status for a public resource.
+--
+-- /See:/ 'deprecationStatus' smart constructor.
+data DeprecationStatus = DeprecationStatus'
+    { _dsState       :: !(Maybe DeprecationStatusState)
+    , _dsDeleted     :: !(Maybe Text)
+    , _dsReplacement :: !(Maybe Text)
+    , _dsObsolete    :: !(Maybe Text)
+    , _dsDeprecated  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeprecationStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsState'
+--
+-- * 'dsDeleted'
+--
+-- * 'dsReplacement'
+--
+-- * 'dsObsolete'
+--
+-- * 'dsDeprecated'
+deprecationStatus
+    :: DeprecationStatus
+deprecationStatus =
+    DeprecationStatus'
+    { _dsState = Nothing
+    , _dsDeleted = Nothing
+    , _dsReplacement = Nothing
+    , _dsObsolete = Nothing
+    , _dsDeprecated = Nothing
+    }
+
+-- | The deprecation state of this resource. This can be DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which create a new resource using a
+-- DEPRECATED resource will return successfully, but with a warning
+-- indicating the deprecated resource and recommending its replacement.
+-- Operations which use OBSOLETE or DELETED resources will be rejected and
+-- result in an error.
+dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)
+dsState = lens _dsState (\ s a -> s{_dsState = a})
+
+-- | An optional RFC3339 timestamp on or after which the state of this
+-- resource is intended to change to DELETED. This is only informational
+-- and the status will not change unless the client explicitly changes it.
+dsDeleted :: Lens' DeprecationStatus (Maybe Text)
+dsDeleted
+  = lens _dsDeleted (\ s a -> s{_dsDeleted = a})
+
+-- | The URL of the suggested replacement for a deprecated resource. The
+-- suggested replacement resource must be the same kind of resource as the
+-- deprecated resource.
+dsReplacement :: Lens' DeprecationStatus (Maybe Text)
+dsReplacement
+  = lens _dsReplacement
+      (\ s a -> s{_dsReplacement = a})
+
+-- | An optional RFC3339 timestamp on or after which the state of this
+-- resource is intended to change to OBSOLETE. This is only informational
+-- and the status will not change unless the client explicitly changes it.
+dsObsolete :: Lens' DeprecationStatus (Maybe Text)
+dsObsolete
+  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})
+
+-- | An optional RFC3339 timestamp on or after which the state of this
+-- resource is intended to change to DEPRECATED. This is only informational
+-- and the status will not change unless the client explicitly changes it.
+dsDeprecated :: Lens' DeprecationStatus (Maybe Text)
+dsDeprecated
+  = lens _dsDeprecated (\ s a -> s{_dsDeprecated = a})
+
+instance FromJSON DeprecationStatus where
+        parseJSON
+          = withObject "DeprecationStatus"
+              (\ o ->
+                 DeprecationStatus' <$>
+                   (o .:? "state") <*> (o .:? "deleted") <*>
+                     (o .:? "replacement")
+                     <*> (o .:? "obsolete")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON DeprecationStatus where
+        toJSON DeprecationStatus'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _dsState,
+                  ("deleted" .=) <$> _dsDeleted,
+                  ("replacement" .=) <$> _dsReplacement,
+                  ("obsolete" .=) <$> _dsObsolete,
+                  ("deprecated" .=) <$> _dsDeprecated])
+
+--
+-- /See:/ 'httpsHealthCheckListWarningDataItem' smart constructor.
+data HTTPSHealthCheckListWarningDataItem = HTTPSHealthCheckListWarningDataItem'
+    { _hhclwdiValue :: !(Maybe Text)
+    , _hhclwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheckListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhclwdiValue'
+--
+-- * 'hhclwdiKey'
+httpsHealthCheckListWarningDataItem
+    :: HTTPSHealthCheckListWarningDataItem
+httpsHealthCheckListWarningDataItem =
+    HTTPSHealthCheckListWarningDataItem'
+    { _hhclwdiValue = Nothing
+    , _hhclwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+hhclwdiValue :: Lens' HTTPSHealthCheckListWarningDataItem (Maybe Text)
+hhclwdiValue
+  = lens _hhclwdiValue (\ s a -> s{_hhclwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+hhclwdiKey :: Lens' HTTPSHealthCheckListWarningDataItem (Maybe Text)
+hhclwdiKey
+  = lens _hhclwdiKey (\ s a -> s{_hhclwdiKey = a})
+
+instance FromJSON HTTPSHealthCheckListWarningDataItem
+         where
+        parseJSON
+          = withObject "HTTPSHealthCheckListWarningDataItem"
+              (\ o ->
+                 HTTPSHealthCheckListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON HTTPSHealthCheckListWarningDataItem
+         where
+        toJSON HTTPSHealthCheckListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _hhclwdiValue,
+                  ("key" .=) <$> _hhclwdiKey])
+
+-- | A persistent disk snapshot resource. (== resource_for beta.snapshots ==)
+-- (== resource_for v1.snapshots ==)
+--
+-- /See:/ 'snapshot' smart constructor.
+data Snapshot = Snapshot'
+    { _sStorageBytesStatus      :: !(Maybe SnapshotStorageBytesStatus)
+    , _sStatus                  :: !(Maybe SnapshotStatus)
+    , _sDiskSizeGb              :: !(Maybe (Textual Int64))
+    , _sSourceDiskId            :: !(Maybe Text)
+    , _sKind                    :: !Text
+    , _sSourceDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _sStorageBytes            :: !(Maybe (Textual Int64))
+    , _sSelfLink                :: !(Maybe Text)
+    , _sSnapshotEncryptionKey   :: !(Maybe CustomerEncryptionKey)
+    , _sName                    :: !(Maybe Text)
+    , _sCreationTimestamp       :: !(Maybe Text)
+    , _sLicenseCodes            :: !(Maybe [Textual Int64])
+    , _sId                      :: !(Maybe (Textual Word64))
+    , _sLabels                  :: !(Maybe SnapshotLabels)
+    , _sLicenses                :: !(Maybe [Text])
+    , _sSourceDisk              :: !(Maybe Text)
+    , _sLabelFingerprint        :: !(Maybe Bytes)
+    , _sDescription             :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Snapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sStorageBytesStatus'
+--
+-- * 'sStatus'
+--
+-- * 'sDiskSizeGb'
+--
+-- * 'sSourceDiskId'
+--
+-- * 'sKind'
+--
+-- * 'sSourceDiskEncryptionKey'
+--
+-- * 'sStorageBytes'
+--
+-- * 'sSelfLink'
+--
+-- * 'sSnapshotEncryptionKey'
+--
+-- * 'sName'
+--
+-- * 'sCreationTimestamp'
+--
+-- * 'sLicenseCodes'
+--
+-- * 'sId'
+--
+-- * 'sLabels'
+--
+-- * 'sLicenses'
+--
+-- * 'sSourceDisk'
+--
+-- * 'sLabelFingerprint'
+--
+-- * 'sDescription'
+snapshot
+    :: Snapshot
+snapshot =
+    Snapshot'
+    { _sStorageBytesStatus = Nothing
+    , _sStatus = Nothing
+    , _sDiskSizeGb = Nothing
+    , _sSourceDiskId = Nothing
+    , _sKind = "compute#snapshot"
+    , _sSourceDiskEncryptionKey = Nothing
+    , _sStorageBytes = Nothing
+    , _sSelfLink = Nothing
+    , _sSnapshotEncryptionKey = Nothing
+    , _sName = Nothing
+    , _sCreationTimestamp = Nothing
+    , _sLicenseCodes = Nothing
+    , _sId = Nothing
+    , _sLabels = Nothing
+    , _sLicenses = Nothing
+    , _sSourceDisk = Nothing
+    , _sLabelFingerprint = Nothing
+    , _sDescription = Nothing
+    }
+
+-- | [Output Only] An indicator whether storageBytes is in a stable state or
+-- it is being adjusted as a result of shared storage reallocation. This
+-- status can either be UPDATING, meaning the size of the snapshot is being
+-- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.
+sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)
+sStorageBytesStatus
+  = lens _sStorageBytesStatus
+      (\ s a -> s{_sStorageBytesStatus = a})
+
+-- | [Output Only] The status of the snapshot. This can be CREATING,
+-- DELETING, FAILED, READY, or UPLOADING.
+sStatus :: Lens' Snapshot (Maybe SnapshotStatus)
+sStatus = lens _sStatus (\ s a -> s{_sStatus = a})
+
+-- | [Output Only] Size of the snapshot, specified in GB.
+sDiskSizeGb :: Lens' Snapshot (Maybe Int64)
+sDiskSizeGb
+  = lens _sDiskSizeGb (\ s a -> s{_sDiskSizeGb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The ID value of the disk used to create this snapshot.
+-- This value may be used to determine whether the snapshot was taken from
+-- the current or a previous instance of a given disk name.
+sSourceDiskId :: Lens' Snapshot (Maybe Text)
+sSourceDiskId
+  = lens _sSourceDiskId
+      (\ s a -> s{_sSourceDiskId = a})
+
+-- | [Output Only] Type of the resource. Always compute#snapshot for Snapshot
+-- resources.
+sKind :: Lens' Snapshot Text
+sKind = lens _sKind (\ s a -> s{_sKind = a})
+
+-- | The customer-supplied encryption key of the source disk. Required if the
+-- source disk is protected by a customer-supplied encryption key.
+sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+sSourceDiskEncryptionKey
+  = lens _sSourceDiskEncryptionKey
+      (\ s a -> s{_sSourceDiskEncryptionKey = a})
+
+-- | [Output Only] A size of the storage used by the snapshot. As snapshots
+-- share storage, this number is expected to change with snapshot
+-- creation\/deletion.
+sStorageBytes :: Lens' Snapshot (Maybe Int64)
+sStorageBytes
+  = lens _sStorageBytes
+      (\ s a -> s{_sStorageBytes = a})
+      . mapping _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+sSelfLink :: Lens' Snapshot (Maybe Text)
+sSelfLink
+  = lens _sSelfLink (\ s a -> s{_sSelfLink = a})
+
+-- | Encrypts the snapshot using a customer-supplied encryption key. After
+-- you encrypt a snapshot using a customer-supplied key, you must provide
+-- the same key if you use the image later For example, you must provide
+-- the encryption key when you create a disk from the encrypted snapshot in
+-- a future request. Customer-supplied encryption keys do not protect
+-- access to metadata of the disk. If you do not provide an encryption key
+-- when creating the snapshot, then the snapshot will be encrypted using an
+-- automatically generated key and you do not need to provide a key to use
+-- the snapshot later.
+sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+sSnapshotEncryptionKey
+  = lens _sSnapshotEncryptionKey
+      (\ s a -> s{_sSnapshotEncryptionKey = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+sName :: Lens' Snapshot (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+sCreationTimestamp :: Lens' Snapshot (Maybe Text)
+sCreationTimestamp
+  = lens _sCreationTimestamp
+      (\ s a -> s{_sCreationTimestamp = a})
+
+-- | [Output Only] Integer license codes indicating which licenses are
+-- attached to this snapshot.
+sLicenseCodes :: Lens' Snapshot [Int64]
+sLicenseCodes
+  = lens _sLicenseCodes
+      (\ s a -> s{_sLicenseCodes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+sId :: Lens' Snapshot (Maybe Word64)
+sId
+  = lens _sId (\ s a -> s{_sId = a}) . mapping _Coerce
+
+-- | Labels to apply to this snapshot. These can be later modified by the
+-- setLabels method. Label values may be empty.
+sLabels :: Lens' Snapshot (Maybe SnapshotLabels)
+sLabels = lens _sLabels (\ s a -> s{_sLabels = a})
+
+-- | [Output Only] A list of public visible licenses that apply to this
+-- snapshot. This can be because the original image had licenses attached
+-- (such as a Windows image).
+sLicenses :: Lens' Snapshot [Text]
+sLicenses
+  = lens _sLicenses (\ s a -> s{_sLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The source disk used to create this snapshot.
+sSourceDisk :: Lens' Snapshot (Maybe Text)
+sSourceDisk
+  = lens _sSourceDisk (\ s a -> s{_sSourceDisk = a})
+
+-- | A fingerprint for the labels being applied to this snapshot, which is
+-- essentially a hash of the labels set used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update labels. You must always provide an
+-- up-to-date fingerprint hash in order to update or change labels,
+-- otherwise the request will fail with error 412 conditionNotMet. To see
+-- the latest fingerprint, make a get() request to retrieve a snapshot.
+sLabelFingerprint :: Lens' Snapshot (Maybe ByteString)
+sLabelFingerprint
+  = lens _sLabelFingerprint
+      (\ s a -> s{_sLabelFingerprint = a})
+      . mapping _Bytes
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+sDescription :: Lens' Snapshot (Maybe Text)
+sDescription
+  = lens _sDescription (\ s a -> s{_sDescription = a})
+
+instance FromJSON Snapshot where
+        parseJSON
+          = withObject "Snapshot"
+              (\ o ->
+                 Snapshot' <$>
+                   (o .:? "storageBytesStatus") <*> (o .:? "status") <*>
+                     (o .:? "diskSizeGb")
+                     <*> (o .:? "sourceDiskId")
+                     <*> (o .:? "kind" .!= "compute#snapshot")
+                     <*> (o .:? "sourceDiskEncryptionKey")
+                     <*> (o .:? "storageBytes")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "snapshotEncryptionKey")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "licenseCodes" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "sourceDisk")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description"))
+
+instance ToJSON Snapshot where
+        toJSON Snapshot'{..}
+          = object
+              (catMaybes
+                 [("storageBytesStatus" .=) <$> _sStorageBytesStatus,
+                  ("status" .=) <$> _sStatus,
+                  ("diskSizeGb" .=) <$> _sDiskSizeGb,
+                  ("sourceDiskId" .=) <$> _sSourceDiskId,
+                  Just ("kind" .= _sKind),
+                  ("sourceDiskEncryptionKey" .=) <$>
+                    _sSourceDiskEncryptionKey,
+                  ("storageBytes" .=) <$> _sStorageBytes,
+                  ("selfLink" .=) <$> _sSelfLink,
+                  ("snapshotEncryptionKey" .=) <$>
+                    _sSnapshotEncryptionKey,
+                  ("name" .=) <$> _sName,
+                  ("creationTimestamp" .=) <$> _sCreationTimestamp,
+                  ("licenseCodes" .=) <$> _sLicenseCodes,
+                  ("id" .=) <$> _sId, ("labels" .=) <$> _sLabels,
+                  ("licenses" .=) <$> _sLicenses,
+                  ("sourceDisk" .=) <$> _sSourceDisk,
+                  ("labelFingerprint" .=) <$> _sLabelFingerprint,
+                  ("description" .=) <$> _sDescription])
+
+--
+-- /See:/ 'routerStatus' smart constructor.
+data RouterStatus = RouterStatus'
+    { _rsBestRoutesForRouter :: !(Maybe [Route])
+    , _rsBGPPeerStatus       :: !(Maybe [RouterStatusBGPPeerStatus])
+    , _rsNetwork             :: !(Maybe Text)
+    , _rsNATStatus           :: !(Maybe [RouterStatusNATStatus])
+    , _rsBestRoutes          :: !(Maybe [Route])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsBestRoutesForRouter'
+--
+-- * 'rsBGPPeerStatus'
+--
+-- * 'rsNetwork'
+--
+-- * 'rsNATStatus'
+--
+-- * 'rsBestRoutes'
+routerStatus
+    :: RouterStatus
+routerStatus =
+    RouterStatus'
+    { _rsBestRoutesForRouter = Nothing
+    , _rsBGPPeerStatus = Nothing
+    , _rsNetwork = Nothing
+    , _rsNATStatus = Nothing
+    , _rsBestRoutes = Nothing
+    }
+
+-- | Best routes learned by this router.
+rsBestRoutesForRouter :: Lens' RouterStatus [Route]
+rsBestRoutesForRouter
+  = lens _rsBestRoutesForRouter
+      (\ s a -> s{_rsBestRoutesForRouter = a})
+      . _Default
+      . _Coerce
+
+rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]
+rsBGPPeerStatus
+  = lens _rsBGPPeerStatus
+      (\ s a -> s{_rsBGPPeerStatus = a})
+      . _Default
+      . _Coerce
+
+-- | URI of the network to which this router belongs.
+rsNetwork :: Lens' RouterStatus (Maybe Text)
+rsNetwork
+  = lens _rsNetwork (\ s a -> s{_rsNetwork = a})
+
+rsNATStatus :: Lens' RouterStatus [RouterStatusNATStatus]
+rsNATStatus
+  = lens _rsNATStatus (\ s a -> s{_rsNATStatus = a}) .
+      _Default
+      . _Coerce
+
+-- | Best routes for this router\'s network.
+rsBestRoutes :: Lens' RouterStatus [Route]
+rsBestRoutes
+  = lens _rsBestRoutes (\ s a -> s{_rsBestRoutes = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RouterStatus where
+        parseJSON
+          = withObject "RouterStatus"
+              (\ o ->
+                 RouterStatus' <$>
+                   (o .:? "bestRoutesForRouter" .!= mempty) <*>
+                     (o .:? "bgpPeerStatus" .!= mempty)
+                     <*> (o .:? "network")
+                     <*> (o .:? "natStatus" .!= mempty)
+                     <*> (o .:? "bestRoutes" .!= mempty))
+
+instance ToJSON RouterStatus where
+        toJSON RouterStatus'{..}
+          = object
+              (catMaybes
+                 [("bestRoutesForRouter" .=) <$>
+                    _rsBestRoutesForRouter,
+                  ("bgpPeerStatus" .=) <$> _rsBGPPeerStatus,
+                  ("network" .=) <$> _rsNetwork,
+                  ("natStatus" .=) <$> _rsNATStatus,
+                  ("bestRoutes" .=) <$> _rsBestRoutes])
+
+-- | Custom utilization metric policy.
+--
+-- /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.
+data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization'
+    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))
+    , _apcmuMetric                :: !(Maybe Text)
+    , _apcmuUtilizationTargetType :: !(Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyCustomMetricUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apcmuUtilizationTarget'
+--
+-- * 'apcmuMetric'
+--
+-- * 'apcmuUtilizationTargetType'
+autoscalingPolicyCustomMetricUtilization
+    :: AutoscalingPolicyCustomMetricUtilization
+autoscalingPolicyCustomMetricUtilization =
+    AutoscalingPolicyCustomMetricUtilization'
+    { _apcmuUtilizationTarget = Nothing
+    , _apcmuMetric = Nothing
+    , _apcmuUtilizationTargetType = Nothing
+    }
+
+-- | The target value of the metric that autoscaler should maintain. This
+-- must be a positive value. A utilization metric scales number of virtual
+-- machines handling requests to increase or decrease proportionally to the
+-- metric. For example, a good metric to use as a utilization_target is
+-- compute.googleapis.com\/instance\/network\/received_bytes_count. The
+-- autoscaler will work to keep this value constant for each of the
+-- instances.
+apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)
+apcmuUtilizationTarget
+  = lens _apcmuUtilizationTarget
+      (\ s a -> s{_apcmuUtilizationTarget = a})
+      . mapping _Coerce
+
+-- | The identifier (type) of the Stackdriver Monitoring metric. The metric
+-- cannot have negative values. The metric must have a value type of INT64
+-- or DOUBLE.
+apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)
+apcmuMetric
+  = lens _apcmuMetric (\ s a -> s{_apcmuMetric = a})
+
+-- | Defines how target utilization value is expressed for a Stackdriver
+-- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.
+apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
+apcmuUtilizationTargetType
+  = lens _apcmuUtilizationTargetType
+      (\ s a -> s{_apcmuUtilizationTargetType = a})
+
+instance FromJSON
+         AutoscalingPolicyCustomMetricUtilization where
+        parseJSON
+          = withObject
+              "AutoscalingPolicyCustomMetricUtilization"
+              (\ o ->
+                 AutoscalingPolicyCustomMetricUtilization' <$>
+                   (o .:? "utilizationTarget") <*> (o .:? "metric") <*>
+                     (o .:? "utilizationTargetType"))
+
+instance ToJSON
+         AutoscalingPolicyCustomMetricUtilization where
+        toJSON AutoscalingPolicyCustomMetricUtilization'{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _apcmuUtilizationTarget,
+                  ("metric" .=) <$> _apcmuMetric,
+                  ("utilizationTargetType" .=) <$>
+                    _apcmuUtilizationTargetType])
+
+-- | Contains a list of ForwardingRule resources.
+--
+-- /See:/ 'forwardingRuleList' smart constructor.
+data ForwardingRuleList = ForwardingRuleList'
+    { _frlNextPageToken :: !(Maybe Text)
+    , _frlKind          :: !Text
+    , _frlItems         :: !(Maybe [ForwardingRule])
+    , _frlSelfLink      :: !(Maybe Text)
+    , _frlWarning       :: !(Maybe ForwardingRuleListWarning)
+    , _frlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frlNextPageToken'
+--
+-- * 'frlKind'
+--
+-- * 'frlItems'
+--
+-- * 'frlSelfLink'
+--
+-- * 'frlWarning'
+--
+-- * 'frlId'
+forwardingRuleList
+    :: ForwardingRuleList
+forwardingRuleList =
+    ForwardingRuleList'
+    { _frlNextPageToken = Nothing
+    , _frlKind = "compute#forwardingRuleList"
+    , _frlItems = Nothing
+    , _frlSelfLink = Nothing
+    , _frlWarning = Nothing
+    , _frlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)
+frlNextPageToken
+  = lens _frlNextPageToken
+      (\ s a -> s{_frlNextPageToken = a})
+
+-- | Type of resource.
+frlKind :: Lens' ForwardingRuleList Text
+frlKind = lens _frlKind (\ s a -> s{_frlKind = a})
+
+-- | A list of ForwardingRule resources.
+frlItems :: Lens' ForwardingRuleList [ForwardingRule]
+frlItems
+  = lens _frlItems (\ s a -> s{_frlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)
+frlSelfLink
+  = lens _frlSelfLink (\ s a -> s{_frlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+frlWarning :: Lens' ForwardingRuleList (Maybe ForwardingRuleListWarning)
+frlWarning
+  = lens _frlWarning (\ s a -> s{_frlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+frlId :: Lens' ForwardingRuleList (Maybe Text)
+frlId = lens _frlId (\ s a -> s{_frlId = a})
+
+instance FromJSON ForwardingRuleList where
+        parseJSON
+          = withObject "ForwardingRuleList"
+              (\ o ->
+                 ForwardingRuleList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#forwardingRuleList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON ForwardingRuleList where
+        toJSON ForwardingRuleList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _frlNextPageToken,
+                  Just ("kind" .= _frlKind),
+                  ("items" .=) <$> _frlItems,
+                  ("selfLink" .=) <$> _frlSelfLink,
+                  ("warning" .=) <$> _frlWarning,
+                  ("id" .=) <$> _frlId])
+
+-- | A NodeGroup resource.
+--
+-- /See:/ 'nodeGroup' smart constructor.
+data NodeGroup = NodeGroup'
+    { _ngStatus            :: !(Maybe NodeGroupStatus)
+    , _ngSize              :: !(Maybe (Textual Int32))
+    , _ngKind              :: !Text
+    , _ngZone              :: !(Maybe Text)
+    , _ngSelfLink          :: !(Maybe Text)
+    , _ngName              :: !(Maybe Text)
+    , _ngCreationTimestamp :: !(Maybe Text)
+    , _ngId                :: !(Maybe (Textual Word64))
+    , _ngNodeTemplate      :: !(Maybe Text)
+    , _ngDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngStatus'
+--
+-- * 'ngSize'
+--
+-- * 'ngKind'
+--
+-- * 'ngZone'
+--
+-- * 'ngSelfLink'
+--
+-- * 'ngName'
+--
+-- * 'ngCreationTimestamp'
+--
+-- * 'ngId'
+--
+-- * 'ngNodeTemplate'
+--
+-- * 'ngDescription'
+nodeGroup
+    :: NodeGroup
+nodeGroup =
+    NodeGroup'
+    { _ngStatus = Nothing
+    , _ngSize = Nothing
+    , _ngKind = "compute#nodeGroup"
+    , _ngZone = Nothing
+    , _ngSelfLink = Nothing
+    , _ngName = Nothing
+    , _ngCreationTimestamp = Nothing
+    , _ngId = Nothing
+    , _ngNodeTemplate = Nothing
+    , _ngDescription = Nothing
+    }
+
+ngStatus :: Lens' NodeGroup (Maybe NodeGroupStatus)
+ngStatus = lens _ngStatus (\ s a -> s{_ngStatus = a})
+
+-- | [Output Only] The total number of nodes in the node group.
+ngSize :: Lens' NodeGroup (Maybe Int32)
+ngSize
+  = lens _ngSize (\ s a -> s{_ngSize = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The type of the resource. Always compute#nodeGroup for
+-- node group.
+ngKind :: Lens' NodeGroup Text
+ngKind = lens _ngKind (\ s a -> s{_ngKind = a})
+
+-- | [Output Only] The name of the zone where the node group resides, such as
+-- us-central1-a.
+ngZone :: Lens' NodeGroup (Maybe Text)
+ngZone = lens _ngZone (\ s a -> s{_ngZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+ngSelfLink :: Lens' NodeGroup (Maybe Text)
+ngSelfLink
+  = lens _ngSelfLink (\ s a -> s{_ngSelfLink = a})
+
+-- | The name of the resource, provided by the client when initially creating
+-- the resource. The resource name must be 1-63 characters long, and comply
+-- with RFC1035. Specifically, the name must be 1-63 characters long and
+-- match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means
+-- the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash.
+ngName :: Lens' NodeGroup (Maybe Text)
+ngName = lens _ngName (\ s a -> s{_ngName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+ngCreationTimestamp :: Lens' NodeGroup (Maybe Text)
+ngCreationTimestamp
+  = lens _ngCreationTimestamp
+      (\ s a -> s{_ngCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+ngId :: Lens' NodeGroup (Maybe Word64)
+ngId
+  = lens _ngId (\ s a -> s{_ngId = a}) .
+      mapping _Coerce
+
+-- | The URL of the node template to which this node group belongs.
+ngNodeTemplate :: Lens' NodeGroup (Maybe Text)
+ngNodeTemplate
+  = lens _ngNodeTemplate
+      (\ s a -> s{_ngNodeTemplate = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+ngDescription :: Lens' NodeGroup (Maybe Text)
+ngDescription
+  = lens _ngDescription
+      (\ s a -> s{_ngDescription = a})
+
+instance FromJSON NodeGroup where
+        parseJSON
+          = withObject "NodeGroup"
+              (\ o ->
+                 NodeGroup' <$>
+                   (o .:? "status") <*> (o .:? "size") <*>
+                     (o .:? "kind" .!= "compute#nodeGroup")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "nodeTemplate")
+                     <*> (o .:? "description"))
+
+instance ToJSON NodeGroup where
+        toJSON NodeGroup'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _ngStatus,
+                  ("size" .=) <$> _ngSize, Just ("kind" .= _ngKind),
+                  ("zone" .=) <$> _ngZone,
+                  ("selfLink" .=) <$> _ngSelfLink,
+                  ("name" .=) <$> _ngName,
+                  ("creationTimestamp" .=) <$> _ngCreationTimestamp,
+                  ("id" .=) <$> _ngId,
+                  ("nodeTemplate" .=) <$> _ngNodeTemplate,
+                  ("description" .=) <$> _ngDescription])
+
+--
+-- /See:/ 'vpnTunnelsScopedList' smart constructor.
+data VPNTunnelsScopedList = VPNTunnelsScopedList'
+    { _vtslVPNTunnels :: !(Maybe [VPNTunnel])
+    , _vtslWarning    :: !(Maybe VPNTunnelsScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslVPNTunnels'
+--
+-- * 'vtslWarning'
+vpnTunnelsScopedList
+    :: VPNTunnelsScopedList
+vpnTunnelsScopedList =
+    VPNTunnelsScopedList'
+    { _vtslVPNTunnels = Nothing
+    , _vtslWarning = Nothing
+    }
+
+-- | A list of vpn tunnels contained in this scope.
+vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]
+vtslVPNTunnels
+  = lens _vtslVPNTunnels
+      (\ s a -> s{_vtslVPNTunnels = a})
+      . _Default
+      . _Coerce
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)
+vtslWarning
+  = lens _vtslWarning (\ s a -> s{_vtslWarning = a})
+
+instance FromJSON VPNTunnelsScopedList where
+        parseJSON
+          = withObject "VPNTunnelsScopedList"
+              (\ o ->
+                 VPNTunnelsScopedList' <$>
+                   (o .:? "vpnTunnels" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON VPNTunnelsScopedList where
+        toJSON VPNTunnelsScopedList'{..}
+          = object
+              (catMaybes
+                 [("vpnTunnels" .=) <$> _vtslVPNTunnels,
+                  ("warning" .=) <$> _vtslWarning])
+
+-- | Represents a secondary IP range of a subnetwork.
+--
+-- /See:/ 'subnetworkSecondaryRange' smart constructor.
+data SubnetworkSecondaryRange = SubnetworkSecondaryRange'
+    { _ssrRangeName   :: !(Maybe Text)
+    , _ssrIPCIdRRange :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkSecondaryRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssrRangeName'
+--
+-- * 'ssrIPCIdRRange'
+subnetworkSecondaryRange
+    :: SubnetworkSecondaryRange
+subnetworkSecondaryRange =
+    SubnetworkSecondaryRange'
+    { _ssrRangeName = Nothing
+    , _ssrIPCIdRRange = Nothing
+    }
+
+-- | The name associated with this subnetwork secondary range, used when
+-- adding an alias IP range to a VM instance. The name must be 1-63
+-- characters long, and comply with RFC1035. The name must be unique within
+-- the subnetwork.
+ssrRangeName :: Lens' SubnetworkSecondaryRange (Maybe Text)
+ssrRangeName
+  = lens _ssrRangeName (\ s a -> s{_ssrRangeName = a})
+
+-- | The range of IP addresses belonging to this subnetwork secondary range.
+-- Provide this property when you create the subnetwork. Ranges must be
+-- unique and non-overlapping with all primary and secondary IP ranges
+-- within a network. Only IPv4 is supported.
+ssrIPCIdRRange :: Lens' SubnetworkSecondaryRange (Maybe Text)
+ssrIPCIdRRange
+  = lens _ssrIPCIdRRange
+      (\ s a -> s{_ssrIPCIdRRange = a})
+
+instance FromJSON SubnetworkSecondaryRange where
+        parseJSON
+          = withObject "SubnetworkSecondaryRange"
+              (\ o ->
+                 SubnetworkSecondaryRange' <$>
+                   (o .:? "rangeName") <*> (o .:? "ipCidrRange"))
+
+instance ToJSON SubnetworkSecondaryRange where
+        toJSON SubnetworkSecondaryRange'{..}
+          = object
+              (catMaybes
+                 [("rangeName" .=) <$> _ssrRangeName,
+                  ("ipCidrRange" .=) <$> _ssrIPCIdRRange])
+
+--
+-- /See:/ 'nodeTypesScopedList' smart constructor.
+data NodeTypesScopedList = NodeTypesScopedList'
+    { _ntslNodeTypes :: !(Maybe [NodeType])
+    , _ntslWarning   :: !(Maybe NodeTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntslNodeTypes'
+--
+-- * 'ntslWarning'
+nodeTypesScopedList
+    :: NodeTypesScopedList
+nodeTypesScopedList =
+    NodeTypesScopedList'
+    { _ntslNodeTypes = Nothing
+    , _ntslWarning = Nothing
+    }
+
+-- | [Output Only] A list of node types contained in this scope.
+ntslNodeTypes :: Lens' NodeTypesScopedList [NodeType]
+ntslNodeTypes
+  = lens _ntslNodeTypes
+      (\ s a -> s{_ntslNodeTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the node types
+-- list is empty.
+ntslWarning :: Lens' NodeTypesScopedList (Maybe NodeTypesScopedListWarning)
+ntslWarning
+  = lens _ntslWarning (\ s a -> s{_ntslWarning = a})
+
+instance FromJSON NodeTypesScopedList where
+        parseJSON
+          = withObject "NodeTypesScopedList"
+              (\ o ->
+                 NodeTypesScopedList' <$>
+                   (o .:? "nodeTypes" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON NodeTypesScopedList where
+        toJSON NodeTypesScopedList'{..}
+          = object
+              (catMaybes
+                 [("nodeTypes" .=) <$> _ntslNodeTypes,
+                  ("warning" .=) <$> _ntslWarning])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionInstanceGroupsListInstancesWarning' smart constructor.
+data RegionInstanceGroupsListInstancesWarning = RegionInstanceGroupsListInstancesWarning'
+    { _rigliwData    :: !(Maybe [RegionInstanceGroupsListInstancesWarningDataItem])
+    , _rigliwCode    :: !(Maybe RegionInstanceGroupsListInstancesWarningCode)
+    , _rigliwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupsListInstancesWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigliwData'
+--
+-- * 'rigliwCode'
+--
+-- * 'rigliwMessage'
+regionInstanceGroupsListInstancesWarning
+    :: RegionInstanceGroupsListInstancesWarning
+regionInstanceGroupsListInstancesWarning =
+    RegionInstanceGroupsListInstancesWarning'
+    { _rigliwData = Nothing
+    , _rigliwCode = Nothing
+    , _rigliwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rigliwData :: Lens' RegionInstanceGroupsListInstancesWarning [RegionInstanceGroupsListInstancesWarningDataItem]
+rigliwData
+  = lens _rigliwData (\ s a -> s{_rigliwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rigliwCode :: Lens' RegionInstanceGroupsListInstancesWarning (Maybe RegionInstanceGroupsListInstancesWarningCode)
+rigliwCode
+  = lens _rigliwCode (\ s a -> s{_rigliwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rigliwMessage :: Lens' RegionInstanceGroupsListInstancesWarning (Maybe Text)
+rigliwMessage
+  = lens _rigliwMessage
+      (\ s a -> s{_rigliwMessage = a})
+
+instance FromJSON
+         RegionInstanceGroupsListInstancesWarning where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupsListInstancesWarning"
+              (\ o ->
+                 RegionInstanceGroupsListInstancesWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         RegionInstanceGroupsListInstancesWarning where
+        toJSON RegionInstanceGroupsListInstancesWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rigliwData,
+                  ("code" .=) <$> _rigliwCode,
+                  ("message" .=) <$> _rigliwMessage])
+
+-- | Specifies the audit configuration for a service. The configuration
+-- determines which permission types are logged, and what identities, if
+-- any, are exempted from logging. An AuditConfig must have one or more
+-- AuditLogConfigs. If there are AuditConfigs for both \`allServices\` and
+-- a specific service, the union of the two AuditConfigs is used for that
+-- service: the log_types specified in each AuditConfig are enabled, and
+-- the exempted_members in each AuditLogConfig are exempted. Example Policy
+-- with multiple AuditConfigs: { \"audit_configs\": [ { \"service\":
+-- \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\":
+-- \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\":
+-- \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\":
+-- [ \"user:bar\'gmail.com\" ] } ] } ] } For fooservice, this policy
+-- enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts
+-- foo\'gmail.com from DATA_READ logging, and bar\'gmail.com from
+-- DATA_WRITE logging.
+--
+-- /See:/ 'auditConfig' smart constructor.
+data AuditConfig = AuditConfig'
+    { _acService         :: !(Maybe Text)
+    , _acAuditLogConfigs :: !(Maybe [AuditLogConfig])
+    , _acExemptedMembers :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acService'
+--
+-- * 'acAuditLogConfigs'
+--
+-- * 'acExemptedMembers'
+auditConfig
+    :: AuditConfig
+auditConfig =
+    AuditConfig'
+    { _acService = Nothing
+    , _acAuditLogConfigs = Nothing
+    , _acExemptedMembers = Nothing
+    }
+
+-- | Specifies a service that will be enabled for audit logging. For example,
+-- \`storage.googleapis.com\`, \`cloudsql.googleapis.com\`. \`allServices\`
+-- is a special value that covers all services.
+acService :: Lens' AuditConfig (Maybe Text)
+acService
+  = lens _acService (\ s a -> s{_acService = a})
+
+-- | The configuration for logging of each type of permission.
+acAuditLogConfigs :: Lens' AuditConfig [AuditLogConfig]
+acAuditLogConfigs
+  = lens _acAuditLogConfigs
+      (\ s a -> s{_acAuditLogConfigs = a})
+      . _Default
+      . _Coerce
+
+-- |
+acExemptedMembers :: Lens' AuditConfig [Text]
+acExemptedMembers
+  = lens _acExemptedMembers
+      (\ s a -> s{_acExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditConfig where
+        parseJSON
+          = withObject "AuditConfig"
+              (\ o ->
+                 AuditConfig' <$>
+                   (o .:? "service") <*>
+                     (o .:? "auditLogConfigs" .!= mempty)
+                     <*> (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditConfig where
+        toJSON AuditConfig'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _acService,
+                  ("auditLogConfigs" .=) <$> _acAuditLogConfigs,
+                  ("exemptedMembers" .=) <$> _acExemptedMembers])
+
+--
+-- /See:/ 'acceleratorTypeAggregatedListWarningDataItem' smart constructor.
+data AcceleratorTypeAggregatedListWarningDataItem = AcceleratorTypeAggregatedListWarningDataItem'
+    { _atalwdiValue :: !(Maybe Text)
+    , _atalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atalwdiValue'
+--
+-- * 'atalwdiKey'
+acceleratorTypeAggregatedListWarningDataItem
+    :: AcceleratorTypeAggregatedListWarningDataItem
+acceleratorTypeAggregatedListWarningDataItem =
+    AcceleratorTypeAggregatedListWarningDataItem'
+    { _atalwdiValue = Nothing
+    , _atalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+atalwdiValue :: Lens' AcceleratorTypeAggregatedListWarningDataItem (Maybe Text)
+atalwdiValue
+  = lens _atalwdiValue (\ s a -> s{_atalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+atalwdiKey :: Lens' AcceleratorTypeAggregatedListWarningDataItem (Maybe Text)
+atalwdiKey
+  = lens _atalwdiKey (\ s a -> s{_atalwdiKey = a})
+
+instance FromJSON
+         AcceleratorTypeAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "AcceleratorTypeAggregatedListWarningDataItem"
+              (\ o ->
+                 AcceleratorTypeAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         AcceleratorTypeAggregatedListWarningDataItem where
+        toJSON
+          AcceleratorTypeAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _atalwdiValue,
+                  ("key" .=) <$> _atalwdiKey])
+
+--
+-- /See:/ 'instanceGroupsSetNamedPortsRequest' smart constructor.
+data InstanceGroupsSetNamedPortsRequest = InstanceGroupsSetNamedPortsRequest'
+    { _igsnprFingerprint :: !(Maybe Bytes)
+    , _igsnprNamedPorts  :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igsnprFingerprint'
+--
+-- * 'igsnprNamedPorts'
+instanceGroupsSetNamedPortsRequest
+    :: InstanceGroupsSetNamedPortsRequest
+instanceGroupsSetNamedPortsRequest =
+    InstanceGroupsSetNamedPortsRequest'
+    { _igsnprFingerprint = Nothing
+    , _igsnprNamedPorts = Nothing
+    }
+
+-- | The fingerprint of the named ports information for this instance group.
+-- Use this optional property to prevent conflicts when multiple users
+-- change the named ports settings concurrently. Obtain the fingerprint
+-- with the instanceGroups.get method. Then, include the fingerprint in
+-- your request to ensure that you do not overwrite changes that were
+-- applied from another concurrent request. A request with an incorrect
+-- fingerprint will fail with error 412 conditionNotMet.
+igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)
+igsnprFingerprint
+  = lens _igsnprFingerprint
+      (\ s a -> s{_igsnprFingerprint = a})
+      . mapping _Bytes
+
+-- | The list of named ports to set for this instance group.
+igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]
+igsnprNamedPorts
+  = lens _igsnprNamedPorts
+      (\ s a -> s{_igsnprNamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsSetNamedPortsRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsSetNamedPortsRequest"
+              (\ o ->
+                 InstanceGroupsSetNamedPortsRequest' <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON InstanceGroupsSetNamedPortsRequest
+         where
+        toJSON InstanceGroupsSetNamedPortsRequest'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _igsnprFingerprint,
+                  ("namedPorts" .=) <$> _igsnprNamedPorts])
+
+-- | Labels to use for node affinity, which will be used in instance
+-- scheduling.
+--
+-- /See:/ 'nodeTemplateNodeAffinityLabels' smart constructor.
+newtype NodeTemplateNodeAffinityLabels = NodeTemplateNodeAffinityLabels'
+    { _ntnalAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateNodeAffinityLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntnalAddtional'
+nodeTemplateNodeAffinityLabels
+    :: HashMap Text Text -- ^ 'ntnalAddtional'
+    -> NodeTemplateNodeAffinityLabels
+nodeTemplateNodeAffinityLabels pNtnalAddtional_ =
+    NodeTemplateNodeAffinityLabels'
+    { _ntnalAddtional = _Coerce # pNtnalAddtional_
+    }
+
+ntnalAddtional :: Lens' NodeTemplateNodeAffinityLabels (HashMap Text Text)
+ntnalAddtional
+  = lens _ntnalAddtional
+      (\ s a -> s{_ntnalAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeTemplateNodeAffinityLabels
+         where
+        parseJSON
+          = withObject "NodeTemplateNodeAffinityLabels"
+              (\ o ->
+                 NodeTemplateNodeAffinityLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON NodeTemplateNodeAffinityLabels where
+        toJSON = toJSON . _ntnalAddtional
+
+-- | Contains a list of Operation resources.
+--
+-- /See:/ 'operationList' smart constructor.
+data OperationList = OperationList'
+    { _olNextPageToken :: !(Maybe Text)
+    , _olKind          :: !Text
+    , _olItems         :: !(Maybe [Operation])
+    , _olSelfLink      :: !(Maybe Text)
+    , _olWarning       :: !(Maybe OperationListWarning)
+    , _olId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'olNextPageToken'
+--
+-- * 'olKind'
+--
+-- * 'olItems'
+--
+-- * 'olSelfLink'
+--
+-- * 'olWarning'
+--
+-- * 'olId'
+operationList
+    :: OperationList
+operationList =
+    OperationList'
+    { _olNextPageToken = Nothing
+    , _olKind = "compute#operationList"
+    , _olItems = Nothing
+    , _olSelfLink = Nothing
+    , _olWarning = Nothing
+    , _olId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+olNextPageToken :: Lens' OperationList (Maybe Text)
+olNextPageToken
+  = lens _olNextPageToken
+      (\ s a -> s{_olNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#operations for Operations
+-- resource.
+olKind :: Lens' OperationList Text
+olKind = lens _olKind (\ s a -> s{_olKind = a})
+
+-- | [Output Only] A list of Operation resources.
+olItems :: Lens' OperationList [Operation]
+olItems
+  = lens _olItems (\ s a -> s{_olItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+olSelfLink :: Lens' OperationList (Maybe Text)
+olSelfLink
+  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+olWarning :: Lens' OperationList (Maybe OperationListWarning)
+olWarning
+  = lens _olWarning (\ s a -> s{_olWarning = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+olId :: Lens' OperationList (Maybe Text)
+olId = lens _olId (\ s a -> s{_olId = a})
+
+instance FromJSON OperationList where
+        parseJSON
+          = withObject "OperationList"
+              (\ o ->
+                 OperationList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#operationList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON OperationList where
+        toJSON OperationList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _olNextPageToken,
+                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,
+                  ("selfLink" .=) <$> _olSelfLink,
+                  ("warning" .=) <$> _olWarning, ("id" .=) <$> _olId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeGroupListWarning' smart constructor.
+data NodeGroupListWarning = NodeGroupListWarning'
+    { _nglwData    :: !(Maybe [NodeGroupListWarningDataItem])
+    , _nglwCode    :: !(Maybe NodeGroupListWarningCode)
+    , _nglwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglwData'
+--
+-- * 'nglwCode'
+--
+-- * 'nglwMessage'
+nodeGroupListWarning
+    :: NodeGroupListWarning
+nodeGroupListWarning =
+    NodeGroupListWarning'
+    { _nglwData = Nothing
+    , _nglwCode = Nothing
+    , _nglwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+nglwData :: Lens' NodeGroupListWarning [NodeGroupListWarningDataItem]
+nglwData
+  = lens _nglwData (\ s a -> s{_nglwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+nglwCode :: Lens' NodeGroupListWarning (Maybe NodeGroupListWarningCode)
+nglwCode = lens _nglwCode (\ s a -> s{_nglwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+nglwMessage :: Lens' NodeGroupListWarning (Maybe Text)
+nglwMessage
+  = lens _nglwMessage (\ s a -> s{_nglwMessage = a})
+
+instance FromJSON NodeGroupListWarning where
+        parseJSON
+          = withObject "NodeGroupListWarning"
+              (\ o ->
+                 NodeGroupListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeGroupListWarning where
+        toJSON NodeGroupListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _nglwData,
+                  ("code" .=) <$> _nglwCode,
+                  ("message" .=) <$> _nglwMessage])
+
+-- | A list of Disk resources.
+--
+-- /See:/ 'diskList' smart constructor.
+data DiskList = DiskList'
+    { _dlNextPageToken :: !(Maybe Text)
+    , _dlKind          :: !Text
+    , _dlItems         :: !(Maybe [Disk])
+    , _dlSelfLink      :: !(Maybe Text)
+    , _dlWarning       :: !(Maybe DiskListWarning)
+    , _dlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlNextPageToken'
+--
+-- * 'dlKind'
+--
+-- * 'dlItems'
+--
+-- * 'dlSelfLink'
+--
+-- * 'dlWarning'
+--
+-- * 'dlId'
+diskList
+    :: DiskList
+diskList =
+    DiskList'
+    { _dlNextPageToken = Nothing
+    , _dlKind = "compute#diskList"
+    , _dlItems = Nothing
+    , _dlSelfLink = Nothing
+    , _dlWarning = Nothing
+    , _dlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+dlNextPageToken :: Lens' DiskList (Maybe Text)
+dlNextPageToken
+  = lens _dlNextPageToken
+      (\ s a -> s{_dlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskList for lists of
+-- disks.
+dlKind :: Lens' DiskList Text
+dlKind = lens _dlKind (\ s a -> s{_dlKind = a})
+
+-- | A list of Disk resources.
+dlItems :: Lens' DiskList [Disk]
+dlItems
+  = lens _dlItems (\ s a -> s{_dlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+dlSelfLink :: Lens' DiskList (Maybe Text)
+dlSelfLink
+  = lens _dlSelfLink (\ s a -> s{_dlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+dlWarning :: Lens' DiskList (Maybe DiskListWarning)
+dlWarning
+  = lens _dlWarning (\ s a -> s{_dlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dlId :: Lens' DiskList (Maybe Text)
+dlId = lens _dlId (\ s a -> s{_dlId = a})
+
+instance FromJSON DiskList where
+        parseJSON
+          = withObject "DiskList"
+              (\ o ->
+                 DiskList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskList where
+        toJSON DiskList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dlNextPageToken,
+                  Just ("kind" .= _dlKind), ("items" .=) <$> _dlItems,
+                  ("selfLink" .=) <$> _dlSelfLink,
+                  ("warning" .=) <$> _dlWarning, ("id" .=) <$> _dlId])
+
+--
+-- /See:/ 'targetPoolsAddInstanceRequest' smart constructor.
+newtype TargetPoolsAddInstanceRequest = TargetPoolsAddInstanceRequest'
+    { _tpairInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpairInstances'
+targetPoolsAddInstanceRequest
+    :: TargetPoolsAddInstanceRequest
+targetPoolsAddInstanceRequest =
+    TargetPoolsAddInstanceRequest'
+    { _tpairInstances = Nothing
+    }
+
+-- | A full or partial URL to an instance to add to this target pool. This
+-- can be a full or partial URL. For example, the following are valid URLs:
+-- -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project-id\/zones\/zone\/instances\/instance-name
+-- - projects\/project-id\/zones\/zone\/instances\/instance-name -
+-- zones\/zone\/instances\/instance-name
+tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]
+tpairInstances
+  = lens _tpairInstances
+      (\ s a -> s{_tpairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsAddInstanceRequest where
+        parseJSON
+          = withObject "TargetPoolsAddInstanceRequest"
+              (\ o ->
+                 TargetPoolsAddInstanceRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON TargetPoolsAddInstanceRequest where
+        toJSON TargetPoolsAddInstanceRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _tpairInstances])
+
+--
+-- /See:/ 'nodeGroupsDeleteNodesRequest' smart constructor.
+newtype NodeGroupsDeleteNodesRequest = NodeGroupsDeleteNodesRequest'
+    { _ngdnrNodes :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsDeleteNodesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngdnrNodes'
+nodeGroupsDeleteNodesRequest
+    :: NodeGroupsDeleteNodesRequest
+nodeGroupsDeleteNodesRequest =
+    NodeGroupsDeleteNodesRequest'
+    { _ngdnrNodes = Nothing
+    }
+
+ngdnrNodes :: Lens' NodeGroupsDeleteNodesRequest [Text]
+ngdnrNodes
+  = lens _ngdnrNodes (\ s a -> s{_ngdnrNodes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON NodeGroupsDeleteNodesRequest where
+        parseJSON
+          = withObject "NodeGroupsDeleteNodesRequest"
+              (\ o ->
+                 NodeGroupsDeleteNodesRequest' <$>
+                   (o .:? "nodes" .!= mempty))
+
+instance ToJSON NodeGroupsDeleteNodesRequest where
+        toJSON NodeGroupsDeleteNodesRequest'{..}
+          = object (catMaybes [("nodes" .=) <$> _ngdnrNodes])
+
+-- | Contains a list of autoscalers.
+--
+-- /See:/ 'regionAutoscalerList' smart constructor.
+data RegionAutoscalerList = RegionAutoscalerList'
+    { _rNextPageToken :: !(Maybe Text)
+    , _rKind          :: !Text
+    , _rItems         :: !(Maybe [Autoscaler])
+    , _rSelfLink      :: !(Maybe Text)
+    , _rWarning       :: !(Maybe RegionAutoscalerListWarning)
+    , _rId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionAutoscalerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rNextPageToken'
+--
+-- * 'rKind'
+--
+-- * 'rItems'
+--
+-- * 'rSelfLink'
+--
+-- * 'rWarning'
+--
+-- * 'rId'
+regionAutoscalerList
+    :: RegionAutoscalerList
+regionAutoscalerList =
+    RegionAutoscalerList'
+    { _rNextPageToken = Nothing
+    , _rKind = "compute#regionAutoscalerList"
+    , _rItems = Nothing
+    , _rSelfLink = Nothing
+    , _rWarning = Nothing
+    , _rId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rNextPageToken :: Lens' RegionAutoscalerList (Maybe Text)
+rNextPageToken
+  = lens _rNextPageToken
+      (\ s a -> s{_rNextPageToken = a})
+
+-- | Type of resource.
+rKind :: Lens' RegionAutoscalerList Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | A list of Autoscaler resources.
+rItems :: Lens' RegionAutoscalerList [Autoscaler]
+rItems
+  = lens _rItems (\ s a -> s{_rItems = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rSelfLink :: Lens' RegionAutoscalerList (Maybe Text)
+rSelfLink
+  = lens _rSelfLink (\ s a -> s{_rSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rWarning :: Lens' RegionAutoscalerList (Maybe RegionAutoscalerListWarning)
+rWarning = lens _rWarning (\ s a -> s{_rWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rId :: Lens' RegionAutoscalerList (Maybe Text)
+rId = lens _rId (\ s a -> s{_rId = a})
+
+instance FromJSON RegionAutoscalerList where
+        parseJSON
+          = withObject "RegionAutoscalerList"
+              (\ o ->
+                 RegionAutoscalerList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#regionAutoscalerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionAutoscalerList where
+        toJSON RegionAutoscalerList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rNextPageToken,
+                  Just ("kind" .= _rKind), ("items" .=) <$> _rItems,
+                  ("selfLink" .=) <$> _rSelfLink,
+                  ("warning" .=) <$> _rWarning, ("id" .=) <$> _rId])
+
+--
+-- /See:/ 'healthCheckListWarningDataItem' smart constructor.
+data HealthCheckListWarningDataItem = HealthCheckListWarningDataItem'
+    { _hclwdiValue :: !(Maybe Text)
+    , _hclwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheckListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hclwdiValue'
+--
+-- * 'hclwdiKey'
+healthCheckListWarningDataItem
+    :: HealthCheckListWarningDataItem
+healthCheckListWarningDataItem =
+    HealthCheckListWarningDataItem'
+    { _hclwdiValue = Nothing
+    , _hclwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+hclwdiValue :: Lens' HealthCheckListWarningDataItem (Maybe Text)
+hclwdiValue
+  = lens _hclwdiValue (\ s a -> s{_hclwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+hclwdiKey :: Lens' HealthCheckListWarningDataItem (Maybe Text)
+hclwdiKey
+  = lens _hclwdiKey (\ s a -> s{_hclwdiKey = a})
+
+instance FromJSON HealthCheckListWarningDataItem
+         where
+        parseJSON
+          = withObject "HealthCheckListWarningDataItem"
+              (\ o ->
+                 HealthCheckListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON HealthCheckListWarningDataItem where
+        toJSON HealthCheckListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _hclwdiValue,
+                  ("key" .=) <$> _hclwdiKey])
+
+--
+-- /See:/ 'nodeGroupAggregatedListWarningDataItem' smart constructor.
+data NodeGroupAggregatedListWarningDataItem = NodeGroupAggregatedListWarningDataItem'
+    { _ngalwdiValue :: !(Maybe Text)
+    , _ngalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngalwdiValue'
+--
+-- * 'ngalwdiKey'
+nodeGroupAggregatedListWarningDataItem
+    :: NodeGroupAggregatedListWarningDataItem
+nodeGroupAggregatedListWarningDataItem =
+    NodeGroupAggregatedListWarningDataItem'
+    { _ngalwdiValue = Nothing
+    , _ngalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ngalwdiValue :: Lens' NodeGroupAggregatedListWarningDataItem (Maybe Text)
+ngalwdiValue
+  = lens _ngalwdiValue (\ s a -> s{_ngalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ngalwdiKey :: Lens' NodeGroupAggregatedListWarningDataItem (Maybe Text)
+ngalwdiKey
+  = lens _ngalwdiKey (\ s a -> s{_ngalwdiKey = a})
+
+instance FromJSON
+         NodeGroupAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "NodeGroupAggregatedListWarningDataItem"
+              (\ o ->
+                 NodeGroupAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         NodeGroupAggregatedListWarningDataItem where
+        toJSON NodeGroupAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ngalwdiValue,
+                  ("key" .=) <$> _ngalwdiKey])
+
+--
+-- /See:/ 'instanceGroupsAddInstancesRequest' smart constructor.
+newtype InstanceGroupsAddInstancesRequest = InstanceGroupsAddInstancesRequest'
+    { _igairInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsAddInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igairInstances'
+instanceGroupsAddInstancesRequest
+    :: InstanceGroupsAddInstancesRequest
+instanceGroupsAddInstancesRequest =
+    InstanceGroupsAddInstancesRequest'
+    { _igairInstances = Nothing
+    }
+
+-- | The list of instances to add to the instance group.
+igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]
+igairInstances
+  = lens _igairInstances
+      (\ s a -> s{_igairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsAddInstancesRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsAddInstancesRequest"
+              (\ o ->
+                 InstanceGroupsAddInstancesRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON InstanceGroupsAddInstancesRequest
+         where
+        toJSON InstanceGroupsAddInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igairInstances])
+
+--
+-- /See:/ 'nodeGroupNode' smart constructor.
+data NodeGroupNode = NodeGroupNode'
+    { _ngnStatus    :: !(Maybe NodeGroupNodeStatus)
+    , _ngnName      :: !(Maybe Text)
+    , _ngnInstances :: !(Maybe [Text])
+    , _ngnNodeType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupNode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngnStatus'
+--
+-- * 'ngnName'
+--
+-- * 'ngnInstances'
+--
+-- * 'ngnNodeType'
+nodeGroupNode
+    :: NodeGroupNode
+nodeGroupNode =
+    NodeGroupNode'
+    { _ngnStatus = Nothing
+    , _ngnName = Nothing
+    , _ngnInstances = Nothing
+    , _ngnNodeType = Nothing
+    }
+
+ngnStatus :: Lens' NodeGroupNode (Maybe NodeGroupNodeStatus)
+ngnStatus
+  = lens _ngnStatus (\ s a -> s{_ngnStatus = a})
+
+-- | The name of the node.
+ngnName :: Lens' NodeGroupNode (Maybe Text)
+ngnName = lens _ngnName (\ s a -> s{_ngnName = a})
+
+-- | Instances scheduled on this node.
+ngnInstances :: Lens' NodeGroupNode [Text]
+ngnInstances
+  = lens _ngnInstances (\ s a -> s{_ngnInstances = a})
+      . _Default
+      . _Coerce
+
+-- | The type of this node.
+ngnNodeType :: Lens' NodeGroupNode (Maybe Text)
+ngnNodeType
+  = lens _ngnNodeType (\ s a -> s{_ngnNodeType = a})
+
+instance FromJSON NodeGroupNode where
+        parseJSON
+          = withObject "NodeGroupNode"
+              (\ o ->
+                 NodeGroupNode' <$>
+                   (o .:? "status") <*> (o .:? "name") <*>
+                     (o .:? "instances" .!= mempty)
+                     <*> (o .:? "nodeType"))
+
+instance ToJSON NodeGroupNode where
+        toJSON NodeGroupNode'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _ngnStatus,
+                  ("name" .=) <$> _ngnName,
+                  ("instances" .=) <$> _ngnInstances,
+                  ("nodeType" .=) <$> _ngnNodeType])
+
+-- | [Output Only] A list of managed instance groups.
+--
+-- /See:/ 'instanceGroupManagerList' smart constructor.
+data InstanceGroupManagerList = InstanceGroupManagerList'
+    { _igmlNextPageToken :: !(Maybe Text)
+    , _igmlKind          :: !Text
+    , _igmlItems         :: !(Maybe [InstanceGroupManager])
+    , _igmlSelfLink      :: !(Maybe Text)
+    , _igmlWarning       :: !(Maybe InstanceGroupManagerListWarning)
+    , _igmlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlNextPageToken'
+--
+-- * 'igmlKind'
+--
+-- * 'igmlItems'
+--
+-- * 'igmlSelfLink'
+--
+-- * 'igmlWarning'
+--
+-- * 'igmlId'
+instanceGroupManagerList
+    :: InstanceGroupManagerList
+instanceGroupManagerList =
+    InstanceGroupManagerList'
+    { _igmlNextPageToken = Nothing
+    , _igmlKind = "compute#instanceGroupManagerList"
+    , _igmlItems = Nothing
+    , _igmlSelfLink = Nothing
+    , _igmlWarning = Nothing
+    , _igmlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlNextPageToken
+  = lens _igmlNextPageToken
+      (\ s a -> s{_igmlNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManagerList for a list of managed instance groups.
+igmlKind :: Lens' InstanceGroupManagerList Text
+igmlKind = lens _igmlKind (\ s a -> s{_igmlKind = a})
+
+-- | A list of InstanceGroupManager resources.
+igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]
+igmlItems
+  = lens _igmlItems (\ s a -> s{_igmlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlSelfLink
+  = lens _igmlSelfLink (\ s a -> s{_igmlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+igmlWarning :: Lens' InstanceGroupManagerList (Maybe InstanceGroupManagerListWarning)
+igmlWarning
+  = lens _igmlWarning (\ s a -> s{_igmlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+igmlId :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlId = lens _igmlId (\ s a -> s{_igmlId = a})
+
+instance FromJSON InstanceGroupManagerList where
+        parseJSON
+          = withObject "InstanceGroupManagerList"
+              (\ o ->
+                 InstanceGroupManagerList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceGroupManagerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupManagerList where
+        toJSON InstanceGroupManagerList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igmlNextPageToken,
+                  Just ("kind" .= _igmlKind),
+                  ("items" .=) <$> _igmlItems,
+                  ("selfLink" .=) <$> _igmlSelfLink,
+                  ("warning" .=) <$> _igmlWarning,
+                  ("id" .=) <$> _igmlId])
+
+-- | An informational warning that appears when the list of addresses is
+-- empty.
+--
+-- /See:/ 'subnetworksScopedListWarning' smart constructor.
+data SubnetworksScopedListWarning = SubnetworksScopedListWarning'
+    { _sslwData    :: !(Maybe [SubnetworksScopedListWarningDataItem])
+    , _sslwCode    :: !(Maybe SubnetworksScopedListWarningCode)
+    , _sslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslwData'
+--
+-- * 'sslwCode'
+--
+-- * 'sslwMessage'
+subnetworksScopedListWarning
+    :: SubnetworksScopedListWarning
+subnetworksScopedListWarning =
+    SubnetworksScopedListWarning'
+    { _sslwData = Nothing
+    , _sslwCode = Nothing
+    , _sslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]
+sslwData
+  = lens _sslwData (\ s a -> s{_sslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)
+sslwCode = lens _sslwCode (\ s a -> s{_sslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)
+sslwMessage
+  = lens _sslwMessage (\ s a -> s{_sslwMessage = a})
+
+instance FromJSON SubnetworksScopedListWarning where
+        parseJSON
+          = withObject "SubnetworksScopedListWarning"
+              (\ o ->
+                 SubnetworksScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SubnetworksScopedListWarning where
+        toJSON SubnetworksScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _sslwData,
+                  ("code" .=) <$> _sslwCode,
+                  ("message" .=) <$> _sslwMessage])
+
+--
+-- /See:/ 'nodeGroupsSetNodeTemplateRequest' smart constructor.
+newtype NodeGroupsSetNodeTemplateRequest = NodeGroupsSetNodeTemplateRequest'
+    { _ngsntrNodeTemplate :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsSetNodeTemplateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngsntrNodeTemplate'
+nodeGroupsSetNodeTemplateRequest
+    :: NodeGroupsSetNodeTemplateRequest
+nodeGroupsSetNodeTemplateRequest =
+    NodeGroupsSetNodeTemplateRequest'
+    { _ngsntrNodeTemplate = Nothing
+    }
+
+-- | Full or partial URL of the node template resource to be updated for this
+-- node group.
+ngsntrNodeTemplate :: Lens' NodeGroupsSetNodeTemplateRequest (Maybe Text)
+ngsntrNodeTemplate
+  = lens _ngsntrNodeTemplate
+      (\ s a -> s{_ngsntrNodeTemplate = a})
+
+instance FromJSON NodeGroupsSetNodeTemplateRequest
+         where
+        parseJSON
+          = withObject "NodeGroupsSetNodeTemplateRequest"
+              (\ o ->
+                 NodeGroupsSetNodeTemplateRequest' <$>
+                   (o .:? "nodeTemplate"))
+
+instance ToJSON NodeGroupsSetNodeTemplateRequest
+         where
+        toJSON NodeGroupsSetNodeTemplateRequest'{..}
+          = object
+              (catMaybes
+                 [("nodeTemplate" .=) <$> _ngsntrNodeTemplate])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'acceleratorTypeListWarning' smart constructor.
+data AcceleratorTypeListWarning = AcceleratorTypeListWarning'
+    { _atlwData    :: !(Maybe [AcceleratorTypeListWarningDataItem])
+    , _atlwCode    :: !(Maybe AcceleratorTypeListWarningCode)
+    , _atlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atlwData'
+--
+-- * 'atlwCode'
+--
+-- * 'atlwMessage'
+acceleratorTypeListWarning
+    :: AcceleratorTypeListWarning
+acceleratorTypeListWarning =
+    AcceleratorTypeListWarning'
+    { _atlwData = Nothing
+    , _atlwCode = Nothing
+    , _atlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+atlwData :: Lens' AcceleratorTypeListWarning [AcceleratorTypeListWarningDataItem]
+atlwData
+  = lens _atlwData (\ s a -> s{_atlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+atlwCode :: Lens' AcceleratorTypeListWarning (Maybe AcceleratorTypeListWarningCode)
+atlwCode = lens _atlwCode (\ s a -> s{_atlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+atlwMessage :: Lens' AcceleratorTypeListWarning (Maybe Text)
+atlwMessage
+  = lens _atlwMessage (\ s a -> s{_atlwMessage = a})
+
+instance FromJSON AcceleratorTypeListWarning where
+        parseJSON
+          = withObject "AcceleratorTypeListWarning"
+              (\ o ->
+                 AcceleratorTypeListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AcceleratorTypeListWarning where
+        toJSON AcceleratorTypeListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _atlwData,
+                  ("code" .=) <$> _atlwCode,
+                  ("message" .=) <$> _atlwMessage])
+
+-- | An Image resource. (== resource_for beta.images ==) (== resource_for
+-- v1.images ==)
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image'
+    { _iStatus                      :: !(Maybe ImageStatus)
+    , _iSourceSnapshotId            :: !(Maybe Text)
+    , _iImageEncryptionKey          :: !(Maybe CustomerEncryptionKey)
+    , _iSourceImage                 :: !(Maybe Text)
+    , _iDiskSizeGb                  :: !(Maybe (Textual Int64))
+    , _iSourceType                  :: !ImageSourceType
+    , _iSourceDiskId                :: !(Maybe Text)
+    , _iKind                        :: !Text
+    , _iSourceDiskEncryptionKey     :: !(Maybe CustomerEncryptionKey)
+    , _iGuestOSFeatures             :: !(Maybe [GuestOSFeature])
+    , _iArchiveSizeBytes            :: !(Maybe (Textual Int64))
+    , _iFamily                      :: !(Maybe Text)
+    , _iRawDisk                     :: !(Maybe ImageRawDisk)
+    , _iSelfLink                    :: !(Maybe Text)
+    , _iName                        :: !(Maybe Text)
+    , _iSourceImageId               :: !(Maybe Text)
+    , _iCreationTimestamp           :: !(Maybe Text)
+    , _iSourceImageEncryptionKey    :: !(Maybe CustomerEncryptionKey)
+    , _iLicenseCodes                :: !(Maybe [Textual Int64])
+    , _iId                          :: !(Maybe (Textual Word64))
+    , _iLabels                      :: !(Maybe ImageLabels)
+    , _iLicenses                    :: !(Maybe [Text])
+    , _iSourceDisk                  :: !(Maybe Text)
+    , _iLabelFingerprint            :: !(Maybe Bytes)
+    , _iDescription                 :: !(Maybe Text)
+    , _iSourceSnapshotEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _iDeprecated                  :: !(Maybe DeprecationStatus)
+    , _iSourceSnapshot              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iStatus'
+--
+-- * 'iSourceSnapshotId'
+--
+-- * 'iImageEncryptionKey'
+--
+-- * 'iSourceImage'
+--
+-- * 'iDiskSizeGb'
+--
+-- * 'iSourceType'
+--
+-- * 'iSourceDiskId'
+--
+-- * 'iKind'
+--
+-- * 'iSourceDiskEncryptionKey'
+--
+-- * 'iGuestOSFeatures'
+--
+-- * 'iArchiveSizeBytes'
+--
+-- * 'iFamily'
+--
+-- * 'iRawDisk'
+--
+-- * 'iSelfLink'
+--
+-- * 'iName'
+--
+-- * 'iSourceImageId'
+--
+-- * 'iCreationTimestamp'
+--
+-- * 'iSourceImageEncryptionKey'
+--
+-- * 'iLicenseCodes'
+--
+-- * 'iId'
+--
+-- * 'iLabels'
+--
+-- * 'iLicenses'
+--
+-- * 'iSourceDisk'
+--
+-- * 'iLabelFingerprint'
+--
+-- * 'iDescription'
+--
+-- * 'iSourceSnapshotEncryptionKey'
+--
+-- * 'iDeprecated'
+--
+-- * 'iSourceSnapshot'
+image
+    :: Image
+image =
+    Image'
+    { _iStatus = Nothing
+    , _iSourceSnapshotId = Nothing
+    , _iImageEncryptionKey = Nothing
+    , _iSourceImage = Nothing
+    , _iDiskSizeGb = Nothing
+    , _iSourceType = Raw
+    , _iSourceDiskId = Nothing
+    , _iKind = "compute#image"
+    , _iSourceDiskEncryptionKey = Nothing
+    , _iGuestOSFeatures = Nothing
+    , _iArchiveSizeBytes = Nothing
+    , _iFamily = Nothing
+    , _iRawDisk = Nothing
+    , _iSelfLink = Nothing
+    , _iName = Nothing
+    , _iSourceImageId = Nothing
+    , _iCreationTimestamp = Nothing
+    , _iSourceImageEncryptionKey = Nothing
+    , _iLicenseCodes = Nothing
+    , _iId = Nothing
+    , _iLabels = Nothing
+    , _iLicenses = Nothing
+    , _iSourceDisk = Nothing
+    , _iLabelFingerprint = Nothing
+    , _iDescription = Nothing
+    , _iSourceSnapshotEncryptionKey = Nothing
+    , _iDeprecated = Nothing
+    , _iSourceSnapshot = Nothing
+    }
+
+-- | [Output Only] The status of the image. An image can be used to create
+-- other resources, such as instances, only after the image has been
+-- successfully created and the status is set to READY. Possible values are
+-- FAILED, PENDING, or READY.
+iStatus :: Lens' Image (Maybe ImageStatus)
+iStatus = lens _iStatus (\ s a -> s{_iStatus = a})
+
+-- | [Output Only] The ID value of the snapshot used to create this image.
+-- This value may be used to determine whether the snapshot was taken from
+-- the current or a previous instance of a given snapshot name.
+iSourceSnapshotId :: Lens' Image (Maybe Text)
+iSourceSnapshotId
+  = lens _iSourceSnapshotId
+      (\ s a -> s{_iSourceSnapshotId = a})
+
+-- | Encrypts the image using a customer-supplied encryption key. After you
+-- encrypt an image with a customer-supplied key, you must provide the same
+-- key if you use the image later (e.g. to create a disk from the image).
+-- Customer-supplied encryption keys do not protect access to metadata of
+-- the disk. If you do not provide an encryption key when creating the
+-- image, then the disk will be encrypted using an automatically generated
+-- key and you do not need to provide a key to use the image later.
+iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+iImageEncryptionKey
+  = lens _iImageEncryptionKey
+      (\ s a -> s{_iImageEncryptionKey = a})
+
+-- | URL of the source image used to create this image. This can be a full or
+-- valid partial URL. You must provide exactly one of: - this property, or
+-- - the rawDisk.source property, or - the sourceDisk property in order to
+-- create an image.
+iSourceImage :: Lens' Image (Maybe Text)
+iSourceImage
+  = lens _iSourceImage (\ s a -> s{_iSourceImage = a})
+
+-- | Size of the image when restored onto a persistent disk (in GB).
+iDiskSizeGb :: Lens' Image (Maybe Int64)
+iDiskSizeGb
+  = lens _iDiskSizeGb (\ s a -> s{_iDiskSizeGb = a}) .
+      mapping _Coerce
+
+-- | The type of the image used to create this disk. The default and only
+-- value is RAW
+iSourceType :: Lens' Image ImageSourceType
+iSourceType
+  = lens _iSourceType (\ s a -> s{_iSourceType = a})
+
+-- | [Output Only] The ID value of the disk used to create this image. This
+-- value may be used to determine whether the image was taken from the
+-- current or a previous instance of a given disk name.
+iSourceDiskId :: Lens' Image (Maybe Text)
+iSourceDiskId
+  = lens _iSourceDiskId
+      (\ s a -> s{_iSourceDiskId = a})
+
+-- | [Output Only] Type of the resource. Always compute#image for images.
+iKind :: Lens' Image Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+-- | The customer-supplied encryption key of the source disk. Required if the
+-- source disk is protected by a customer-supplied encryption key.
+iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+iSourceDiskEncryptionKey
+  = lens _iSourceDiskEncryptionKey
+      (\ s a -> s{_iSourceDiskEncryptionKey = a})
+
+-- | A list of features to enable on the guest operating system. Applicable
+-- only for bootable images. Read Enabling guest operating system features
+-- to see a list of available options.
+iGuestOSFeatures :: Lens' Image [GuestOSFeature]
+iGuestOSFeatures
+  = lens _iGuestOSFeatures
+      (\ s a -> s{_iGuestOSFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | Size of the image tar.gz archive stored in Google Cloud Storage (in
+-- bytes).
+iArchiveSizeBytes :: Lens' Image (Maybe Int64)
+iArchiveSizeBytes
+  = lens _iArchiveSizeBytes
+      (\ s a -> s{_iArchiveSizeBytes = a})
+      . mapping _Coerce
+
+-- | The name of the image family to which this image belongs. You can create
+-- disks by specifying an image family instead of a specific image name.
+-- The image family always returns its latest image that is not deprecated.
+-- The name of the image family must comply with RFC1035.
+iFamily :: Lens' Image (Maybe Text)
+iFamily = lens _iFamily (\ s a -> s{_iFamily = a})
+
+-- | The parameters of the raw disk image.
+iRawDisk :: Lens' Image (Maybe ImageRawDisk)
+iRawDisk = lens _iRawDisk (\ s a -> s{_iRawDisk = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+iSelfLink :: Lens' Image (Maybe Text)
+iSelfLink
+  = lens _iSelfLink (\ s a -> s{_iSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+iName :: Lens' Image (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | [Output Only] The ID value of the image used to create this image. This
+-- value may be used to determine whether the image was taken from the
+-- current or a previous instance of a given image name.
+iSourceImageId :: Lens' Image (Maybe Text)
+iSourceImageId
+  = lens _iSourceImageId
+      (\ s a -> s{_iSourceImageId = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+iCreationTimestamp :: Lens' Image (Maybe Text)
+iCreationTimestamp
+  = lens _iCreationTimestamp
+      (\ s a -> s{_iCreationTimestamp = a})
+
+-- | The customer-supplied encryption key of the source image. Required if
+-- the source image is protected by a customer-supplied encryption key.
+iSourceImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+iSourceImageEncryptionKey
+  = lens _iSourceImageEncryptionKey
+      (\ s a -> s{_iSourceImageEncryptionKey = a})
+
+-- | Integer license codes indicating which licenses are attached to this
+-- image.
+iLicenseCodes :: Lens' Image [Int64]
+iLicenseCodes
+  = lens _iLicenseCodes
+      (\ s a -> s{_iLicenseCodes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+iId :: Lens' Image (Maybe Word64)
+iId
+  = lens _iId (\ s a -> s{_iId = a}) . mapping _Coerce
+
+-- | Labels to apply to this image. These can be later modified by the
+-- setLabels method.
+iLabels :: Lens' Image (Maybe ImageLabels)
+iLabels = lens _iLabels (\ s a -> s{_iLabels = a})
+
+-- | Any applicable license URI.
+iLicenses :: Lens' Image [Text]
+iLicenses
+  = lens _iLicenses (\ s a -> s{_iLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | URL of the source disk used to create this image. This can be a full or
+-- valid partial URL. You must provide either this property or the
+-- rawDisk.source property but not both to create an image. For example,
+-- the following are valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk
+-- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk
+iSourceDisk :: Lens' Image (Maybe Text)
+iSourceDisk
+  = lens _iSourceDisk (\ s a -> s{_iSourceDisk = a})
+
+-- | A fingerprint for the labels being applied to this image, which is
+-- essentially a hash of the labels used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update labels. You must always provide an
+-- up-to-date fingerprint hash in order to update or change labels,
+-- otherwise the request will fail with error 412 conditionNotMet. To see
+-- the latest fingerprint, make a get() request to retrieve an image.
+iLabelFingerprint :: Lens' Image (Maybe ByteString)
+iLabelFingerprint
+  = lens _iLabelFingerprint
+      (\ s a -> s{_iLabelFingerprint = a})
+      . mapping _Bytes
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+iDescription :: Lens' Image (Maybe Text)
+iDescription
+  = lens _iDescription (\ s a -> s{_iDescription = a})
+
+-- | The customer-supplied encryption key of the source snapshot. Required if
+-- the source snapshot is protected by a customer-supplied encryption key.
+iSourceSnapshotEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+iSourceSnapshotEncryptionKey
+  = lens _iSourceSnapshotEncryptionKey
+      (\ s a -> s{_iSourceSnapshotEncryptionKey = a})
+
+-- | The deprecation status associated with this image.
+iDeprecated :: Lens' Image (Maybe DeprecationStatus)
+iDeprecated
+  = lens _iDeprecated (\ s a -> s{_iDeprecated = a})
+
+-- | URL of the source snapshot used to create this image. This can be a full
+-- or valid partial URL. You must provide exactly one of: - this property,
+-- or - the sourceImage property, or - the rawDisk.source property, or -
+-- the sourceDisk property in order to create an image.
+iSourceSnapshot :: Lens' Image (Maybe Text)
+iSourceSnapshot
+  = lens _iSourceSnapshot
+      (\ s a -> s{_iSourceSnapshot = a})
+
+instance FromJSON Image where
+        parseJSON
+          = withObject "Image"
+              (\ o ->
+                 Image' <$>
+                   (o .:? "status") <*> (o .:? "sourceSnapshotId") <*>
+                     (o .:? "imageEncryptionKey")
+                     <*> (o .:? "sourceImage")
+                     <*> (o .:? "diskSizeGb")
+                     <*> (o .:? "sourceType" .!= Raw)
+                     <*> (o .:? "sourceDiskId")
+                     <*> (o .:? "kind" .!= "compute#image")
+                     <*> (o .:? "sourceDiskEncryptionKey")
+                     <*> (o .:? "guestOsFeatures" .!= mempty)
+                     <*> (o .:? "archiveSizeBytes")
+                     <*> (o .:? "family")
+                     <*> (o .:? "rawDisk")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "sourceImageId")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "sourceImageEncryptionKey")
+                     <*> (o .:? "licenseCodes" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "sourceDisk")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description")
+                     <*> (o .:? "sourceSnapshotEncryptionKey")
+                     <*> (o .:? "deprecated")
+                     <*> (o .:? "sourceSnapshot"))
+
+instance ToJSON Image where
+        toJSON Image'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iStatus,
+                  ("sourceSnapshotId" .=) <$> _iSourceSnapshotId,
+                  ("imageEncryptionKey" .=) <$> _iImageEncryptionKey,
+                  ("sourceImage" .=) <$> _iSourceImage,
+                  ("diskSizeGb" .=) <$> _iDiskSizeGb,
+                  Just ("sourceType" .= _iSourceType),
+                  ("sourceDiskId" .=) <$> _iSourceDiskId,
+                  Just ("kind" .= _iKind),
+                  ("sourceDiskEncryptionKey" .=) <$>
+                    _iSourceDiskEncryptionKey,
+                  ("guestOsFeatures" .=) <$> _iGuestOSFeatures,
+                  ("archiveSizeBytes" .=) <$> _iArchiveSizeBytes,
+                  ("family" .=) <$> _iFamily,
+                  ("rawDisk" .=) <$> _iRawDisk,
+                  ("selfLink" .=) <$> _iSelfLink,
+                  ("name" .=) <$> _iName,
+                  ("sourceImageId" .=) <$> _iSourceImageId,
+                  ("creationTimestamp" .=) <$> _iCreationTimestamp,
+                  ("sourceImageEncryptionKey" .=) <$>
+                    _iSourceImageEncryptionKey,
+                  ("licenseCodes" .=) <$> _iLicenseCodes,
+                  ("id" .=) <$> _iId, ("labels" .=) <$> _iLabels,
+                  ("licenses" .=) <$> _iLicenses,
+                  ("sourceDisk" .=) <$> _iSourceDisk,
+                  ("labelFingerprint" .=) <$> _iLabelFingerprint,
+                  ("description" .=) <$> _iDescription,
+                  ("sourceSnapshotEncryptionKey" .=) <$>
+                    _iSourceSnapshotEncryptionKey,
+                  ("deprecated" .=) <$> _iDeprecated,
+                  ("sourceSnapshot" .=) <$> _iSourceSnapshot])
+
+--
+-- /See:/ 'networksAddPeeringRequest' smart constructor.
+data NetworksAddPeeringRequest = NetworksAddPeeringRequest'
+    { _naprPeerNetwork      :: !(Maybe Text)
+    , _naprName             :: !(Maybe Text)
+    , _naprAutoCreateRoutes :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksAddPeeringRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'naprPeerNetwork'
+--
+-- * 'naprName'
+--
+-- * 'naprAutoCreateRoutes'
+networksAddPeeringRequest
+    :: NetworksAddPeeringRequest
+networksAddPeeringRequest =
+    NetworksAddPeeringRequest'
+    { _naprPeerNetwork = Nothing
+    , _naprName = Nothing
+    , _naprAutoCreateRoutes = Nothing
+    }
+
+-- | URL of the peer network. It can be either full URL or partial URL. The
+-- peer network may belong to a different project. If the partial URL does
+-- not contain project, it is assumed that the peer network is in the same
+-- project as the current network.
+naprPeerNetwork :: Lens' NetworksAddPeeringRequest (Maybe Text)
+naprPeerNetwork
+  = lens _naprPeerNetwork
+      (\ s a -> s{_naprPeerNetwork = a})
+
+-- | Name of the peering, which should conform to RFC1035.
+naprName :: Lens' NetworksAddPeeringRequest (Maybe Text)
+naprName = lens _naprName (\ s a -> s{_naprName = a})
+
+-- | Whether Google Compute Engine manages the routes automatically.
+naprAutoCreateRoutes :: Lens' NetworksAddPeeringRequest (Maybe Bool)
+naprAutoCreateRoutes
+  = lens _naprAutoCreateRoutes
+      (\ s a -> s{_naprAutoCreateRoutes = a})
+
+instance FromJSON NetworksAddPeeringRequest where
+        parseJSON
+          = withObject "NetworksAddPeeringRequest"
+              (\ o ->
+                 NetworksAddPeeringRequest' <$>
+                   (o .:? "peerNetwork") <*> (o .:? "name") <*>
+                     (o .:? "autoCreateRoutes"))
+
+instance ToJSON NetworksAddPeeringRequest where
+        toJSON NetworksAddPeeringRequest'{..}
+          = object
+              (catMaybes
+                 [("peerNetwork" .=) <$> _naprPeerNetwork,
+                  ("name" .=) <$> _naprName,
+                  ("autoCreateRoutes" .=) <$> _naprAutoCreateRoutes])
+
+--
+-- /See:/ 'nodeTemplatesScopedList' smart constructor.
+data NodeTemplatesScopedList = NodeTemplatesScopedList'
+    { _nNodeTemplates :: !(Maybe [NodeTemplate])
+    , _nWarning       :: !(Maybe NodeTemplatesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nNodeTemplates'
+--
+-- * 'nWarning'
+nodeTemplatesScopedList
+    :: NodeTemplatesScopedList
+nodeTemplatesScopedList =
+    NodeTemplatesScopedList'
+    { _nNodeTemplates = Nothing
+    , _nWarning = Nothing
+    }
+
+-- | [Output Only] A list of node templates contained in this scope.
+nNodeTemplates :: Lens' NodeTemplatesScopedList [NodeTemplate]
+nNodeTemplates
+  = lens _nNodeTemplates
+      (\ s a -> s{_nNodeTemplates = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the node
+-- templates list is empty.
+nWarning :: Lens' NodeTemplatesScopedList (Maybe NodeTemplatesScopedListWarning)
+nWarning = lens _nWarning (\ s a -> s{_nWarning = a})
+
+instance FromJSON NodeTemplatesScopedList where
+        parseJSON
+          = withObject "NodeTemplatesScopedList"
+              (\ o ->
+                 NodeTemplatesScopedList' <$>
+                   (o .:? "nodeTemplates" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON NodeTemplatesScopedList where
+        toJSON NodeTemplatesScopedList'{..}
+          = object
+              (catMaybes
+                 [("nodeTemplates" .=) <$> _nNodeTemplates,
+                  ("warning" .=) <$> _nWarning])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'urlMapListWarning' smart constructor.
+data URLMapListWarning = URLMapListWarning'
+    { _umlwData    :: !(Maybe [URLMapListWarningDataItem])
+    , _umlwCode    :: !(Maybe URLMapListWarningCode)
+    , _umlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umlwData'
+--
+-- * 'umlwCode'
+--
+-- * 'umlwMessage'
+urlMapListWarning
+    :: URLMapListWarning
+urlMapListWarning =
+    URLMapListWarning'
+    { _umlwData = Nothing
+    , _umlwCode = Nothing
+    , _umlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+umlwData :: Lens' URLMapListWarning [URLMapListWarningDataItem]
+umlwData
+  = lens _umlwData (\ s a -> s{_umlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+umlwCode :: Lens' URLMapListWarning (Maybe URLMapListWarningCode)
+umlwCode = lens _umlwCode (\ s a -> s{_umlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+umlwMessage :: Lens' URLMapListWarning (Maybe Text)
+umlwMessage
+  = lens _umlwMessage (\ s a -> s{_umlwMessage = a})
+
+instance FromJSON URLMapListWarning where
+        parseJSON
+          = withObject "URLMapListWarning"
+              (\ o ->
+                 URLMapListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON URLMapListWarning where
+        toJSON URLMapListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _umlwData,
+                  ("code" .=) <$> _umlwCode,
+                  ("message" .=) <$> _umlwMessage])
+
+--
+-- /See:/ 'nodeGroupsScopedListWarningDataItem' smart constructor.
+data NodeGroupsScopedListWarningDataItem = NodeGroupsScopedListWarningDataItem'
+    { _ngslwdiValue :: !(Maybe Text)
+    , _ngslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngslwdiValue'
+--
+-- * 'ngslwdiKey'
+nodeGroupsScopedListWarningDataItem
+    :: NodeGroupsScopedListWarningDataItem
+nodeGroupsScopedListWarningDataItem =
+    NodeGroupsScopedListWarningDataItem'
+    { _ngslwdiValue = Nothing
+    , _ngslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ngslwdiValue :: Lens' NodeGroupsScopedListWarningDataItem (Maybe Text)
+ngslwdiValue
+  = lens _ngslwdiValue (\ s a -> s{_ngslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ngslwdiKey :: Lens' NodeGroupsScopedListWarningDataItem (Maybe Text)
+ngslwdiKey
+  = lens _ngslwdiKey (\ s a -> s{_ngslwdiKey = a})
+
+instance FromJSON NodeGroupsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "NodeGroupsScopedListWarningDataItem"
+              (\ o ->
+                 NodeGroupsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeGroupsScopedListWarningDataItem
+         where
+        toJSON NodeGroupsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ngslwdiValue,
+                  ("key" .=) <$> _ngslwdiKey])
+
+-- | A UrlMap resource. This resource defines the mapping from URL to the
+-- BackendService resource, based on the \"longest-match\" of the URL\'s
+-- host and path.
+--
+-- /See:/ 'urlMap' smart constructor.
+data URLMap = URLMap'
+    { _umTests             :: !(Maybe [URLMapTest])
+    , _umKind              :: !Text
+    , _umFingerprint       :: !(Maybe Bytes)
+    , _umDefaultService    :: !(Maybe Text)
+    , _umSelfLink          :: !(Maybe Text)
+    , _umName              :: !(Maybe Text)
+    , _umCreationTimestamp :: !(Maybe Text)
+    , _umPathMatchers      :: !(Maybe [PathMatcher])
+    , _umId                :: !(Maybe (Textual Word64))
+    , _umHostRules         :: !(Maybe [HostRule])
+    , _umDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umTests'
+--
+-- * 'umKind'
+--
+-- * 'umFingerprint'
+--
+-- * 'umDefaultService'
+--
+-- * 'umSelfLink'
+--
+-- * 'umName'
+--
+-- * 'umCreationTimestamp'
+--
+-- * 'umPathMatchers'
+--
+-- * 'umId'
+--
+-- * 'umHostRules'
+--
+-- * 'umDescription'
+urlMap
+    :: URLMap
+urlMap =
+    URLMap'
+    { _umTests = Nothing
+    , _umKind = "compute#urlMap"
+    , _umFingerprint = Nothing
+    , _umDefaultService = Nothing
+    , _umSelfLink = Nothing
+    , _umName = Nothing
+    , _umCreationTimestamp = Nothing
+    , _umPathMatchers = Nothing
+    , _umId = Nothing
+    , _umHostRules = Nothing
+    , _umDescription = Nothing
+    }
+
+-- | The list of expected URL mapping tests. Request to update this UrlMap
+-- will succeed only if all of the test cases pass. You can specify a
+-- maximum of 100 tests per UrlMap.
+umTests :: Lens' URLMap [URLMapTest]
+umTests
+  = lens _umTests (\ s a -> s{_umTests = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#urlMaps for url maps.
+umKind :: Lens' URLMap Text
+umKind = lens _umKind (\ s a -> s{_umKind = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a UrlMap. An up-to-date fingerprint must be
+-- provided in order to update the UrlMap, otherwise the request will fail
+-- with error 412 conditionNotMet. To see the latest fingerprint, make a
+-- get() request to retrieve a UrlMap.
+umFingerprint :: Lens' URLMap (Maybe ByteString)
+umFingerprint
+  = lens _umFingerprint
+      (\ s a -> s{_umFingerprint = a})
+      . mapping _Bytes
+
+-- | The URL of the backendService resource if none of the hostRules match.
+-- Use defaultService instead of defaultRouteAction when simple routing to
+-- a backendService is desired and other advanced capabilities like traffic
+-- splitting and rewrites are not required. Only one of defaultService,
+-- defaultRouteAction or defaultUrlRedirect should must be set.
+umDefaultService :: Lens' URLMap (Maybe Text)
+umDefaultService
+  = lens _umDefaultService
+      (\ s a -> s{_umDefaultService = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+umSelfLink :: Lens' URLMap (Maybe Text)
+umSelfLink
+  = lens _umSelfLink (\ s a -> s{_umSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+umName :: Lens' URLMap (Maybe Text)
+umName = lens _umName (\ s a -> s{_umName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+umCreationTimestamp :: Lens' URLMap (Maybe Text)
+umCreationTimestamp
+  = lens _umCreationTimestamp
+      (\ s a -> s{_umCreationTimestamp = a})
+
+-- | The list of named PathMatchers to use against the URL.
+umPathMatchers :: Lens' URLMap [PathMatcher]
+umPathMatchers
+  = lens _umPathMatchers
+      (\ s a -> s{_umPathMatchers = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+umId :: Lens' URLMap (Maybe Word64)
+umId
+  = lens _umId (\ s a -> s{_umId = a}) .
+      mapping _Coerce
+
+-- | The list of HostRules to use against the URL.
+umHostRules :: Lens' URLMap [HostRule]
+umHostRules
+  = lens _umHostRules (\ s a -> s{_umHostRules = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+umDescription :: Lens' URLMap (Maybe Text)
+umDescription
+  = lens _umDescription
+      (\ s a -> s{_umDescription = a})
+
+instance FromJSON URLMap where
+        parseJSON
+          = withObject "URLMap"
+              (\ o ->
+                 URLMap' <$>
+                   (o .:? "tests" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#urlMap")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "defaultService")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "pathMatchers" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "hostRules" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON URLMap where
+        toJSON URLMap'{..}
+          = object
+              (catMaybes
+                 [("tests" .=) <$> _umTests, Just ("kind" .= _umKind),
+                  ("fingerprint" .=) <$> _umFingerprint,
+                  ("defaultService" .=) <$> _umDefaultService,
+                  ("selfLink" .=) <$> _umSelfLink,
+                  ("name" .=) <$> _umName,
+                  ("creationTimestamp" .=) <$> _umCreationTimestamp,
+                  ("pathMatchers" .=) <$> _umPathMatchers,
+                  ("id" .=) <$> _umId,
+                  ("hostRules" .=) <$> _umHostRules,
+                  ("description" .=) <$> _umDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'imageListWarning' smart constructor.
+data ImageListWarning = ImageListWarning'
+    { _ilwData    :: !(Maybe [ImageListWarningDataItem])
+    , _ilwCode    :: !(Maybe ImageListWarningCode)
+    , _ilwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilwData'
+--
+-- * 'ilwCode'
+--
+-- * 'ilwMessage'
+imageListWarning
+    :: ImageListWarning
+imageListWarning =
+    ImageListWarning'
+    { _ilwData = Nothing
+    , _ilwCode = Nothing
+    , _ilwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ilwData :: Lens' ImageListWarning [ImageListWarningDataItem]
+ilwData
+  = lens _ilwData (\ s a -> s{_ilwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ilwCode :: Lens' ImageListWarning (Maybe ImageListWarningCode)
+ilwCode = lens _ilwCode (\ s a -> s{_ilwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ilwMessage :: Lens' ImageListWarning (Maybe Text)
+ilwMessage
+  = lens _ilwMessage (\ s a -> s{_ilwMessage = a})
+
+instance FromJSON ImageListWarning where
+        parseJSON
+          = withObject "ImageListWarning"
+              (\ o ->
+                 ImageListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ImageListWarning where
+        toJSON ImageListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ilwData, ("code" .=) <$> _ilwCode,
+                  ("message" .=) <$> _ilwMessage])
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr = Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+    Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | Textual representation of an expression in Common Expression Language
+-- syntax. The application context of the containing message determines
+-- which well-known feature set of CEL is supported.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | An optional title for the expression, i.e. a short string describing its
+-- purpose. This can be used e.g. in UIs which allow to enter the
+-- expression.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+--
+-- /See:/ 'sslPolicyReference' smart constructor.
+newtype SSLPolicyReference = SSLPolicyReference'
+    { _sprSSLPolicy :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPolicyReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprSSLPolicy'
+sslPolicyReference
+    :: SSLPolicyReference
+sslPolicyReference =
+    SSLPolicyReference'
+    { _sprSSLPolicy = Nothing
+    }
+
+-- | URL of the SSL policy resource. Set this to empty string to clear any
+-- existing SSL policy associated with the target proxy resource.
+sprSSLPolicy :: Lens' SSLPolicyReference (Maybe Text)
+sprSSLPolicy
+  = lens _sprSSLPolicy (\ s a -> s{_sprSSLPolicy = a})
+
+instance FromJSON SSLPolicyReference where
+        parseJSON
+          = withObject "SSLPolicyReference"
+              (\ o -> SSLPolicyReference' <$> (o .:? "sslPolicy"))
+
+instance ToJSON SSLPolicyReference where
+        toJSON SSLPolicyReference'{..}
+          = object
+              (catMaybes [("sslPolicy" .=) <$> _sprSSLPolicy])
+
+-- | A list of InstanceGroupsScopedList resources.
+--
+-- /See:/ 'instanceGroupAggregatedListItems' smart constructor.
+newtype InstanceGroupAggregatedListItems = InstanceGroupAggregatedListItems'
+    { _igaliAddtional :: HashMap Text InstanceGroupsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igaliAddtional'
+instanceGroupAggregatedListItems
+    :: HashMap Text InstanceGroupsScopedList -- ^ 'igaliAddtional'
+    -> InstanceGroupAggregatedListItems
+instanceGroupAggregatedListItems pIgaliAddtional_ =
+    InstanceGroupAggregatedListItems'
+    { _igaliAddtional = _Coerce # pIgaliAddtional_
+    }
+
+-- | The name of the scope that contains this set of instance groups.
+igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)
+igaliAddtional
+  = lens _igaliAddtional
+      (\ s a -> s{_igaliAddtional = a})
+      . _Coerce
+
+instance FromJSON InstanceGroupAggregatedListItems
+         where
+        parseJSON
+          = withObject "InstanceGroupAggregatedListItems"
+              (\ o ->
+                 InstanceGroupAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON InstanceGroupAggregatedListItems
+         where
+        toJSON = toJSON . _igaliAddtional
+
+-- | Contains a list of TargetPool resources.
+--
+-- /See:/ 'targetPoolList' smart constructor.
+data TargetPoolList = TargetPoolList'
+    { _tplNextPageToken :: !(Maybe Text)
+    , _tplKind          :: !Text
+    , _tplItems         :: !(Maybe [TargetPool])
+    , _tplSelfLink      :: !(Maybe Text)
+    , _tplWarning       :: !(Maybe TargetPoolListWarning)
+    , _tplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplNextPageToken'
+--
+-- * 'tplKind'
+--
+-- * 'tplItems'
+--
+-- * 'tplSelfLink'
+--
+-- * 'tplWarning'
+--
+-- * 'tplId'
+targetPoolList
+    :: TargetPoolList
+targetPoolList =
+    TargetPoolList'
+    { _tplNextPageToken = Nothing
+    , _tplKind = "compute#targetPoolList"
+    , _tplItems = Nothing
+    , _tplSelfLink = Nothing
+    , _tplWarning = Nothing
+    , _tplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tplNextPageToken :: Lens' TargetPoolList (Maybe Text)
+tplNextPageToken
+  = lens _tplNextPageToken
+      (\ s a -> s{_tplNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetPoolList for lists
+-- of target pools.
+tplKind :: Lens' TargetPoolList Text
+tplKind = lens _tplKind (\ s a -> s{_tplKind = a})
+
+-- | A list of TargetPool resources.
+tplItems :: Lens' TargetPoolList [TargetPool]
+tplItems
+  = lens _tplItems (\ s a -> s{_tplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tplSelfLink :: Lens' TargetPoolList (Maybe Text)
+tplSelfLink
+  = lens _tplSelfLink (\ s a -> s{_tplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tplWarning :: Lens' TargetPoolList (Maybe TargetPoolListWarning)
+tplWarning
+  = lens _tplWarning (\ s a -> s{_tplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tplId :: Lens' TargetPoolList (Maybe Text)
+tplId = lens _tplId (\ s a -> s{_tplId = a})
+
+instance FromJSON TargetPoolList where
+        parseJSON
+          = withObject "TargetPoolList"
+              (\ o ->
+                 TargetPoolList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetPoolList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetPoolList where
+        toJSON TargetPoolList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tplNextPageToken,
+                  Just ("kind" .= _tplKind),
+                  ("items" .=) <$> _tplItems,
+                  ("selfLink" .=) <$> _tplSelfLink,
+                  ("warning" .=) <$> _tplWarning,
+                  ("id" .=) <$> _tplId])
+
+-- | An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==)
+-- (== resource_for v1.acceleratorTypes ==)
+--
+-- /See:/ 'acceleratorType' smart constructor.
+data AcceleratorType = AcceleratorType'
+    { _atKind                    :: !Text
+    , _atZone                    :: !(Maybe Text)
+    , _atMaximumCardsPerInstance :: !(Maybe (Textual Int32))
+    , _atSelfLink                :: !(Maybe Text)
+    , _atName                    :: !(Maybe Text)
+    , _atCreationTimestamp       :: !(Maybe Text)
+    , _atId                      :: !(Maybe (Textual Word64))
+    , _atDescription             :: !(Maybe Text)
+    , _atDeprecated              :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atKind'
+--
+-- * 'atZone'
+--
+-- * 'atMaximumCardsPerInstance'
+--
+-- * 'atSelfLink'
+--
+-- * 'atName'
+--
+-- * 'atCreationTimestamp'
+--
+-- * 'atId'
+--
+-- * 'atDescription'
+--
+-- * 'atDeprecated'
+acceleratorType
+    :: AcceleratorType
+acceleratorType =
+    AcceleratorType'
+    { _atKind = "compute#acceleratorType"
+    , _atZone = Nothing
+    , _atMaximumCardsPerInstance = Nothing
+    , _atSelfLink = Nothing
+    , _atName = Nothing
+    , _atCreationTimestamp = Nothing
+    , _atId = Nothing
+    , _atDescription = Nothing
+    , _atDeprecated = Nothing
+    }
+
+-- | [Output Only] The type of the resource. Always compute#acceleratorType
+-- for accelerator types.
+atKind :: Lens' AcceleratorType Text
+atKind = lens _atKind (\ s a -> s{_atKind = a})
+
+-- | [Output Only] The name of the zone where the accelerator type resides,
+-- such as us-central1-a. You must specify this field as part of the HTTP
+-- request URL. It is not settable as a field in the request body.
+atZone :: Lens' AcceleratorType (Maybe Text)
+atZone = lens _atZone (\ s a -> s{_atZone = a})
+
+-- | [Output Only] Maximum accelerator cards allowed per instance.
+atMaximumCardsPerInstance :: Lens' AcceleratorType (Maybe Int32)
+atMaximumCardsPerInstance
+  = lens _atMaximumCardsPerInstance
+      (\ s a -> s{_atMaximumCardsPerInstance = a})
+      . mapping _Coerce
+
+-- | [Output Only] Server-defined fully-qualified URL for this resource.
+atSelfLink :: Lens' AcceleratorType (Maybe Text)
+atSelfLink
+  = lens _atSelfLink (\ s a -> s{_atSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+atName :: Lens' AcceleratorType (Maybe Text)
+atName = lens _atName (\ s a -> s{_atName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+atCreationTimestamp :: Lens' AcceleratorType (Maybe Text)
+atCreationTimestamp
+  = lens _atCreationTimestamp
+      (\ s a -> s{_atCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+atId :: Lens' AcceleratorType (Maybe Word64)
+atId
+  = lens _atId (\ s a -> s{_atId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] An optional textual description of the resource.
+atDescription :: Lens' AcceleratorType (Maybe Text)
+atDescription
+  = lens _atDescription
+      (\ s a -> s{_atDescription = a})
+
+-- | [Output Only] The deprecation status associated with this accelerator
+-- type.
+atDeprecated :: Lens' AcceleratorType (Maybe DeprecationStatus)
+atDeprecated
+  = lens _atDeprecated (\ s a -> s{_atDeprecated = a})
+
+instance FromJSON AcceleratorType where
+        parseJSON
+          = withObject "AcceleratorType"
+              (\ o ->
+                 AcceleratorType' <$>
+                   (o .:? "kind" .!= "compute#acceleratorType") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "maximumCardsPerInstance")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON AcceleratorType where
+        toJSON AcceleratorType'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _atKind), ("zone" .=) <$> _atZone,
+                  ("maximumCardsPerInstance" .=) <$>
+                    _atMaximumCardsPerInstance,
+                  ("selfLink" .=) <$> _atSelfLink,
+                  ("name" .=) <$> _atName,
+                  ("creationTimestamp" .=) <$> _atCreationTimestamp,
+                  ("id" .=) <$> _atId,
+                  ("description" .=) <$> _atDescription,
+                  ("deprecated" .=) <$> _atDeprecated])
+
+--
+-- /See:/ 'backendBucketListWarningDataItem' smart constructor.
+data BackendBucketListWarningDataItem = BackendBucketListWarningDataItem'
+    { _bblwdiValue :: !(Maybe Text)
+    , _bblwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bblwdiValue'
+--
+-- * 'bblwdiKey'
+backendBucketListWarningDataItem
+    :: BackendBucketListWarningDataItem
+backendBucketListWarningDataItem =
+    BackendBucketListWarningDataItem'
+    { _bblwdiValue = Nothing
+    , _bblwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+bblwdiValue :: Lens' BackendBucketListWarningDataItem (Maybe Text)
+bblwdiValue
+  = lens _bblwdiValue (\ s a -> s{_bblwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+bblwdiKey :: Lens' BackendBucketListWarningDataItem (Maybe Text)
+bblwdiKey
+  = lens _bblwdiKey (\ s a -> s{_bblwdiKey = a})
+
+instance FromJSON BackendBucketListWarningDataItem
+         where
+        parseJSON
+          = withObject "BackendBucketListWarningDataItem"
+              (\ o ->
+                 BackendBucketListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON BackendBucketListWarningDataItem
+         where
+        toJSON BackendBucketListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _bblwdiValue,
+                  ("key" .=) <$> _bblwdiKey])
+
+--
+-- /See:/ 'acceleratorTypesScopedListWarningDataItem' smart constructor.
+data AcceleratorTypesScopedListWarningDataItem = AcceleratorTypesScopedListWarningDataItem'
+    { _atslwdiValue :: !(Maybe Text)
+    , _atslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atslwdiValue'
+--
+-- * 'atslwdiKey'
+acceleratorTypesScopedListWarningDataItem
+    :: AcceleratorTypesScopedListWarningDataItem
+acceleratorTypesScopedListWarningDataItem =
+    AcceleratorTypesScopedListWarningDataItem'
+    { _atslwdiValue = Nothing
+    , _atslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+atslwdiValue :: Lens' AcceleratorTypesScopedListWarningDataItem (Maybe Text)
+atslwdiValue
+  = lens _atslwdiValue (\ s a -> s{_atslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+atslwdiKey :: Lens' AcceleratorTypesScopedListWarningDataItem (Maybe Text)
+atslwdiKey
+  = lens _atslwdiKey (\ s a -> s{_atslwdiKey = a})
+
+instance FromJSON
+         AcceleratorTypesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "AcceleratorTypesScopedListWarningDataItem"
+              (\ o ->
+                 AcceleratorTypesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         AcceleratorTypesScopedListWarningDataItem where
+        toJSON AcceleratorTypesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _atslwdiValue,
+                  ("key" .=) <$> _atslwdiKey])
+
+--
+-- /See:/ 'regionDiskTypeList' smart constructor.
+data RegionDiskTypeList = RegionDiskTypeList'
+    { _rdtlNextPageToken :: !(Maybe Text)
+    , _rdtlKind          :: !Text
+    , _rdtlItems         :: !(Maybe [DiskType])
+    , _rdtlSelfLink      :: !(Maybe Text)
+    , _rdtlWarning       :: !(Maybe RegionDiskTypeListWarning)
+    , _rdtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDiskTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtlNextPageToken'
+--
+-- * 'rdtlKind'
+--
+-- * 'rdtlItems'
+--
+-- * 'rdtlSelfLink'
+--
+-- * 'rdtlWarning'
+--
+-- * 'rdtlId'
+regionDiskTypeList
+    :: RegionDiskTypeList
+regionDiskTypeList =
+    RegionDiskTypeList'
+    { _rdtlNextPageToken = Nothing
+    , _rdtlKind = "compute#regionDiskTypeList"
+    , _rdtlItems = Nothing
+    , _rdtlSelfLink = Nothing
+    , _rdtlWarning = Nothing
+    , _rdtlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rdtlNextPageToken :: Lens' RegionDiskTypeList (Maybe Text)
+rdtlNextPageToken
+  = lens _rdtlNextPageToken
+      (\ s a -> s{_rdtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#regionDiskTypeList for
+-- region disk types.
+rdtlKind :: Lens' RegionDiskTypeList Text
+rdtlKind = lens _rdtlKind (\ s a -> s{_rdtlKind = a})
+
+-- | A list of DiskType resources.
+rdtlItems :: Lens' RegionDiskTypeList [DiskType]
+rdtlItems
+  = lens _rdtlItems (\ s a -> s{_rdtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rdtlSelfLink :: Lens' RegionDiskTypeList (Maybe Text)
+rdtlSelfLink
+  = lens _rdtlSelfLink (\ s a -> s{_rdtlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rdtlWarning :: Lens' RegionDiskTypeList (Maybe RegionDiskTypeListWarning)
+rdtlWarning
+  = lens _rdtlWarning (\ s a -> s{_rdtlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rdtlId :: Lens' RegionDiskTypeList (Maybe Text)
+rdtlId = lens _rdtlId (\ s a -> s{_rdtlId = a})
+
+instance FromJSON RegionDiskTypeList where
+        parseJSON
+          = withObject "RegionDiskTypeList"
+              (\ o ->
+                 RegionDiskTypeList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#regionDiskTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionDiskTypeList where
+        toJSON RegionDiskTypeList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rdtlNextPageToken,
+                  Just ("kind" .= _rdtlKind),
+                  ("items" .=) <$> _rdtlItems,
+                  ("selfLink" .=) <$> _rdtlSelfLink,
+                  ("warning" .=) <$> _rdtlWarning,
+                  ("id" .=) <$> _rdtlId])
+
+--
+-- /See:/ 'targetInstanceAggregatedList' smart constructor.
+data TargetInstanceAggregatedList = TargetInstanceAggregatedList'
+    { _tialNextPageToken :: !(Maybe Text)
+    , _tialKind          :: !Text
+    , _tialItems         :: !(Maybe TargetInstanceAggregatedListItems)
+    , _tialSelfLink      :: !(Maybe Text)
+    , _tialWarning       :: !(Maybe TargetInstanceAggregatedListWarning)
+    , _tialId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialNextPageToken'
+--
+-- * 'tialKind'
+--
+-- * 'tialItems'
+--
+-- * 'tialSelfLink'
+--
+-- * 'tialWarning'
+--
+-- * 'tialId'
+targetInstanceAggregatedList
+    :: TargetInstanceAggregatedList
+targetInstanceAggregatedList =
+    TargetInstanceAggregatedList'
+    { _tialNextPageToken = Nothing
+    , _tialKind = "compute#targetInstanceAggregatedList"
+    , _tialItems = Nothing
+    , _tialSelfLink = Nothing
+    , _tialWarning = Nothing
+    , _tialId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialNextPageToken
+  = lens _tialNextPageToken
+      (\ s a -> s{_tialNextPageToken = a})
+
+-- | Type of resource.
+tialKind :: Lens' TargetInstanceAggregatedList Text
+tialKind = lens _tialKind (\ s a -> s{_tialKind = a})
+
+-- | A list of TargetInstance resources.
+tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)
+tialItems
+  = lens _tialItems (\ s a -> s{_tialItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialSelfLink
+  = lens _tialSelfLink (\ s a -> s{_tialSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tialWarning :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListWarning)
+tialWarning
+  = lens _tialWarning (\ s a -> s{_tialWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialId = lens _tialId (\ s a -> s{_tialId = a})
+
+instance FromJSON TargetInstanceAggregatedList where
+        parseJSON
+          = withObject "TargetInstanceAggregatedList"
+              (\ o ->
+                 TargetInstanceAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#targetInstanceAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetInstanceAggregatedList where
+        toJSON TargetInstanceAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tialNextPageToken,
+                  Just ("kind" .= _tialKind),
+                  ("items" .=) <$> _tialItems,
+                  ("selfLink" .=) <$> _tialSelfLink,
+                  ("warning" .=) <$> _tialWarning,
+                  ("id" .=) <$> _tialId])
+
+--
+-- /See:/ 'nodeGroupsListNodesWarningDataItem' smart constructor.
+data NodeGroupsListNodesWarningDataItem = NodeGroupsListNodesWarningDataItem'
+    { _nglnwdiValue :: !(Maybe Text)
+    , _nglnwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsListNodesWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglnwdiValue'
+--
+-- * 'nglnwdiKey'
+nodeGroupsListNodesWarningDataItem
+    :: NodeGroupsListNodesWarningDataItem
+nodeGroupsListNodesWarningDataItem =
+    NodeGroupsListNodesWarningDataItem'
+    { _nglnwdiValue = Nothing
+    , _nglnwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+nglnwdiValue :: Lens' NodeGroupsListNodesWarningDataItem (Maybe Text)
+nglnwdiValue
+  = lens _nglnwdiValue (\ s a -> s{_nglnwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+nglnwdiKey :: Lens' NodeGroupsListNodesWarningDataItem (Maybe Text)
+nglnwdiKey
+  = lens _nglnwdiKey (\ s a -> s{_nglnwdiKey = a})
+
+instance FromJSON NodeGroupsListNodesWarningDataItem
+         where
+        parseJSON
+          = withObject "NodeGroupsListNodesWarningDataItem"
+              (\ o ->
+                 NodeGroupsListNodesWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeGroupsListNodesWarningDataItem
+         where
+        toJSON NodeGroupsListNodesWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _nglnwdiValue,
+                  ("key" .=) <$> _nglnwdiKey])
+
+--
+-- /See:/ 'usableSubnetworksAggregatedList' smart constructor.
+data UsableSubnetworksAggregatedList = UsableSubnetworksAggregatedList'
+    { _usalNextPageToken :: !(Maybe Text)
+    , _usalKind          :: !Text
+    , _usalItems         :: !(Maybe [UsableSubnetwork])
+    , _usalSelfLink      :: !(Maybe Text)
+    , _usalWarning       :: !(Maybe UsableSubnetworksAggregatedListWarning)
+    , _usalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsableSubnetworksAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usalNextPageToken'
+--
+-- * 'usalKind'
+--
+-- * 'usalItems'
+--
+-- * 'usalSelfLink'
+--
+-- * 'usalWarning'
+--
+-- * 'usalId'
+usableSubnetworksAggregatedList
+    :: UsableSubnetworksAggregatedList
+usableSubnetworksAggregatedList =
+    UsableSubnetworksAggregatedList'
+    { _usalNextPageToken = Nothing
+    , _usalKind = "compute#usableSubnetworksAggregatedList"
+    , _usalItems = Nothing
+    , _usalSelfLink = Nothing
+    , _usalWarning = Nothing
+    , _usalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+usalNextPageToken :: Lens' UsableSubnetworksAggregatedList (Maybe Text)
+usalNextPageToken
+  = lens _usalNextPageToken
+      (\ s a -> s{_usalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always
+-- compute#usableSubnetworksAggregatedList for aggregated lists of usable
+-- subnetworks.
+usalKind :: Lens' UsableSubnetworksAggregatedList Text
+usalKind = lens _usalKind (\ s a -> s{_usalKind = a})
+
+-- | [Output] A list of usable subnetwork URLs.
+usalItems :: Lens' UsableSubnetworksAggregatedList [UsableSubnetwork]
+usalItems
+  = lens _usalItems (\ s a -> s{_usalItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+usalSelfLink :: Lens' UsableSubnetworksAggregatedList (Maybe Text)
+usalSelfLink
+  = lens _usalSelfLink (\ s a -> s{_usalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+usalWarning :: Lens' UsableSubnetworksAggregatedList (Maybe UsableSubnetworksAggregatedListWarning)
+usalWarning
+  = lens _usalWarning (\ s a -> s{_usalWarning = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+usalId :: Lens' UsableSubnetworksAggregatedList (Maybe Text)
+usalId = lens _usalId (\ s a -> s{_usalId = a})
+
+instance FromJSON UsableSubnetworksAggregatedList
+         where
+        parseJSON
+          = withObject "UsableSubnetworksAggregatedList"
+              (\ o ->
+                 UsableSubnetworksAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#usableSubnetworksAggregatedList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON UsableSubnetworksAggregatedList where
+        toJSON UsableSubnetworksAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _usalNextPageToken,
+                  Just ("kind" .= _usalKind),
+                  ("items" .=) <$> _usalItems,
+                  ("selfLink" .=) <$> _usalSelfLink,
+                  ("warning" .=) <$> _usalWarning,
+                  ("id" .=) <$> _usalId])
+
+--
+-- /See:/ 'disksScopedList' smart constructor.
+data DisksScopedList = DisksScopedList'
+    { _dslWarning :: !(Maybe DisksScopedListWarning)
+    , _dslDisks   :: !(Maybe [Disk])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslWarning'
+--
+-- * 'dslDisks'
+disksScopedList
+    :: DisksScopedList
+disksScopedList =
+    DisksScopedList'
+    { _dslWarning = Nothing
+    , _dslDisks = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of disks
+-- when the list is empty.
+dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)
+dslWarning
+  = lens _dslWarning (\ s a -> s{_dslWarning = a})
+
+-- | [Output Only] A list of disks contained in this scope.
+dslDisks :: Lens' DisksScopedList [Disk]
+dslDisks
+  = lens _dslDisks (\ s a -> s{_dslDisks = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON DisksScopedList where
+        parseJSON
+          = withObject "DisksScopedList"
+              (\ o ->
+                 DisksScopedList' <$>
+                   (o .:? "warning") <*> (o .:? "disks" .!= mempty))
+
+instance ToJSON DisksScopedList where
+        toJSON DisksScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _dslWarning,
+                  ("disks" .=) <$> _dslDisks])
+
+--
+-- /See:/ 'interconnectLocationListWarningDataItem' smart constructor.
+data InterconnectLocationListWarningDataItem = InterconnectLocationListWarningDataItem'
+    { _illwdiValue :: !(Maybe Text)
+    , _illwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'illwdiValue'
+--
+-- * 'illwdiKey'
+interconnectLocationListWarningDataItem
+    :: InterconnectLocationListWarningDataItem
+interconnectLocationListWarningDataItem =
+    InterconnectLocationListWarningDataItem'
+    { _illwdiValue = Nothing
+    , _illwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+illwdiValue :: Lens' InterconnectLocationListWarningDataItem (Maybe Text)
+illwdiValue
+  = lens _illwdiValue (\ s a -> s{_illwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+illwdiKey :: Lens' InterconnectLocationListWarningDataItem (Maybe Text)
+illwdiKey
+  = lens _illwdiKey (\ s a -> s{_illwdiKey = a})
+
+instance FromJSON
+         InterconnectLocationListWarningDataItem where
+        parseJSON
+          = withObject
+              "InterconnectLocationListWarningDataItem"
+              (\ o ->
+                 InterconnectLocationListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InterconnectLocationListWarningDataItem where
+        toJSON InterconnectLocationListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _illwdiValue,
+                  ("key" .=) <$> _illwdiKey])
+
+--
+-- /See:/ 'instanceGroupManagersScopedList' smart constructor.
+data InstanceGroupManagersScopedList = InstanceGroupManagersScopedList'
+    { _igmslWarning               :: !(Maybe InstanceGroupManagersScopedListWarning)
+    , _igmslInstanceGroupManagers :: !(Maybe [InstanceGroupManager])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslWarning'
+--
+-- * 'igmslInstanceGroupManagers'
+instanceGroupManagersScopedList
+    :: InstanceGroupManagersScopedList
+instanceGroupManagersScopedList =
+    InstanceGroupManagersScopedList'
+    { _igmslWarning = Nothing
+    , _igmslInstanceGroupManagers = Nothing
+    }
+
+-- | [Output Only] The warning that replaces the list of managed instance
+-- groups when the list is empty.
+igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)
+igmslWarning
+  = lens _igmslWarning (\ s a -> s{_igmslWarning = a})
+
+-- | [Output Only] The list of managed instance groups that are contained in
+-- the specified project and zone.
+igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]
+igmslInstanceGroupManagers
+  = lens _igmslInstanceGroupManagers
+      (\ s a -> s{_igmslInstanceGroupManagers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupManagersScopedList
+         where
+        parseJSON
+          = withObject "InstanceGroupManagersScopedList"
+              (\ o ->
+                 InstanceGroupManagersScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "instanceGroupManagers" .!= mempty))
+
+instance ToJSON InstanceGroupManagersScopedList where
+        toJSON InstanceGroupManagersScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _igmslWarning,
+                  ("instanceGroupManagers" .=) <$>
+                    _igmslInstanceGroupManagers])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'subnetworkListWarning' smart constructor.
+data SubnetworkListWarning = SubnetworkListWarning'
+    { _slwData    :: !(Maybe [SubnetworkListWarningDataItem])
+    , _slwCode    :: !(Maybe SubnetworkListWarningCode)
+    , _slwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slwData'
+--
+-- * 'slwCode'
+--
+-- * 'slwMessage'
+subnetworkListWarning
+    :: SubnetworkListWarning
+subnetworkListWarning =
+    SubnetworkListWarning'
+    { _slwData = Nothing
+    , _slwCode = Nothing
+    , _slwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+slwData :: Lens' SubnetworkListWarning [SubnetworkListWarningDataItem]
+slwData
+  = lens _slwData (\ s a -> s{_slwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+slwCode :: Lens' SubnetworkListWarning (Maybe SubnetworkListWarningCode)
+slwCode = lens _slwCode (\ s a -> s{_slwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+slwMessage :: Lens' SubnetworkListWarning (Maybe Text)
+slwMessage
+  = lens _slwMessage (\ s a -> s{_slwMessage = a})
+
+instance FromJSON SubnetworkListWarning where
+        parseJSON
+          = withObject "SubnetworkListWarning"
+              (\ o ->
+                 SubnetworkListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SubnetworkListWarning where
+        toJSON SubnetworkListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _slwData, ("code" .=) <$> _slwCode,
+                  ("message" .=) <$> _slwMessage])
+
+-- | An HealthCheck resource. This resource defines a template for how
+-- individual virtual machines should be checked for health, via one of the
+-- supported protocols.
+--
+-- /See:/ 'healthCheck' smart constructor.
+data HealthCheck = HealthCheck'
+    { _hcHealthyThreshold   :: !(Maybe (Textual Int32))
+    , _hcTCPHealthCheck     :: !(Maybe TCPHealthCheck)
+    , _hcKind               :: !Text
+    , _hcSSLHealthCheck     :: !(Maybe SSLHealthCheck)
+    , _hcSelfLink           :: !(Maybe Text)
+    , _hcCheckIntervalSec   :: !(Maybe (Textual Int32))
+    , _hcName               :: !(Maybe Text)
+    , _hcCreationTimestamp  :: !(Maybe Text)
+    , _hcHTTPHealthCheck    :: !(Maybe HTTPHealthCheck)
+    , _hcId                 :: !(Maybe (Textual Word64))
+    , _hcType               :: !(Maybe HealthCheckType)
+    , _hcTimeoutSec         :: !(Maybe (Textual Int32))
+    , _hcDescription        :: !(Maybe Text)
+    , _hcUnhealthyThreshold :: !(Maybe (Textual Int32))
+    , _hcHTTPSHealthCheck   :: !(Maybe HTTPSHealthCheck)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hcHealthyThreshold'
+--
+-- * 'hcTCPHealthCheck'
+--
+-- * 'hcKind'
+--
+-- * 'hcSSLHealthCheck'
+--
+-- * 'hcSelfLink'
+--
+-- * 'hcCheckIntervalSec'
+--
+-- * 'hcName'
+--
+-- * 'hcCreationTimestamp'
+--
+-- * 'hcHTTPHealthCheck'
+--
+-- * 'hcId'
+--
+-- * 'hcType'
+--
+-- * 'hcTimeoutSec'
+--
+-- * 'hcDescription'
+--
+-- * 'hcUnhealthyThreshold'
+--
+-- * 'hcHTTPSHealthCheck'
+healthCheck
+    :: HealthCheck
+healthCheck =
+    HealthCheck'
+    { _hcHealthyThreshold = Nothing
+    , _hcTCPHealthCheck = Nothing
+    , _hcKind = "compute#healthCheck"
+    , _hcSSLHealthCheck = Nothing
+    , _hcSelfLink = Nothing
+    , _hcCheckIntervalSec = Nothing
+    , _hcName = Nothing
+    , _hcCreationTimestamp = Nothing
+    , _hcHTTPHealthCheck = Nothing
+    , _hcId = Nothing
+    , _hcType = Nothing
+    , _hcTimeoutSec = Nothing
+    , _hcDescription = Nothing
+    , _hcUnhealthyThreshold = Nothing
+    , _hcHTTPSHealthCheck = Nothing
+    }
+
+-- | A so-far unhealthy instance will be marked healthy after this many
+-- consecutive successes. The default value is 2.
+hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+hcHealthyThreshold
+  = lens _hcHealthyThreshold
+      (\ s a -> s{_hcHealthyThreshold = a})
+      . mapping _Coerce
+
+hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)
+hcTCPHealthCheck
+  = lens _hcTCPHealthCheck
+      (\ s a -> s{_hcTCPHealthCheck = a})
+
+-- | Type of the resource.
+hcKind :: Lens' HealthCheck Text
+hcKind = lens _hcKind (\ s a -> s{_hcKind = a})
+
+hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)
+hcSSLHealthCheck
+  = lens _hcSSLHealthCheck
+      (\ s a -> s{_hcSSLHealthCheck = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+hcSelfLink :: Lens' HealthCheck (Maybe Text)
+hcSelfLink
+  = lens _hcSelfLink (\ s a -> s{_hcSelfLink = a})
+
+-- | How often (in seconds) to send a health check. The default value is 5
+-- seconds.
+hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)
+hcCheckIntervalSec
+  = lens _hcCheckIntervalSec
+      (\ s a -> s{_hcCheckIntervalSec = a})
+      . mapping _Coerce
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+hcName :: Lens' HealthCheck (Maybe Text)
+hcName = lens _hcName (\ s a -> s{_hcName = a})
+
+-- | [Output Only] Creation timestamp in 3339 text format.
+hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
+hcCreationTimestamp
+  = lens _hcCreationTimestamp
+      (\ s a -> s{_hcCreationTimestamp = a})
+
+hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)
+hcHTTPHealthCheck
+  = lens _hcHTTPHealthCheck
+      (\ s a -> s{_hcHTTPHealthCheck = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+hcId :: Lens' HealthCheck (Maybe Word64)
+hcId
+  = lens _hcId (\ s a -> s{_hcId = a}) .
+      mapping _Coerce
+
+-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
+-- If not specified, the default is TCP. Exactly one of the
+-- protocol-specific health check field must be specified, which must match
+-- type field.
+hcType :: Lens' HealthCheck (Maybe HealthCheckType)
+hcType = lens _hcType (\ s a -> s{_hcType = a})
+
+-- | How long (in seconds) to wait before claiming failure. The default value
+-- is 5 seconds. It is invalid for timeoutSec to have greater value than
+-- checkIntervalSec.
+hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)
+hcTimeoutSec
+  = lens _hcTimeoutSec (\ s a -> s{_hcTimeoutSec = a})
+      . mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+hcDescription :: Lens' HealthCheck (Maybe Text)
+hcDescription
+  = lens _hcDescription
+      (\ s a -> s{_hcDescription = a})
+
+-- | A so-far healthy instance will be marked unhealthy after this many
+-- consecutive failures. The default value is 2.
+hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+hcUnhealthyThreshold
+  = lens _hcUnhealthyThreshold
+      (\ s a -> s{_hcUnhealthyThreshold = a})
+      . mapping _Coerce
+
+hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)
+hcHTTPSHealthCheck
+  = lens _hcHTTPSHealthCheck
+      (\ s a -> s{_hcHTTPSHealthCheck = a})
+
+instance FromJSON HealthCheck where
+        parseJSON
+          = withObject "HealthCheck"
+              (\ o ->
+                 HealthCheck' <$>
+                   (o .:? "healthyThreshold") <*>
+                     (o .:? "tcpHealthCheck")
+                     <*> (o .:? "kind" .!= "compute#healthCheck")
+                     <*> (o .:? "sslHealthCheck")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "checkIntervalSec")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "httpHealthCheck")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type")
+                     <*> (o .:? "timeoutSec")
+                     <*> (o .:? "description")
+                     <*> (o .:? "unhealthyThreshold")
+                     <*> (o .:? "httpsHealthCheck"))
+
+instance ToJSON HealthCheck where
+        toJSON HealthCheck'{..}
+          = object
+              (catMaybes
+                 [("healthyThreshold" .=) <$> _hcHealthyThreshold,
+                  ("tcpHealthCheck" .=) <$> _hcTCPHealthCheck,
+                  Just ("kind" .= _hcKind),
+                  ("sslHealthCheck" .=) <$> _hcSSLHealthCheck,
+                  ("selfLink" .=) <$> _hcSelfLink,
+                  ("checkIntervalSec" .=) <$> _hcCheckIntervalSec,
+                  ("name" .=) <$> _hcName,
+                  ("creationTimestamp" .=) <$> _hcCreationTimestamp,
+                  ("httpHealthCheck" .=) <$> _hcHTTPHealthCheck,
+                  ("id" .=) <$> _hcId, ("type" .=) <$> _hcType,
+                  ("timeoutSec" .=) <$> _hcTimeoutSec,
+                  ("description" .=) <$> _hcDescription,
+                  ("unhealthyThreshold" .=) <$> _hcUnhealthyThreshold,
+                  ("httpsHealthCheck" .=) <$> _hcHTTPSHealthCheck])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'hTTPHealthCheckListWarning' smart constructor.
+data HTTPHealthCheckListWarning = HTTPHealthCheckListWarning'
+    { _httphclwData    :: !(Maybe [HTTPHealthCheckListWarningDataItem])
+    , _httphclwCode    :: !(Maybe HTTPHealthCheckListWarningCode)
+    , _httphclwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheckListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphclwData'
+--
+-- * 'httphclwCode'
+--
+-- * 'httphclwMessage'
+hTTPHealthCheckListWarning
+    :: HTTPHealthCheckListWarning
+hTTPHealthCheckListWarning =
+    HTTPHealthCheckListWarning'
+    { _httphclwData = Nothing
+    , _httphclwCode = Nothing
+    , _httphclwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+httphclwData :: Lens' HTTPHealthCheckListWarning [HTTPHealthCheckListWarningDataItem]
+httphclwData
+  = lens _httphclwData (\ s a -> s{_httphclwData = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+httphclwCode :: Lens' HTTPHealthCheckListWarning (Maybe HTTPHealthCheckListWarningCode)
+httphclwCode
+  = lens _httphclwCode (\ s a -> s{_httphclwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+httphclwMessage :: Lens' HTTPHealthCheckListWarning (Maybe Text)
+httphclwMessage
+  = lens _httphclwMessage
+      (\ s a -> s{_httphclwMessage = a})
+
+instance FromJSON HTTPHealthCheckListWarning where
+        parseJSON
+          = withObject "HTTPHealthCheckListWarning"
+              (\ o ->
+                 HTTPHealthCheckListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON HTTPHealthCheckListWarning where
+        toJSON HTTPHealthCheckListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _httphclwData,
+                  ("code" .=) <$> _httphclwCode,
+                  ("message" .=) <$> _httphclwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'sslPoliciesListWarning' smart constructor.
+data SSLPoliciesListWarning = SSLPoliciesListWarning'
+    { _splwData    :: !(Maybe [SSLPoliciesListWarningDataItem])
+    , _splwCode    :: !(Maybe SSLPoliciesListWarningCode)
+    , _splwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splwData'
+--
+-- * 'splwCode'
+--
+-- * 'splwMessage'
+sslPoliciesListWarning
+    :: SSLPoliciesListWarning
+sslPoliciesListWarning =
+    SSLPoliciesListWarning'
+    { _splwData = Nothing
+    , _splwCode = Nothing
+    , _splwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+splwData :: Lens' SSLPoliciesListWarning [SSLPoliciesListWarningDataItem]
+splwData
+  = lens _splwData (\ s a -> s{_splwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+splwCode :: Lens' SSLPoliciesListWarning (Maybe SSLPoliciesListWarningCode)
+splwCode = lens _splwCode (\ s a -> s{_splwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+splwMessage :: Lens' SSLPoliciesListWarning (Maybe Text)
+splwMessage
+  = lens _splwMessage (\ s a -> s{_splwMessage = a})
+
+instance FromJSON SSLPoliciesListWarning where
+        parseJSON
+          = withObject "SSLPoliciesListWarning"
+              (\ o ->
+                 SSLPoliciesListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SSLPoliciesListWarning where
+        toJSON SSLPoliciesListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _splwData,
+                  ("code" .=) <$> _splwCode,
+                  ("message" .=) <$> _splwMessage])
+
+-- | A list of CommitmentsScopedList resources.
+--
+-- /See:/ 'commitmentAggregatedListItems' smart constructor.
+newtype CommitmentAggregatedListItems = CommitmentAggregatedListItems'
+    { _caliAddtional :: HashMap Text CommitmentsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'caliAddtional'
+commitmentAggregatedListItems
+    :: HashMap Text CommitmentsScopedList -- ^ 'caliAddtional'
+    -> CommitmentAggregatedListItems
+commitmentAggregatedListItems pCaliAddtional_ =
+    CommitmentAggregatedListItems'
+    { _caliAddtional = _Coerce # pCaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of commitments.
+caliAddtional :: Lens' CommitmentAggregatedListItems (HashMap Text CommitmentsScopedList)
+caliAddtional
+  = lens _caliAddtional
+      (\ s a -> s{_caliAddtional = a})
+      . _Coerce
+
+instance FromJSON CommitmentAggregatedListItems where
+        parseJSON
+          = withObject "CommitmentAggregatedListItems"
+              (\ o ->
+                 CommitmentAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON CommitmentAggregatedListItems where
+        toJSON = toJSON . _caliAddtional
+
+--
+-- /See:/ 'diskAggregatedList' smart constructor.
+data DiskAggregatedList = DiskAggregatedList'
+    { _dalNextPageToken :: !(Maybe Text)
+    , _dalKind          :: !Text
+    , _dalItems         :: !(Maybe DiskAggregatedListItems)
+    , _dalSelfLink      :: !(Maybe Text)
+    , _dalWarning       :: !(Maybe DiskAggregatedListWarning)
+    , _dalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalNextPageToken'
+--
+-- * 'dalKind'
+--
+-- * 'dalItems'
+--
+-- * 'dalSelfLink'
+--
+-- * 'dalWarning'
+--
+-- * 'dalId'
+diskAggregatedList
+    :: DiskAggregatedList
+diskAggregatedList =
+    DiskAggregatedList'
+    { _dalNextPageToken = Nothing
+    , _dalKind = "compute#diskAggregatedList"
+    , _dalItems = Nothing
+    , _dalSelfLink = Nothing
+    , _dalWarning = Nothing
+    , _dalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)
+dalNextPageToken
+  = lens _dalNextPageToken
+      (\ s a -> s{_dalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskAggregatedList for
+-- aggregated lists of persistent disks.
+dalKind :: Lens' DiskAggregatedList Text
+dalKind = lens _dalKind (\ s a -> s{_dalKind = a})
+
+-- | A list of DisksScopedList resources.
+dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)
+dalItems = lens _dalItems (\ s a -> s{_dalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)
+dalSelfLink
+  = lens _dalSelfLink (\ s a -> s{_dalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+dalWarning :: Lens' DiskAggregatedList (Maybe DiskAggregatedListWarning)
+dalWarning
+  = lens _dalWarning (\ s a -> s{_dalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dalId :: Lens' DiskAggregatedList (Maybe Text)
+dalId = lens _dalId (\ s a -> s{_dalId = a})
+
+instance FromJSON DiskAggregatedList where
+        parseJSON
+          = withObject "DiskAggregatedList"
+              (\ o ->
+                 DiskAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskAggregatedList where
+        toJSON DiskAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dalNextPageToken,
+                  Just ("kind" .= _dalKind),
+                  ("items" .=) <$> _dalItems,
+                  ("selfLink" .=) <$> _dalSelfLink,
+                  ("warning" .=) <$> _dalWarning,
+                  ("id" .=) <$> _dalId])
+
+--
+-- /See:/ 'instanceGroupsListInstancesWarningDataItem' smart constructor.
+data InstanceGroupsListInstancesWarningDataItem = InstanceGroupsListInstancesWarningDataItem'
+    { _igliwdiValue :: !(Maybe Text)
+    , _igliwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstancesWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igliwdiValue'
+--
+-- * 'igliwdiKey'
+instanceGroupsListInstancesWarningDataItem
+    :: InstanceGroupsListInstancesWarningDataItem
+instanceGroupsListInstancesWarningDataItem =
+    InstanceGroupsListInstancesWarningDataItem'
+    { _igliwdiValue = Nothing
+    , _igliwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igliwdiValue :: Lens' InstanceGroupsListInstancesWarningDataItem (Maybe Text)
+igliwdiValue
+  = lens _igliwdiValue (\ s a -> s{_igliwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igliwdiKey :: Lens' InstanceGroupsListInstancesWarningDataItem (Maybe Text)
+igliwdiKey
+  = lens _igliwdiKey (\ s a -> s{_igliwdiKey = a})
+
+instance FromJSON
+         InstanceGroupsListInstancesWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupsListInstancesWarningDataItem"
+              (\ o ->
+                 InstanceGroupsListInstancesWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupsListInstancesWarningDataItem where
+        toJSON
+          InstanceGroupsListInstancesWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igliwdiValue,
+                  ("key" .=) <$> _igliwdiKey])
+
+--
+-- /See:/ 'instanceWithNamedPorts' smart constructor.
+data InstanceWithNamedPorts = InstanceWithNamedPorts'
+    { _iwnpStatus     :: !(Maybe InstanceWithNamedPortsStatus)
+    , _iwnpNamedPorts :: !(Maybe [NamedPort])
+    , _iwnpInstance   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceWithNamedPorts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iwnpStatus'
+--
+-- * 'iwnpNamedPorts'
+--
+-- * 'iwnpInstance'
+instanceWithNamedPorts
+    :: InstanceWithNamedPorts
+instanceWithNamedPorts =
+    InstanceWithNamedPorts'
+    { _iwnpStatus = Nothing
+    , _iwnpNamedPorts = Nothing
+    , _iwnpInstance = Nothing
+    }
+
+-- | [Output Only] The status of the instance.
+iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)
+iwnpStatus
+  = lens _iwnpStatus (\ s a -> s{_iwnpStatus = a})
+
+-- | [Output Only] The named ports that belong to this instance group.
+iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]
+iwnpNamedPorts
+  = lens _iwnpNamedPorts
+      (\ s a -> s{_iwnpNamedPorts = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The URL of the instance.
+iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)
+iwnpInstance
+  = lens _iwnpInstance (\ s a -> s{_iwnpInstance = a})
+
+instance FromJSON InstanceWithNamedPorts where
+        parseJSON
+          = withObject "InstanceWithNamedPorts"
+              (\ o ->
+                 InstanceWithNamedPorts' <$>
+                   (o .:? "status") <*> (o .:? "namedPorts" .!= mempty)
+                     <*> (o .:? "instance"))
+
+instance ToJSON InstanceWithNamedPorts where
+        toJSON InstanceWithNamedPorts'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iwnpStatus,
+                  ("namedPorts" .=) <$> _iwnpNamedPorts,
+                  ("instance" .=) <$> _iwnpInstance])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'interconnectListWarning' smart constructor.
+data InterconnectListWarning = InterconnectListWarning'
+    { _iData    :: !(Maybe [InterconnectListWarningDataItem])
+    , _iCode    :: !(Maybe InterconnectListWarningCode)
+    , _iMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iData'
+--
+-- * 'iCode'
+--
+-- * 'iMessage'
+interconnectListWarning
+    :: InterconnectListWarning
+interconnectListWarning =
+    InterconnectListWarning'
+    { _iData = Nothing
+    , _iCode = Nothing
+    , _iMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+iData :: Lens' InterconnectListWarning [InterconnectListWarningDataItem]
+iData
+  = lens _iData (\ s a -> s{_iData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+iCode :: Lens' InterconnectListWarning (Maybe InterconnectListWarningCode)
+iCode = lens _iCode (\ s a -> s{_iCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+iMessage :: Lens' InterconnectListWarning (Maybe Text)
+iMessage = lens _iMessage (\ s a -> s{_iMessage = a})
+
+instance FromJSON InterconnectListWarning where
+        parseJSON
+          = withObject "InterconnectListWarning"
+              (\ o ->
+                 InterconnectListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InterconnectListWarning where
+        toJSON InterconnectListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _iData, ("code" .=) <$> _iCode,
+                  ("message" .=) <$> _iMessage])
+
+--
+-- /See:/ 'forwardingRulesScopedList' smart constructor.
+data ForwardingRulesScopedList = ForwardingRulesScopedList'
+    { _frslWarning         :: !(Maybe ForwardingRulesScopedListWarning)
+    , _frslForwardingRules :: !(Maybe [ForwardingRule])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslWarning'
+--
+-- * 'frslForwardingRules'
+forwardingRulesScopedList
+    :: ForwardingRulesScopedList
+forwardingRulesScopedList =
+    ForwardingRulesScopedList'
+    { _frslWarning = Nothing
+    , _frslForwardingRules = Nothing
+    }
+
+-- | Informational warning which replaces the list of forwarding rules when
+-- the list is empty.
+frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)
+frslWarning
+  = lens _frslWarning (\ s a -> s{_frslWarning = a})
+
+-- | A list of forwarding rules contained in this scope.
+frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]
+frslForwardingRules
+  = lens _frslForwardingRules
+      (\ s a -> s{_frslForwardingRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ForwardingRulesScopedList where
+        parseJSON
+          = withObject "ForwardingRulesScopedList"
+              (\ o ->
+                 ForwardingRulesScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "forwardingRules" .!= mempty))
+
+instance ToJSON ForwardingRulesScopedList where
+        toJSON ForwardingRulesScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _frslWarning,
+                  ("forwardingRules" .=) <$> _frslForwardingRules])
+
+--
+-- /See:/ 'instanceReference' smart constructor.
+newtype InstanceReference = InstanceReference'
+    { _iInstance :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInstance'
+instanceReference
+    :: InstanceReference
+instanceReference =
+    InstanceReference'
+    { _iInstance = Nothing
+    }
+
+-- | The URL for a specific instance.
+iInstance :: Lens' InstanceReference (Maybe Text)
+iInstance
+  = lens _iInstance (\ s a -> s{_iInstance = a})
+
+instance FromJSON InstanceReference where
+        parseJSON
+          = withObject "InstanceReference"
+              (\ o -> InstanceReference' <$> (o .:? "instance"))
+
+instance ToJSON InstanceReference where
+        toJSON InstanceReference'{..}
+          = object (catMaybes [("instance" .=) <$> _iInstance])
+
+--
+-- /See:/ 'operationAggregatedList' smart constructor.
+data OperationAggregatedList = OperationAggregatedList'
+    { _oalNextPageToken :: !(Maybe Text)
+    , _oalKind          :: !Text
+    , _oalItems         :: !(Maybe OperationAggregatedListItems)
+    , _oalSelfLink      :: !(Maybe Text)
+    , _oalWarning       :: !(Maybe OperationAggregatedListWarning)
+    , _oalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oalNextPageToken'
+--
+-- * 'oalKind'
+--
+-- * 'oalItems'
+--
+-- * 'oalSelfLink'
+--
+-- * 'oalWarning'
+--
+-- * 'oalId'
+operationAggregatedList
+    :: OperationAggregatedList
+operationAggregatedList =
+    OperationAggregatedList'
+    { _oalNextPageToken = Nothing
+    , _oalKind = "compute#operationAggregatedList"
+    , _oalItems = Nothing
+    , _oalSelfLink = Nothing
+    , _oalWarning = Nothing
+    , _oalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)
+oalNextPageToken
+  = lens _oalNextPageToken
+      (\ s a -> s{_oalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#operationAggregatedList
+-- for aggregated lists of operations.
+oalKind :: Lens' OperationAggregatedList Text
+oalKind = lens _oalKind (\ s a -> s{_oalKind = a})
+
+-- | [Output Only] A map of scoped operation lists.
+oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)
+oalItems = lens _oalItems (\ s a -> s{_oalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)
+oalSelfLink
+  = lens _oalSelfLink (\ s a -> s{_oalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+oalWarning :: Lens' OperationAggregatedList (Maybe OperationAggregatedListWarning)
+oalWarning
+  = lens _oalWarning (\ s a -> s{_oalWarning = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+oalId :: Lens' OperationAggregatedList (Maybe Text)
+oalId = lens _oalId (\ s a -> s{_oalId = a})
+
+instance FromJSON OperationAggregatedList where
+        parseJSON
+          = withObject "OperationAggregatedList"
+              (\ o ->
+                 OperationAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#operationAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON OperationAggregatedList where
+        toJSON OperationAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _oalNextPageToken,
+                  Just ("kind" .= _oalKind),
+                  ("items" .=) <$> _oalItems,
+                  ("selfLink" .=) <$> _oalSelfLink,
+                  ("warning" .=) <$> _oalWarning,
+                  ("id" .=) <$> _oalId])
+
+--
+-- /See:/ 'operationsScopedList' smart constructor.
+data OperationsScopedList = OperationsScopedList'
+    { _oslWarning    :: !(Maybe OperationsScopedListWarning)
+    , _oslOperations :: !(Maybe [Operation])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslWarning'
+--
+-- * 'oslOperations'
+operationsScopedList
+    :: OperationsScopedList
+operationsScopedList =
+    OperationsScopedList'
+    { _oslWarning = Nothing
+    , _oslOperations = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of
+-- operations when the list is empty.
+oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)
+oslWarning
+  = lens _oslWarning (\ s a -> s{_oslWarning = a})
+
+-- | [Output Only] A list of operations contained in this scope.
+oslOperations :: Lens' OperationsScopedList [Operation]
+oslOperations
+  = lens _oslOperations
+      (\ s a -> s{_oslOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON OperationsScopedList where
+        parseJSON
+          = withObject "OperationsScopedList"
+              (\ o ->
+                 OperationsScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "operations" .!= mempty))
+
+instance ToJSON OperationsScopedList where
+        toJSON OperationsScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _oslWarning,
+                  ("operations" .=) <$> _oslOperations])
+
+-- | The named port. For example: .
+--
+-- /See:/ 'namedPort' smart constructor.
+data NamedPort = NamedPort'
+    { _npName :: !(Maybe Text)
+    , _npPort :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NamedPort' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npName'
+--
+-- * 'npPort'
+namedPort
+    :: NamedPort
+namedPort =
+    NamedPort'
+    { _npName = Nothing
+    , _npPort = Nothing
+    }
+
+-- | The name for this named port. The name must be 1-63 characters long, and
+-- comply with RFC1035.
+npName :: Lens' NamedPort (Maybe Text)
+npName = lens _npName (\ s a -> s{_npName = a})
+
+-- | The port number, which can be a value between 1 and 65535.
+npPort :: Lens' NamedPort (Maybe Int32)
+npPort
+  = lens _npPort (\ s a -> s{_npPort = a}) .
+      mapping _Coerce
+
+instance FromJSON NamedPort where
+        parseJSON
+          = withObject "NamedPort"
+              (\ o ->
+                 NamedPort' <$> (o .:? "name") <*> (o .:? "port"))
+
+instance ToJSON NamedPort where
+        toJSON NamedPort'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _npName, ("port" .=) <$> _npPort])
+
+--
+-- /See:/ 'subnetworkAggregatedListWarningDataItem' smart constructor.
+data SubnetworkAggregatedListWarningDataItem = SubnetworkAggregatedListWarningDataItem'
+    { _salwdiValue :: !(Maybe Text)
+    , _salwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'salwdiValue'
+--
+-- * 'salwdiKey'
+subnetworkAggregatedListWarningDataItem
+    :: SubnetworkAggregatedListWarningDataItem
+subnetworkAggregatedListWarningDataItem =
+    SubnetworkAggregatedListWarningDataItem'
+    { _salwdiValue = Nothing
+    , _salwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+salwdiValue :: Lens' SubnetworkAggregatedListWarningDataItem (Maybe Text)
+salwdiValue
+  = lens _salwdiValue (\ s a -> s{_salwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+salwdiKey :: Lens' SubnetworkAggregatedListWarningDataItem (Maybe Text)
+salwdiKey
+  = lens _salwdiKey (\ s a -> s{_salwdiKey = a})
+
+instance FromJSON
+         SubnetworkAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "SubnetworkAggregatedListWarningDataItem"
+              (\ o ->
+                 SubnetworkAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         SubnetworkAggregatedListWarningDataItem where
+        toJSON SubnetworkAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _salwdiValue,
+                  ("key" .=) <$> _salwdiKey])
+
+--
+-- /See:/ 'interconnectDiagnosticsLinkStatus' smart constructor.
+data InterconnectDiagnosticsLinkStatus = InterconnectDiagnosticsLinkStatus'
+    { _idlsLacpStatus               :: !(Maybe InterconnectDiagnosticsLinkLACPStatus)
+    , _idlsReceivingOpticalPower    :: !(Maybe InterconnectDiagnosticsLinkOpticalPower)
+    , _idlsGoogleDemarc             :: !(Maybe Text)
+    , _idlsCircuitId                :: !(Maybe Text)
+    , _idlsArpCaches                :: !(Maybe [InterconnectDiagnosticsARPEntry])
+    , _idlsTransmittingOpticalPower :: !(Maybe InterconnectDiagnosticsLinkOpticalPower)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectDiagnosticsLinkStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idlsLacpStatus'
+--
+-- * 'idlsReceivingOpticalPower'
+--
+-- * 'idlsGoogleDemarc'
+--
+-- * 'idlsCircuitId'
+--
+-- * 'idlsArpCaches'
+--
+-- * 'idlsTransmittingOpticalPower'
+interconnectDiagnosticsLinkStatus
+    :: InterconnectDiagnosticsLinkStatus
+interconnectDiagnosticsLinkStatus =
+    InterconnectDiagnosticsLinkStatus'
+    { _idlsLacpStatus = Nothing
+    , _idlsReceivingOpticalPower = Nothing
+    , _idlsGoogleDemarc = Nothing
+    , _idlsCircuitId = Nothing
+    , _idlsArpCaches = Nothing
+    , _idlsTransmittingOpticalPower = Nothing
+    }
+
+idlsLacpStatus :: Lens' InterconnectDiagnosticsLinkStatus (Maybe InterconnectDiagnosticsLinkLACPStatus)
+idlsLacpStatus
+  = lens _idlsLacpStatus
+      (\ s a -> s{_idlsLacpStatus = a})
+
+idlsReceivingOpticalPower :: Lens' InterconnectDiagnosticsLinkStatus (Maybe InterconnectDiagnosticsLinkOpticalPower)
+idlsReceivingOpticalPower
+  = lens _idlsReceivingOpticalPower
+      (\ s a -> s{_idlsReceivingOpticalPower = a})
+
+-- | The Demarc address assigned by Google and provided in the LoA.
+idlsGoogleDemarc :: Lens' InterconnectDiagnosticsLinkStatus (Maybe Text)
+idlsGoogleDemarc
+  = lens _idlsGoogleDemarc
+      (\ s a -> s{_idlsGoogleDemarc = a})
+
+-- | The unique ID for this link assigned during turn up by Google.
+idlsCircuitId :: Lens' InterconnectDiagnosticsLinkStatus (Maybe Text)
+idlsCircuitId
+  = lens _idlsCircuitId
+      (\ s a -> s{_idlsCircuitId = a})
+
+-- | A list of InterconnectDiagnostics.ARPEntry objects, describing the ARP
+-- neighbor entries seen on this link. This will be empty if the link is
+-- bundled
+idlsArpCaches :: Lens' InterconnectDiagnosticsLinkStatus [InterconnectDiagnosticsARPEntry]
+idlsArpCaches
+  = lens _idlsArpCaches
+      (\ s a -> s{_idlsArpCaches = a})
+      . _Default
+      . _Coerce
+
+idlsTransmittingOpticalPower :: Lens' InterconnectDiagnosticsLinkStatus (Maybe InterconnectDiagnosticsLinkOpticalPower)
+idlsTransmittingOpticalPower
+  = lens _idlsTransmittingOpticalPower
+      (\ s a -> s{_idlsTransmittingOpticalPower = a})
+
+instance FromJSON InterconnectDiagnosticsLinkStatus
+         where
+        parseJSON
+          = withObject "InterconnectDiagnosticsLinkStatus"
+              (\ o ->
+                 InterconnectDiagnosticsLinkStatus' <$>
+                   (o .:? "lacpStatus") <*>
+                     (o .:? "receivingOpticalPower")
+                     <*> (o .:? "googleDemarc")
+                     <*> (o .:? "circuitId")
+                     <*> (o .:? "arpCaches" .!= mempty)
+                     <*> (o .:? "transmittingOpticalPower"))
+
+instance ToJSON InterconnectDiagnosticsLinkStatus
+         where
+        toJSON InterconnectDiagnosticsLinkStatus'{..}
+          = object
+              (catMaybes
+                 [("lacpStatus" .=) <$> _idlsLacpStatus,
+                  ("receivingOpticalPower" .=) <$>
+                    _idlsReceivingOpticalPower,
+                  ("googleDemarc" .=) <$> _idlsGoogleDemarc,
+                  ("circuitId" .=) <$> _idlsCircuitId,
+                  ("arpCaches" .=) <$> _idlsArpCaches,
+                  ("transmittingOpticalPower" .=) <$>
+                    _idlsTransmittingOpticalPower])
+
+-- | Contains a list of TargetInstance resources.
+--
+-- /See:/ 'targetInstanceList' smart constructor.
+data TargetInstanceList = TargetInstanceList'
+    { _tilNextPageToken :: !(Maybe Text)
+    , _tilKind          :: !Text
+    , _tilItems         :: !(Maybe [TargetInstance])
+    , _tilSelfLink      :: !(Maybe Text)
+    , _tilWarning       :: !(Maybe TargetInstanceListWarning)
+    , _tilId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tilNextPageToken'
+--
+-- * 'tilKind'
+--
+-- * 'tilItems'
+--
+-- * 'tilSelfLink'
+--
+-- * 'tilWarning'
+--
+-- * 'tilId'
+targetInstanceList
+    :: TargetInstanceList
+targetInstanceList =
+    TargetInstanceList'
+    { _tilNextPageToken = Nothing
+    , _tilKind = "compute#targetInstanceList"
+    , _tilItems = Nothing
+    , _tilSelfLink = Nothing
+    , _tilWarning = Nothing
+    , _tilId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)
+tilNextPageToken
+  = lens _tilNextPageToken
+      (\ s a -> s{_tilNextPageToken = a})
+
+-- | Type of resource.
+tilKind :: Lens' TargetInstanceList Text
+tilKind = lens _tilKind (\ s a -> s{_tilKind = a})
+
+-- | A list of TargetInstance resources.
+tilItems :: Lens' TargetInstanceList [TargetInstance]
+tilItems
+  = lens _tilItems (\ s a -> s{_tilItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tilSelfLink :: Lens' TargetInstanceList (Maybe Text)
+tilSelfLink
+  = lens _tilSelfLink (\ s a -> s{_tilSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tilWarning :: Lens' TargetInstanceList (Maybe TargetInstanceListWarning)
+tilWarning
+  = lens _tilWarning (\ s a -> s{_tilWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tilId :: Lens' TargetInstanceList (Maybe Text)
+tilId = lens _tilId (\ s a -> s{_tilId = a})
+
+instance FromJSON TargetInstanceList where
+        parseJSON
+          = withObject "TargetInstanceList"
+              (\ o ->
+                 TargetInstanceList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetInstanceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetInstanceList where
+        toJSON TargetInstanceList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tilNextPageToken,
+                  Just ("kind" .= _tilKind),
+                  ("items" .=) <$> _tilItems,
+                  ("selfLink" .=) <$> _tilSelfLink,
+                  ("warning" .=) <$> _tilWarning,
+                  ("id" .=) <$> _tilId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetTCPProxyListWarning' smart constructor.
+data TargetTCPProxyListWarning = TargetTCPProxyListWarning'
+    { _ttplwData    :: !(Maybe [TargetTCPProxyListWarningDataItem])
+    , _ttplwCode    :: !(Maybe TargetTCPProxyListWarningCode)
+    , _ttplwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxyListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttplwData'
+--
+-- * 'ttplwCode'
+--
+-- * 'ttplwMessage'
+targetTCPProxyListWarning
+    :: TargetTCPProxyListWarning
+targetTCPProxyListWarning =
+    TargetTCPProxyListWarning'
+    { _ttplwData = Nothing
+    , _ttplwCode = Nothing
+    , _ttplwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ttplwData :: Lens' TargetTCPProxyListWarning [TargetTCPProxyListWarningDataItem]
+ttplwData
+  = lens _ttplwData (\ s a -> s{_ttplwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ttplwCode :: Lens' TargetTCPProxyListWarning (Maybe TargetTCPProxyListWarningCode)
+ttplwCode
+  = lens _ttplwCode (\ s a -> s{_ttplwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ttplwMessage :: Lens' TargetTCPProxyListWarning (Maybe Text)
+ttplwMessage
+  = lens _ttplwMessage (\ s a -> s{_ttplwMessage = a})
+
+instance FromJSON TargetTCPProxyListWarning where
+        parseJSON
+          = withObject "TargetTCPProxyListWarning"
+              (\ o ->
+                 TargetTCPProxyListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetTCPProxyListWarning where
+        toJSON TargetTCPProxyListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ttplwData,
+                  ("code" .=) <$> _ttplwCode,
+                  ("message" .=) <$> _ttplwMessage])
+
+--
+-- /See:/ 'instanceGroupManagerAggregatedList' smart constructor.
+data InstanceGroupManagerAggregatedList = InstanceGroupManagerAggregatedList'
+    { _igmalNextPageToken :: !(Maybe Text)
+    , _igmalKind          :: !Text
+    , _igmalItems         :: !(Maybe InstanceGroupManagerAggregatedListItems)
+    , _igmalSelfLink      :: !(Maybe Text)
+    , _igmalWarning       :: !(Maybe InstanceGroupManagerAggregatedListWarning)
+    , _igmalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmalNextPageToken'
+--
+-- * 'igmalKind'
+--
+-- * 'igmalItems'
+--
+-- * 'igmalSelfLink'
+--
+-- * 'igmalWarning'
+--
+-- * 'igmalId'
+instanceGroupManagerAggregatedList
+    :: InstanceGroupManagerAggregatedList
+instanceGroupManagerAggregatedList =
+    InstanceGroupManagerAggregatedList'
+    { _igmalNextPageToken = Nothing
+    , _igmalKind = "compute#instanceGroupManagerAggregatedList"
+    , _igmalItems = Nothing
+    , _igmalSelfLink = Nothing
+    , _igmalWarning = Nothing
+    , _igmalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalNextPageToken
+  = lens _igmalNextPageToken
+      (\ s a -> s{_igmalNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManagerAggregatedList for an aggregated list of
+-- managed instance groups.
+igmalKind :: Lens' InstanceGroupManagerAggregatedList Text
+igmalKind
+  = lens _igmalKind (\ s a -> s{_igmalKind = a})
+
+-- | A list of InstanceGroupManagersScopedList resources.
+igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)
+igmalItems
+  = lens _igmalItems (\ s a -> s{_igmalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalSelfLink
+  = lens _igmalSelfLink
+      (\ s a -> s{_igmalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+igmalWarning :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListWarning)
+igmalWarning
+  = lens _igmalWarning (\ s a -> s{_igmalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalId = lens _igmalId (\ s a -> s{_igmalId = a})
+
+instance FromJSON InstanceGroupManagerAggregatedList
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerAggregatedList"
+              (\ o ->
+                 InstanceGroupManagerAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupManagerAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupManagerAggregatedList
+         where
+        toJSON InstanceGroupManagerAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igmalNextPageToken,
+                  Just ("kind" .= _igmalKind),
+                  ("items" .=) <$> _igmalItems,
+                  ("selfLink" .=) <$> _igmalSelfLink,
+                  ("warning" .=) <$> _igmalWarning,
+                  ("id" .=) <$> _igmalId])
+
+-- | A BackendBucket resource. This resource defines a Cloud Storage bucket.
+--
+-- /See:/ 'backendBucket' smart constructor.
+data BackendBucket = BackendBucket'
+    { _bbKind              :: !Text
+    , _bbEnableCdn         :: !(Maybe Bool)
+    , _bbBucketName        :: !(Maybe Text)
+    , _bbCdnPolicy         :: !(Maybe BackendBucketCdnPolicy)
+    , _bbSelfLink          :: !(Maybe Text)
+    , _bbName              :: !(Maybe Text)
+    , _bbCreationTimestamp :: !(Maybe Text)
+    , _bbId                :: !(Maybe (Textual Word64))
+    , _bbDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbKind'
+--
+-- * 'bbEnableCdn'
+--
+-- * 'bbBucketName'
+--
+-- * 'bbCdnPolicy'
+--
+-- * 'bbSelfLink'
+--
+-- * 'bbName'
+--
+-- * 'bbCreationTimestamp'
+--
+-- * 'bbId'
+--
+-- * 'bbDescription'
+backendBucket
+    :: BackendBucket
+backendBucket =
+    BackendBucket'
+    { _bbKind = "compute#backendBucket"
+    , _bbEnableCdn = Nothing
+    , _bbBucketName = Nothing
+    , _bbCdnPolicy = Nothing
+    , _bbSelfLink = Nothing
+    , _bbName = Nothing
+    , _bbCreationTimestamp = Nothing
+    , _bbId = Nothing
+    , _bbDescription = Nothing
+    }
+
+-- | Type of the resource.
+bbKind :: Lens' BackendBucket Text
+bbKind = lens _bbKind (\ s a -> s{_bbKind = a})
+
+-- | If true, enable Cloud CDN for this BackendBucket.
+bbEnableCdn :: Lens' BackendBucket (Maybe Bool)
+bbEnableCdn
+  = lens _bbEnableCdn (\ s a -> s{_bbEnableCdn = a})
+
+-- | Cloud Storage bucket name.
+bbBucketName :: Lens' BackendBucket (Maybe Text)
+bbBucketName
+  = lens _bbBucketName (\ s a -> s{_bbBucketName = a})
+
+-- | Cloud CDN configuration for this BackendBucket.
+bbCdnPolicy :: Lens' BackendBucket (Maybe BackendBucketCdnPolicy)
+bbCdnPolicy
+  = lens _bbCdnPolicy (\ s a -> s{_bbCdnPolicy = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+bbSelfLink :: Lens' BackendBucket (Maybe Text)
+bbSelfLink
+  = lens _bbSelfLink (\ s a -> s{_bbSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+bbName :: Lens' BackendBucket (Maybe Text)
+bbName = lens _bbName (\ s a -> s{_bbName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+bbCreationTimestamp :: Lens' BackendBucket (Maybe Text)
+bbCreationTimestamp
+  = lens _bbCreationTimestamp
+      (\ s a -> s{_bbCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bbId :: Lens' BackendBucket (Maybe Word64)
+bbId
+  = lens _bbId (\ s a -> s{_bbId = a}) .
+      mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+bbDescription :: Lens' BackendBucket (Maybe Text)
+bbDescription
+  = lens _bbDescription
+      (\ s a -> s{_bbDescription = a})
+
+instance FromJSON BackendBucket where
+        parseJSON
+          = withObject "BackendBucket"
+              (\ o ->
+                 BackendBucket' <$>
+                   (o .:? "kind" .!= "compute#backendBucket") <*>
+                     (o .:? "enableCdn")
+                     <*> (o .:? "bucketName")
+                     <*> (o .:? "cdnPolicy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON BackendBucket where
+        toJSON BackendBucket'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _bbKind),
+                  ("enableCdn" .=) <$> _bbEnableCdn,
+                  ("bucketName" .=) <$> _bbBucketName,
+                  ("cdnPolicy" .=) <$> _bbCdnPolicy,
+                  ("selfLink" .=) <$> _bbSelfLink,
+                  ("name" .=) <$> _bbName,
+                  ("creationTimestamp" .=) <$> _bbCreationTimestamp,
+                  ("id" .=) <$> _bbId,
+                  ("description" .=) <$> _bbDescription])
+
+--
+-- /See:/ 'projectsEnableXpnResourceRequest' smart constructor.
+newtype ProjectsEnableXpnResourceRequest = ProjectsEnableXpnResourceRequest'
+    { _pexrrXpnResource :: Maybe XpnResourceId
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsEnableXpnResourceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pexrrXpnResource'
+projectsEnableXpnResourceRequest
+    :: ProjectsEnableXpnResourceRequest
+projectsEnableXpnResourceRequest =
+    ProjectsEnableXpnResourceRequest'
+    { _pexrrXpnResource = Nothing
+    }
+
+-- | Service resource (a.k.a service project) ID.
+pexrrXpnResource :: Lens' ProjectsEnableXpnResourceRequest (Maybe XpnResourceId)
+pexrrXpnResource
+  = lens _pexrrXpnResource
+      (\ s a -> s{_pexrrXpnResource = a})
+
+instance FromJSON ProjectsEnableXpnResourceRequest
+         where
+        parseJSON
+          = withObject "ProjectsEnableXpnResourceRequest"
+              (\ o ->
+                 ProjectsEnableXpnResourceRequest' <$>
+                   (o .:? "xpnResource"))
+
+instance ToJSON ProjectsEnableXpnResourceRequest
+         where
+        toJSON ProjectsEnableXpnResourceRequest'{..}
+          = object
+              (catMaybes
+                 [("xpnResource" .=) <$> _pexrrXpnResource])
+
+--
+-- /See:/ 'targetPoolsScopedList' smart constructor.
+data TargetPoolsScopedList = TargetPoolsScopedList'
+    { _tpslWarning     :: !(Maybe TargetPoolsScopedListWarning)
+    , _tpslTargetPools :: !(Maybe [TargetPool])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslWarning'
+--
+-- * 'tpslTargetPools'
+targetPoolsScopedList
+    :: TargetPoolsScopedList
+targetPoolsScopedList =
+    TargetPoolsScopedList'
+    { _tpslWarning = Nothing
+    , _tpslTargetPools = Nothing
+    }
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)
+tpslWarning
+  = lens _tpslWarning (\ s a -> s{_tpslWarning = a})
+
+-- | A list of target pools contained in this scope.
+tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]
+tpslTargetPools
+  = lens _tpslTargetPools
+      (\ s a -> s{_tpslTargetPools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsScopedList where
+        parseJSON
+          = withObject "TargetPoolsScopedList"
+              (\ o ->
+                 TargetPoolsScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "targetPools" .!= mempty))
+
+instance ToJSON TargetPoolsScopedList where
+        toJSON TargetPoolsScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _tpslWarning,
+                  ("targetPools" .=) <$> _tpslTargetPools])
+
+-- | A list of InterconnectAttachmentsScopedList resources.
+--
+-- /See:/ 'interconnectAttachmentAggregatedListItems' smart constructor.
+newtype InterconnectAttachmentAggregatedListItems = InterconnectAttachmentAggregatedListItems'
+    { _iaaliAddtional :: HashMap Text InterconnectAttachmentsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaaliAddtional'
+interconnectAttachmentAggregatedListItems
+    :: HashMap Text InterconnectAttachmentsScopedList -- ^ 'iaaliAddtional'
+    -> InterconnectAttachmentAggregatedListItems
+interconnectAttachmentAggregatedListItems pIaaliAddtional_ =
+    InterconnectAttachmentAggregatedListItems'
+    { _iaaliAddtional = _Coerce # pIaaliAddtional_
+    }
+
+-- | Name of the scope containing this set of interconnect attachments.
+iaaliAddtional :: Lens' InterconnectAttachmentAggregatedListItems (HashMap Text InterconnectAttachmentsScopedList)
+iaaliAddtional
+  = lens _iaaliAddtional
+      (\ s a -> s{_iaaliAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         InterconnectAttachmentAggregatedListItems where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentAggregatedListItems"
+              (\ o ->
+                 InterconnectAttachmentAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+         InterconnectAttachmentAggregatedListItems where
+        toJSON = toJSON . _iaaliAddtional
+
+-- | Increment a streamz counter with the specified metric and field names.
+-- Metric names should start with a \'\/\', generally be lowercase-only,
+-- and end in \"_count\". Field names should not contain an initial slash.
+-- The actual exported metric names will have \"\/iam\/policy\" prepended.
+-- Field names correspond to IAM request parameters and field values are
+-- their respective values. Supported field names: - \"authority\", which
+-- is \"[token]\" if IAMContext.token is present, otherwise the value of
+-- IAMContext.authority_selector if present, and otherwise a representation
+-- of IAMContext.principal; or - \"iam_principal\", a representation of
+-- IAMContext.principal even if a token or authority selector is present;
+-- or - \"\" (empty string), resulting in a counter with no fields.
+-- Examples: counter { metric: \"\/debug_access_count\" field:
+-- \"iam_principal\" } ==> increment counter
+-- \/iam\/policy\/backend_debug_access_count {iam_principal=[value of
+-- IAMContext.principal]} At this time we do not support multiple field
+-- names (though this may be supported in the future).
+--
+-- /See:/ 'logConfigCounterOptions' smart constructor.
+data LogConfigCounterOptions = LogConfigCounterOptions'
+    { _lccoField  :: !(Maybe Text)
+    , _lccoMetric :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LogConfigCounterOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lccoField'
+--
+-- * 'lccoMetric'
+logConfigCounterOptions
+    :: LogConfigCounterOptions
+logConfigCounterOptions =
+    LogConfigCounterOptions'
+    { _lccoField = Nothing
+    , _lccoMetric = Nothing
+    }
+
+-- | The field value to attribute.
+lccoField :: Lens' LogConfigCounterOptions (Maybe Text)
+lccoField
+  = lens _lccoField (\ s a -> s{_lccoField = a})
+
+-- | The metric to update.
+lccoMetric :: Lens' LogConfigCounterOptions (Maybe Text)
+lccoMetric
+  = lens _lccoMetric (\ s a -> s{_lccoMetric = a})
+
+instance FromJSON LogConfigCounterOptions where
+        parseJSON
+          = withObject "LogConfigCounterOptions"
+              (\ o ->
+                 LogConfigCounterOptions' <$>
+                   (o .:? "field") <*> (o .:? "metric"))
+
+instance ToJSON LogConfigCounterOptions where
+        toJSON LogConfigCounterOptions'{..}
+          = object
+              (catMaybes
+                 [("field" .=) <$> _lccoField,
+                  ("metric" .=) <$> _lccoMetric])
+
+--
+-- /See:/ 'instancesSetMinCPUPlatformRequest' smart constructor.
+newtype InstancesSetMinCPUPlatformRequest = InstancesSetMinCPUPlatformRequest'
+    { _ismcprMinCPUPlatform :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMinCPUPlatformRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismcprMinCPUPlatform'
+instancesSetMinCPUPlatformRequest
+    :: InstancesSetMinCPUPlatformRequest
+instancesSetMinCPUPlatformRequest =
+    InstancesSetMinCPUPlatformRequest'
+    { _ismcprMinCPUPlatform = Nothing
+    }
+
+-- | Minimum cpu\/platform this instance should be started at.
+ismcprMinCPUPlatform :: Lens' InstancesSetMinCPUPlatformRequest (Maybe Text)
+ismcprMinCPUPlatform
+  = lens _ismcprMinCPUPlatform
+      (\ s a -> s{_ismcprMinCPUPlatform = a})
+
+instance FromJSON InstancesSetMinCPUPlatformRequest
+         where
+        parseJSON
+          = withObject "InstancesSetMinCPUPlatformRequest"
+              (\ o ->
+                 InstancesSetMinCPUPlatformRequest' <$>
+                   (o .:? "minCpuPlatform"))
+
+instance ToJSON InstancesSetMinCPUPlatformRequest
+         where
+        toJSON InstancesSetMinCPUPlatformRequest'{..}
+          = object
+              (catMaybes
+                 [("minCpuPlatform" .=) <$> _ismcprMinCPUPlatform])
+
+--
+-- /See:/ 'forwardingRuleAggregatedList' smart constructor.
+data ForwardingRuleAggregatedList = ForwardingRuleAggregatedList'
+    { _fralNextPageToken :: !(Maybe Text)
+    , _fralKind          :: !Text
+    , _fralItems         :: !(Maybe ForwardingRuleAggregatedListItems)
+    , _fralSelfLink      :: !(Maybe Text)
+    , _fralWarning       :: !(Maybe ForwardingRuleAggregatedListWarning)
+    , _fralId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fralNextPageToken'
+--
+-- * 'fralKind'
+--
+-- * 'fralItems'
+--
+-- * 'fralSelfLink'
+--
+-- * 'fralWarning'
+--
+-- * 'fralId'
+forwardingRuleAggregatedList
+    :: ForwardingRuleAggregatedList
+forwardingRuleAggregatedList =
+    ForwardingRuleAggregatedList'
+    { _fralNextPageToken = Nothing
+    , _fralKind = "compute#forwardingRuleAggregatedList"
+    , _fralItems = Nothing
+    , _fralSelfLink = Nothing
+    , _fralWarning = Nothing
+    , _fralId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralNextPageToken
+  = lens _fralNextPageToken
+      (\ s a -> s{_fralNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always
+-- compute#forwardingRuleAggregatedList for lists of forwarding rules.
+fralKind :: Lens' ForwardingRuleAggregatedList Text
+fralKind = lens _fralKind (\ s a -> s{_fralKind = a})
+
+-- | A list of ForwardingRulesScopedList resources.
+fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)
+fralItems
+  = lens _fralItems (\ s a -> s{_fralItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralSelfLink
+  = lens _fralSelfLink (\ s a -> s{_fralSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+fralWarning :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListWarning)
+fralWarning
+  = lens _fralWarning (\ s a -> s{_fralWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralId = lens _fralId (\ s a -> s{_fralId = a})
+
+instance FromJSON ForwardingRuleAggregatedList where
+        parseJSON
+          = withObject "ForwardingRuleAggregatedList"
+              (\ o ->
+                 ForwardingRuleAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#forwardingRuleAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON ForwardingRuleAggregatedList where
+        toJSON ForwardingRuleAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _fralNextPageToken,
+                  Just ("kind" .= _fralKind),
+                  ("items" .=) <$> _fralItems,
+                  ("selfLink" .=) <$> _fralSelfLink,
+                  ("warning" .=) <$> _fralWarning,
+                  ("id" .=) <$> _fralId])
+
+--
+-- /See:/ 'targetReference' smart constructor.
+newtype TargetReference = TargetReference'
+    { _trTarget :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trTarget'
+targetReference
+    :: TargetReference
+targetReference =
+    TargetReference'
+    { _trTarget = Nothing
+    }
+
+trTarget :: Lens' TargetReference (Maybe Text)
+trTarget = lens _trTarget (\ s a -> s{_trTarget = a})
+
+instance FromJSON TargetReference where
+        parseJSON
+          = withObject "TargetReference"
+              (\ o -> TargetReference' <$> (o .:? "target"))
+
+instance ToJSON TargetReference where
+        toJSON TargetReference'{..}
+          = object (catMaybes [("target" .=) <$> _trTarget])
+
+--
+-- /See:/ 'targetPoolAggregatedList' smart constructor.
+data TargetPoolAggregatedList = TargetPoolAggregatedList'
+    { _tpalNextPageToken :: !(Maybe Text)
+    , _tpalKind          :: !Text
+    , _tpalItems         :: !(Maybe TargetPoolAggregatedListItems)
+    , _tpalSelfLink      :: !(Maybe Text)
+    , _tpalWarning       :: !(Maybe TargetPoolAggregatedListWarning)
+    , _tpalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpalNextPageToken'
+--
+-- * 'tpalKind'
+--
+-- * 'tpalItems'
+--
+-- * 'tpalSelfLink'
+--
+-- * 'tpalWarning'
+--
+-- * 'tpalId'
+targetPoolAggregatedList
+    :: TargetPoolAggregatedList
+targetPoolAggregatedList =
+    TargetPoolAggregatedList'
+    { _tpalNextPageToken = Nothing
+    , _tpalKind = "compute#targetPoolAggregatedList"
+    , _tpalItems = Nothing
+    , _tpalSelfLink = Nothing
+    , _tpalWarning = Nothing
+    , _tpalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalNextPageToken
+  = lens _tpalNextPageToken
+      (\ s a -> s{_tpalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetPoolAggregatedList
+-- for aggregated lists of target pools.
+tpalKind :: Lens' TargetPoolAggregatedList Text
+tpalKind = lens _tpalKind (\ s a -> s{_tpalKind = a})
+
+-- | A list of TargetPool resources.
+tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)
+tpalItems
+  = lens _tpalItems (\ s a -> s{_tpalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalSelfLink
+  = lens _tpalSelfLink (\ s a -> s{_tpalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tpalWarning :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListWarning)
+tpalWarning
+  = lens _tpalWarning (\ s a -> s{_tpalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalId = lens _tpalId (\ s a -> s{_tpalId = a})
+
+instance FromJSON TargetPoolAggregatedList where
+        parseJSON
+          = withObject "TargetPoolAggregatedList"
+              (\ o ->
+                 TargetPoolAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetPoolAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetPoolAggregatedList where
+        toJSON TargetPoolAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tpalNextPageToken,
+                  Just ("kind" .= _tpalKind),
+                  ("items" .=) <$> _tpalItems,
+                  ("selfLink" .=) <$> _tpalSelfLink,
+                  ("warning" .=) <$> _tpalWarning,
+                  ("id" .=) <$> _tpalId])
+
+--
+-- /See:/ 'operationsScopedListWarningDataItem' smart constructor.
+data OperationsScopedListWarningDataItem = OperationsScopedListWarningDataItem'
+    { _oslwdiValue :: !(Maybe Text)
+    , _oslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslwdiValue'
+--
+-- * 'oslwdiKey'
+operationsScopedListWarningDataItem
+    :: OperationsScopedListWarningDataItem
+operationsScopedListWarningDataItem =
+    OperationsScopedListWarningDataItem'
+    { _oslwdiValue = Nothing
+    , _oslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
+oslwdiValue
+  = lens _oslwdiValue (\ s a -> s{_oslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
+oslwdiKey
+  = lens _oslwdiKey (\ s a -> s{_oslwdiKey = a})
+
+instance FromJSON OperationsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "OperationsScopedListWarningDataItem"
+              (\ o ->
+                 OperationsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationsScopedListWarningDataItem
+         where
+        toJSON OperationsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _oslwdiValue,
+                  ("key" .=) <$> _oslwdiKey])
+
+--
+-- /See:/ 'globalSetLabelsRequest' smart constructor.
+data GlobalSetLabelsRequest = GlobalSetLabelsRequest'
+    { _gslrLabels           :: !(Maybe GlobalSetLabelsRequestLabels)
+    , _gslrLabelFingerprint :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalSetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gslrLabels'
+--
+-- * 'gslrLabelFingerprint'
+globalSetLabelsRequest
+    :: GlobalSetLabelsRequest
+globalSetLabelsRequest =
+    GlobalSetLabelsRequest'
+    { _gslrLabels = Nothing
+    , _gslrLabelFingerprint = Nothing
+    }
+
+-- | A list of labels to apply for this resource. Each label key & value must
+-- comply with RFC1035. Specifically, the name must be 1-63 characters long
+-- and match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which
+-- means the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash. For example, \"webserver-frontend\":
+-- \"images\". A label value can also be empty (e.g. \"my-label\": \"\").
+gslrLabels :: Lens' GlobalSetLabelsRequest (Maybe GlobalSetLabelsRequestLabels)
+gslrLabels
+  = lens _gslrLabels (\ s a -> s{_gslrLabels = a})
+
+-- | The fingerprint of the previous set of labels for this resource, used to
+-- detect conflicts. The fingerprint is initially generated by Compute
+-- 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, otherwise the request will fail with error 412
+-- conditionNotMet. Make a get() request to the resource to get the latest
+-- fingerprint.
+gslrLabelFingerprint :: Lens' GlobalSetLabelsRequest (Maybe ByteString)
+gslrLabelFingerprint
+  = lens _gslrLabelFingerprint
+      (\ s a -> s{_gslrLabelFingerprint = a})
+      . mapping _Bytes
+
+instance FromJSON GlobalSetLabelsRequest where
+        parseJSON
+          = withObject "GlobalSetLabelsRequest"
+              (\ o ->
+                 GlobalSetLabelsRequest' <$>
+                   (o .:? "labels") <*> (o .:? "labelFingerprint"))
+
+instance ToJSON GlobalSetLabelsRequest where
+        toJSON GlobalSetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("labels" .=) <$> _gslrLabels,
+                  ("labelFingerprint" .=) <$> _gslrLabelFingerprint])
+
+-- | A TargetPool resource. This resource defines a pool of instances, an
+-- associated HttpHealthCheck resource, and the fallback target pool. (==
+-- resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)
+--
+-- /See:/ 'targetPool' smart constructor.
+data TargetPool = TargetPool'
+    { _tpSessionAffinity   :: !(Maybe TargetPoolSessionAffinity)
+    , _tpBackupPool        :: !(Maybe Text)
+    , _tpKind              :: !Text
+    , _tpSelfLink          :: !(Maybe Text)
+    , _tpName              :: !(Maybe Text)
+    , _tpCreationTimestamp :: !(Maybe Text)
+    , _tpInstances         :: !(Maybe [Text])
+    , _tpId                :: !(Maybe (Textual Word64))
+    , _tpFailoverRatio     :: !(Maybe (Textual Double))
+    , _tpRegion            :: !(Maybe Text)
+    , _tpDescription       :: !(Maybe Text)
+    , _tpHealthChecks      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpSessionAffinity'
+--
+-- * 'tpBackupPool'
+--
+-- * 'tpKind'
+--
+-- * 'tpSelfLink'
+--
+-- * 'tpName'
+--
+-- * 'tpCreationTimestamp'
+--
+-- * 'tpInstances'
+--
+-- * 'tpId'
+--
+-- * 'tpFailoverRatio'
+--
+-- * 'tpRegion'
+--
+-- * 'tpDescription'
+--
+-- * 'tpHealthChecks'
+targetPool
+    :: TargetPool
+targetPool =
+    TargetPool'
+    { _tpSessionAffinity = Nothing
+    , _tpBackupPool = Nothing
+    , _tpKind = "compute#targetPool"
+    , _tpSelfLink = Nothing
+    , _tpName = Nothing
+    , _tpCreationTimestamp = Nothing
+    , _tpInstances = Nothing
+    , _tpId = Nothing
+    , _tpFailoverRatio = Nothing
+    , _tpRegion = Nothing
+    , _tpDescription = Nothing
+    , _tpHealthChecks = Nothing
+    }
+
+-- | Session affinity option, must be one of the following values: NONE:
+-- Connections from the same client IP may go to any instance in the pool.
+-- CLIENT_IP: Connections from the same client IP will go to the same
+-- instance in the pool while that instance remains healthy.
+-- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
+-- protocol will go to the same instance in the pool while that instance
+-- remains healthy.
+tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)
+tpSessionAffinity
+  = lens _tpSessionAffinity
+      (\ s a -> s{_tpSessionAffinity = a})
+
+-- | This field is applicable only when the containing target pool is serving
+-- a forwarding rule as the primary pool, and its failoverRatio field is
+-- properly set to a value between [0, 1]. backupPool and failoverRatio
+-- together define the fallback behavior of the primary target pool: if the
+-- ratio of the healthy instances in the primary pool is at or below
+-- failoverRatio, traffic arriving at the load-balanced IP will be directed
+-- to the backup pool. In case where failoverRatio and backupPool are not
+-- set, or all the instances in the backup pool are unhealthy, the traffic
+-- will be directed back to the primary pool in the \"force\" mode, where
+-- traffic will be spread to the healthy instances with the best effort, or
+-- to all instances when no instance is healthy.
+tpBackupPool :: Lens' TargetPool (Maybe Text)
+tpBackupPool
+  = lens _tpBackupPool (\ s a -> s{_tpBackupPool = a})
+
+-- | [Output Only] Type of the resource. Always compute#targetPool for target
+-- pools.
+tpKind :: Lens' TargetPool Text
+tpKind = lens _tpKind (\ s a -> s{_tpKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tpSelfLink :: Lens' TargetPool (Maybe Text)
+tpSelfLink
+  = lens _tpSelfLink (\ s a -> s{_tpSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tpName :: Lens' TargetPool (Maybe Text)
+tpName = lens _tpName (\ s a -> s{_tpName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tpCreationTimestamp :: Lens' TargetPool (Maybe Text)
+tpCreationTimestamp
+  = lens _tpCreationTimestamp
+      (\ s a -> s{_tpCreationTimestamp = a})
+
+-- | A list of resource URLs to the virtual machine instances serving this
+-- pool. They must live in zones contained in the same region as this pool.
+tpInstances :: Lens' TargetPool [Text]
+tpInstances
+  = lens _tpInstances (\ s a -> s{_tpInstances = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+tpId :: Lens' TargetPool (Maybe Word64)
+tpId
+  = lens _tpId (\ s a -> s{_tpId = a}) .
+      mapping _Coerce
+
+-- | This field is applicable only when the containing target pool is serving
+-- a forwarding rule as the primary pool (i.e., not as a backup pool to
+-- some other target pool). The value of the field must be in [0, 1]. If
+-- set, backupPool must also be set. They together define the fallback
+-- behavior of the primary target pool: if the ratio of the healthy
+-- instances in the primary pool is at or below this number, traffic
+-- arriving at the load-balanced IP will be directed to the backup pool. In
+-- case where failoverRatio is not set or all the instances in the backup
+-- pool are unhealthy, the traffic will be directed back to the primary
+-- pool in the \"force\" mode, where traffic will be spread to the healthy
+-- instances with the best effort, or to all instances when no instance is
+-- healthy.
+tpFailoverRatio :: Lens' TargetPool (Maybe Double)
+tpFailoverRatio
+  = lens _tpFailoverRatio
+      (\ s a -> s{_tpFailoverRatio = a})
+      . mapping _Coerce
+
+-- | [Output Only] URL of the region where the target pool resides.
+tpRegion :: Lens' TargetPool (Maybe Text)
+tpRegion = lens _tpRegion (\ s a -> s{_tpRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+tpDescription :: Lens' TargetPool (Maybe Text)
+tpDescription
+  = lens _tpDescription
+      (\ s a -> s{_tpDescription = a})
+
+-- | The URL of the HttpHealthCheck resource. A member instance in this pool
+-- is considered healthy if and only if the health checks pass. An empty
+-- list means all member instances will be considered healthy at all times.
+-- Only HttpHealthChecks are supported. Only one health check may be
+-- specified.
+tpHealthChecks :: Lens' TargetPool [Text]
+tpHealthChecks
+  = lens _tpHealthChecks
+      (\ s a -> s{_tpHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPool where
+        parseJSON
+          = withObject "TargetPool"
+              (\ o ->
+                 TargetPool' <$>
+                   (o .:? "sessionAffinity") <*> (o .:? "backupPool")
+                     <*> (o .:? "kind" .!= "compute#targetPool")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "instances" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "failoverRatio")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPool where
+        toJSON TargetPool'{..}
+          = object
+              (catMaybes
+                 [("sessionAffinity" .=) <$> _tpSessionAffinity,
+                  ("backupPool" .=) <$> _tpBackupPool,
+                  Just ("kind" .= _tpKind),
+                  ("selfLink" .=) <$> _tpSelfLink,
+                  ("name" .=) <$> _tpName,
+                  ("creationTimestamp" .=) <$> _tpCreationTimestamp,
+                  ("instances" .=) <$> _tpInstances,
+                  ("id" .=) <$> _tpId,
+                  ("failoverRatio" .=) <$> _tpFailoverRatio,
+                  ("region" .=) <$> _tpRegion,
+                  ("description" .=) <$> _tpDescription,
+                  ("healthChecks" .=) <$> _tpHealthChecks])
+
+-- | Contains a list of images.
+--
+-- /See:/ 'imageList' smart constructor.
+data ImageList = ImageList'
+    { _ilNextPageToken :: !(Maybe Text)
+    , _ilKind          :: !Text
+    , _ilItems         :: !(Maybe [Image])
+    , _ilSelfLink      :: !(Maybe Text)
+    , _ilWarning       :: !(Maybe ImageListWarning)
+    , _ilId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilNextPageToken'
+--
+-- * 'ilKind'
+--
+-- * 'ilItems'
+--
+-- * 'ilSelfLink'
+--
+-- * 'ilWarning'
+--
+-- * 'ilId'
+imageList
+    :: ImageList
+imageList =
+    ImageList'
+    { _ilNextPageToken = Nothing
+    , _ilKind = "compute#imageList"
+    , _ilItems = Nothing
+    , _ilSelfLink = Nothing
+    , _ilWarning = Nothing
+    , _ilId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ilNextPageToken :: Lens' ImageList (Maybe Text)
+ilNextPageToken
+  = lens _ilNextPageToken
+      (\ s a -> s{_ilNextPageToken = a})
+
+-- | Type of resource.
+ilKind :: Lens' ImageList Text
+ilKind = lens _ilKind (\ s a -> s{_ilKind = a})
+
+-- | A list of Image resources.
+ilItems :: Lens' ImageList [Image]
+ilItems
+  = lens _ilItems (\ s a -> s{_ilItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ilSelfLink :: Lens' ImageList (Maybe Text)
+ilSelfLink
+  = lens _ilSelfLink (\ s a -> s{_ilSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ilWarning :: Lens' ImageList (Maybe ImageListWarning)
+ilWarning
+  = lens _ilWarning (\ s a -> s{_ilWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ilId :: Lens' ImageList (Maybe Text)
+ilId = lens _ilId (\ s a -> s{_ilId = a})
+
+instance FromJSON ImageList where
+        parseJSON
+          = withObject "ImageList"
+              (\ o ->
+                 ImageList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#imageList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON ImageList where
+        toJSON ImageList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ilNextPageToken,
+                  Just ("kind" .= _ilKind), ("items" .=) <$> _ilItems,
+                  ("selfLink" .=) <$> _ilSelfLink,
+                  ("warning" .=) <$> _ilWarning, ("id" .=) <$> _ilId])
+
+--
+-- /See:/ 'operationAggregatedListWarningDataItem' smart constructor.
+data OperationAggregatedListWarningDataItem = OperationAggregatedListWarningDataItem'
+    { _oalwdiValue :: !(Maybe Text)
+    , _oalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oalwdiValue'
+--
+-- * 'oalwdiKey'
+operationAggregatedListWarningDataItem
+    :: OperationAggregatedListWarningDataItem
+operationAggregatedListWarningDataItem =
+    OperationAggregatedListWarningDataItem'
+    { _oalwdiValue = Nothing
+    , _oalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+oalwdiValue :: Lens' OperationAggregatedListWarningDataItem (Maybe Text)
+oalwdiValue
+  = lens _oalwdiValue (\ s a -> s{_oalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+oalwdiKey :: Lens' OperationAggregatedListWarningDataItem (Maybe Text)
+oalwdiKey
+  = lens _oalwdiKey (\ s a -> s{_oalwdiKey = a})
+
+instance FromJSON
+         OperationAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "OperationAggregatedListWarningDataItem"
+              (\ o ->
+                 OperationAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         OperationAggregatedListWarningDataItem where
+        toJSON OperationAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _oalwdiValue,
+                  ("key" .=) <$> _oalwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'forwardingRuleListWarning' smart constructor.
+data ForwardingRuleListWarning = ForwardingRuleListWarning'
+    { _frlwData    :: !(Maybe [ForwardingRuleListWarningDataItem])
+    , _frlwCode    :: !(Maybe ForwardingRuleListWarningCode)
+    , _frlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frlwData'
+--
+-- * 'frlwCode'
+--
+-- * 'frlwMessage'
+forwardingRuleListWarning
+    :: ForwardingRuleListWarning
+forwardingRuleListWarning =
+    ForwardingRuleListWarning'
+    { _frlwData = Nothing
+    , _frlwCode = Nothing
+    , _frlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+frlwData :: Lens' ForwardingRuleListWarning [ForwardingRuleListWarningDataItem]
+frlwData
+  = lens _frlwData (\ s a -> s{_frlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+frlwCode :: Lens' ForwardingRuleListWarning (Maybe ForwardingRuleListWarningCode)
+frlwCode = lens _frlwCode (\ s a -> s{_frlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+frlwMessage :: Lens' ForwardingRuleListWarning (Maybe Text)
+frlwMessage
+  = lens _frlwMessage (\ s a -> s{_frlwMessage = a})
+
+instance FromJSON ForwardingRuleListWarning where
+        parseJSON
+          = withObject "ForwardingRuleListWarning"
+              (\ o ->
+                 ForwardingRuleListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ForwardingRuleListWarning where
+        toJSON ForwardingRuleListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _frlwData,
+                  ("code" .=) <$> _frlwCode,
+                  ("message" .=) <$> _frlwMessage])
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'vpnTunnelsScopedListWarning' smart constructor.
+data VPNTunnelsScopedListWarning = VPNTunnelsScopedListWarning'
+    { _vtslwData    :: !(Maybe [VPNTunnelsScopedListWarningDataItem])
+    , _vtslwCode    :: !(Maybe VPNTunnelsScopedListWarningCode)
+    , _vtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslwData'
+--
+-- * 'vtslwCode'
+--
+-- * 'vtslwMessage'
+vpnTunnelsScopedListWarning
+    :: VPNTunnelsScopedListWarning
+vpnTunnelsScopedListWarning =
+    VPNTunnelsScopedListWarning'
+    { _vtslwData = Nothing
+    , _vtslwCode = Nothing
+    , _vtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]
+vtslwData
+  = lens _vtslwData (\ s a -> s{_vtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)
+vtslwCode
+  = lens _vtslwCode (\ s a -> s{_vtslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)
+vtslwMessage
+  = lens _vtslwMessage (\ s a -> s{_vtslwMessage = a})
+
+instance FromJSON VPNTunnelsScopedListWarning where
+        parseJSON
+          = withObject "VPNTunnelsScopedListWarning"
+              (\ o ->
+                 VPNTunnelsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON VPNTunnelsScopedListWarning where
+        toJSON VPNTunnelsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _vtslwData,
+                  ("code" .=) <$> _vtslwCode,
+                  ("message" .=) <$> _vtslwMessage])
+
+--
+-- /See:/ 'regionDisksResizeRequest' smart constructor.
+newtype RegionDisksResizeRequest = RegionDisksResizeRequest'
+    { _rdrrSizeGb :: Maybe (Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksResizeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdrrSizeGb'
+regionDisksResizeRequest
+    :: RegionDisksResizeRequest
+regionDisksResizeRequest =
+    RegionDisksResizeRequest'
+    { _rdrrSizeGb = Nothing
+    }
+
+-- | The new size of the regional persistent disk, which is specified in GB.
+rdrrSizeGb :: Lens' RegionDisksResizeRequest (Maybe Int64)
+rdrrSizeGb
+  = lens _rdrrSizeGb (\ s a -> s{_rdrrSizeGb = a}) .
+      mapping _Coerce
+
+instance FromJSON RegionDisksResizeRequest where
+        parseJSON
+          = withObject "RegionDisksResizeRequest"
+              (\ o ->
+                 RegionDisksResizeRequest' <$> (o .:? "sizeGb"))
+
+instance ToJSON RegionDisksResizeRequest where
+        toJSON RegionDisksResizeRequest'{..}
+          = object (catMaybes [("sizeGb" .=) <$> _rdrrSizeGb])
+
+-- | [Output Only] An informational warning that appears when the node types
+-- list is empty.
+--
+-- /See:/ 'nodeTypesScopedListWarning' smart constructor.
+data NodeTypesScopedListWarning = NodeTypesScopedListWarning'
+    { _ntslwData    :: !(Maybe [NodeTypesScopedListWarningDataItem])
+    , _ntslwCode    :: !(Maybe NodeTypesScopedListWarningCode)
+    , _ntslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntslwData'
+--
+-- * 'ntslwCode'
+--
+-- * 'ntslwMessage'
+nodeTypesScopedListWarning
+    :: NodeTypesScopedListWarning
+nodeTypesScopedListWarning =
+    NodeTypesScopedListWarning'
+    { _ntslwData = Nothing
+    , _ntslwCode = Nothing
+    , _ntslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ntslwData :: Lens' NodeTypesScopedListWarning [NodeTypesScopedListWarningDataItem]
+ntslwData
+  = lens _ntslwData (\ s a -> s{_ntslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ntslwCode :: Lens' NodeTypesScopedListWarning (Maybe NodeTypesScopedListWarningCode)
+ntslwCode
+  = lens _ntslwCode (\ s a -> s{_ntslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ntslwMessage :: Lens' NodeTypesScopedListWarning (Maybe Text)
+ntslwMessage
+  = lens _ntslwMessage (\ s a -> s{_ntslwMessage = a})
+
+instance FromJSON NodeTypesScopedListWarning where
+        parseJSON
+          = withObject "NodeTypesScopedListWarning"
+              (\ o ->
+                 NodeTypesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTypesScopedListWarning where
+        toJSON NodeTypesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ntslwData,
+                  ("code" .=) <$> _ntslwCode,
+                  ("message" .=) <$> _ntslwMessage])
+
+--
+-- /See:/ 'nodeTemplateNodeTypeFlexibility' smart constructor.
+data NodeTemplateNodeTypeFlexibility = NodeTemplateNodeTypeFlexibility'
+    { _ntntfMemory   :: !(Maybe Text)
+    , _ntntfCPUs     :: !(Maybe Text)
+    , _ntntfLocalSsd :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateNodeTypeFlexibility' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntntfMemory'
+--
+-- * 'ntntfCPUs'
+--
+-- * 'ntntfLocalSsd'
+nodeTemplateNodeTypeFlexibility
+    :: NodeTemplateNodeTypeFlexibility
+nodeTemplateNodeTypeFlexibility =
+    NodeTemplateNodeTypeFlexibility'
+    { _ntntfMemory = Nothing
+    , _ntntfCPUs = Nothing
+    , _ntntfLocalSsd = Nothing
+    }
+
+ntntfMemory :: Lens' NodeTemplateNodeTypeFlexibility (Maybe Text)
+ntntfMemory
+  = lens _ntntfMemory (\ s a -> s{_ntntfMemory = a})
+
+ntntfCPUs :: Lens' NodeTemplateNodeTypeFlexibility (Maybe Text)
+ntntfCPUs
+  = lens _ntntfCPUs (\ s a -> s{_ntntfCPUs = a})
+
+ntntfLocalSsd :: Lens' NodeTemplateNodeTypeFlexibility (Maybe Text)
+ntntfLocalSsd
+  = lens _ntntfLocalSsd
+      (\ s a -> s{_ntntfLocalSsd = a})
+
+instance FromJSON NodeTemplateNodeTypeFlexibility
+         where
+        parseJSON
+          = withObject "NodeTemplateNodeTypeFlexibility"
+              (\ o ->
+                 NodeTemplateNodeTypeFlexibility' <$>
+                   (o .:? "memory") <*> (o .:? "cpus") <*>
+                     (o .:? "localSsd"))
+
+instance ToJSON NodeTemplateNodeTypeFlexibility where
+        toJSON NodeTemplateNodeTypeFlexibility'{..}
+          = object
+              (catMaybes
+                 [("memory" .=) <$> _ntntfMemory,
+                  ("cpus" .=) <$> _ntntfCPUs,
+                  ("localSsd" .=) <$> _ntntfLocalSsd])
+
+--
+-- /See:/ 'licenseResourceRequirements' smart constructor.
+data LicenseResourceRequirements = LicenseResourceRequirements'
+    { _lrrMinMemoryMb      :: !(Maybe (Textual Int32))
+    , _lrrMinGuestCPUCount :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicenseResourceRequirements' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrrMinMemoryMb'
+--
+-- * 'lrrMinGuestCPUCount'
+licenseResourceRequirements
+    :: LicenseResourceRequirements
+licenseResourceRequirements =
+    LicenseResourceRequirements'
+    { _lrrMinMemoryMb = Nothing
+    , _lrrMinGuestCPUCount = Nothing
+    }
+
+-- | Minimum memory required to use the Instance. Enforced at Instance
+-- creation and Instance start.
+lrrMinMemoryMb :: Lens' LicenseResourceRequirements (Maybe Int32)
+lrrMinMemoryMb
+  = lens _lrrMinMemoryMb
+      (\ s a -> s{_lrrMinMemoryMb = a})
+      . mapping _Coerce
+
+-- | Minimum number of guest cpus required to use the Instance. Enforced at
+-- Instance creation and Instance start.
+lrrMinGuestCPUCount :: Lens' LicenseResourceRequirements (Maybe Int32)
+lrrMinGuestCPUCount
+  = lens _lrrMinGuestCPUCount
+      (\ s a -> s{_lrrMinGuestCPUCount = a})
+      . mapping _Coerce
+
+instance FromJSON LicenseResourceRequirements where
+        parseJSON
+          = withObject "LicenseResourceRequirements"
+              (\ o ->
+                 LicenseResourceRequirements' <$>
+                   (o .:? "minMemoryMb") <*> (o .:? "minGuestCpuCount"))
+
+instance ToJSON LicenseResourceRequirements where
+        toJSON LicenseResourceRequirements'{..}
+          = object
+              (catMaybes
+                 [("minMemoryMb" .=) <$> _lrrMinMemoryMb,
+                  ("minGuestCpuCount" .=) <$> _lrrMinGuestCPUCount])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionDiskTypeListWarning' smart constructor.
+data RegionDiskTypeListWarning = RegionDiskTypeListWarning'
+    { _rdtlwData    :: !(Maybe [RegionDiskTypeListWarningDataItem])
+    , _rdtlwCode    :: !(Maybe RegionDiskTypeListWarningCode)
+    , _rdtlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDiskTypeListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtlwData'
+--
+-- * 'rdtlwCode'
+--
+-- * 'rdtlwMessage'
+regionDiskTypeListWarning
+    :: RegionDiskTypeListWarning
+regionDiskTypeListWarning =
+    RegionDiskTypeListWarning'
+    { _rdtlwData = Nothing
+    , _rdtlwCode = Nothing
+    , _rdtlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rdtlwData :: Lens' RegionDiskTypeListWarning [RegionDiskTypeListWarningDataItem]
+rdtlwData
+  = lens _rdtlwData (\ s a -> s{_rdtlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rdtlwCode :: Lens' RegionDiskTypeListWarning (Maybe RegionDiskTypeListWarningCode)
+rdtlwCode
+  = lens _rdtlwCode (\ s a -> s{_rdtlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rdtlwMessage :: Lens' RegionDiskTypeListWarning (Maybe Text)
+rdtlwMessage
+  = lens _rdtlwMessage (\ s a -> s{_rdtlwMessage = a})
+
+instance FromJSON RegionDiskTypeListWarning where
+        parseJSON
+          = withObject "RegionDiskTypeListWarning"
+              (\ o ->
+                 RegionDiskTypeListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RegionDiskTypeListWarning where
+        toJSON RegionDiskTypeListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rdtlwData,
+                  ("code" .=) <$> _rdtlwCode,
+                  ("message" .=) <$> _rdtlwMessage])
+
+--
+-- /See:/ 'targetSSLProxiesSetBackendServiceRequest' smart constructor.
+newtype TargetSSLProxiesSetBackendServiceRequest = TargetSSLProxiesSetBackendServiceRequest'
+    { _tspsbsrService :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxiesSetBackendServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tspsbsrService'
+targetSSLProxiesSetBackendServiceRequest
+    :: TargetSSLProxiesSetBackendServiceRequest
+targetSSLProxiesSetBackendServiceRequest =
+    TargetSSLProxiesSetBackendServiceRequest'
+    { _tspsbsrService = Nothing
+    }
+
+-- | The URL of the new BackendService resource for the targetSslProxy.
+tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)
+tspsbsrService
+  = lens _tspsbsrService
+      (\ s a -> s{_tspsbsrService = a})
+
+instance FromJSON
+         TargetSSLProxiesSetBackendServiceRequest where
+        parseJSON
+          = withObject
+              "TargetSSLProxiesSetBackendServiceRequest"
+              (\ o ->
+                 TargetSSLProxiesSetBackendServiceRequest' <$>
+                   (o .:? "service"))
+
+instance ToJSON
+         TargetSSLProxiesSetBackendServiceRequest where
+        toJSON TargetSSLProxiesSetBackendServiceRequest'{..}
+          = object
+              (catMaybes [("service" .=) <$> _tspsbsrService])
+
+-- | A ForwardingRule resource. A ForwardingRule resource specifies which
+-- pool of target virtual machines to forward a packet to if it matches the
+-- given [IPAddress, IPProtocol, ports] tuple. (== resource_for
+-- beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (==
+-- resource_for beta.globalForwardingRules ==) (== resource_for
+-- v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules
+-- ==) (== resource_for v1.regionForwardingRules ==)
+--
+-- /See:/ 'forwardingRule' smart constructor.
+data ForwardingRule = ForwardingRule'
+    { _frNetworkTier         :: !(Maybe ForwardingRuleNetworkTier)
+    , _frIPAddress           :: !(Maybe Text)
+    , _frLoadBalancingScheme :: !(Maybe ForwardingRuleLoadBalancingScheme)
+    , _frKind                :: !Text
+    , _frIPVersion           :: !(Maybe ForwardingRuleIPVersion)
+    , _frNetwork             :: !(Maybe Text)
+    , _frPortRange           :: !(Maybe Text)
+    , _frSelfLink            :: !(Maybe Text)
+    , _frName                :: !(Maybe Text)
+    , _frIPProtocol          :: !(Maybe ForwardingRuleIPProtocol)
+    , _frCreationTimestamp   :: !(Maybe Text)
+    , _frSubnetwork          :: !(Maybe Text)
+    , _frPorts               :: !(Maybe [Text])
+    , _frId                  :: !(Maybe (Textual Word64))
+    , _frRegion              :: !(Maybe Text)
+    , _frDescription         :: !(Maybe Text)
+    , _frTarget              :: !(Maybe Text)
+    , _frBackendService      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frNetworkTier'
+--
+-- * 'frIPAddress'
+--
+-- * 'frLoadBalancingScheme'
+--
+-- * 'frKind'
+--
+-- * 'frIPVersion'
+--
+-- * 'frNetwork'
+--
+-- * 'frPortRange'
+--
+-- * 'frSelfLink'
+--
+-- * 'frName'
+--
+-- * 'frIPProtocol'
+--
+-- * 'frCreationTimestamp'
+--
+-- * 'frSubnetwork'
+--
+-- * 'frPorts'
+--
+-- * 'frId'
+--
+-- * 'frRegion'
+--
+-- * 'frDescription'
+--
+-- * 'frTarget'
+--
+-- * 'frBackendService'
+forwardingRule
+    :: ForwardingRule
+forwardingRule =
+    ForwardingRule'
+    { _frNetworkTier = Nothing
+    , _frIPAddress = Nothing
+    , _frLoadBalancingScheme = Nothing
+    , _frKind = "compute#forwardingRule"
+    , _frIPVersion = Nothing
+    , _frNetwork = Nothing
+    , _frPortRange = Nothing
+    , _frSelfLink = Nothing
+    , _frName = Nothing
+    , _frIPProtocol = Nothing
+    , _frCreationTimestamp = Nothing
+    , _frSubnetwork = Nothing
+    , _frPorts = Nothing
+    , _frId = Nothing
+    , _frRegion = Nothing
+    , _frDescription = Nothing
+    , _frTarget = Nothing
+    , _frBackendService = Nothing
+    }
+
+-- | This signifies the networking tier used for configuring this load
+-- balancer and can only take the following values: PREMIUM , STANDARD. For
+-- regional ForwardingRule, the valid values are PREMIUM and STANDARD. For
+-- GlobalForwardingRule, the valid value is PREMIUM. If this field is not
+-- specified, it is assumed to be PREMIUM. If IPAddress is specified, this
+-- value must be equal to the networkTier of the Address.
+frNetworkTier :: Lens' ForwardingRule (Maybe ForwardingRuleNetworkTier)
+frNetworkTier
+  = lens _frNetworkTier
+      (\ s a -> s{_frNetworkTier = a})
+
+-- | The IP address that this forwarding rule is serving on behalf of.
+-- Addresses are restricted based on the forwarding rule\'s load balancing
+-- scheme (EXTERNAL or INTERNAL) and scope (global or regional). When the
+-- load balancing scheme is EXTERNAL, for global forwarding rules, the
+-- address must be a global IP, and for regional forwarding rules, the
+-- address must live in the same region as the forwarding rule. If this
+-- field is empty, an ephemeral IPv4 address from the same scope (global or
+-- regional) will be assigned. A regional forwarding rule supports IPv4
+-- only. A global forwarding rule supports either IPv4 or IPv6. When the
+-- load balancing scheme is INTERNAL_SELF_MANAGED, this must be a URL
+-- reference to an existing Address resource ( internal regional static IP
+-- address), with a purpose of GCE_END_POINT and address_type of INTERNAL.
+-- When the load balancing scheme is INTERNAL, this can only be an RFC 1918
+-- IP address belonging to the network\/subnet configured for the
+-- forwarding rule. By default, if this field is empty, an ephemeral
+-- internal IP address will be automatically allocated from the IP range of
+-- the subnet or network configured for this forwarding rule. An address
+-- can be specified either by a literal IP address or a URL reference to an
+-- existing Address resource. The following examples are all valid: -
+-- 100.1.2.3 -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/regions\/region\/addresses\/address
+-- - projects\/project\/regions\/region\/addresses\/address -
+-- regions\/region\/addresses\/address - global\/addresses\/address -
+-- address
+frIPAddress :: Lens' ForwardingRule (Maybe Text)
+frIPAddress
+  = lens _frIPAddress (\ s a -> s{_frIPAddress = a})
+
+-- | This signifies what the ForwardingRule will be used for and can only
+-- take the following values: INTERNAL, INTERNAL_SELF_MANAGED, EXTERNAL.
+-- The value of INTERNAL means that this will be used for Internal Network
+-- Load Balancing (TCP, UDP). The value of INTERNAL_SELF_MANAGED means that
+-- this will be used for Internal Global HTTP(S) LB. The value of EXTERNAL
+-- means that this will be used for External Load Balancing (HTTP(S) LB,
+-- External TCP\/UDP LB, SSL Proxy)
+frLoadBalancingScheme :: Lens' ForwardingRule (Maybe ForwardingRuleLoadBalancingScheme)
+frLoadBalancingScheme
+  = lens _frLoadBalancingScheme
+      (\ s a -> s{_frLoadBalancingScheme = a})
+
+-- | [Output Only] Type of the resource. Always compute#forwardingRule for
+-- Forwarding Rule resources.
+frKind :: Lens' ForwardingRule Text
+frKind = lens _frKind (\ s a -> s{_frKind = a})
+
+-- | The IP Version that will be used by this forwarding rule. Valid options
+-- are IPV4 or IPV6. This can only be specified for an external global
+-- forwarding rule.
+frIPVersion :: Lens' ForwardingRule (Maybe ForwardingRuleIPVersion)
+frIPVersion
+  = lens _frIPVersion (\ s a -> s{_frIPVersion = a})
+
+-- | This field is not used for external load balancing. For INTERNAL and
+-- INTERNAL_SELF_MANAGED load balancing, this field identifies the network
+-- that the load balanced IP should belong to for this Forwarding Rule. If
+-- this field is not specified, the default network will be used.
+frNetwork :: Lens' ForwardingRule (Maybe Text)
+frNetwork
+  = lens _frNetwork (\ s a -> s{_frNetwork = a})
+
+-- | This field is used along with the target field for TargetHttpProxy,
+-- TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway,
+-- TargetPool, TargetInstance. Applicable only when IPProtocol is TCP, UDP,
+-- or SCTP, only packets addressed to ports in the specified range will be
+-- forwarded to target. Forwarding rules with the same [IPAddress,
+-- IPProtocol] pair must have disjoint port ranges. Some types of
+-- forwarding target have constraints on the acceptable ports: -
+-- TargetHttpProxy: 80, 8080 - TargetHttpsProxy: 443 - TargetTcpProxy: 25,
+-- 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 -
+-- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995,
+-- 1688, 1883, 5222 - TargetVpnGateway: 500, 4500
+frPortRange :: Lens' ForwardingRule (Maybe Text)
+frPortRange
+  = lens _frPortRange (\ s a -> s{_frPortRange = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+frSelfLink :: Lens' ForwardingRule (Maybe Text)
+frSelfLink
+  = lens _frSelfLink (\ s a -> s{_frSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+frName :: Lens' ForwardingRule (Maybe Text)
+frName = lens _frName (\ s a -> s{_frName = a})
+
+-- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
+-- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL, only
+-- TCP and UDP are valid. When the load balancing scheme is
+-- INTERNAL_SELF_MANAGED, only TCPis valid.
+frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)
+frIPProtocol
+  = lens _frIPProtocol (\ s a -> s{_frIPProtocol = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)
+frCreationTimestamp
+  = lens _frCreationTimestamp
+      (\ s a -> s{_frCreationTimestamp = a})
+
+-- | This field is only used for INTERNAL load balancing. For internal load
+-- balancing, this field identifies the subnetwork that the load balanced
+-- IP should belong to for this Forwarding Rule. If the network specified
+-- is in auto subnet mode, this field is optional. However, if the network
+-- is in custom subnet mode, a subnetwork must be specified.
+frSubnetwork :: Lens' ForwardingRule (Maybe Text)
+frSubnetwork
+  = lens _frSubnetwork (\ s a -> s{_frSubnetwork = a})
+
+-- | This field is used along with the backend_service field for internal
+-- load balancing. When the load balancing scheme is INTERNAL, a list of
+-- ports can be configured, for example, [\'80\'], [\'8000\',\'9000\'] etc.
+-- Only packets addressed to these ports will be forwarded to the backends
+-- configured with this forwarding rule. You may specify a maximum of up to
+-- 5 ports.
+frPorts :: Lens' ForwardingRule [Text]
+frPorts
+  = lens _frPorts (\ s a -> s{_frPorts = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+frId :: Lens' ForwardingRule (Maybe Word64)
+frId
+  = lens _frId (\ s a -> s{_frId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the regional forwarding rule
+-- resides. This field is not applicable to global forwarding rules. You
+-- must specify this field as part of the HTTP request URL. It is not
+-- settable as a field in the request body.
+frRegion :: Lens' ForwardingRule (Maybe Text)
+frRegion = lens _frRegion (\ s a -> s{_frRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+frDescription :: Lens' ForwardingRule (Maybe Text)
+frDescription
+  = lens _frDescription
+      (\ s a -> s{_frDescription = a})
+
+-- | The URL of the target resource to receive the matched traffic. For
+-- regional forwarding rules, this target must live in the same region as
+-- the forwarding rule. For global forwarding rules, this target must be a
+-- global load balancing resource. The forwarded traffic must be of a type
+-- appropriate to the target object. For INTERNAL_SELF_MANAGED\" load
+-- balancing, only HTTP and HTTPS targets are valid.
+frTarget :: Lens' ForwardingRule (Maybe Text)
+frTarget = lens _frTarget (\ s a -> s{_frTarget = a})
+
+-- | This field is only used for INTERNAL load balancing. For internal load
+-- balancing, this field identifies the BackendService resource to receive
+-- the matched traffic.
+frBackendService :: Lens' ForwardingRule (Maybe Text)
+frBackendService
+  = lens _frBackendService
+      (\ s a -> s{_frBackendService = a})
+
+instance FromJSON ForwardingRule where
+        parseJSON
+          = withObject "ForwardingRule"
+              (\ o ->
+                 ForwardingRule' <$>
+                   (o .:? "networkTier") <*> (o .:? "IPAddress") <*>
+                     (o .:? "loadBalancingScheme")
+                     <*> (o .:? "kind" .!= "compute#forwardingRule")
+                     <*> (o .:? "ipVersion")
+                     <*> (o .:? "network")
+                     <*> (o .:? "portRange")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "IPProtocol")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "ports" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "target")
+                     <*> (o .:? "backendService"))
+
+instance ToJSON ForwardingRule where
+        toJSON ForwardingRule'{..}
+          = object
+              (catMaybes
+                 [("networkTier" .=) <$> _frNetworkTier,
+                  ("IPAddress" .=) <$> _frIPAddress,
+                  ("loadBalancingScheme" .=) <$>
+                    _frLoadBalancingScheme,
+                  Just ("kind" .= _frKind),
+                  ("ipVersion" .=) <$> _frIPVersion,
+                  ("network" .=) <$> _frNetwork,
+                  ("portRange" .=) <$> _frPortRange,
+                  ("selfLink" .=) <$> _frSelfLink,
+                  ("name" .=) <$> _frName,
+                  ("IPProtocol" .=) <$> _frIPProtocol,
+                  ("creationTimestamp" .=) <$> _frCreationTimestamp,
+                  ("subnetwork" .=) <$> _frSubnetwork,
+                  ("ports" .=) <$> _frPorts, ("id" .=) <$> _frId,
+                  ("region" .=) <$> _frRegion,
+                  ("description" .=) <$> _frDescription,
+                  ("target" .=) <$> _frTarget,
+                  ("backendService" .=) <$> _frBackendService])
+
+-- | Contains a list of UrlMap resources.
+--
+-- /See:/ 'urlMapList' smart constructor.
+data URLMapList = URLMapList'
+    { _umlNextPageToken :: !(Maybe Text)
+    , _umlKind          :: !Text
+    , _umlItems         :: !(Maybe [URLMap])
+    , _umlSelfLink      :: !(Maybe Text)
+    , _umlWarning       :: !(Maybe URLMapListWarning)
+    , _umlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umlNextPageToken'
+--
+-- * 'umlKind'
+--
+-- * 'umlItems'
+--
+-- * 'umlSelfLink'
+--
+-- * 'umlWarning'
+--
+-- * 'umlId'
+urlMapList
+    :: URLMapList
+urlMapList =
+    URLMapList'
+    { _umlNextPageToken = Nothing
+    , _umlKind = "compute#urlMapList"
+    , _umlItems = Nothing
+    , _umlSelfLink = Nothing
+    , _umlWarning = Nothing
+    , _umlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+umlNextPageToken :: Lens' URLMapList (Maybe Text)
+umlNextPageToken
+  = lens _umlNextPageToken
+      (\ s a -> s{_umlNextPageToken = a})
+
+-- | Type of resource.
+umlKind :: Lens' URLMapList Text
+umlKind = lens _umlKind (\ s a -> s{_umlKind = a})
+
+-- | A list of UrlMap resources.
+umlItems :: Lens' URLMapList [URLMap]
+umlItems
+  = lens _umlItems (\ s a -> s{_umlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+umlSelfLink :: Lens' URLMapList (Maybe Text)
+umlSelfLink
+  = lens _umlSelfLink (\ s a -> s{_umlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+umlWarning :: Lens' URLMapList (Maybe URLMapListWarning)
+umlWarning
+  = lens _umlWarning (\ s a -> s{_umlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+umlId :: Lens' URLMapList (Maybe Text)
+umlId = lens _umlId (\ s a -> s{_umlId = a})
+
+instance FromJSON URLMapList where
+        parseJSON
+          = withObject "URLMapList"
+              (\ o ->
+                 URLMapList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#urlMapList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON URLMapList where
+        toJSON URLMapList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _umlNextPageToken,
+                  Just ("kind" .= _umlKind),
+                  ("items" .=) <$> _umlItems,
+                  ("selfLink" .=) <$> _umlSelfLink,
+                  ("warning" .=) <$> _umlWarning,
+                  ("id" .=) <$> _umlId])
+
+--
+-- /See:/ 'forwardingRulesScopedListWarningDataItem' smart constructor.
+data ForwardingRulesScopedListWarningDataItem = ForwardingRulesScopedListWarningDataItem'
+    { _frslwdiValue :: !(Maybe Text)
+    , _frslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslwdiValue'
+--
+-- * 'frslwdiKey'
+forwardingRulesScopedListWarningDataItem
+    :: ForwardingRulesScopedListWarningDataItem
+forwardingRulesScopedListWarningDataItem =
+    ForwardingRulesScopedListWarningDataItem'
+    { _frslwdiValue = Nothing
+    , _frslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
+frslwdiValue
+  = lens _frslwdiValue (\ s a -> s{_frslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
+frslwdiKey
+  = lens _frslwdiKey (\ s a -> s{_frslwdiKey = a})
+
+instance FromJSON
+         ForwardingRulesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "ForwardingRulesScopedListWarningDataItem"
+              (\ o ->
+                 ForwardingRulesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         ForwardingRulesScopedListWarningDataItem where
+        toJSON ForwardingRulesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _frslwdiValue,
+                  ("key" .=) <$> _frslwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetInstanceAggregatedListWarning' smart constructor.
+data TargetInstanceAggregatedListWarning = TargetInstanceAggregatedListWarning'
+    { _tialwData    :: !(Maybe [TargetInstanceAggregatedListWarningDataItem])
+    , _tialwCode    :: !(Maybe TargetInstanceAggregatedListWarningCode)
+    , _tialwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialwData'
+--
+-- * 'tialwCode'
+--
+-- * 'tialwMessage'
+targetInstanceAggregatedListWarning
+    :: TargetInstanceAggregatedListWarning
+targetInstanceAggregatedListWarning =
+    TargetInstanceAggregatedListWarning'
+    { _tialwData = Nothing
+    , _tialwCode = Nothing
+    , _tialwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tialwData :: Lens' TargetInstanceAggregatedListWarning [TargetInstanceAggregatedListWarningDataItem]
+tialwData
+  = lens _tialwData (\ s a -> s{_tialwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tialwCode :: Lens' TargetInstanceAggregatedListWarning (Maybe TargetInstanceAggregatedListWarningCode)
+tialwCode
+  = lens _tialwCode (\ s a -> s{_tialwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tialwMessage :: Lens' TargetInstanceAggregatedListWarning (Maybe Text)
+tialwMessage
+  = lens _tialwMessage (\ s a -> s{_tialwMessage = a})
+
+instance FromJSON TargetInstanceAggregatedListWarning
+         where
+        parseJSON
+          = withObject "TargetInstanceAggregatedListWarning"
+              (\ o ->
+                 TargetInstanceAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetInstanceAggregatedListWarning
+         where
+        toJSON TargetInstanceAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tialwData,
+                  ("code" .=) <$> _tialwCode,
+                  ("message" .=) <$> _tialwMessage])
+
+--
+-- /See:/ 'instanceGroupManagersScopedListWarningDataItem' smart constructor.
+data InstanceGroupManagersScopedListWarningDataItem = InstanceGroupManagersScopedListWarningDataItem'
+    { _igmslwdiValue :: !(Maybe Text)
+    , _igmslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslwdiValue'
+--
+-- * 'igmslwdiKey'
+instanceGroupManagersScopedListWarningDataItem
+    :: InstanceGroupManagersScopedListWarningDataItem
+instanceGroupManagersScopedListWarningDataItem =
+    InstanceGroupManagersScopedListWarningDataItem'
+    { _igmslwdiValue = Nothing
+    , _igmslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
+igmslwdiValue
+  = lens _igmslwdiValue
+      (\ s a -> s{_igmslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
+igmslwdiKey
+  = lens _igmslwdiKey (\ s a -> s{_igmslwdiKey = a})
+
+instance FromJSON
+         InstanceGroupManagersScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersScopedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupManagersScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupManagersScopedListWarningDataItem where
+        toJSON
+          InstanceGroupManagersScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igmslwdiValue,
+                  ("key" .=) <$> _igmslwdiKey])
+
+--
+-- /See:/ 'subnetworksScopedList' smart constructor.
+data SubnetworksScopedList = SubnetworksScopedList'
+    { _sslSubnetworks :: !(Maybe [Subnetwork])
+    , _sslWarning     :: !(Maybe SubnetworksScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslSubnetworks'
+--
+-- * 'sslWarning'
+subnetworksScopedList
+    :: SubnetworksScopedList
+subnetworksScopedList =
+    SubnetworksScopedList'
+    { _sslSubnetworks = Nothing
+    , _sslWarning = Nothing
+    }
+
+-- | A list of subnetworks contained in this scope.
+sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]
+sslSubnetworks
+  = lens _sslSubnetworks
+      (\ s a -> s{_sslSubnetworks = a})
+      . _Default
+      . _Coerce
+
+-- | An informational warning that appears when the list of addresses is
+-- empty.
+sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)
+sslWarning
+  = lens _sslWarning (\ s a -> s{_sslWarning = a})
+
+instance FromJSON SubnetworksScopedList where
+        parseJSON
+          = withObject "SubnetworksScopedList"
+              (\ o ->
+                 SubnetworksScopedList' <$>
+                   (o .:? "subnetworks" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON SubnetworksScopedList where
+        toJSON SubnetworksScopedList'{..}
+          = object
+              (catMaybes
+                 [("subnetworks" .=) <$> _sslSubnetworks,
+                  ("warning" .=) <$> _sslWarning])
+
+-- | Contains a list of accelerator types.
+--
+-- /See:/ 'acceleratorTypeList' smart constructor.
+data AcceleratorTypeList = AcceleratorTypeList'
+    { _atlNextPageToken :: !(Maybe Text)
+    , _atlKind          :: !Text
+    , _atlItems         :: !(Maybe [AcceleratorType])
+    , _atlSelfLink      :: !(Maybe Text)
+    , _atlWarning       :: !(Maybe AcceleratorTypeListWarning)
+    , _atlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atlNextPageToken'
+--
+-- * 'atlKind'
+--
+-- * 'atlItems'
+--
+-- * 'atlSelfLink'
+--
+-- * 'atlWarning'
+--
+-- * 'atlId'
+acceleratorTypeList
+    :: AcceleratorTypeList
+acceleratorTypeList =
+    AcceleratorTypeList'
+    { _atlNextPageToken = Nothing
+    , _atlKind = "compute#acceleratorTypeList"
+    , _atlItems = Nothing
+    , _atlSelfLink = Nothing
+    , _atlWarning = Nothing
+    , _atlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+atlNextPageToken :: Lens' AcceleratorTypeList (Maybe Text)
+atlNextPageToken
+  = lens _atlNextPageToken
+      (\ s a -> s{_atlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#acceleratorTypeList for
+-- lists of accelerator types.
+atlKind :: Lens' AcceleratorTypeList Text
+atlKind = lens _atlKind (\ s a -> s{_atlKind = a})
+
+-- | A list of AcceleratorType resources.
+atlItems :: Lens' AcceleratorTypeList [AcceleratorType]
+atlItems
+  = lens _atlItems (\ s a -> s{_atlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+atlSelfLink :: Lens' AcceleratorTypeList (Maybe Text)
+atlSelfLink
+  = lens _atlSelfLink (\ s a -> s{_atlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+atlWarning :: Lens' AcceleratorTypeList (Maybe AcceleratorTypeListWarning)
+atlWarning
+  = lens _atlWarning (\ s a -> s{_atlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+atlId :: Lens' AcceleratorTypeList (Maybe Text)
+atlId = lens _atlId (\ s a -> s{_atlId = a})
+
+instance FromJSON AcceleratorTypeList where
+        parseJSON
+          = withObject "AcceleratorTypeList"
+              (\ o ->
+                 AcceleratorTypeList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#acceleratorTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AcceleratorTypeList where
+        toJSON AcceleratorTypeList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _atlNextPageToken,
+                  Just ("kind" .= _atlKind),
+                  ("items" .=) <$> _atlItems,
+                  ("selfLink" .=) <$> _atlSelfLink,
+                  ("warning" .=) <$> _atlWarning,
+                  ("id" .=) <$> _atlId])
+
+--
+-- /See:/ 'diskAggregatedListWarningDataItem' smart constructor.
+data DiskAggregatedListWarningDataItem = DiskAggregatedListWarningDataItem'
+    { _dalwdiValue :: !(Maybe Text)
+    , _dalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalwdiValue'
+--
+-- * 'dalwdiKey'
+diskAggregatedListWarningDataItem
+    :: DiskAggregatedListWarningDataItem
+diskAggregatedListWarningDataItem =
+    DiskAggregatedListWarningDataItem'
+    { _dalwdiValue = Nothing
+    , _dalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dalwdiValue :: Lens' DiskAggregatedListWarningDataItem (Maybe Text)
+dalwdiValue
+  = lens _dalwdiValue (\ s a -> s{_dalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dalwdiKey :: Lens' DiskAggregatedListWarningDataItem (Maybe Text)
+dalwdiKey
+  = lens _dalwdiKey (\ s a -> s{_dalwdiKey = a})
+
+instance FromJSON DiskAggregatedListWarningDataItem
+         where
+        parseJSON
+          = withObject "DiskAggregatedListWarningDataItem"
+              (\ o ->
+                 DiskAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskAggregatedListWarningDataItem
+         where
+        toJSON DiskAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dalwdiValue,
+                  ("key" .=) <$> _dalwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetPoolListWarning' smart constructor.
+data TargetPoolListWarning = TargetPoolListWarning'
+    { _tplwData    :: !(Maybe [TargetPoolListWarningDataItem])
+    , _tplwCode    :: !(Maybe TargetPoolListWarningCode)
+    , _tplwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplwData'
+--
+-- * 'tplwCode'
+--
+-- * 'tplwMessage'
+targetPoolListWarning
+    :: TargetPoolListWarning
+targetPoolListWarning =
+    TargetPoolListWarning'
+    { _tplwData = Nothing
+    , _tplwCode = Nothing
+    , _tplwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tplwData :: Lens' TargetPoolListWarning [TargetPoolListWarningDataItem]
+tplwData
+  = lens _tplwData (\ s a -> s{_tplwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tplwCode :: Lens' TargetPoolListWarning (Maybe TargetPoolListWarningCode)
+tplwCode = lens _tplwCode (\ s a -> s{_tplwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tplwMessage :: Lens' TargetPoolListWarning (Maybe Text)
+tplwMessage
+  = lens _tplwMessage (\ s a -> s{_tplwMessage = a})
+
+instance FromJSON TargetPoolListWarning where
+        parseJSON
+          = withObject "TargetPoolListWarning"
+              (\ o ->
+                 TargetPoolListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetPoolListWarning where
+        toJSON TargetPoolListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tplwData,
+                  ("code" .=) <$> _tplwCode,
+                  ("message" .=) <$> _tplwMessage])
+
+-- | [Output Only] An informational warning that appears when the node
+-- templates list is empty.
+--
+-- /See:/ 'nodeTemplatesScopedListWarning' smart constructor.
+data NodeTemplatesScopedListWarning = NodeTemplatesScopedListWarning'
+    { _nData    :: !(Maybe [NodeTemplatesScopedListWarningDataItem])
+    , _nCode    :: !(Maybe NodeTemplatesScopedListWarningCode)
+    , _nMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nData'
+--
+-- * 'nCode'
+--
+-- * 'nMessage'
+nodeTemplatesScopedListWarning
+    :: NodeTemplatesScopedListWarning
+nodeTemplatesScopedListWarning =
+    NodeTemplatesScopedListWarning'
+    { _nData = Nothing
+    , _nCode = Nothing
+    , _nMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+nData :: Lens' NodeTemplatesScopedListWarning [NodeTemplatesScopedListWarningDataItem]
+nData
+  = lens _nData (\ s a -> s{_nData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+nCode :: Lens' NodeTemplatesScopedListWarning (Maybe NodeTemplatesScopedListWarningCode)
+nCode = lens _nCode (\ s a -> s{_nCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+nMessage :: Lens' NodeTemplatesScopedListWarning (Maybe Text)
+nMessage = lens _nMessage (\ s a -> s{_nMessage = a})
+
+instance FromJSON NodeTemplatesScopedListWarning
+         where
+        parseJSON
+          = withObject "NodeTemplatesScopedListWarning"
+              (\ o ->
+                 NodeTemplatesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTemplatesScopedListWarning where
+        toJSON NodeTemplatesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _nData, ("code" .=) <$> _nCode,
+                  ("message" .=) <$> _nMessage])
+
+--
+-- /See:/ 'targetPoolAggregatedListWarningDataItem' smart constructor.
+data TargetPoolAggregatedListWarningDataItem = TargetPoolAggregatedListWarningDataItem'
+    { _tpalwdiValue :: !(Maybe Text)
+    , _tpalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpalwdiValue'
+--
+-- * 'tpalwdiKey'
+targetPoolAggregatedListWarningDataItem
+    :: TargetPoolAggregatedListWarningDataItem
+targetPoolAggregatedListWarningDataItem =
+    TargetPoolAggregatedListWarningDataItem'
+    { _tpalwdiValue = Nothing
+    , _tpalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tpalwdiValue :: Lens' TargetPoolAggregatedListWarningDataItem (Maybe Text)
+tpalwdiValue
+  = lens _tpalwdiValue (\ s a -> s{_tpalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tpalwdiKey :: Lens' TargetPoolAggregatedListWarningDataItem (Maybe Text)
+tpalwdiKey
+  = lens _tpalwdiKey (\ s a -> s{_tpalwdiKey = a})
+
+instance FromJSON
+         TargetPoolAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetPoolAggregatedListWarningDataItem"
+              (\ o ->
+                 TargetPoolAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetPoolAggregatedListWarningDataItem where
+        toJSON TargetPoolAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tpalwdiValue,
+                  ("key" .=) <$> _tpalwdiKey])
+
+-- | A Project resource. For an overview of projects, see Cloud Platform
+-- Resource Hierarchy. (== resource_for v1.projects ==) (== resource_for
+-- beta.projects ==)
+--
+-- /See:/ 'project' smart constructor.
+data Project = Project'
+    { _pXpnProjectStatus       :: !(Maybe ProjectXpnProjectStatus)
+    , _pKind                   :: !Text
+    , _pUsageExportLocation    :: !(Maybe UsageExportLocation)
+    , _pSelfLink               :: !(Maybe Text)
+    , _pName                   :: !(Maybe Text)
+    , _pDefaultServiceAccount  :: !(Maybe Text)
+    , _pDefaultNetworkTier     :: !(Maybe ProjectDefaultNetworkTier)
+    , _pCreationTimestamp      :: !(Maybe Text)
+    , _pEnabledFeatures        :: !(Maybe [Text])
+    , _pQuotas                 :: !(Maybe [Quota])
+    , _pId                     :: !(Maybe (Textual Word64))
+    , _pDescription            :: !(Maybe Text)
+    , _pCommonInstanceMetadata :: !(Maybe Metadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Project' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pXpnProjectStatus'
+--
+-- * 'pKind'
+--
+-- * 'pUsageExportLocation'
+--
+-- * 'pSelfLink'
+--
+-- * 'pName'
+--
+-- * 'pDefaultServiceAccount'
+--
+-- * 'pDefaultNetworkTier'
+--
+-- * 'pCreationTimestamp'
+--
+-- * 'pEnabledFeatures'
+--
+-- * 'pQuotas'
+--
+-- * 'pId'
+--
+-- * 'pDescription'
+--
+-- * 'pCommonInstanceMetadata'
+project
+    :: Project
+project =
+    Project'
+    { _pXpnProjectStatus = Nothing
+    , _pKind = "compute#project"
+    , _pUsageExportLocation = Nothing
+    , _pSelfLink = Nothing
+    , _pName = Nothing
+    , _pDefaultServiceAccount = Nothing
+    , _pDefaultNetworkTier = Nothing
+    , _pCreationTimestamp = Nothing
+    , _pEnabledFeatures = Nothing
+    , _pQuotas = Nothing
+    , _pId = Nothing
+    , _pDescription = Nothing
+    , _pCommonInstanceMetadata = Nothing
+    }
+
+-- | [Output Only] The role this project has in a shared VPC configuration.
+-- Currently only HOST projects are differentiated.
+pXpnProjectStatus :: Lens' Project (Maybe ProjectXpnProjectStatus)
+pXpnProjectStatus
+  = lens _pXpnProjectStatus
+      (\ s a -> s{_pXpnProjectStatus = a})
+
+-- | [Output Only] Type of the resource. Always compute#project for projects.
+pKind :: Lens' Project Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | The naming prefix for daily usage reports and the Google Cloud Storage
+-- bucket where they are stored.
+pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)
+pUsageExportLocation
+  = lens _pUsageExportLocation
+      (\ s a -> s{_pUsageExportLocation = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+pSelfLink :: Lens' Project (Maybe Text)
+pSelfLink
+  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})
+
+-- | The project ID. For example: my-example-project. Use the project ID to
+-- make requests to Compute Engine.
+pName :: Lens' Project (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a})
+
+-- | [Output Only] Default service account used by VMs running in this
+-- project.
+pDefaultServiceAccount :: Lens' Project (Maybe Text)
+pDefaultServiceAccount
+  = lens _pDefaultServiceAccount
+      (\ s a -> s{_pDefaultServiceAccount = a})
+
+-- | This signifies the default network tier used for configuring resources
+-- of the project and can only take the following values: PREMIUM,
+-- STANDARD. Initially the default network tier is PREMIUM.
+pDefaultNetworkTier :: Lens' Project (Maybe ProjectDefaultNetworkTier)
+pDefaultNetworkTier
+  = lens _pDefaultNetworkTier
+      (\ s a -> s{_pDefaultNetworkTier = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+pCreationTimestamp :: Lens' Project (Maybe Text)
+pCreationTimestamp
+  = lens _pCreationTimestamp
+      (\ s a -> s{_pCreationTimestamp = a})
+
+-- | Restricted features enabled for use on this project.
+pEnabledFeatures :: Lens' Project [Text]
+pEnabledFeatures
+  = lens _pEnabledFeatures
+      (\ s a -> s{_pEnabledFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Quotas assigned to this project.
+pQuotas :: Lens' Project [Quota]
+pQuotas
+  = lens _pQuotas (\ s a -> s{_pQuotas = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server. This is not the project ID, and is just a unique
+-- ID used by Compute Engine to identify resources.
+pId :: Lens' Project (Maybe Word64)
+pId
+  = lens _pId (\ s a -> s{_pId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource.
+pDescription :: Lens' Project (Maybe Text)
+pDescription
+  = lens _pDescription (\ s a -> s{_pDescription = a})
+
+-- | Metadata key\/value pairs available to all instances contained in this
+-- project. See Custom metadata for more information.
+pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)
+pCommonInstanceMetadata
+  = lens _pCommonInstanceMetadata
+      (\ s a -> s{_pCommonInstanceMetadata = a})
+
+instance FromJSON Project where
+        parseJSON
+          = withObject "Project"
+              (\ o ->
+                 Project' <$>
+                   (o .:? "xpnProjectStatus") <*>
+                     (o .:? "kind" .!= "compute#project")
+                     <*> (o .:? "usageExportLocation")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "defaultServiceAccount")
+                     <*> (o .:? "defaultNetworkTier")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "enabledFeatures" .!= mempty)
+                     <*> (o .:? "quotas" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "commonInstanceMetadata"))
+
+instance ToJSON Project where
+        toJSON Project'{..}
+          = object
+              (catMaybes
+                 [("xpnProjectStatus" .=) <$> _pXpnProjectStatus,
+                  Just ("kind" .= _pKind),
+                  ("usageExportLocation" .=) <$> _pUsageExportLocation,
+                  ("selfLink" .=) <$> _pSelfLink,
+                  ("name" .=) <$> _pName,
+                  ("defaultServiceAccount" .=) <$>
+                    _pDefaultServiceAccount,
+                  ("defaultNetworkTier" .=) <$> _pDefaultNetworkTier,
+                  ("creationTimestamp" .=) <$> _pCreationTimestamp,
+                  ("enabledFeatures" .=) <$> _pEnabledFeatures,
+                  ("quotas" .=) <$> _pQuotas, ("id" .=) <$> _pId,
+                  ("description" .=) <$> _pDescription,
+                  ("commonInstanceMetadata" .=) <$>
+                    _pCommonInstanceMetadata])
+
+--
+-- /See:/ 'regionInstanceGroupManagersListInstancesResponse' smart constructor.
+newtype RegionInstanceGroupManagersListInstancesResponse = RegionInstanceGroupManagersListInstancesResponse'
+    { _rigmlirManagedInstances :: Maybe [ManagedInstance]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersListInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmlirManagedInstances'
+regionInstanceGroupManagersListInstancesResponse
+    :: RegionInstanceGroupManagersListInstancesResponse
+regionInstanceGroupManagersListInstancesResponse =
+    RegionInstanceGroupManagersListInstancesResponse'
+    { _rigmlirManagedInstances = Nothing
+    }
+
+-- | A list of managed instances.
+rigmlirManagedInstances :: Lens' RegionInstanceGroupManagersListInstancesResponse [ManagedInstance]
+rigmlirManagedInstances
+  = lens _rigmlirManagedInstances
+      (\ s a -> s{_rigmlirManagedInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupManagersListInstancesResponse
+         where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersListInstancesResponse"
+              (\ o ->
+                 RegionInstanceGroupManagersListInstancesResponse' <$>
+                   (o .:? "managedInstances" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupManagersListInstancesResponse
+         where
+        toJSON
+          RegionInstanceGroupManagersListInstancesResponse'{..}
+          = object
+              (catMaybes
+                 [("managedInstances" .=) <$>
+                    _rigmlirManagedInstances])
+
+-- | An Operation resource, used to manage asynchronous API requests. (==
+-- resource_for v1.globalOperations ==) (== resource_for
+-- beta.globalOperations ==) (== resource_for v1.regionOperations ==) (==
+-- resource_for beta.regionOperations ==) (== resource_for
+-- v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation'
+    { _oTargetId            :: !(Maybe (Textual Word64))
+    , _oStatus              :: !(Maybe OperationStatus)
+    , _oInsertTime          :: !(Maybe Text)
+    , _oProgress            :: !(Maybe (Textual Int32))
+    , _oStartTime           :: !(Maybe Text)
+    , _oKind                :: !Text
+    , _oError               :: !(Maybe OperationError)
+    , _oHTTPErrorMessage    :: !(Maybe Text)
+    , _oZone                :: !(Maybe Text)
+    , _oWarnings            :: !(Maybe [OperationWarningsItem])
+    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))
+    , _oUser                :: !(Maybe Text)
+    , _oSelfLink            :: !(Maybe Text)
+    , _oName                :: !(Maybe Text)
+    , _oStatusMessage       :: !(Maybe Text)
+    , _oCreationTimestamp   :: !(Maybe Text)
+    , _oEndTime             :: !(Maybe Text)
+    , _oId                  :: !(Maybe (Textual Word64))
+    , _oOperationType       :: !(Maybe Text)
+    , _oRegion              :: !(Maybe Text)
+    , _oDescription         :: !(Maybe Text)
+    , _oTargetLink          :: !(Maybe Text)
+    , _oClientOperationId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oTargetId'
+--
+-- * 'oStatus'
+--
+-- * 'oInsertTime'
+--
+-- * 'oProgress'
+--
+-- * 'oStartTime'
+--
+-- * 'oKind'
+--
+-- * 'oError'
+--
+-- * 'oHTTPErrorMessage'
+--
+-- * 'oZone'
+--
+-- * 'oWarnings'
+--
+-- * 'oHTTPErrorStatusCode'
+--
+-- * 'oUser'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oCreationTimestamp'
+--
+-- * 'oEndTime'
+--
+-- * 'oId'
+--
+-- * 'oOperationType'
+--
+-- * 'oRegion'
+--
+-- * 'oDescription'
+--
+-- * 'oTargetLink'
+--
+-- * 'oClientOperationId'
+operation
+    :: Operation
+operation =
+    Operation'
+    { _oTargetId = Nothing
+    , _oStatus = Nothing
+    , _oInsertTime = Nothing
+    , _oProgress = Nothing
+    , _oStartTime = Nothing
+    , _oKind = "compute#operation"
+    , _oError = Nothing
+    , _oHTTPErrorMessage = Nothing
+    , _oZone = Nothing
+    , _oWarnings = Nothing
+    , _oHTTPErrorStatusCode = Nothing
+    , _oUser = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oCreationTimestamp = Nothing
+    , _oEndTime = Nothing
+    , _oId = Nothing
+    , _oOperationType = Nothing
+    , _oRegion = Nothing
+    , _oDescription = Nothing
+    , _oTargetLink = Nothing
+    , _oClientOperationId = Nothing
+    }
+
+-- | [Output Only] The unique target ID, which identifies a specific
+-- incarnation of the target resource.
+oTargetId :: Lens' Operation (Maybe Word64)
+oTargetId
+  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The status of the operation, which can be one of the
+-- following: PENDING, RUNNING, or DONE.
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | [Output Only] The time that this operation was requested. This value is
+-- in RFC3339 text format.
+oInsertTime :: Lens' Operation (Maybe Text)
+oInsertTime
+  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})
+
+-- | [Output Only] An optional progress indicator that ranges from 0 to 100.
+-- There is no requirement that this be linear or support any granularity
+-- of operations. This should not be used to guess when the operation will
+-- be complete. This number should monotonically increase as the operation
+-- progresses.
+oProgress :: Lens' Operation (Maybe Int32)
+oProgress
+  = lens _oProgress (\ s a -> s{_oProgress = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The time that this operation was started by the server.
+-- This value is in RFC3339 text format.
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | [Output Only] Type of the resource. Always compute#operation for
+-- Operation resources.
+oKind :: Lens' Operation Text
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+oError :: Lens' Operation (Maybe OperationError)
+oError = lens _oError (\ s a -> s{_oError = a})
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- message that was returned, such as NOT FOUND.
+oHTTPErrorMessage :: Lens' Operation (Maybe Text)
+oHTTPErrorMessage
+  = lens _oHTTPErrorMessage
+      (\ s a -> s{_oHTTPErrorMessage = a})
+
+-- | [Output Only] The URL of the zone where the operation resides. Only
+-- available when performing per-zone operations. You must specify this
+-- field as part of the HTTP request URL. It is not settable as a field in
+-- the request body.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | [Output Only] If warning messages are generated during processing of the
+-- operation, this field will be populated.
+oWarnings :: Lens' Operation [OperationWarningsItem]
+oWarnings
+  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- status code that was returned. For example, a 404 means the resource was
+-- not found.
+oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)
+oHTTPErrorStatusCode
+  = lens _oHTTPErrorStatusCode
+      (\ s a -> s{_oHTTPErrorStatusCode = a})
+      . mapping _Coerce
+
+-- | [Output Only] User who requested the operation, for example:
+-- user\'example.com.
+oUser :: Lens' Operation (Maybe Text)
+oUser = lens _oUser (\ s a -> s{_oUser = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | [Output Only] An optional textual description of the current status of
+-- the operation.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | [Deprecated] This field is deprecated.
+oCreationTimestamp :: Lens' Operation (Maybe Text)
+oCreationTimestamp
+  = lens _oCreationTimestamp
+      (\ s a -> s{_oCreationTimestamp = a})
+
+-- | [Output Only] The time that this operation was completed. This value is
+-- in RFC3339 text format.
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+oId :: Lens' Operation (Maybe Word64)
+oId
+  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce
+
+-- | [Output Only] The type of operation, such as insert, update, or delete,
+-- and so on.
+oOperationType :: Lens' Operation (Maybe Text)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | [Output Only] The URL of the region where the operation resides. Only
+-- available when performing regional operations. You must specify this
+-- field as part of the HTTP request URL. It is not settable as a field in
+-- the request body.
+oRegion :: Lens' Operation (Maybe Text)
+oRegion = lens _oRegion (\ s a -> s{_oRegion = a})
+
+-- | [Output Only] A textual description of the operation, which is set when
+-- the operation is created.
+oDescription :: Lens' Operation (Maybe Text)
+oDescription
+  = lens _oDescription (\ s a -> s{_oDescription = a})
+
+-- | [Output Only] The URL of the resource that the operation modifies. For
+-- operations related to creating a snapshot, this points to the persistent
+-- disk that the snapshot was created from.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+-- | [Output Only] The value of \`requestId\` if you provided it in the
+-- request. Not present otherwise.
+oClientOperationId :: Lens' Operation (Maybe Text)
+oClientOperationId
+  = lens _oClientOperationId
+      (\ s a -> s{_oClientOperationId = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation' <$>
+                   (o .:? "targetId") <*> (o .:? "status") <*>
+                     (o .:? "insertTime")
+                     <*> (o .:? "progress")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "kind" .!= "compute#operation")
+                     <*> (o .:? "error")
+                     <*> (o .:? "httpErrorMessage")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "httpErrorStatusCode")
+                     <*> (o .:? "user")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "id")
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "clientOperationId"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("targetId" .=) <$> _oTargetId,
+                  ("status" .=) <$> _oStatus,
+                  ("insertTime" .=) <$> _oInsertTime,
+                  ("progress" .=) <$> _oProgress,
+                  ("startTime" .=) <$> _oStartTime,
+                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,
+                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,
+                  ("zone" .=) <$> _oZone,
+                  ("warnings" .=) <$> _oWarnings,
+                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,
+                  ("user" .=) <$> _oUser,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("creationTimestamp" .=) <$> _oCreationTimestamp,
+                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("region" .=) <$> _oRegion,
+                  ("description" .=) <$> _oDescription,
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("clientOperationId" .=) <$> _oClientOperationId])
+
+--
+-- /See:/ 'disksScopedListWarningDataItem' smart constructor.
+data DisksScopedListWarningDataItem = DisksScopedListWarningDataItem'
+    { _dslwdiValue :: !(Maybe Text)
+    , _dslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslwdiValue'
+--
+-- * 'dslwdiKey'
+disksScopedListWarningDataItem
+    :: DisksScopedListWarningDataItem
+disksScopedListWarningDataItem =
+    DisksScopedListWarningDataItem'
+    { _dslwdiValue = Nothing
+    , _dslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)
+dslwdiValue
+  = lens _dslwdiValue (\ s a -> s{_dslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)
+dslwdiKey
+  = lens _dslwdiKey (\ s a -> s{_dslwdiKey = a})
+
+instance FromJSON DisksScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "DisksScopedListWarningDataItem"
+              (\ o ->
+                 DisksScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DisksScopedListWarningDataItem where
+        toJSON DisksScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dslwdiValue,
+                  ("key" .=) <$> _dslwdiKey])
+
+-- | A Disk resource. (== resource_for beta.disks ==) (== resource_for
+-- v1.disks ==)
+--
+-- /See:/ 'disk' smart constructor.
+data Disk = Disk'
+    { _dStatus                      :: !(Maybe DiskStatus)
+    , _dSourceSnapshotId            :: !(Maybe Text)
+    , _dLastAttachTimestamp         :: !(Maybe Text)
+    , _dUsers                       :: !(Maybe [Text])
+    , _dSourceImage                 :: !(Maybe Text)
+    , _dReplicaZones                :: !(Maybe [Text])
+    , _dDiskEncryptionKey           :: !(Maybe CustomerEncryptionKey)
+    , _dSizeGb                      :: !(Maybe (Textual Int64))
+    , _dKind                        :: !Text
+    , _dLastDetachTimestamp         :: !(Maybe Text)
+    , _dGuestOSFeatures             :: !(Maybe [GuestOSFeature])
+    , _dZone                        :: !(Maybe Text)
+    , _dSelfLink                    :: !(Maybe Text)
+    , _dName                        :: !(Maybe Text)
+    , _dSourceImageId               :: !(Maybe Text)
+    , _dCreationTimestamp           :: !(Maybe Text)
+    , _dSourceImageEncryptionKey    :: !(Maybe CustomerEncryptionKey)
+    , _dLicenseCodes                :: !(Maybe [Textual Int64])
+    , _dId                          :: !(Maybe (Textual Word64))
+    , _dLabels                      :: !(Maybe DiskLabels)
+    , _dLicenses                    :: !(Maybe [Text])
+    , _dRegion                      :: !(Maybe Text)
+    , _dOptions                     :: !(Maybe Text)
+    , _dPhysicalBlockSizeBytes      :: !(Maybe (Textual Int64))
+    , _dType                        :: !(Maybe Text)
+    , _dLabelFingerprint            :: !(Maybe Bytes)
+    , _dDescription                 :: !(Maybe Text)
+    , _dSourceSnapshotEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _dSourceSnapshot              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Disk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dStatus'
+--
+-- * 'dSourceSnapshotId'
+--
+-- * 'dLastAttachTimestamp'
+--
+-- * 'dUsers'
+--
+-- * 'dSourceImage'
+--
+-- * 'dReplicaZones'
+--
+-- * 'dDiskEncryptionKey'
+--
+-- * 'dSizeGb'
+--
+-- * 'dKind'
+--
+-- * 'dLastDetachTimestamp'
+--
+-- * 'dGuestOSFeatures'
+--
+-- * 'dZone'
+--
+-- * 'dSelfLink'
+--
+-- * 'dName'
+--
+-- * 'dSourceImageId'
+--
+-- * 'dCreationTimestamp'
+--
+-- * 'dSourceImageEncryptionKey'
+--
+-- * 'dLicenseCodes'
+--
+-- * 'dId'
+--
+-- * 'dLabels'
+--
+-- * 'dLicenses'
+--
+-- * 'dRegion'
+--
+-- * 'dOptions'
+--
+-- * 'dPhysicalBlockSizeBytes'
+--
+-- * 'dType'
+--
+-- * 'dLabelFingerprint'
+--
+-- * 'dDescription'
+--
+-- * 'dSourceSnapshotEncryptionKey'
+--
+-- * 'dSourceSnapshot'
+disk
+    :: Disk
+disk =
+    Disk'
+    { _dStatus = Nothing
+    , _dSourceSnapshotId = Nothing
+    , _dLastAttachTimestamp = Nothing
+    , _dUsers = Nothing
+    , _dSourceImage = Nothing
+    , _dReplicaZones = Nothing
+    , _dDiskEncryptionKey = Nothing
+    , _dSizeGb = Nothing
+    , _dKind = "compute#disk"
+    , _dLastDetachTimestamp = Nothing
+    , _dGuestOSFeatures = Nothing
+    , _dZone = Nothing
+    , _dSelfLink = Nothing
+    , _dName = Nothing
+    , _dSourceImageId = Nothing
+    , _dCreationTimestamp = Nothing
+    , _dSourceImageEncryptionKey = Nothing
+    , _dLicenseCodes = Nothing
+    , _dId = Nothing
+    , _dLabels = Nothing
+    , _dLicenses = Nothing
+    , _dRegion = Nothing
+    , _dOptions = Nothing
+    , _dPhysicalBlockSizeBytes = Nothing
+    , _dType = Nothing
+    , _dLabelFingerprint = Nothing
+    , _dDescription = Nothing
+    , _dSourceSnapshotEncryptionKey = Nothing
+    , _dSourceSnapshot = Nothing
+    }
+
+-- | [Output Only] The status of disk creation.
+dStatus :: Lens' Disk (Maybe DiskStatus)
+dStatus = lens _dStatus (\ s a -> s{_dStatus = a})
+
+-- | [Output Only] The unique ID of the snapshot used to create this disk.
+-- This value identifies the exact snapshot that was used to create this
+-- persistent disk. For example, if you created the persistent disk from a
+-- snapshot that was later deleted and recreated under the same name, the
+-- source snapshot ID would identify the exact version of the snapshot that
+-- was used.
+dSourceSnapshotId :: Lens' Disk (Maybe Text)
+dSourceSnapshotId
+  = lens _dSourceSnapshotId
+      (\ s a -> s{_dSourceSnapshotId = a})
+
+-- | [Output Only] Last attach timestamp in RFC3339 text format.
+dLastAttachTimestamp :: Lens' Disk (Maybe Text)
+dLastAttachTimestamp
+  = lens _dLastAttachTimestamp
+      (\ s a -> s{_dLastAttachTimestamp = a})
+
+-- | [Output Only] Links to the users of the disk (attached instances) in
+-- form: project\/zones\/zone\/instances\/instance
+dUsers :: Lens' Disk [Text]
+dUsers
+  = lens _dUsers (\ s a -> s{_dUsers = a}) . _Default .
+      _Coerce
+
+-- | The source image used to create this disk. If the source image is
+-- deleted, this field will not be set. To create a disk with one of the
+-- public operating system images, specify the image by its family name.
+-- For example, specify family\/debian-9 to use the latest Debian 9 image:
+-- projects\/debian-cloud\/global\/images\/family\/debian-9 Alternatively,
+-- use a specific version of a public operating system image:
+-- projects\/debian-cloud\/global\/images\/debian-9-stretch-vYYYYMMDD To
+-- create a disk with a custom image that you created, specify the image
+-- name in the following format: global\/images\/my-custom-image You can
+-- also specify a custom image by its image family, which returns the
+-- latest version of the image in that family. Replace the image name with
+-- family\/family-name: global\/images\/family\/my-image-family
+dSourceImage :: Lens' Disk (Maybe Text)
+dSourceImage
+  = lens _dSourceImage (\ s a -> s{_dSourceImage = a})
+
+-- | URLs of the zones where the disk should be replicated to. Only
+-- applicable for regional resources.
+dReplicaZones :: Lens' Disk [Text]
+dReplicaZones
+  = lens _dReplicaZones
+      (\ s a -> s{_dReplicaZones = a})
+      . _Default
+      . _Coerce
+
+-- | Encrypts the disk using a customer-supplied encryption key. After you
+-- encrypt a disk with a customer-supplied key, you must provide the same
+-- key if you use the disk later (e.g. to create a disk snapshot or an
+-- image, or to attach the disk to a virtual machine). Customer-supplied
+-- encryption keys do not protect access to metadata of the disk. If you do
+-- not provide an encryption key when creating the disk, then the disk will
+-- be encrypted using an automatically generated key and you do not need to
+-- provide a key to use the disk later.
+dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+dDiskEncryptionKey
+  = lens _dDiskEncryptionKey
+      (\ s a -> s{_dDiskEncryptionKey = a})
+
+-- | Size of the persistent disk, specified in GB. You can specify this field
+-- when creating a persistent disk using the sourceImage or sourceSnapshot
+-- parameter, or specify it alone to create an empty persistent disk. If
+-- you specify this field along with sourceImage or sourceSnapshot, the
+-- value of sizeGb must not be less than the size of the sourceImage or the
+-- size of the snapshot. Acceptable values are 1 to 65536, inclusive.
+dSizeGb :: Lens' Disk (Maybe Int64)
+dSizeGb
+  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#disk for disks.
+dKind :: Lens' Disk Text
+dKind = lens _dKind (\ s a -> s{_dKind = a})
+
+-- | [Output Only] Last detach timestamp in RFC3339 text format.
+dLastDetachTimestamp :: Lens' Disk (Maybe Text)
+dLastDetachTimestamp
+  = lens _dLastDetachTimestamp
+      (\ s a -> s{_dLastDetachTimestamp = a})
+
+-- | A list of features to enable on the guest operating system. Applicable
+-- only for bootable images. Read Enabling guest operating system features
+-- to see a list of available options.
+dGuestOSFeatures :: Lens' Disk [GuestOSFeature]
+dGuestOSFeatures
+  = lens _dGuestOSFeatures
+      (\ s a -> s{_dGuestOSFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] URL of the zone where the disk resides. You must specify
+-- this field as part of the HTTP request URL. It is not settable as a
+-- field in the request body.
+dZone :: Lens' Disk (Maybe Text)
+dZone = lens _dZone (\ s a -> s{_dZone = a})
+
+-- | [Output Only] Server-defined fully-qualified URL for this resource.
+dSelfLink :: Lens' Disk (Maybe Text)
+dSelfLink
+  = lens _dSelfLink (\ s a -> s{_dSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+dName :: Lens' Disk (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a})
+
+-- | [Output Only] The ID value of the image used to create this disk. This
+-- value identifies the exact image that was used to create this persistent
+-- disk. For example, if you created the persistent disk from an image that
+-- was later deleted and recreated under the same name, the source image ID
+-- would identify the exact version of the image that was used.
+dSourceImageId :: Lens' Disk (Maybe Text)
+dSourceImageId
+  = lens _dSourceImageId
+      (\ s a -> s{_dSourceImageId = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+dCreationTimestamp :: Lens' Disk (Maybe Text)
+dCreationTimestamp
+  = lens _dCreationTimestamp
+      (\ s a -> s{_dCreationTimestamp = a})
+
+-- | The customer-supplied encryption key of the source image. Required if
+-- the source image is protected by a customer-supplied encryption key.
+dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+dSourceImageEncryptionKey
+  = lens _dSourceImageEncryptionKey
+      (\ s a -> s{_dSourceImageEncryptionKey = a})
+
+-- | Integer license codes indicating which licenses are attached to this
+-- disk.
+dLicenseCodes :: Lens' Disk [Int64]
+dLicenseCodes
+  = lens _dLicenseCodes
+      (\ s a -> s{_dLicenseCodes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+dId :: Lens' Disk (Maybe Word64)
+dId
+  = lens _dId (\ s a -> s{_dId = a}) . mapping _Coerce
+
+-- | Labels to apply to this disk. These can be later modified by the
+-- setLabels method.
+dLabels :: Lens' Disk (Maybe DiskLabels)
+dLabels = lens _dLabels (\ s a -> s{_dLabels = a})
+
+-- | A list of publicly visible licenses. Reserved for Google\'s use.
+dLicenses :: Lens' Disk [Text]
+dLicenses
+  = lens _dLicenses (\ s a -> s{_dLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] URL of the region where the disk resides. Only applicable
+-- for regional resources. You must specify this field as part of the HTTP
+-- request URL. It is not settable as a field in the request body.
+dRegion :: Lens' Disk (Maybe Text)
+dRegion = lens _dRegion (\ s a -> s{_dRegion = a})
+
+-- | Internal use only.
+dOptions :: Lens' Disk (Maybe Text)
+dOptions = lens _dOptions (\ s a -> s{_dOptions = a})
+
+-- | Physical block size of the persistent disk, in bytes. If not present in
+-- a request, a default value is used. Currently supported sizes are 4096
+-- and 16384, other sizes may be added in the future. If an unsupported
+-- value is requested, the error message will list the supported values for
+-- the caller\'s project.
+dPhysicalBlockSizeBytes :: Lens' Disk (Maybe Int64)
+dPhysicalBlockSizeBytes
+  = lens _dPhysicalBlockSizeBytes
+      (\ s a -> s{_dPhysicalBlockSizeBytes = a})
+      . mapping _Coerce
+
+-- | URL of the disk type resource describing which disk type to use to
+-- create the disk. Provide this when creating the disk. For example:
+-- project\/zones\/zone\/diskTypes\/pd-standard or pd-ssd
+dType :: Lens' Disk (Maybe Text)
+dType = lens _dType (\ s a -> s{_dType = a})
+
+-- | A fingerprint for the labels being applied to this disk, which is
+-- essentially a hash of the labels set used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update labels. You must always provide an
+-- up-to-date fingerprint hash in order to update or change labels,
+-- otherwise the request will fail with error 412 conditionNotMet. To see
+-- the latest fingerprint, make a get() request to retrieve a disk.
+dLabelFingerprint :: Lens' Disk (Maybe ByteString)
+dLabelFingerprint
+  = lens _dLabelFingerprint
+      (\ s a -> s{_dLabelFingerprint = a})
+      . mapping _Bytes
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+dDescription :: Lens' Disk (Maybe Text)
+dDescription
+  = lens _dDescription (\ s a -> s{_dDescription = a})
+
+-- | The customer-supplied encryption key of the source snapshot. Required if
+-- the source snapshot is protected by a customer-supplied encryption key.
+dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+dSourceSnapshotEncryptionKey
+  = lens _dSourceSnapshotEncryptionKey
+      (\ s a -> s{_dSourceSnapshotEncryptionKey = a})
+
+-- | The source snapshot used to create this disk. You can provide this as a
+-- partial or full URL to the resource. For example, the following are
+-- valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/snapshots\/snapshot
+-- - projects\/project\/global\/snapshots\/snapshot -
+-- global\/snapshots\/snapshot
+dSourceSnapshot :: Lens' Disk (Maybe Text)
+dSourceSnapshot
+  = lens _dSourceSnapshot
+      (\ s a -> s{_dSourceSnapshot = a})
+
+instance FromJSON Disk where
+        parseJSON
+          = withObject "Disk"
+              (\ o ->
+                 Disk' <$>
+                   (o .:? "status") <*> (o .:? "sourceSnapshotId") <*>
+                     (o .:? "lastAttachTimestamp")
+                     <*> (o .:? "users" .!= mempty)
+                     <*> (o .:? "sourceImage")
+                     <*> (o .:? "replicaZones" .!= mempty)
+                     <*> (o .:? "diskEncryptionKey")
+                     <*> (o .:? "sizeGb")
+                     <*> (o .:? "kind" .!= "compute#disk")
+                     <*> (o .:? "lastDetachTimestamp")
+                     <*> (o .:? "guestOsFeatures" .!= mempty)
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "sourceImageId")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "sourceImageEncryptionKey")
+                     <*> (o .:? "licenseCodes" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "region")
+                     <*> (o .:? "options")
+                     <*> (o .:? "physicalBlockSizeBytes")
+                     <*> (o .:? "type")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description")
+                     <*> (o .:? "sourceSnapshotEncryptionKey")
+                     <*> (o .:? "sourceSnapshot"))
+
+instance ToJSON Disk where
+        toJSON Disk'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _dStatus,
+                  ("sourceSnapshotId" .=) <$> _dSourceSnapshotId,
+                  ("lastAttachTimestamp" .=) <$> _dLastAttachTimestamp,
+                  ("users" .=) <$> _dUsers,
+                  ("sourceImage" .=) <$> _dSourceImage,
+                  ("replicaZones" .=) <$> _dReplicaZones,
+                  ("diskEncryptionKey" .=) <$> _dDiskEncryptionKey,
+                  ("sizeGb" .=) <$> _dSizeGb, Just ("kind" .= _dKind),
+                  ("lastDetachTimestamp" .=) <$> _dLastDetachTimestamp,
+                  ("guestOsFeatures" .=) <$> _dGuestOSFeatures,
+                  ("zone" .=) <$> _dZone,
+                  ("selfLink" .=) <$> _dSelfLink,
+                  ("name" .=) <$> _dName,
+                  ("sourceImageId" .=) <$> _dSourceImageId,
+                  ("creationTimestamp" .=) <$> _dCreationTimestamp,
+                  ("sourceImageEncryptionKey" .=) <$>
+                    _dSourceImageEncryptionKey,
+                  ("licenseCodes" .=) <$> _dLicenseCodes,
+                  ("id" .=) <$> _dId, ("labels" .=) <$> _dLabels,
+                  ("licenses" .=) <$> _dLicenses,
+                  ("region" .=) <$> _dRegion,
+                  ("options" .=) <$> _dOptions,
+                  ("physicalBlockSizeBytes" .=) <$>
+                    _dPhysicalBlockSizeBytes,
+                  ("type" .=) <$> _dType,
+                  ("labelFingerprint" .=) <$> _dLabelFingerprint,
+                  ("description" .=) <$> _dDescription,
+                  ("sourceSnapshotEncryptionKey" .=) <$>
+                    _dSourceSnapshotEncryptionKey,
+                  ("sourceSnapshot" .=) <$> _dSourceSnapshot])
+
+--
+-- /See:/ 'usableSubnetworksAggregatedListWarningDataItem' smart constructor.
+data UsableSubnetworksAggregatedListWarningDataItem = UsableSubnetworksAggregatedListWarningDataItem'
+    { _usalwdiValue :: !(Maybe Text)
+    , _usalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsableSubnetworksAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usalwdiValue'
+--
+-- * 'usalwdiKey'
+usableSubnetworksAggregatedListWarningDataItem
+    :: UsableSubnetworksAggregatedListWarningDataItem
+usableSubnetworksAggregatedListWarningDataItem =
+    UsableSubnetworksAggregatedListWarningDataItem'
+    { _usalwdiValue = Nothing
+    , _usalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+usalwdiValue :: Lens' UsableSubnetworksAggregatedListWarningDataItem (Maybe Text)
+usalwdiValue
+  = lens _usalwdiValue (\ s a -> s{_usalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+usalwdiKey :: Lens' UsableSubnetworksAggregatedListWarningDataItem (Maybe Text)
+usalwdiKey
+  = lens _usalwdiKey (\ s a -> s{_usalwdiKey = a})
+
+instance FromJSON
+         UsableSubnetworksAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "UsableSubnetworksAggregatedListWarningDataItem"
+              (\ o ->
+                 UsableSubnetworksAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         UsableSubnetworksAggregatedListWarningDataItem where
+        toJSON
+          UsableSubnetworksAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _usalwdiValue,
+                  ("key" .=) <$> _usalwdiKey])
+
+-- | Contains a list of nodeGroups.
+--
+-- /See:/ 'nodeGroupList' smart constructor.
+data NodeGroupList = NodeGroupList'
+    { _nglNextPageToken :: !(Maybe Text)
+    , _nglKind          :: !Text
+    , _nglItems         :: !(Maybe [NodeGroup])
+    , _nglSelfLink      :: !(Maybe Text)
+    , _nglWarning       :: !(Maybe NodeGroupListWarning)
+    , _nglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglNextPageToken'
+--
+-- * 'nglKind'
+--
+-- * 'nglItems'
+--
+-- * 'nglSelfLink'
+--
+-- * 'nglWarning'
+--
+-- * 'nglId'
+nodeGroupList
+    :: NodeGroupList
+nodeGroupList =
+    NodeGroupList'
+    { _nglNextPageToken = Nothing
+    , _nglKind = "compute#nodeGroupList"
+    , _nglItems = Nothing
+    , _nglSelfLink = Nothing
+    , _nglWarning = Nothing
+    , _nglId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+nglNextPageToken :: Lens' NodeGroupList (Maybe Text)
+nglNextPageToken
+  = lens _nglNextPageToken
+      (\ s a -> s{_nglNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeGroupList for lists of
+-- node groups.
+nglKind :: Lens' NodeGroupList Text
+nglKind = lens _nglKind (\ s a -> s{_nglKind = a})
+
+-- | A list of NodeGroup resources.
+nglItems :: Lens' NodeGroupList [NodeGroup]
+nglItems
+  = lens _nglItems (\ s a -> s{_nglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+nglSelfLink :: Lens' NodeGroupList (Maybe Text)
+nglSelfLink
+  = lens _nglSelfLink (\ s a -> s{_nglSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+nglWarning :: Lens' NodeGroupList (Maybe NodeGroupListWarning)
+nglWarning
+  = lens _nglWarning (\ s a -> s{_nglWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+nglId :: Lens' NodeGroupList (Maybe Text)
+nglId = lens _nglId (\ s a -> s{_nglId = a})
+
+instance FromJSON NodeGroupList where
+        parseJSON
+          = withObject "NodeGroupList"
+              (\ o ->
+                 NodeGroupList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeGroupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeGroupList where
+        toJSON NodeGroupList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _nglNextPageToken,
+                  Just ("kind" .= _nglKind),
+                  ("items" .=) <$> _nglItems,
+                  ("selfLink" .=) <$> _nglSelfLink,
+                  ("warning" .=) <$> _nglWarning,
+                  ("id" .=) <$> _nglId])
+
+--
+-- /See:/ 'diskMoveRequest' smart constructor.
+data DiskMoveRequest = DiskMoveRequest'
+    { _dmrTargetDisk      :: !(Maybe Text)
+    , _dmrDestinationZone :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskMoveRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmrTargetDisk'
+--
+-- * 'dmrDestinationZone'
+diskMoveRequest
+    :: DiskMoveRequest
+diskMoveRequest =
+    DiskMoveRequest'
+    { _dmrTargetDisk = Nothing
+    , _dmrDestinationZone = Nothing
+    }
+
+-- | The URL of the target disk to move. This can be a full or partial URL.
+-- For example, the following are all valid URLs to a disk: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk
+-- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk
+dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)
+dmrTargetDisk
+  = lens _dmrTargetDisk
+      (\ s a -> s{_dmrTargetDisk = a})
+
+-- | The URL of the destination zone to move the disk. This can be a full or
+-- partial URL. For example, the following are all valid URLs to a zone: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
+-- - projects\/project\/zones\/zone - zones\/zone
+dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)
+dmrDestinationZone
+  = lens _dmrDestinationZone
+      (\ s a -> s{_dmrDestinationZone = a})
+
+instance FromJSON DiskMoveRequest where
+        parseJSON
+          = withObject "DiskMoveRequest"
+              (\ o ->
+                 DiskMoveRequest' <$>
+                   (o .:? "targetDisk") <*> (o .:? "destinationZone"))
+
+instance ToJSON DiskMoveRequest where
+        toJSON DiskMoveRequest'{..}
+          = object
+              (catMaybes
+                 [("targetDisk" .=) <$> _dmrTargetDisk,
+                  ("destinationZone" .=) <$> _dmrDestinationZone])
+
+--
+-- /See:/ 'sslPolicyWarningsItemDataItem' smart constructor.
+data SSLPolicyWarningsItemDataItem = SSLPolicyWarningsItemDataItem'
+    { _spwidiValue :: !(Maybe Text)
+    , _spwidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPolicyWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spwidiValue'
+--
+-- * 'spwidiKey'
+sslPolicyWarningsItemDataItem
+    :: SSLPolicyWarningsItemDataItem
+sslPolicyWarningsItemDataItem =
+    SSLPolicyWarningsItemDataItem'
+    { _spwidiValue = Nothing
+    , _spwidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+spwidiValue :: Lens' SSLPolicyWarningsItemDataItem (Maybe Text)
+spwidiValue
+  = lens _spwidiValue (\ s a -> s{_spwidiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+spwidiKey :: Lens' SSLPolicyWarningsItemDataItem (Maybe Text)
+spwidiKey
+  = lens _spwidiKey (\ s a -> s{_spwidiKey = a})
+
+instance FromJSON SSLPolicyWarningsItemDataItem where
+        parseJSON
+          = withObject "SSLPolicyWarningsItemDataItem"
+              (\ o ->
+                 SSLPolicyWarningsItemDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SSLPolicyWarningsItemDataItem where
+        toJSON SSLPolicyWarningsItemDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _spwidiValue,
+                  ("key" .=) <$> _spwidiKey])
+
+-- | Configuration parameters of autoscaling based on load balancing.
+--
+-- /See:/ 'autoscalingPolicyLoadBalancingUtilization' smart constructor.
+newtype AutoscalingPolicyLoadBalancingUtilization = AutoscalingPolicyLoadBalancingUtilization'
+    { _aplbuUtilizationTarget :: Maybe (Textual Double)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyLoadBalancingUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aplbuUtilizationTarget'
+autoscalingPolicyLoadBalancingUtilization
+    :: AutoscalingPolicyLoadBalancingUtilization
+autoscalingPolicyLoadBalancingUtilization =
+    AutoscalingPolicyLoadBalancingUtilization'
+    { _aplbuUtilizationTarget = Nothing
+    }
+
+-- | Fraction of backend capacity utilization (set in HTTP(s) load balancing
+-- configuration) that autoscaler should maintain. Must be a positive float
+-- value. If not defined, the default is 0.8.
+aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)
+aplbuUtilizationTarget
+  = lens _aplbuUtilizationTarget
+      (\ s a -> s{_aplbuUtilizationTarget = a})
+      . mapping _Coerce
+
+instance FromJSON
+         AutoscalingPolicyLoadBalancingUtilization where
+        parseJSON
+          = withObject
+              "AutoscalingPolicyLoadBalancingUtilization"
+              (\ o ->
+                 AutoscalingPolicyLoadBalancingUtilization' <$>
+                   (o .:? "utilizationTarget"))
+
+instance ToJSON
+         AutoscalingPolicyLoadBalancingUtilization where
+        toJSON AutoscalingPolicyLoadBalancingUtilization'{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _aplbuUtilizationTarget])
+
+--
+-- /See:/ 'forwardingRuleAggregatedListWarningDataItem' smart constructor.
+data ForwardingRuleAggregatedListWarningDataItem = ForwardingRuleAggregatedListWarningDataItem'
+    { _fralwdiValue :: !(Maybe Text)
+    , _fralwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fralwdiValue'
+--
+-- * 'fralwdiKey'
+forwardingRuleAggregatedListWarningDataItem
+    :: ForwardingRuleAggregatedListWarningDataItem
+forwardingRuleAggregatedListWarningDataItem =
+    ForwardingRuleAggregatedListWarningDataItem'
+    { _fralwdiValue = Nothing
+    , _fralwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+fralwdiValue :: Lens' ForwardingRuleAggregatedListWarningDataItem (Maybe Text)
+fralwdiValue
+  = lens _fralwdiValue (\ s a -> s{_fralwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+fralwdiKey :: Lens' ForwardingRuleAggregatedListWarningDataItem (Maybe Text)
+fralwdiKey
+  = lens _fralwdiKey (\ s a -> s{_fralwdiKey = a})
+
+instance FromJSON
+         ForwardingRuleAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "ForwardingRuleAggregatedListWarningDataItem"
+              (\ o ->
+                 ForwardingRuleAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         ForwardingRuleAggregatedListWarningDataItem where
+        toJSON
+          ForwardingRuleAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _fralwdiValue,
+                  ("key" .=) <$> _fralwdiKey])
+
+--
+-- /See:/ 'targetPoolsScopedListWarningDataItem' smart constructor.
+data TargetPoolsScopedListWarningDataItem = TargetPoolsScopedListWarningDataItem'
+    { _tpslwdiValue :: !(Maybe Text)
+    , _tpslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslwdiValue'
+--
+-- * 'tpslwdiKey'
+targetPoolsScopedListWarningDataItem
+    :: TargetPoolsScopedListWarningDataItem
+targetPoolsScopedListWarningDataItem =
+    TargetPoolsScopedListWarningDataItem'
+    { _tpslwdiValue = Nothing
+    , _tpslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
+tpslwdiValue
+  = lens _tpslwdiValue (\ s a -> s{_tpslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
+tpslwdiKey
+  = lens _tpslwdiKey (\ s a -> s{_tpslwdiKey = a})
+
+instance FromJSON
+         TargetPoolsScopedListWarningDataItem where
+        parseJSON
+          = withObject "TargetPoolsScopedListWarningDataItem"
+              (\ o ->
+                 TargetPoolsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetPoolsScopedListWarningDataItem
+         where
+        toJSON TargetPoolsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tpslwdiValue,
+                  ("key" .=) <$> _tpslwdiKey])
+
+-- | An Instance Group Manager resource. (== resource_for
+-- beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers
+-- ==) (== resource_for beta.regionInstanceGroupManagers ==) (==
+-- resource_for v1.regionInstanceGroupManagers ==)
+--
+-- /See:/ 'instanceGroupManager' smart constructor.
+data InstanceGroupManager = InstanceGroupManager'
+    { _igmKind               :: !Text
+    , _igmFingerprint        :: !(Maybe Bytes)
+    , _igmBaseInstanceName   :: !(Maybe Text)
+    , _igmZone               :: !(Maybe Text)
+    , _igmInstanceTemplate   :: !(Maybe Text)
+    , _igmTargetSize         :: !(Maybe (Textual Int32))
+    , _igmSelfLink           :: !(Maybe Text)
+    , _igmCurrentActions     :: !(Maybe InstanceGroupManagerActionsSummary)
+    , _igmName               :: !(Maybe Text)
+    , _igmCreationTimestamp  :: !(Maybe Text)
+    , _igmDistributionPolicy :: !(Maybe DistributionPolicy)
+    , _igmId                 :: !(Maybe (Textual Word64))
+    , _igmRegion             :: !(Maybe Text)
+    , _igmTargetPools        :: !(Maybe [Text])
+    , _igmDescription        :: !(Maybe Text)
+    , _igmInstanceGroup      :: !(Maybe Text)
+    , _igmNamedPorts         :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManager' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmKind'
+--
+-- * 'igmFingerprint'
+--
+-- * 'igmBaseInstanceName'
+--
+-- * 'igmZone'
+--
+-- * 'igmInstanceTemplate'
+--
+-- * 'igmTargetSize'
+--
+-- * 'igmSelfLink'
+--
+-- * 'igmCurrentActions'
+--
+-- * 'igmName'
+--
+-- * 'igmCreationTimestamp'
+--
+-- * 'igmDistributionPolicy'
+--
+-- * 'igmId'
+--
+-- * 'igmRegion'
+--
+-- * 'igmTargetPools'
+--
+-- * 'igmDescription'
+--
+-- * 'igmInstanceGroup'
+--
+-- * 'igmNamedPorts'
+instanceGroupManager
+    :: InstanceGroupManager
+instanceGroupManager =
+    InstanceGroupManager'
+    { _igmKind = "compute#instanceGroupManager"
+    , _igmFingerprint = Nothing
+    , _igmBaseInstanceName = Nothing
+    , _igmZone = Nothing
+    , _igmInstanceTemplate = Nothing
+    , _igmTargetSize = Nothing
+    , _igmSelfLink = Nothing
+    , _igmCurrentActions = Nothing
+    , _igmName = Nothing
+    , _igmCreationTimestamp = Nothing
+    , _igmDistributionPolicy = Nothing
+    , _igmId = Nothing
+    , _igmRegion = Nothing
+    , _igmTargetPools = Nothing
+    , _igmDescription = Nothing
+    , _igmInstanceGroup = Nothing
+    , _igmNamedPorts = Nothing
+    }
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManager for managed instance groups.
+igmKind :: Lens' InstanceGroupManager Text
+igmKind = lens _igmKind (\ s a -> s{_igmKind = a})
+
+-- | Fingerprint of this resource. This field may be used in optimistic
+-- locking. It will be ignored when inserting an InstanceGroupManager. An
+-- up-to-date fingerprint must be provided in order to update the
+-- InstanceGroupManager, otherwise the request will fail with error 412
+-- conditionNotMet. To see the latest fingerprint, make a get() request to
+-- retrieve an InstanceGroupManager.
+igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)
+igmFingerprint
+  = lens _igmFingerprint
+      (\ s a -> s{_igmFingerprint = a})
+      . mapping _Bytes
+
+-- | The base instance name to use for instances in this group. The value
+-- must be 1-58 characters long. Instances are named by appending a hyphen
+-- and a random four-character string to the base instance name. The base
+-- instance name must comply with RFC1035.
+igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)
+igmBaseInstanceName
+  = lens _igmBaseInstanceName
+      (\ s a -> s{_igmBaseInstanceName = a})
+
+-- | [Output Only] The URL of the zone where the managed instance group is
+-- located (for zonal resources).
+igmZone :: Lens' InstanceGroupManager (Maybe Text)
+igmZone = lens _igmZone (\ s a -> s{_igmZone = a})
+
+-- | The URL of the instance template that is specified for this managed
+-- instance group. The group uses this template to create all new instances
+-- in the managed instance group.
+igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)
+igmInstanceTemplate
+  = lens _igmInstanceTemplate
+      (\ s a -> s{_igmInstanceTemplate = a})
+
+-- | The target number of running instances for this managed instance group.
+-- Deleting or abandoning instances reduces this number. Resizing the group
+-- changes this number.
+igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)
+igmTargetSize
+  = lens _igmTargetSize
+      (\ s a -> s{_igmTargetSize = a})
+      . mapping _Coerce
+
+-- | [Output Only] The URL for this managed instance group. The server
+-- defines this URL.
+igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)
+igmSelfLink
+  = lens _igmSelfLink (\ s a -> s{_igmSelfLink = a})
+
+-- | [Output Only] The list of instance actions and the number of instances
+-- in this managed instance group that are scheduled for each of those
+-- actions.
+igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)
+igmCurrentActions
+  = lens _igmCurrentActions
+      (\ s a -> s{_igmCurrentActions = a})
+
+-- | The name of the managed instance group. The name must be 1-63 characters
+-- long, and comply with RFC1035.
+igmName :: Lens' InstanceGroupManager (Maybe Text)
+igmName = lens _igmName (\ s a -> s{_igmName = a})
+
+-- | [Output Only] The creation timestamp for this managed instance group in
+-- RFC3339 text format.
+igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)
+igmCreationTimestamp
+  = lens _igmCreationTimestamp
+      (\ s a -> s{_igmCreationTimestamp = a})
+
+-- | Policy specifying intended distribution of instances in regional managed
+-- instance group.
+igmDistributionPolicy :: Lens' InstanceGroupManager (Maybe DistributionPolicy)
+igmDistributionPolicy
+  = lens _igmDistributionPolicy
+      (\ s a -> s{_igmDistributionPolicy = a})
+
+-- | [Output Only] A unique identifier for this resource type. The server
+-- generates this identifier.
+igmId :: Lens' InstanceGroupManager (Maybe Word64)
+igmId
+  = lens _igmId (\ s a -> s{_igmId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The URL of the region where the managed instance group
+-- resides (for regional resources).
+igmRegion :: Lens' InstanceGroupManager (Maybe Text)
+igmRegion
+  = lens _igmRegion (\ s a -> s{_igmRegion = a})
+
+-- | The URLs for all TargetPool resources to which instances in the
+-- instanceGroup field are added. The target pools automatically apply to
+-- all of the instances in the managed instance group.
+igmTargetPools :: Lens' InstanceGroupManager [Text]
+igmTargetPools
+  = lens _igmTargetPools
+      (\ s a -> s{_igmTargetPools = a})
+      . _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+igmDescription :: Lens' InstanceGroupManager (Maybe Text)
+igmDescription
+  = lens _igmDescription
+      (\ s a -> s{_igmDescription = a})
+
+-- | [Output Only] The URL of the Instance Group resource.
+igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)
+igmInstanceGroup
+  = lens _igmInstanceGroup
+      (\ s a -> s{_igmInstanceGroup = a})
+
+-- | Named ports configured for the Instance Groups complementary to this
+-- Instance Group Manager.
+igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]
+igmNamedPorts
+  = lens _igmNamedPorts
+      (\ s a -> s{_igmNamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupManager where
+        parseJSON
+          = withObject "InstanceGroupManager"
+              (\ o ->
+                 InstanceGroupManager' <$>
+                   (o .:? "kind" .!= "compute#instanceGroupManager") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "baseInstanceName")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "instanceTemplate")
+                     <*> (o .:? "targetSize")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "currentActions")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "distributionPolicy")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "targetPools" .!= mempty)
+                     <*> (o .:? "description")
+                     <*> (o .:? "instanceGroup")
+                     <*> (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON InstanceGroupManager where
+        toJSON InstanceGroupManager'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _igmKind),
+                  ("fingerprint" .=) <$> _igmFingerprint,
+                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,
+                  ("zone" .=) <$> _igmZone,
+                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,
+                  ("targetSize" .=) <$> _igmTargetSize,
+                  ("selfLink" .=) <$> _igmSelfLink,
+                  ("currentActions" .=) <$> _igmCurrentActions,
+                  ("name" .=) <$> _igmName,
+                  ("creationTimestamp" .=) <$> _igmCreationTimestamp,
+                  ("distributionPolicy" .=) <$> _igmDistributionPolicy,
+                  ("id" .=) <$> _igmId, ("region" .=) <$> _igmRegion,
+                  ("targetPools" .=) <$> _igmTargetPools,
+                  ("description" .=) <$> _igmDescription,
+                  ("instanceGroup" .=) <$> _igmInstanceGroup,
+                  ("namedPorts" .=) <$> _igmNamedPorts])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceGroupManagerListWarning' smart constructor.
+data InstanceGroupManagerListWarning = InstanceGroupManagerListWarning'
+    { _igmlwData    :: !(Maybe [InstanceGroupManagerListWarningDataItem])
+    , _igmlwCode    :: !(Maybe InstanceGroupManagerListWarningCode)
+    , _igmlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlwData'
+--
+-- * 'igmlwCode'
+--
+-- * 'igmlwMessage'
+instanceGroupManagerListWarning
+    :: InstanceGroupManagerListWarning
+instanceGroupManagerListWarning =
+    InstanceGroupManagerListWarning'
+    { _igmlwData = Nothing
+    , _igmlwCode = Nothing
+    , _igmlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igmlwData :: Lens' InstanceGroupManagerListWarning [InstanceGroupManagerListWarningDataItem]
+igmlwData
+  = lens _igmlwData (\ s a -> s{_igmlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igmlwCode :: Lens' InstanceGroupManagerListWarning (Maybe InstanceGroupManagerListWarningCode)
+igmlwCode
+  = lens _igmlwCode (\ s a -> s{_igmlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igmlwMessage :: Lens' InstanceGroupManagerListWarning (Maybe Text)
+igmlwMessage
+  = lens _igmlwMessage (\ s a -> s{_igmlwMessage = a})
+
+instance FromJSON InstanceGroupManagerListWarning
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerListWarning"
+              (\ o ->
+                 InstanceGroupManagerListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupManagerListWarning where
+        toJSON InstanceGroupManagerListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igmlwData,
+                  ("code" .=) <$> _igmlwCode,
+                  ("message" .=) <$> _igmlwMessage])
+
+--
+-- /See:/ 'regionInstanceGroupsListInstances' smart constructor.
+data RegionInstanceGroupsListInstances = RegionInstanceGroupsListInstances'
+    { _rigliNextPageToken :: !(Maybe Text)
+    , _rigliKind          :: !Text
+    , _rigliItems         :: !(Maybe [InstanceWithNamedPorts])
+    , _rigliSelfLink      :: !(Maybe Text)
+    , _rigliWarning       :: !(Maybe RegionInstanceGroupsListInstancesWarning)
+    , _rigliId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupsListInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigliNextPageToken'
+--
+-- * 'rigliKind'
+--
+-- * 'rigliItems'
+--
+-- * 'rigliSelfLink'
+--
+-- * 'rigliWarning'
+--
+-- * 'rigliId'
+regionInstanceGroupsListInstances
+    :: RegionInstanceGroupsListInstances
+regionInstanceGroupsListInstances =
+    RegionInstanceGroupsListInstances'
+    { _rigliNextPageToken = Nothing
+    , _rigliKind = "compute#regionInstanceGroupsListInstances"
+    , _rigliItems = Nothing
+    , _rigliSelfLink = Nothing
+    , _rigliWarning = Nothing
+    , _rigliId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rigliNextPageToken :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
+rigliNextPageToken
+  = lens _rigliNextPageToken
+      (\ s a -> s{_rigliNextPageToken = a})
+
+-- | The resource type.
+rigliKind :: Lens' RegionInstanceGroupsListInstances Text
+rigliKind
+  = lens _rigliKind (\ s a -> s{_rigliKind = a})
+
+-- | A list of InstanceWithNamedPorts resources.
+rigliItems :: Lens' RegionInstanceGroupsListInstances [InstanceWithNamedPorts]
+rigliItems
+  = lens _rigliItems (\ s a -> s{_rigliItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rigliSelfLink :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
+rigliSelfLink
+  = lens _rigliSelfLink
+      (\ s a -> s{_rigliSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rigliWarning :: Lens' RegionInstanceGroupsListInstances (Maybe RegionInstanceGroupsListInstancesWarning)
+rigliWarning
+  = lens _rigliWarning (\ s a -> s{_rigliWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rigliId :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
+rigliId = lens _rigliId (\ s a -> s{_rigliId = a})
+
+instance FromJSON RegionInstanceGroupsListInstances
+         where
+        parseJSON
+          = withObject "RegionInstanceGroupsListInstances"
+              (\ o ->
+                 RegionInstanceGroupsListInstances' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#regionInstanceGroupsListInstances")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionInstanceGroupsListInstances
+         where
+        toJSON RegionInstanceGroupsListInstances'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rigliNextPageToken,
+                  Just ("kind" .= _rigliKind),
+                  ("items" .=) <$> _rigliItems,
+                  ("selfLink" .=) <$> _rigliSelfLink,
+                  ("warning" .=) <$> _rigliWarning,
+                  ("id" .=) <$> _rigliId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'diskListWarning' smart constructor.
+data DiskListWarning = DiskListWarning'
+    { _dlwData    :: !(Maybe [DiskListWarningDataItem])
+    , _dlwCode    :: !(Maybe DiskListWarningCode)
+    , _dlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlwData'
+--
+-- * 'dlwCode'
+--
+-- * 'dlwMessage'
+diskListWarning
+    :: DiskListWarning
+diskListWarning =
+    DiskListWarning'
+    { _dlwData = Nothing
+    , _dlwCode = Nothing
+    , _dlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dlwData :: Lens' DiskListWarning [DiskListWarningDataItem]
+dlwData
+  = lens _dlwData (\ s a -> s{_dlwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dlwCode :: Lens' DiskListWarning (Maybe DiskListWarningCode)
+dlwCode = lens _dlwCode (\ s a -> s{_dlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dlwMessage :: Lens' DiskListWarning (Maybe Text)
+dlwMessage
+  = lens _dlwMessage (\ s a -> s{_dlwMessage = a})
+
+instance FromJSON DiskListWarning where
+        parseJSON
+          = withObject "DiskListWarning"
+              (\ o ->
+                 DiskListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskListWarning where
+        toJSON DiskListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dlwData, ("code" .=) <$> _dlwCode,
+                  ("message" .=) <$> _dlwMessage])
+
+--
+-- /See:/ 'tcpHealthCheck' smart constructor.
+data TCPHealthCheck = TCPHealthCheck'
+    { _thcResponse    :: !(Maybe Text)
+    , _thcProxyHeader :: !(Maybe TCPHealthCheckProxyHeader)
+    , _thcPortName    :: !(Maybe Text)
+    , _thcPort        :: !(Maybe (Textual Int32))
+    , _thcRequest     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TCPHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thcResponse'
+--
+-- * 'thcProxyHeader'
+--
+-- * 'thcPortName'
+--
+-- * 'thcPort'
+--
+-- * 'thcRequest'
+tcpHealthCheck
+    :: TCPHealthCheck
+tcpHealthCheck =
+    TCPHealthCheck'
+    { _thcResponse = Nothing
+    , _thcProxyHeader = Nothing
+    , _thcPortName = Nothing
+    , _thcPort = Nothing
+    , _thcRequest = Nothing
+    }
+
+-- | The bytes to match against the beginning of the response data. If left
+-- empty (the default value), any response will indicate health. The
+-- response data can only be ASCII.
+thcResponse :: Lens' TCPHealthCheck (Maybe Text)
+thcResponse
+  = lens _thcResponse (\ s a -> s{_thcResponse = a})
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)
+thcProxyHeader
+  = lens _thcProxyHeader
+      (\ s a -> s{_thcProxyHeader = a})
+
+-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
+-- port_name are defined, port takes precedence.
+thcPortName :: Lens' TCPHealthCheck (Maybe Text)
+thcPortName
+  = lens _thcPortName (\ s a -> s{_thcPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 80. Valid values are 1 through 65535.
+thcPort :: Lens' TCPHealthCheck (Maybe Int32)
+thcPort
+  = lens _thcPort (\ s a -> s{_thcPort = a}) .
+      mapping _Coerce
+
+-- | The application data to send once the TCP connection has been
+-- established (default value is empty). If both request and response are
+-- empty, the connection establishment alone will indicate health. The
+-- request data can only be ASCII.
+thcRequest :: Lens' TCPHealthCheck (Maybe Text)
+thcRequest
+  = lens _thcRequest (\ s a -> s{_thcRequest = a})
+
+instance FromJSON TCPHealthCheck where
+        parseJSON
+          = withObject "TCPHealthCheck"
+              (\ o ->
+                 TCPHealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "proxyHeader") <*>
+                     (o .:? "portName")
+                     <*> (o .:? "port")
+                     <*> (o .:? "request"))
+
+instance ToJSON TCPHealthCheck where
+        toJSON TCPHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _thcResponse,
+                  ("proxyHeader" .=) <$> _thcProxyHeader,
+                  ("portName" .=) <$> _thcPortName,
+                  ("port" .=) <$> _thcPort,
+                  ("request" .=) <$> _thcRequest])
+
+--
+-- /See:/ 'instanceGroupManagerAggregatedListWarningDataItem' smart constructor.
+data InstanceGroupManagerAggregatedListWarningDataItem = InstanceGroupManagerAggregatedListWarningDataItem'
+    { _igmalwdiValue :: !(Maybe Text)
+    , _igmalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmalwdiValue'
+--
+-- * 'igmalwdiKey'
+instanceGroupManagerAggregatedListWarningDataItem
+    :: InstanceGroupManagerAggregatedListWarningDataItem
+instanceGroupManagerAggregatedListWarningDataItem =
+    InstanceGroupManagerAggregatedListWarningDataItem'
+    { _igmalwdiValue = Nothing
+    , _igmalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igmalwdiValue :: Lens' InstanceGroupManagerAggregatedListWarningDataItem (Maybe Text)
+igmalwdiValue
+  = lens _igmalwdiValue
+      (\ s a -> s{_igmalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igmalwdiKey :: Lens' InstanceGroupManagerAggregatedListWarningDataItem (Maybe Text)
+igmalwdiKey
+  = lens _igmalwdiKey (\ s a -> s{_igmalwdiKey = a})
+
+instance FromJSON
+         InstanceGroupManagerAggregatedListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "InstanceGroupManagerAggregatedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupManagerAggregatedListWarningDataItem'
+                   <$> (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupManagerAggregatedListWarningDataItem
+         where
+        toJSON
+          InstanceGroupManagerAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igmalwdiValue,
+                  ("key" .=) <$> _igmalwdiKey])
+
+--
+-- /See:/ 'testPermissionsResponse' smart constructor.
+newtype TestPermissionsResponse = TestPermissionsResponse'
+    { _tprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprPermissions'
+testPermissionsResponse
+    :: TestPermissionsResponse
+testPermissionsResponse =
+    TestPermissionsResponse'
+    { _tprPermissions = Nothing
+    }
+
+-- | A subset of \`TestPermissionsRequest.permissions\` that the caller is
+-- allowed.
+tprPermissions :: Lens' TestPermissionsResponse [Text]
+tprPermissions
+  = lens _tprPermissions
+      (\ s a -> s{_tprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestPermissionsResponse where
+        parseJSON
+          = withObject "TestPermissionsResponse"
+              (\ o ->
+                 TestPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestPermissionsResponse where
+        toJSON TestPermissionsResponse'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tprPermissions])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionAutoscalerListWarning' smart constructor.
+data RegionAutoscalerListWarning = RegionAutoscalerListWarning'
+    { _ralwData    :: !(Maybe [RegionAutoscalerListWarningDataItem])
+    , _ralwCode    :: !(Maybe RegionAutoscalerListWarningCode)
+    , _ralwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionAutoscalerListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ralwData'
+--
+-- * 'ralwCode'
+--
+-- * 'ralwMessage'
+regionAutoscalerListWarning
+    :: RegionAutoscalerListWarning
+regionAutoscalerListWarning =
+    RegionAutoscalerListWarning'
+    { _ralwData = Nothing
+    , _ralwCode = Nothing
+    , _ralwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ralwData :: Lens' RegionAutoscalerListWarning [RegionAutoscalerListWarningDataItem]
+ralwData
+  = lens _ralwData (\ s a -> s{_ralwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ralwCode :: Lens' RegionAutoscalerListWarning (Maybe RegionAutoscalerListWarningCode)
+ralwCode = lens _ralwCode (\ s a -> s{_ralwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ralwMessage :: Lens' RegionAutoscalerListWarning (Maybe Text)
+ralwMessage
+  = lens _ralwMessage (\ s a -> s{_ralwMessage = a})
+
+instance FromJSON RegionAutoscalerListWarning where
+        parseJSON
+          = withObject "RegionAutoscalerListWarning"
+              (\ o ->
+                 RegionAutoscalerListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RegionAutoscalerListWarning where
+        toJSON RegionAutoscalerListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ralwData,
+                  ("code" .=) <$> _ralwCode,
+                  ("message" .=) <$> _ralwMessage])
+
+--
+-- /See:/ 'targetInstanceListWarningDataItem' smart constructor.
+data TargetInstanceListWarningDataItem = TargetInstanceListWarningDataItem'
+    { _tilwdiValue :: !(Maybe Text)
+    , _tilwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tilwdiValue'
+--
+-- * 'tilwdiKey'
+targetInstanceListWarningDataItem
+    :: TargetInstanceListWarningDataItem
+targetInstanceListWarningDataItem =
+    TargetInstanceListWarningDataItem'
+    { _tilwdiValue = Nothing
+    , _tilwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tilwdiValue :: Lens' TargetInstanceListWarningDataItem (Maybe Text)
+tilwdiValue
+  = lens _tilwdiValue (\ s a -> s{_tilwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tilwdiKey :: Lens' TargetInstanceListWarningDataItem (Maybe Text)
+tilwdiKey
+  = lens _tilwdiKey (\ s a -> s{_tilwdiKey = a})
+
+instance FromJSON TargetInstanceListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetInstanceListWarningDataItem"
+              (\ o ->
+                 TargetInstanceListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetInstanceListWarningDataItem
+         where
+        toJSON TargetInstanceListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tilwdiValue,
+                  ("key" .=) <$> _tilwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'operationListWarning' smart constructor.
+data OperationListWarning = OperationListWarning'
+    { _olwData    :: !(Maybe [OperationListWarningDataItem])
+    , _olwCode    :: !(Maybe OperationListWarningCode)
+    , _olwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'olwData'
+--
+-- * 'olwCode'
+--
+-- * 'olwMessage'
+operationListWarning
+    :: OperationListWarning
+operationListWarning =
+    OperationListWarning'
+    { _olwData = Nothing
+    , _olwCode = Nothing
+    , _olwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+olwData :: Lens' OperationListWarning [OperationListWarningDataItem]
+olwData
+  = lens _olwData (\ s a -> s{_olwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+olwCode :: Lens' OperationListWarning (Maybe OperationListWarningCode)
+olwCode = lens _olwCode (\ s a -> s{_olwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+olwMessage :: Lens' OperationListWarning (Maybe Text)
+olwMessage
+  = lens _olwMessage (\ s a -> s{_olwMessage = a})
+
+instance FromJSON OperationListWarning where
+        parseJSON
+          = withObject "OperationListWarning"
+              (\ o ->
+                 OperationListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationListWarning where
+        toJSON OperationListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _olwData, ("code" .=) <$> _olwCode,
+                  ("message" .=) <$> _olwMessage])
+
+--
+-- /See:/ 'instanceGroupsRemoveInstancesRequest' smart constructor.
+newtype InstanceGroupsRemoveInstancesRequest = InstanceGroupsRemoveInstancesRequest'
+    { _igrirInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsRemoveInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igrirInstances'
+instanceGroupsRemoveInstancesRequest
+    :: InstanceGroupsRemoveInstancesRequest
+instanceGroupsRemoveInstancesRequest =
+    InstanceGroupsRemoveInstancesRequest'
+    { _igrirInstances = Nothing
+    }
+
+-- | The list of instances to remove from the instance group.
+igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]
+igrirInstances
+  = lens _igrirInstances
+      (\ s a -> s{_igrirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupsRemoveInstancesRequest where
+        parseJSON
+          = withObject "InstanceGroupsRemoveInstancesRequest"
+              (\ o ->
+                 InstanceGroupsRemoveInstancesRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON InstanceGroupsRemoveInstancesRequest
+         where
+        toJSON InstanceGroupsRemoveInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igrirInstances])
+
+-- | Informational metadata about Partner attachments from Partners to
+-- display to customers. These fields are propagated from PARTNER_PROVIDER
+-- attachments to their corresponding PARTNER attachments.
+--
+-- /See:/ 'interconnectAttachmentPartnerMetadata' smart constructor.
+data InterconnectAttachmentPartnerMetadata = InterconnectAttachmentPartnerMetadata'
+    { _iapmPortalURL        :: !(Maybe Text)
+    , _iapmInterconnectName :: !(Maybe Text)
+    , _iapmPartnerName      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentPartnerMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapmPortalURL'
+--
+-- * 'iapmInterconnectName'
+--
+-- * 'iapmPartnerName'
+interconnectAttachmentPartnerMetadata
+    :: InterconnectAttachmentPartnerMetadata
+interconnectAttachmentPartnerMetadata =
+    InterconnectAttachmentPartnerMetadata'
+    { _iapmPortalURL = Nothing
+    , _iapmInterconnectName = Nothing
+    , _iapmPartnerName = Nothing
+    }
+
+-- | URL of the Partner?s portal for this Attachment. Partners may customise
+-- this to be a deep-link to the specific resource on the Partner portal.
+-- This value may be validated to match approved Partner values.
+iapmPortalURL :: Lens' InterconnectAttachmentPartnerMetadata (Maybe Text)
+iapmPortalURL
+  = lens _iapmPortalURL
+      (\ s a -> s{_iapmPortalURL = a})
+
+-- | Plain text name of the Interconnect this attachment is connected to, as
+-- displayed in the Partner?s portal. For instance \"Chicago 1\". This
+-- value may be validated to match approved Partner values.
+iapmInterconnectName :: Lens' InterconnectAttachmentPartnerMetadata (Maybe Text)
+iapmInterconnectName
+  = lens _iapmInterconnectName
+      (\ s a -> s{_iapmInterconnectName = a})
+
+-- | Plain text name of the Partner providing this attachment. This value may
+-- be validated to match approved Partner values.
+iapmPartnerName :: Lens' InterconnectAttachmentPartnerMetadata (Maybe Text)
+iapmPartnerName
+  = lens _iapmPartnerName
+      (\ s a -> s{_iapmPartnerName = a})
+
+instance FromJSON
+         InterconnectAttachmentPartnerMetadata where
+        parseJSON
+          = withObject "InterconnectAttachmentPartnerMetadata"
+              (\ o ->
+                 InterconnectAttachmentPartnerMetadata' <$>
+                   (o .:? "portalUrl") <*> (o .:? "interconnectName")
+                     <*> (o .:? "partnerName"))
+
+instance ToJSON InterconnectAttachmentPartnerMetadata
+         where
+        toJSON InterconnectAttachmentPartnerMetadata'{..}
+          = object
+              (catMaybes
+                 [("portalUrl" .=) <$> _iapmPortalURL,
+                  ("interconnectName" .=) <$> _iapmInterconnectName,
+                  ("partnerName" .=) <$> _iapmPartnerName])
+
+--
+-- /See:/ 'machineTypeListWarningDataItem' smart constructor.
+data MachineTypeListWarningDataItem = MachineTypeListWarningDataItem'
+    { _mtlwdiValue :: !(Maybe Text)
+    , _mtlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtlwdiValue'
+--
+-- * 'mtlwdiKey'
+machineTypeListWarningDataItem
+    :: MachineTypeListWarningDataItem
+machineTypeListWarningDataItem =
+    MachineTypeListWarningDataItem'
+    { _mtlwdiValue = Nothing
+    , _mtlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+mtlwdiValue :: Lens' MachineTypeListWarningDataItem (Maybe Text)
+mtlwdiValue
+  = lens _mtlwdiValue (\ s a -> s{_mtlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+mtlwdiKey :: Lens' MachineTypeListWarningDataItem (Maybe Text)
+mtlwdiKey
+  = lens _mtlwdiKey (\ s a -> s{_mtlwdiKey = a})
+
+instance FromJSON MachineTypeListWarningDataItem
+         where
+        parseJSON
+          = withObject "MachineTypeListWarningDataItem"
+              (\ o ->
+                 MachineTypeListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON MachineTypeListWarningDataItem where
+        toJSON MachineTypeListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _mtlwdiValue,
+                  ("key" .=) <$> _mtlwdiKey])
+
+--
+-- /See:/ 'networksRemovePeeringRequest' smart constructor.
+newtype NetworksRemovePeeringRequest = NetworksRemovePeeringRequest'
+    { _nrprName :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksRemovePeeringRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nrprName'
+networksRemovePeeringRequest
+    :: NetworksRemovePeeringRequest
+networksRemovePeeringRequest =
+    NetworksRemovePeeringRequest'
+    { _nrprName = Nothing
+    }
+
+-- | Name of the peering, which should conform to RFC1035.
+nrprName :: Lens' NetworksRemovePeeringRequest (Maybe Text)
+nrprName = lens _nrprName (\ s a -> s{_nrprName = a})
+
+instance FromJSON NetworksRemovePeeringRequest where
+        parseJSON
+          = withObject "NetworksRemovePeeringRequest"
+              (\ o ->
+                 NetworksRemovePeeringRequest' <$> (o .:? "name"))
+
+instance ToJSON NetworksRemovePeeringRequest where
+        toJSON NetworksRemovePeeringRequest'{..}
+          = object (catMaybes [("name" .=) <$> _nrprName])
+
+--
+-- /See:/ 'targetHTTPProxyListWarningDataItem' smart constructor.
+data TargetHTTPProxyListWarningDataItem = TargetHTTPProxyListWarningDataItem'
+    { _thttpplwdiValue :: !(Maybe Text)
+    , _thttpplwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxyListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttpplwdiValue'
+--
+-- * 'thttpplwdiKey'
+targetHTTPProxyListWarningDataItem
+    :: TargetHTTPProxyListWarningDataItem
+targetHTTPProxyListWarningDataItem =
+    TargetHTTPProxyListWarningDataItem'
+    { _thttpplwdiValue = Nothing
+    , _thttpplwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+thttpplwdiValue :: Lens' TargetHTTPProxyListWarningDataItem (Maybe Text)
+thttpplwdiValue
+  = lens _thttpplwdiValue
+      (\ s a -> s{_thttpplwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+thttpplwdiKey :: Lens' TargetHTTPProxyListWarningDataItem (Maybe Text)
+thttpplwdiKey
+  = lens _thttpplwdiKey
+      (\ s a -> s{_thttpplwdiKey = a})
+
+instance FromJSON TargetHTTPProxyListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetHTTPProxyListWarningDataItem"
+              (\ o ->
+                 TargetHTTPProxyListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetHTTPProxyListWarningDataItem
+         where
+        toJSON TargetHTTPProxyListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _thttpplwdiValue,
+                  ("key" .=) <$> _thttpplwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'machineTypeAggregatedListWarning' smart constructor.
+data MachineTypeAggregatedListWarning = MachineTypeAggregatedListWarning'
+    { _mtalwData    :: !(Maybe [MachineTypeAggregatedListWarningDataItem])
+    , _mtalwCode    :: !(Maybe MachineTypeAggregatedListWarningCode)
+    , _mtalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtalwData'
+--
+-- * 'mtalwCode'
+--
+-- * 'mtalwMessage'
+machineTypeAggregatedListWarning
+    :: MachineTypeAggregatedListWarning
+machineTypeAggregatedListWarning =
+    MachineTypeAggregatedListWarning'
+    { _mtalwData = Nothing
+    , _mtalwCode = Nothing
+    , _mtalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+mtalwData :: Lens' MachineTypeAggregatedListWarning [MachineTypeAggregatedListWarningDataItem]
+mtalwData
+  = lens _mtalwData (\ s a -> s{_mtalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+mtalwCode :: Lens' MachineTypeAggregatedListWarning (Maybe MachineTypeAggregatedListWarningCode)
+mtalwCode
+  = lens _mtalwCode (\ s a -> s{_mtalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+mtalwMessage :: Lens' MachineTypeAggregatedListWarning (Maybe Text)
+mtalwMessage
+  = lens _mtalwMessage (\ s a -> s{_mtalwMessage = a})
+
+instance FromJSON MachineTypeAggregatedListWarning
+         where
+        parseJSON
+          = withObject "MachineTypeAggregatedListWarning"
+              (\ o ->
+                 MachineTypeAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON MachineTypeAggregatedListWarning
+         where
+        toJSON MachineTypeAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _mtalwData,
+                  ("code" .=) <$> _mtalwCode,
+                  ("message" .=) <$> _mtalwMessage])
+
+--
+-- /See:/ 'nodeTemplateAggregatedListWarningDataItem' smart constructor.
+data NodeTemplateAggregatedListWarningDataItem = NodeTemplateAggregatedListWarningDataItem'
+    { _ntalwdiValue :: !(Maybe Text)
+    , _ntalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntalwdiValue'
+--
+-- * 'ntalwdiKey'
+nodeTemplateAggregatedListWarningDataItem
+    :: NodeTemplateAggregatedListWarningDataItem
+nodeTemplateAggregatedListWarningDataItem =
+    NodeTemplateAggregatedListWarningDataItem'
+    { _ntalwdiValue = Nothing
+    , _ntalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ntalwdiValue :: Lens' NodeTemplateAggregatedListWarningDataItem (Maybe Text)
+ntalwdiValue
+  = lens _ntalwdiValue (\ s a -> s{_ntalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ntalwdiKey :: Lens' NodeTemplateAggregatedListWarningDataItem (Maybe Text)
+ntalwdiKey
+  = lens _ntalwdiKey (\ s a -> s{_ntalwdiKey = a})
+
+instance FromJSON
+         NodeTemplateAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "NodeTemplateAggregatedListWarningDataItem"
+              (\ o ->
+                 NodeTemplateAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         NodeTemplateAggregatedListWarningDataItem where
+        toJSON NodeTemplateAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ntalwdiValue,
+                  ("key" .=) <$> _ntalwdiKey])
+
+-- | Contains a list of BackendBucket resources.
+--
+-- /See:/ 'backendBucketList' smart constructor.
+data BackendBucketList = BackendBucketList'
+    { _bblNextPageToken :: !(Maybe Text)
+    , _bblKind          :: !Text
+    , _bblItems         :: !(Maybe [BackendBucket])
+    , _bblSelfLink      :: !(Maybe Text)
+    , _bblWarning       :: !(Maybe BackendBucketListWarning)
+    , _bblId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bblNextPageToken'
+--
+-- * 'bblKind'
+--
+-- * 'bblItems'
+--
+-- * 'bblSelfLink'
+--
+-- * 'bblWarning'
+--
+-- * 'bblId'
+backendBucketList
+    :: BackendBucketList
+backendBucketList =
+    BackendBucketList'
+    { _bblNextPageToken = Nothing
+    , _bblKind = "compute#backendBucketList"
+    , _bblItems = Nothing
+    , _bblSelfLink = Nothing
+    , _bblWarning = Nothing
+    , _bblId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+bblNextPageToken :: Lens' BackendBucketList (Maybe Text)
+bblNextPageToken
+  = lens _bblNextPageToken
+      (\ s a -> s{_bblNextPageToken = a})
+
+-- | Type of resource.
+bblKind :: Lens' BackendBucketList Text
+bblKind = lens _bblKind (\ s a -> s{_bblKind = a})
+
+-- | A list of BackendBucket resources.
+bblItems :: Lens' BackendBucketList [BackendBucket]
+bblItems
+  = lens _bblItems (\ s a -> s{_bblItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+bblSelfLink :: Lens' BackendBucketList (Maybe Text)
+bblSelfLink
+  = lens _bblSelfLink (\ s a -> s{_bblSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+bblWarning :: Lens' BackendBucketList (Maybe BackendBucketListWarning)
+bblWarning
+  = lens _bblWarning (\ s a -> s{_bblWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bblId :: Lens' BackendBucketList (Maybe Text)
+bblId = lens _bblId (\ s a -> s{_bblId = a})
+
+instance FromJSON BackendBucketList where
+        parseJSON
+          = withObject "BackendBucketList"
+              (\ o ->
+                 BackendBucketList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#backendBucketList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON BackendBucketList where
+        toJSON BackendBucketList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _bblNextPageToken,
+                  Just ("kind" .= _bblKind),
+                  ("items" .=) <$> _bblItems,
+                  ("selfLink" .=) <$> _bblSelfLink,
+                  ("warning" .=) <$> _bblWarning,
+                  ("id" .=) <$> _bblId])
+
+-- | Information for an interconnect attachment when this belongs to an
+-- interconnect of type DEDICATED.
+--
+-- /See:/ 'interconnectAttachmentPrivateInfo' smart constructor.
+newtype InterconnectAttachmentPrivateInfo = InterconnectAttachmentPrivateInfo'
+    { _iapiTag8021q :: Maybe (Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentPrivateInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapiTag8021q'
+interconnectAttachmentPrivateInfo
+    :: InterconnectAttachmentPrivateInfo
+interconnectAttachmentPrivateInfo =
+    InterconnectAttachmentPrivateInfo'
+    { _iapiTag8021q = Nothing
+    }
+
+-- | [Output Only] 802.1q encapsulation tag to be used for traffic between
+-- Google and the customer, going to and from this network and region.
+iapiTag8021q :: Lens' InterconnectAttachmentPrivateInfo (Maybe Word32)
+iapiTag8021q
+  = lens _iapiTag8021q (\ s a -> s{_iapiTag8021q = a})
+      . mapping _Coerce
+
+instance FromJSON InterconnectAttachmentPrivateInfo
+         where
+        parseJSON
+          = withObject "InterconnectAttachmentPrivateInfo"
+              (\ o ->
+                 InterconnectAttachmentPrivateInfo' <$>
+                   (o .:? "tag8021q"))
+
+instance ToJSON InterconnectAttachmentPrivateInfo
+         where
+        toJSON InterconnectAttachmentPrivateInfo'{..}
+          = object
+              (catMaybes [("tag8021q" .=) <$> _iapiTag8021q])
+
+--
+-- /See:/ 'acceleratorTypesScopedList' smart constructor.
+data AcceleratorTypesScopedList = AcceleratorTypesScopedList'
+    { _atslAcceleratorTypes :: !(Maybe [AcceleratorType])
+    , _atslWarning          :: !(Maybe AcceleratorTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atslAcceleratorTypes'
+--
+-- * 'atslWarning'
+acceleratorTypesScopedList
+    :: AcceleratorTypesScopedList
+acceleratorTypesScopedList =
+    AcceleratorTypesScopedList'
+    { _atslAcceleratorTypes = Nothing
+    , _atslWarning = Nothing
+    }
+
+-- | [Output Only] A list of accelerator types contained in this scope.
+atslAcceleratorTypes :: Lens' AcceleratorTypesScopedList [AcceleratorType]
+atslAcceleratorTypes
+  = lens _atslAcceleratorTypes
+      (\ s a -> s{_atslAcceleratorTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the accelerator
+-- types list is empty.
+atslWarning :: Lens' AcceleratorTypesScopedList (Maybe AcceleratorTypesScopedListWarning)
+atslWarning
+  = lens _atslWarning (\ s a -> s{_atslWarning = a})
+
+instance FromJSON AcceleratorTypesScopedList where
+        parseJSON
+          = withObject "AcceleratorTypesScopedList"
+              (\ o ->
+                 AcceleratorTypesScopedList' <$>
+                   (o .:? "acceleratorTypes" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON AcceleratorTypesScopedList where
+        toJSON AcceleratorTypesScopedList'{..}
+          = object
+              (catMaybes
+                 [("acceleratorTypes" .=) <$> _atslAcceleratorTypes,
+                  ("warning" .=) <$> _atslWarning])
+
+-- | Message containing Cloud CDN configuration for a backend service.
+--
+-- /See:/ 'backendServiceCdnPolicy' smart constructor.
+data BackendServiceCdnPolicy = BackendServiceCdnPolicy'
+    { _bscpSignedURLCacheMaxAgeSec :: !(Maybe (Textual Int64))
+    , _bscpSignedURLKeyNames       :: !(Maybe [Text])
+    , _bscpCacheKeyPolicy          :: !(Maybe CacheKeyPolicy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceCdnPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bscpSignedURLCacheMaxAgeSec'
+--
+-- * 'bscpSignedURLKeyNames'
+--
+-- * 'bscpCacheKeyPolicy'
+backendServiceCdnPolicy
+    :: BackendServiceCdnPolicy
+backendServiceCdnPolicy =
+    BackendServiceCdnPolicy'
+    { _bscpSignedURLCacheMaxAgeSec = Nothing
+    , _bscpSignedURLKeyNames = Nothing
+    , _bscpCacheKeyPolicy = Nothing
+    }
+
+-- | Maximum number of seconds the response to a signed URL request will be
+-- considered fresh. After this time period, the response will be
+-- revalidated before being served. Defaults to 1hr (3600s). When serving
+-- responses to signed URL requests, Cloud CDN will internally behave as
+-- though all responses from this backend had a \"Cache-Control: public,
+-- max-age=[TTL]\" header, regardless of any existing Cache-Control header.
+-- The actual headers served in responses will not be altered.
+bscpSignedURLCacheMaxAgeSec :: Lens' BackendServiceCdnPolicy (Maybe Int64)
+bscpSignedURLCacheMaxAgeSec
+  = lens _bscpSignedURLCacheMaxAgeSec
+      (\ s a -> s{_bscpSignedURLCacheMaxAgeSec = a})
+      . mapping _Coerce
+
+-- | [Output Only] Names of the keys for signing request URLs.
+bscpSignedURLKeyNames :: Lens' BackendServiceCdnPolicy [Text]
+bscpSignedURLKeyNames
+  = lens _bscpSignedURLKeyNames
+      (\ s a -> s{_bscpSignedURLKeyNames = a})
+      . _Default
+      . _Coerce
+
+-- | The CacheKeyPolicy for this CdnPolicy.
+bscpCacheKeyPolicy :: Lens' BackendServiceCdnPolicy (Maybe CacheKeyPolicy)
+bscpCacheKeyPolicy
+  = lens _bscpCacheKeyPolicy
+      (\ s a -> s{_bscpCacheKeyPolicy = a})
+
+instance FromJSON BackendServiceCdnPolicy where
+        parseJSON
+          = withObject "BackendServiceCdnPolicy"
+              (\ o ->
+                 BackendServiceCdnPolicy' <$>
+                   (o .:? "signedUrlCacheMaxAgeSec") <*>
+                     (o .:? "signedUrlKeyNames" .!= mempty)
+                     <*> (o .:? "cacheKeyPolicy"))
+
+instance ToJSON BackendServiceCdnPolicy where
+        toJSON BackendServiceCdnPolicy'{..}
+          = object
+              (catMaybes
+                 [("signedUrlCacheMaxAgeSec" .=) <$>
+                    _bscpSignedURLCacheMaxAgeSec,
+                  ("signedUrlKeyNames" .=) <$> _bscpSignedURLKeyNames,
+                  ("cacheKeyPolicy" .=) <$> _bscpCacheKeyPolicy])
+
+--
+-- /See:/ 'routeWarningsItemDataItem' smart constructor.
+data RouteWarningsItemDataItem = RouteWarningsItemDataItem'
+    { _rwidiValue :: !(Maybe Text)
+    , _rwidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwidiValue'
+--
+-- * 'rwidiKey'
+routeWarningsItemDataItem
+    :: RouteWarningsItemDataItem
+routeWarningsItemDataItem =
+    RouteWarningsItemDataItem'
+    { _rwidiValue = Nothing
+    , _rwidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)
+rwidiValue
+  = lens _rwidiValue (\ s a -> s{_rwidiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)
+rwidiKey = lens _rwidiKey (\ s a -> s{_rwidiKey = a})
+
+instance FromJSON RouteWarningsItemDataItem where
+        parseJSON
+          = withObject "RouteWarningsItemDataItem"
+              (\ o ->
+                 RouteWarningsItemDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RouteWarningsItemDataItem where
+        toJSON RouteWarningsItemDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rwidiValue,
+                  ("key" .=) <$> _rwidiKey])
+
+--
+-- /See:/ 'nodeGroupAggregatedList' smart constructor.
+data NodeGroupAggregatedList = NodeGroupAggregatedList'
+    { _ngalNextPageToken :: !(Maybe Text)
+    , _ngalKind          :: !Text
+    , _ngalItems         :: !(Maybe NodeGroupAggregatedListItems)
+    , _ngalSelfLink      :: !(Maybe Text)
+    , _ngalWarning       :: !(Maybe NodeGroupAggregatedListWarning)
+    , _ngalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngalNextPageToken'
+--
+-- * 'ngalKind'
+--
+-- * 'ngalItems'
+--
+-- * 'ngalSelfLink'
+--
+-- * 'ngalWarning'
+--
+-- * 'ngalId'
+nodeGroupAggregatedList
+    :: NodeGroupAggregatedList
+nodeGroupAggregatedList =
+    NodeGroupAggregatedList'
+    { _ngalNextPageToken = Nothing
+    , _ngalKind = "compute#nodeGroupAggregatedList"
+    , _ngalItems = Nothing
+    , _ngalSelfLink = Nothing
+    , _ngalWarning = Nothing
+    , _ngalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ngalNextPageToken :: Lens' NodeGroupAggregatedList (Maybe Text)
+ngalNextPageToken
+  = lens _ngalNextPageToken
+      (\ s a -> s{_ngalNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeGroupAggregatedList
+-- for aggregated lists of node groups.
+ngalKind :: Lens' NodeGroupAggregatedList Text
+ngalKind = lens _ngalKind (\ s a -> s{_ngalKind = a})
+
+-- | A list of NodeGroupsScopedList resources.
+ngalItems :: Lens' NodeGroupAggregatedList (Maybe NodeGroupAggregatedListItems)
+ngalItems
+  = lens _ngalItems (\ s a -> s{_ngalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+ngalSelfLink :: Lens' NodeGroupAggregatedList (Maybe Text)
+ngalSelfLink
+  = lens _ngalSelfLink (\ s a -> s{_ngalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ngalWarning :: Lens' NodeGroupAggregatedList (Maybe NodeGroupAggregatedListWarning)
+ngalWarning
+  = lens _ngalWarning (\ s a -> s{_ngalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ngalId :: Lens' NodeGroupAggregatedList (Maybe Text)
+ngalId = lens _ngalId (\ s a -> s{_ngalId = a})
+
+instance FromJSON NodeGroupAggregatedList where
+        parseJSON
+          = withObject "NodeGroupAggregatedList"
+              (\ o ->
+                 NodeGroupAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeGroupAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeGroupAggregatedList where
+        toJSON NodeGroupAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ngalNextPageToken,
+                  Just ("kind" .= _ngalKind),
+                  ("items" .=) <$> _ngalItems,
+                  ("selfLink" .=) <$> _ngalSelfLink,
+                  ("warning" .=) <$> _ngalWarning,
+                  ("id" .=) <$> _ngalId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'vpnTunnelListWarning' smart constructor.
+data VPNTunnelListWarning = VPNTunnelListWarning'
+    { _vtlwData    :: !(Maybe [VPNTunnelListWarningDataItem])
+    , _vtlwCode    :: !(Maybe VPNTunnelListWarningCode)
+    , _vtlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtlwData'
+--
+-- * 'vtlwCode'
+--
+-- * 'vtlwMessage'
+vpnTunnelListWarning
+    :: VPNTunnelListWarning
+vpnTunnelListWarning =
+    VPNTunnelListWarning'
+    { _vtlwData = Nothing
+    , _vtlwCode = Nothing
+    , _vtlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+vtlwData :: Lens' VPNTunnelListWarning [VPNTunnelListWarningDataItem]
+vtlwData
+  = lens _vtlwData (\ s a -> s{_vtlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+vtlwCode :: Lens' VPNTunnelListWarning (Maybe VPNTunnelListWarningCode)
+vtlwCode = lens _vtlwCode (\ s a -> s{_vtlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+vtlwMessage :: Lens' VPNTunnelListWarning (Maybe Text)
+vtlwMessage
+  = lens _vtlwMessage (\ s a -> s{_vtlwMessage = a})
+
+instance FromJSON VPNTunnelListWarning where
+        parseJSON
+          = withObject "VPNTunnelListWarning"
+              (\ o ->
+                 VPNTunnelListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON VPNTunnelListWarning where
+        toJSON VPNTunnelListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _vtlwData,
+                  ("code" .=) <$> _vtlwCode,
+                  ("message" .=) <$> _vtlwMessage])
+
+-- | A list of BackendServicesScopedList resources.
+--
+-- /See:/ 'backendServiceAggregatedListItems' smart constructor.
+newtype BackendServiceAggregatedListItems = BackendServiceAggregatedListItems'
+    { _bsaliAddtional :: HashMap Text BackendServicesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsaliAddtional'
+backendServiceAggregatedListItems
+    :: HashMap Text BackendServicesScopedList -- ^ 'bsaliAddtional'
+    -> BackendServiceAggregatedListItems
+backendServiceAggregatedListItems pBsaliAddtional_ =
+    BackendServiceAggregatedListItems'
+    { _bsaliAddtional = _Coerce # pBsaliAddtional_
+    }
+
+-- | Name of the scope containing this set of BackendServices.
+bsaliAddtional :: Lens' BackendServiceAggregatedListItems (HashMap Text BackendServicesScopedList)
+bsaliAddtional
+  = lens _bsaliAddtional
+      (\ s a -> s{_bsaliAddtional = a})
+      . _Coerce
+
+instance FromJSON BackendServiceAggregatedListItems
+         where
+        parseJSON
+          = withObject "BackendServiceAggregatedListItems"
+              (\ o ->
+                 BackendServiceAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON BackendServiceAggregatedListItems
+         where
+        toJSON = toJSON . _bsaliAddtional
+
+-- | A list of InstancesScopedList resources.
+--
+-- /See:/ 'instanceAggregatedListItems' smart constructor.
+newtype InstanceAggregatedListItems = InstanceAggregatedListItems'
+    { _ialiAddtional :: HashMap Text InstancesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialiAddtional'
+instanceAggregatedListItems
+    :: HashMap Text InstancesScopedList -- ^ 'ialiAddtional'
+    -> InstanceAggregatedListItems
+instanceAggregatedListItems pIaliAddtional_ =
+    InstanceAggregatedListItems'
+    { _ialiAddtional = _Coerce # pIaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of instances.
+ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)
+ialiAddtional
+  = lens _ialiAddtional
+      (\ s a -> s{_ialiAddtional = a})
+      . _Coerce
+
+instance FromJSON InstanceAggregatedListItems where
+        parseJSON
+          = withObject "InstanceAggregatedListItems"
+              (\ o ->
+                 InstanceAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON InstanceAggregatedListItems where
+        toJSON = toJSON . _ialiAddtional
+
+-- | [Output Only] Informational warning which replaces the list of
+-- autoscalers when the list is empty.
+--
+-- /See:/ 'autoscalersScopedListWarning' smart constructor.
+data AutoscalersScopedListWarning = AutoscalersScopedListWarning'
+    { _aslwData    :: !(Maybe [AutoscalersScopedListWarningDataItem])
+    , _aslwCode    :: !(Maybe AutoscalersScopedListWarningCode)
+    , _aslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslwData'
+--
+-- * 'aslwCode'
+--
+-- * 'aslwMessage'
+autoscalersScopedListWarning
+    :: AutoscalersScopedListWarning
+autoscalersScopedListWarning =
+    AutoscalersScopedListWarning'
+    { _aslwData = Nothing
+    , _aslwCode = Nothing
+    , _aslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]
+aslwData
+  = lens _aslwData (\ s a -> s{_aslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)
+aslwCode = lens _aslwCode (\ s a -> s{_aslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)
+aslwMessage
+  = lens _aslwMessage (\ s a -> s{_aslwMessage = a})
+
+instance FromJSON AutoscalersScopedListWarning where
+        parseJSON
+          = withObject "AutoscalersScopedListWarning"
+              (\ o ->
+                 AutoscalersScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AutoscalersScopedListWarning where
+        toJSON AutoscalersScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _aslwData,
+                  ("code" .=) <$> _aslwCode,
+                  ("message" .=) <$> _aslwMessage])
+
+-- | A specification of the desired way to instantiate a disk in the instance
+-- template when its created from a source instance.
+--
+-- /See:/ 'diskInstantiationConfig' smart constructor.
+data DiskInstantiationConfig = DiskInstantiationConfig'
+    { _dicAutoDelete      :: !(Maybe Bool)
+    , _dicInstantiateFrom :: !(Maybe DiskInstantiationConfigInstantiateFrom)
+    , _dicCustomImage     :: !(Maybe Text)
+    , _dicDeviceName      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskInstantiationConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dicAutoDelete'
+--
+-- * 'dicInstantiateFrom'
+--
+-- * 'dicCustomImage'
+--
+-- * 'dicDeviceName'
+diskInstantiationConfig
+    :: DiskInstantiationConfig
+diskInstantiationConfig =
+    DiskInstantiationConfig'
+    { _dicAutoDelete = Nothing
+    , _dicInstantiateFrom = Nothing
+    , _dicCustomImage = Nothing
+    , _dicDeviceName = Nothing
+    }
+
+-- | Specifies whether the disk will be auto-deleted when the instance is
+-- deleted (but not when the disk is detached from the instance).
+dicAutoDelete :: Lens' DiskInstantiationConfig (Maybe Bool)
+dicAutoDelete
+  = lens _dicAutoDelete
+      (\ s a -> s{_dicAutoDelete = a})
+
+-- | Specifies whether to include the disk and what image to use. Possible
+-- values are: - source-image: to use the same image that was used to
+-- create the source instance\'s corresponding disk. Applicable to the boot
+-- disk and additional read-write disks. - source-image-family: to use the
+-- same image family that was used to create the source instance\'s
+-- corresponding disk. Applicable to the boot disk and additional
+-- read-write disks. - custom-image: to use a user-provided image url for
+-- disk creation. Applicable to the boot disk and additional read-write
+-- disks. - attach-read-only: to attach a read-only disk. Applicable to
+-- read-only disks. - do-not-include: to exclude a disk from the template.
+-- Applicable to additional read-write disks, local SSDs, and read-only
+-- disks.
+dicInstantiateFrom :: Lens' DiskInstantiationConfig (Maybe DiskInstantiationConfigInstantiateFrom)
+dicInstantiateFrom
+  = lens _dicInstantiateFrom
+      (\ s a -> s{_dicInstantiateFrom = a})
+
+-- | The custom source image to be used to restore this disk when
+-- instantiating this instance template.
+dicCustomImage :: Lens' DiskInstantiationConfig (Maybe Text)
+dicCustomImage
+  = lens _dicCustomImage
+      (\ s a -> s{_dicCustomImage = a})
+
+-- | Specifies the device name of the disk to which the configurations apply
+-- to.
+dicDeviceName :: Lens' DiskInstantiationConfig (Maybe Text)
+dicDeviceName
+  = lens _dicDeviceName
+      (\ s a -> s{_dicDeviceName = a})
+
+instance FromJSON DiskInstantiationConfig where
+        parseJSON
+          = withObject "DiskInstantiationConfig"
+              (\ o ->
+                 DiskInstantiationConfig' <$>
+                   (o .:? "autoDelete") <*> (o .:? "instantiateFrom")
+                     <*> (o .:? "customImage")
+                     <*> (o .:? "deviceName"))
+
+instance ToJSON DiskInstantiationConfig where
+        toJSON DiskInstantiationConfig'{..}
+          = object
+              (catMaybes
+                 [("autoDelete" .=) <$> _dicAutoDelete,
+                  ("instantiateFrom" .=) <$> _dicInstantiateFrom,
+                  ("customImage" .=) <$> _dicCustomImage,
+                  ("deviceName" .=) <$> _dicDeviceName])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'diskTypeAggregatedListWarning' smart constructor.
+data DiskTypeAggregatedListWarning = DiskTypeAggregatedListWarning'
+    { _dtalwData    :: !(Maybe [DiskTypeAggregatedListWarningDataItem])
+    , _dtalwCode    :: !(Maybe DiskTypeAggregatedListWarningCode)
+    , _dtalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtalwData'
+--
+-- * 'dtalwCode'
+--
+-- * 'dtalwMessage'
+diskTypeAggregatedListWarning
+    :: DiskTypeAggregatedListWarning
+diskTypeAggregatedListWarning =
+    DiskTypeAggregatedListWarning'
+    { _dtalwData = Nothing
+    , _dtalwCode = Nothing
+    , _dtalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dtalwData :: Lens' DiskTypeAggregatedListWarning [DiskTypeAggregatedListWarningDataItem]
+dtalwData
+  = lens _dtalwData (\ s a -> s{_dtalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dtalwCode :: Lens' DiskTypeAggregatedListWarning (Maybe DiskTypeAggregatedListWarningCode)
+dtalwCode
+  = lens _dtalwCode (\ s a -> s{_dtalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dtalwMessage :: Lens' DiskTypeAggregatedListWarning (Maybe Text)
+dtalwMessage
+  = lens _dtalwMessage (\ s a -> s{_dtalwMessage = a})
+
+instance FromJSON DiskTypeAggregatedListWarning where
+        parseJSON
+          = withObject "DiskTypeAggregatedListWarning"
+              (\ o ->
+                 DiskTypeAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskTypeAggregatedListWarning where
+        toJSON DiskTypeAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dtalwData,
+                  ("code" .=) <$> _dtalwCode,
+                  ("message" .=) <$> _dtalwMessage])
+
+--
+-- /See:/ 'diskTypeListWarningDataItem' smart constructor.
+data DiskTypeListWarningDataItem = DiskTypeListWarningDataItem'
+    { _dtlwdiValue :: !(Maybe Text)
+    , _dtlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtlwdiValue'
+--
+-- * 'dtlwdiKey'
+diskTypeListWarningDataItem
+    :: DiskTypeListWarningDataItem
+diskTypeListWarningDataItem =
+    DiskTypeListWarningDataItem'
+    { _dtlwdiValue = Nothing
+    , _dtlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dtlwdiValue :: Lens' DiskTypeListWarningDataItem (Maybe Text)
+dtlwdiValue
+  = lens _dtlwdiValue (\ s a -> s{_dtlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dtlwdiKey :: Lens' DiskTypeListWarningDataItem (Maybe Text)
+dtlwdiKey
+  = lens _dtlwdiKey (\ s a -> s{_dtlwdiKey = a})
+
+instance FromJSON DiskTypeListWarningDataItem where
+        parseJSON
+          = withObject "DiskTypeListWarningDataItem"
+              (\ o ->
+                 DiskTypeListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskTypeListWarningDataItem where
+        toJSON DiskTypeListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dtlwdiValue,
+                  ("key" .=) <$> _dtlwdiKey])
+
+-- | Represents a rule that describes one or more match conditions along with
+-- the action to be taken when traffic matches this condition (allow or
+-- deny).
+--
+-- /See:/ 'securityPolicyRule' smart constructor.
+data SecurityPolicyRule = SecurityPolicyRule'
+    { _sprPriority    :: !(Maybe (Textual Int32))
+    , _sprKind        :: !Text
+    , _sprAction      :: !(Maybe Text)
+    , _sprPreview     :: !(Maybe Bool)
+    , _sprMatch       :: !(Maybe SecurityPolicyRuleMatcher)
+    , _sprDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprPriority'
+--
+-- * 'sprKind'
+--
+-- * 'sprAction'
+--
+-- * 'sprPreview'
+--
+-- * 'sprMatch'
+--
+-- * 'sprDescription'
+securityPolicyRule
+    :: SecurityPolicyRule
+securityPolicyRule =
+    SecurityPolicyRule'
+    { _sprPriority = Nothing
+    , _sprKind = "compute#securityPolicyRule"
+    , _sprAction = Nothing
+    , _sprPreview = Nothing
+    , _sprMatch = Nothing
+    , _sprDescription = Nothing
+    }
+
+-- | An integer indicating the priority of a rule in the list. The priority
+-- must be a positive value between 0 and 2147483647. Rules are evaluated
+-- from highest to lowest priority where 0 is the highest priority and
+-- 2147483647 is the lowest prority.
+sprPriority :: Lens' SecurityPolicyRule (Maybe Int32)
+sprPriority
+  = lens _sprPriority (\ s a -> s{_sprPriority = a}) .
+      mapping _Coerce
+
+-- | [Output only] Type of the resource. Always compute#securityPolicyRule
+-- for security policy rules
+sprKind :: Lens' SecurityPolicyRule Text
+sprKind = lens _sprKind (\ s a -> s{_sprKind = a})
+
+-- | The Action to preform when the client connection triggers the rule. Can
+-- currently be either \"allow\" or \"deny()\" where valid values for
+-- status are 403, 404, and 502.
+sprAction :: Lens' SecurityPolicyRule (Maybe Text)
+sprAction
+  = lens _sprAction (\ s a -> s{_sprAction = a})
+
+-- | If set to true, the specified action is not enforced.
+sprPreview :: Lens' SecurityPolicyRule (Maybe Bool)
+sprPreview
+  = lens _sprPreview (\ s a -> s{_sprPreview = a})
+
+-- | A match condition that incoming traffic is evaluated against. If it
+-- evaluates to true, the corresponding ?action? is enforced.
+sprMatch :: Lens' SecurityPolicyRule (Maybe SecurityPolicyRuleMatcher)
+sprMatch = lens _sprMatch (\ s a -> s{_sprMatch = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+sprDescription :: Lens' SecurityPolicyRule (Maybe Text)
+sprDescription
+  = lens _sprDescription
+      (\ s a -> s{_sprDescription = a})
+
+instance FromJSON SecurityPolicyRule where
+        parseJSON
+          = withObject "SecurityPolicyRule"
+              (\ o ->
+                 SecurityPolicyRule' <$>
+                   (o .:? "priority") <*>
+                     (o .:? "kind" .!= "compute#securityPolicyRule")
+                     <*> (o .:? "action")
+                     <*> (o .:? "preview")
+                     <*> (o .:? "match")
+                     <*> (o .:? "description"))
+
+instance ToJSON SecurityPolicyRule where
+        toJSON SecurityPolicyRule'{..}
+          = object
+              (catMaybes
+                 [("priority" .=) <$> _sprPriority,
+                  Just ("kind" .= _sprKind),
+                  ("action" .=) <$> _sprAction,
+                  ("preview" .=) <$> _sprPreview,
+                  ("match" .=) <$> _sprMatch,
+                  ("description" .=) <$> _sprDescription])
+
+-- | Response for the InterconnectsGetDiagnosticsRequest.
+--
+-- /See:/ 'interconnectsGetDiagnosticsResponse' smart constructor.
+newtype InterconnectsGetDiagnosticsResponse = InterconnectsGetDiagnosticsResponse'
+    { _igdrResult :: Maybe InterconnectDiagnostics
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsGetDiagnosticsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igdrResult'
+interconnectsGetDiagnosticsResponse
+    :: InterconnectsGetDiagnosticsResponse
+interconnectsGetDiagnosticsResponse =
+    InterconnectsGetDiagnosticsResponse'
+    { _igdrResult = Nothing
+    }
+
+igdrResult :: Lens' InterconnectsGetDiagnosticsResponse (Maybe InterconnectDiagnostics)
+igdrResult
+  = lens _igdrResult (\ s a -> s{_igdrResult = a})
+
+instance FromJSON InterconnectsGetDiagnosticsResponse
+         where
+        parseJSON
+          = withObject "InterconnectsGetDiagnosticsResponse"
+              (\ o ->
+                 InterconnectsGetDiagnosticsResponse' <$>
+                   (o .:? "result"))
+
+instance ToJSON InterconnectsGetDiagnosticsResponse
+         where
+        toJSON InterconnectsGetDiagnosticsResponse'{..}
+          = object (catMaybes [("result" .=) <$> _igdrResult])
+
+--
+-- /See:/ 'vpnTunnelAggregatedListWarningDataItem' smart constructor.
+data VPNTunnelAggregatedListWarningDataItem = VPNTunnelAggregatedListWarningDataItem'
+    { _vtalwdiValue :: !(Maybe Text)
+    , _vtalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtalwdiValue'
+--
+-- * 'vtalwdiKey'
+vpnTunnelAggregatedListWarningDataItem
+    :: VPNTunnelAggregatedListWarningDataItem
+vpnTunnelAggregatedListWarningDataItem =
+    VPNTunnelAggregatedListWarningDataItem'
+    { _vtalwdiValue = Nothing
+    , _vtalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+vtalwdiValue :: Lens' VPNTunnelAggregatedListWarningDataItem (Maybe Text)
+vtalwdiValue
+  = lens _vtalwdiValue (\ s a -> s{_vtalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+vtalwdiKey :: Lens' VPNTunnelAggregatedListWarningDataItem (Maybe Text)
+vtalwdiKey
+  = lens _vtalwdiKey (\ s a -> s{_vtalwdiKey = a})
+
+instance FromJSON
+         VPNTunnelAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "VPNTunnelAggregatedListWarningDataItem"
+              (\ o ->
+                 VPNTunnelAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         VPNTunnelAggregatedListWarningDataItem where
+        toJSON VPNTunnelAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _vtalwdiValue,
+                  ("key" .=) <$> _vtalwdiKey])
+
+-- | The available logging options for a firewall rule.
+--
+-- /See:/ 'firewallLogConfig' smart constructor.
+newtype FirewallLogConfig = FirewallLogConfig'
+    { _flcEnable :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallLogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flcEnable'
+firewallLogConfig
+    :: FirewallLogConfig
+firewallLogConfig =
+    FirewallLogConfig'
+    { _flcEnable = Nothing
+    }
+
+-- | This field denotes whether to enable logging for a particular firewall
+-- rule.
+flcEnable :: Lens' FirewallLogConfig (Maybe Bool)
+flcEnable
+  = lens _flcEnable (\ s a -> s{_flcEnable = a})
+
+instance FromJSON FirewallLogConfig where
+        parseJSON
+          = withObject "FirewallLogConfig"
+              (\ o -> FirewallLogConfig' <$> (o .:? "enable"))
+
+instance ToJSON FirewallLogConfig where
+        toJSON FirewallLogConfig'{..}
+          = object (catMaybes [("enable" .=) <$> _flcEnable])
+
+-- | Represents a Nat resource. It enables the VMs within the specified
+-- subnetworks to access Internet without external IP addresses. It
+-- specifies a list of subnetworks (and the ranges within) that want to use
+-- NAT. Customers can also provide the external IPs that would be used for
+-- NAT. GCP would auto-allocate ephemeral IPs if no external IPs are
+-- provided.
+--
+-- /See:/ 'routerNAT' smart constructor.
+data RouterNAT = RouterNAT'
+    { _rnatNATIPAllocateOption           :: !(Maybe RouterNATNATIPAllocateOption)
+    , _rnatICMPIdleTimeoutSec            :: !(Maybe (Textual Int32))
+    , _rnatUdpIdleTimeoutSec             :: !(Maybe (Textual Int32))
+    , _rnatNATIPs                        :: !(Maybe [Text])
+    , _rnatSubnetworks                   :: !(Maybe [RouterNATSubnetworkToNAT])
+    , _rnatMinPortsPerVM                 :: !(Maybe (Textual Int32))
+    , _rnatName                          :: !(Maybe Text)
+    , _rnatSourceSubnetworkIPRangesToNAT :: !(Maybe RouterNATSourceSubnetworkIPRangesToNAT)
+    , _rnatTCPEstablishedIdleTimeoutSec  :: !(Maybe (Textual Int32))
+    , _rnatTCPTransitoryIdleTimeoutSec   :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterNAT' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rnatNATIPAllocateOption'
+--
+-- * 'rnatICMPIdleTimeoutSec'
+--
+-- * 'rnatUdpIdleTimeoutSec'
+--
+-- * 'rnatNATIPs'
+--
+-- * 'rnatSubnetworks'
+--
+-- * 'rnatMinPortsPerVM'
+--
+-- * 'rnatName'
+--
+-- * 'rnatSourceSubnetworkIPRangesToNAT'
+--
+-- * 'rnatTCPEstablishedIdleTimeoutSec'
+--
+-- * 'rnatTCPTransitoryIdleTimeoutSec'
+routerNAT
+    :: RouterNAT
+routerNAT =
+    RouterNAT'
+    { _rnatNATIPAllocateOption = Nothing
+    , _rnatICMPIdleTimeoutSec = Nothing
+    , _rnatUdpIdleTimeoutSec = Nothing
+    , _rnatNATIPs = Nothing
+    , _rnatSubnetworks = Nothing
+    , _rnatMinPortsPerVM = Nothing
+    , _rnatName = Nothing
+    , _rnatSourceSubnetworkIPRangesToNAT = Nothing
+    , _rnatTCPEstablishedIdleTimeoutSec = Nothing
+    , _rnatTCPTransitoryIdleTimeoutSec = Nothing
+    }
+
+-- | Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should
+-- be empty.
+rnatNATIPAllocateOption :: Lens' RouterNAT (Maybe RouterNATNATIPAllocateOption)
+rnatNATIPAllocateOption
+  = lens _rnatNATIPAllocateOption
+      (\ s a -> s{_rnatNATIPAllocateOption = a})
+
+-- | Timeout (in seconds) for ICMP connections. Defaults to 30s if not set.
+rnatICMPIdleTimeoutSec :: Lens' RouterNAT (Maybe Int32)
+rnatICMPIdleTimeoutSec
+  = lens _rnatICMPIdleTimeoutSec
+      (\ s a -> s{_rnatICMPIdleTimeoutSec = a})
+      . mapping _Coerce
+
+-- | Timeout (in seconds) for UDP connections. Defaults to 30s if not set.
+rnatUdpIdleTimeoutSec :: Lens' RouterNAT (Maybe Int32)
+rnatUdpIdleTimeoutSec
+  = lens _rnatUdpIdleTimeoutSec
+      (\ s a -> s{_rnatUdpIdleTimeoutSec = a})
+      . mapping _Coerce
+
+-- | A list of URLs of the IP resources used for this Nat service. These IPs
+-- must be valid static external IP addresses assigned to the project.
+-- max_length is subject to change post alpha.
+rnatNATIPs :: Lens' RouterNAT [Text]
+rnatNATIPs
+  = lens _rnatNATIPs (\ s a -> s{_rnatNATIPs = a}) .
+      _Default
+      . _Coerce
+
+-- | A list of Subnetwork resources whose traffic should be translated by NAT
+-- Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the
+-- SubnetworkIpRangeToNatOption above.
+rnatSubnetworks :: Lens' RouterNAT [RouterNATSubnetworkToNAT]
+rnatSubnetworks
+  = lens _rnatSubnetworks
+      (\ s a -> s{_rnatSubnetworks = a})
+      . _Default
+      . _Coerce
+
+-- | Minimum number of ports allocated to a VM from this NAT config. If not
+-- set, a default number of ports is allocated to a VM. This gets rounded
+-- up to the nearest power of 2. Eg. if the value of this field is 50, at
+-- least 64 ports will be allocated to a VM.
+rnatMinPortsPerVM :: Lens' RouterNAT (Maybe Int32)
+rnatMinPortsPerVM
+  = lens _rnatMinPortsPerVM
+      (\ s a -> s{_rnatMinPortsPerVM = a})
+      . mapping _Coerce
+
+-- | Unique name of this Nat service. The name must be 1-63 characters long
+-- and comply with RFC1035.
+rnatName :: Lens' RouterNAT (Maybe Text)
+rnatName = lens _rnatName (\ s a -> s{_rnatName = a})
+
+-- | Specify the Nat option. If this field contains
+-- ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES,
+-- then there should not be any other Router.Nat section in any Router for
+-- this network in this region.
+rnatSourceSubnetworkIPRangesToNAT :: Lens' RouterNAT (Maybe RouterNATSourceSubnetworkIPRangesToNAT)
+rnatSourceSubnetworkIPRangesToNAT
+  = lens _rnatSourceSubnetworkIPRangesToNAT
+      (\ s a -> s{_rnatSourceSubnetworkIPRangesToNAT = a})
+
+-- | Timeout (in seconds) for TCP established connections. Defaults to 1200s
+-- if not set.
+rnatTCPEstablishedIdleTimeoutSec :: Lens' RouterNAT (Maybe Int32)
+rnatTCPEstablishedIdleTimeoutSec
+  = lens _rnatTCPEstablishedIdleTimeoutSec
+      (\ s a -> s{_rnatTCPEstablishedIdleTimeoutSec = a})
+      . mapping _Coerce
+
+-- | Timeout (in seconds) for TCP transitory connections. Defaults to 30s if
+-- not set.
+rnatTCPTransitoryIdleTimeoutSec :: Lens' RouterNAT (Maybe Int32)
+rnatTCPTransitoryIdleTimeoutSec
+  = lens _rnatTCPTransitoryIdleTimeoutSec
+      (\ s a -> s{_rnatTCPTransitoryIdleTimeoutSec = a})
+      . mapping _Coerce
+
+instance FromJSON RouterNAT where
+        parseJSON
+          = withObject "RouterNAT"
+              (\ o ->
+                 RouterNAT' <$>
+                   (o .:? "natIpAllocateOption") <*>
+                     (o .:? "icmpIdleTimeoutSec")
+                     <*> (o .:? "udpIdleTimeoutSec")
+                     <*> (o .:? "natIps" .!= mempty)
+                     <*> (o .:? "subnetworks" .!= mempty)
+                     <*> (o .:? "minPortsPerVm")
+                     <*> (o .:? "name")
+                     <*> (o .:? "sourceSubnetworkIpRangesToNat")
+                     <*> (o .:? "tcpEstablishedIdleTimeoutSec")
+                     <*> (o .:? "tcpTransitoryIdleTimeoutSec"))
+
+instance ToJSON RouterNAT where
+        toJSON RouterNAT'{..}
+          = object
+              (catMaybes
+                 [("natIpAllocateOption" .=) <$>
+                    _rnatNATIPAllocateOption,
+                  ("icmpIdleTimeoutSec" .=) <$>
+                    _rnatICMPIdleTimeoutSec,
+                  ("udpIdleTimeoutSec" .=) <$> _rnatUdpIdleTimeoutSec,
+                  ("natIps" .=) <$> _rnatNATIPs,
+                  ("subnetworks" .=) <$> _rnatSubnetworks,
+                  ("minPortsPerVm" .=) <$> _rnatMinPortsPerVM,
+                  ("name" .=) <$> _rnatName,
+                  ("sourceSubnetworkIpRangesToNat" .=) <$>
+                    _rnatSourceSubnetworkIPRangesToNAT,
+                  ("tcpEstablishedIdleTimeoutSec" .=) <$>
+                    _rnatTCPEstablishedIdleTimeoutSec,
+                  ("tcpTransitoryIdleTimeoutSec" .=) <$>
+                    _rnatTCPTransitoryIdleTimeoutSec])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'autoscalerAggregatedListWarning' smart constructor.
+data AutoscalerAggregatedListWarning = AutoscalerAggregatedListWarning'
+    { _aalwData    :: !(Maybe [AutoscalerAggregatedListWarningDataItem])
+    , _aalwCode    :: !(Maybe AutoscalerAggregatedListWarningCode)
+    , _aalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalwData'
+--
+-- * 'aalwCode'
+--
+-- * 'aalwMessage'
+autoscalerAggregatedListWarning
+    :: AutoscalerAggregatedListWarning
+autoscalerAggregatedListWarning =
+    AutoscalerAggregatedListWarning'
+    { _aalwData = Nothing
+    , _aalwCode = Nothing
+    , _aalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+aalwData :: Lens' AutoscalerAggregatedListWarning [AutoscalerAggregatedListWarningDataItem]
+aalwData
+  = lens _aalwData (\ s a -> s{_aalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+aalwCode :: Lens' AutoscalerAggregatedListWarning (Maybe AutoscalerAggregatedListWarningCode)
+aalwCode = lens _aalwCode (\ s a -> s{_aalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+aalwMessage :: Lens' AutoscalerAggregatedListWarning (Maybe Text)
+aalwMessage
+  = lens _aalwMessage (\ s a -> s{_aalwMessage = a})
+
+instance FromJSON AutoscalerAggregatedListWarning
+         where
+        parseJSON
+          = withObject "AutoscalerAggregatedListWarning"
+              (\ o ->
+                 AutoscalerAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AutoscalerAggregatedListWarning where
+        toJSON AutoscalerAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _aalwData,
+                  ("code" .=) <$> _aalwCode,
+                  ("message" .=) <$> _aalwMessage])
+
+--
+-- /See:/ 'autoscalerListWarningDataItem' smart constructor.
+data AutoscalerListWarningDataItem = AutoscalerListWarningDataItem'
+    { _alwdiValue :: !(Maybe Text)
+    , _alwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alwdiValue'
+--
+-- * 'alwdiKey'
+autoscalerListWarningDataItem
+    :: AutoscalerListWarningDataItem
+autoscalerListWarningDataItem =
+    AutoscalerListWarningDataItem'
+    { _alwdiValue = Nothing
+    , _alwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+alwdiValue :: Lens' AutoscalerListWarningDataItem (Maybe Text)
+alwdiValue
+  = lens _alwdiValue (\ s a -> s{_alwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+alwdiKey :: Lens' AutoscalerListWarningDataItem (Maybe Text)
+alwdiKey = lens _alwdiKey (\ s a -> s{_alwdiKey = a})
+
+instance FromJSON AutoscalerListWarningDataItem where
+        parseJSON
+          = withObject "AutoscalerListWarningDataItem"
+              (\ o ->
+                 AutoscalerListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AutoscalerListWarningDataItem where
+        toJSON AutoscalerListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _alwdiValue,
+                  ("key" .=) <$> _alwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeTypeListWarning' smart constructor.
+data NodeTypeListWarning = NodeTypeListWarning'
+    { _ntlwData    :: !(Maybe [NodeTypeListWarningDataItem])
+    , _ntlwCode    :: !(Maybe NodeTypeListWarningCode)
+    , _ntlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntlwData'
+--
+-- * 'ntlwCode'
+--
+-- * 'ntlwMessage'
+nodeTypeListWarning
+    :: NodeTypeListWarning
+nodeTypeListWarning =
+    NodeTypeListWarning'
+    { _ntlwData = Nothing
+    , _ntlwCode = Nothing
+    , _ntlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ntlwData :: Lens' NodeTypeListWarning [NodeTypeListWarningDataItem]
+ntlwData
+  = lens _ntlwData (\ s a -> s{_ntlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ntlwCode :: Lens' NodeTypeListWarning (Maybe NodeTypeListWarningCode)
+ntlwCode = lens _ntlwCode (\ s a -> s{_ntlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ntlwMessage :: Lens' NodeTypeListWarning (Maybe Text)
+ntlwMessage
+  = lens _ntlwMessage (\ s a -> s{_ntlwMessage = a})
+
+instance FromJSON NodeTypeListWarning where
+        parseJSON
+          = withObject "NodeTypeListWarning"
+              (\ o ->
+                 NodeTypeListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTypeListWarning where
+        toJSON NodeTypeListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ntlwData,
+                  ("code" .=) <$> _ntlwCode,
+                  ("message" .=) <$> _ntlwMessage])
+
+-- | Contains a list of HealthCheck resources.
+--
+-- /See:/ 'healthCheckList' smart constructor.
+data HealthCheckList = HealthCheckList'
+    { _hclNextPageToken :: !(Maybe Text)
+    , _hclKind          :: !Text
+    , _hclItems         :: !(Maybe [HealthCheck])
+    , _hclSelfLink      :: !(Maybe Text)
+    , _hclWarning       :: !(Maybe HealthCheckListWarning)
+    , _hclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheckList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hclNextPageToken'
+--
+-- * 'hclKind'
+--
+-- * 'hclItems'
+--
+-- * 'hclSelfLink'
+--
+-- * 'hclWarning'
+--
+-- * 'hclId'
+healthCheckList
+    :: HealthCheckList
+healthCheckList =
+    HealthCheckList'
+    { _hclNextPageToken = Nothing
+    , _hclKind = "compute#healthCheckList"
+    , _hclItems = Nothing
+    , _hclSelfLink = Nothing
+    , _hclWarning = Nothing
+    , _hclId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+hclNextPageToken :: Lens' HealthCheckList (Maybe Text)
+hclNextPageToken
+  = lens _hclNextPageToken
+      (\ s a -> s{_hclNextPageToken = a})
+
+-- | Type of resource.
+hclKind :: Lens' HealthCheckList Text
+hclKind = lens _hclKind (\ s a -> s{_hclKind = a})
+
+-- | A list of HealthCheck resources.
+hclItems :: Lens' HealthCheckList [HealthCheck]
+hclItems
+  = lens _hclItems (\ s a -> s{_hclItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+hclSelfLink :: Lens' HealthCheckList (Maybe Text)
+hclSelfLink
+  = lens _hclSelfLink (\ s a -> s{_hclSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+hclWarning :: Lens' HealthCheckList (Maybe HealthCheckListWarning)
+hclWarning
+  = lens _hclWarning (\ s a -> s{_hclWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+hclId :: Lens' HealthCheckList (Maybe Text)
+hclId = lens _hclId (\ s a -> s{_hclId = a})
+
+instance FromJSON HealthCheckList where
+        parseJSON
+          = withObject "HealthCheckList"
+              (\ o ->
+                 HealthCheckList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#healthCheckList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON HealthCheckList where
+        toJSON HealthCheckList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _hclNextPageToken,
+                  Just ("kind" .= _hclKind),
+                  ("items" .=) <$> _hclItems,
+                  ("selfLink" .=) <$> _hclSelfLink,
+                  ("warning" .=) <$> _hclWarning,
+                  ("id" .=) <$> _hclId])
+
+-- | [Output Only] Encountered errors during the last attempt to create or
+-- delete the instance.
+--
+-- /See:/ 'managedInstanceLastAttemptErrors' smart constructor.
+newtype ManagedInstanceLastAttemptErrors = ManagedInstanceLastAttemptErrors'
+    { _milaeErrors :: Maybe [ManagedInstanceLastAttemptErrorsErrorsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttemptErrors' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaeErrors'
+managedInstanceLastAttemptErrors
+    :: ManagedInstanceLastAttemptErrors
+managedInstanceLastAttemptErrors =
+    ManagedInstanceLastAttemptErrors'
+    { _milaeErrors = Nothing
+    }
+
+-- | [Output Only] The array of errors encountered while processing this
+-- operation.
+milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]
+milaeErrors
+  = lens _milaeErrors (\ s a -> s{_milaeErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ManagedInstanceLastAttemptErrors
+         where
+        parseJSON
+          = withObject "ManagedInstanceLastAttemptErrors"
+              (\ o ->
+                 ManagedInstanceLastAttemptErrors' <$>
+                   (o .:? "errors" .!= mempty))
+
+instance ToJSON ManagedInstanceLastAttemptErrors
+         where
+        toJSON ManagedInstanceLastAttemptErrors'{..}
+          = object (catMaybes [("errors" .=) <$> _milaeErrors])
+
+-- | Status of a NAT contained in this router.
+--
+-- /See:/ 'routerStatusNATStatus' smart constructor.
+data RouterStatusNATStatus = RouterStatusNATStatus'
+    { _rsnatsUserAllocatedNATIPResources   :: !(Maybe [Text])
+    , _rsnatsName                          :: !(Maybe Text)
+    , _rsnatsAutoAllocatedNATIPs           :: !(Maybe [Text])
+    , _rsnatsMinExtraNATIPsNeeded          :: !(Maybe (Textual Int32))
+    , _rsnatsNumVMEndpointsWithNATMAppings :: !(Maybe (Textual Int32))
+    , _rsnatsUserAllocatedNATIPs           :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterStatusNATStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsnatsUserAllocatedNATIPResources'
+--
+-- * 'rsnatsName'
+--
+-- * 'rsnatsAutoAllocatedNATIPs'
+--
+-- * 'rsnatsMinExtraNATIPsNeeded'
+--
+-- * 'rsnatsNumVMEndpointsWithNATMAppings'
+--
+-- * 'rsnatsUserAllocatedNATIPs'
+routerStatusNATStatus
+    :: RouterStatusNATStatus
+routerStatusNATStatus =
+    RouterStatusNATStatus'
+    { _rsnatsUserAllocatedNATIPResources = Nothing
+    , _rsnatsName = Nothing
+    , _rsnatsAutoAllocatedNATIPs = Nothing
+    , _rsnatsMinExtraNATIPsNeeded = Nothing
+    , _rsnatsNumVMEndpointsWithNATMAppings = Nothing
+    , _rsnatsUserAllocatedNATIPs = Nothing
+    }
+
+-- | A list of fully qualified URLs of reserved IP address resources.
+rsnatsUserAllocatedNATIPResources :: Lens' RouterStatusNATStatus [Text]
+rsnatsUserAllocatedNATIPResources
+  = lens _rsnatsUserAllocatedNATIPResources
+      (\ s a -> s{_rsnatsUserAllocatedNATIPResources = a})
+      . _Default
+      . _Coerce
+
+-- | Unique name of this NAT.
+rsnatsName :: Lens' RouterStatusNATStatus (Maybe Text)
+rsnatsName
+  = lens _rsnatsName (\ s a -> s{_rsnatsName = a})
+
+-- | A list of IPs auto-allocated for NAT. Example: [\"1.1.1.1\",
+-- \"129.2.16.89\"]
+rsnatsAutoAllocatedNATIPs :: Lens' RouterStatusNATStatus [Text]
+rsnatsAutoAllocatedNATIPs
+  = lens _rsnatsAutoAllocatedNATIPs
+      (\ s a -> s{_rsnatsAutoAllocatedNATIPs = a})
+      . _Default
+      . _Coerce
+
+-- | The number of extra IPs to allocate. This will be greater than 0 only if
+-- user-specified IPs are NOT enough to allow all configured VMs to use
+-- NAT. This value is meaningful only when auto-allocation of NAT IPs is
+-- *not* used.
+rsnatsMinExtraNATIPsNeeded :: Lens' RouterStatusNATStatus (Maybe Int32)
+rsnatsMinExtraNATIPsNeeded
+  = lens _rsnatsMinExtraNATIPsNeeded
+      (\ s a -> s{_rsnatsMinExtraNATIPsNeeded = a})
+      . mapping _Coerce
+
+-- | Number of VM endpoints (i.e., Nics) that can use NAT.
+rsnatsNumVMEndpointsWithNATMAppings :: Lens' RouterStatusNATStatus (Maybe Int32)
+rsnatsNumVMEndpointsWithNATMAppings
+  = lens _rsnatsNumVMEndpointsWithNATMAppings
+      (\ s a ->
+         s{_rsnatsNumVMEndpointsWithNATMAppings = a})
+      . mapping _Coerce
+
+-- | A list of IPs user-allocated for NAT. They will be raw IP strings like
+-- \"179.12.26.133\".
+rsnatsUserAllocatedNATIPs :: Lens' RouterStatusNATStatus [Text]
+rsnatsUserAllocatedNATIPs
+  = lens _rsnatsUserAllocatedNATIPs
+      (\ s a -> s{_rsnatsUserAllocatedNATIPs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RouterStatusNATStatus where
+        parseJSON
+          = withObject "RouterStatusNATStatus"
+              (\ o ->
+                 RouterStatusNATStatus' <$>
+                   (o .:? "userAllocatedNatIpResources" .!= mempty) <*>
+                     (o .:? "name")
+                     <*> (o .:? "autoAllocatedNatIps" .!= mempty)
+                     <*> (o .:? "minExtraNatIpsNeeded")
+                     <*> (o .:? "numVmEndpointsWithNatMappings")
+                     <*> (o .:? "userAllocatedNatIps" .!= mempty))
+
+instance ToJSON RouterStatusNATStatus where
+        toJSON RouterStatusNATStatus'{..}
+          = object
+              (catMaybes
+                 [("userAllocatedNatIpResources" .=) <$>
+                    _rsnatsUserAllocatedNATIPResources,
+                  ("name" .=) <$> _rsnatsName,
+                  ("autoAllocatedNatIps" .=) <$>
+                    _rsnatsAutoAllocatedNATIPs,
+                  ("minExtraNatIpsNeeded" .=) <$>
+                    _rsnatsMinExtraNATIPsNeeded,
+                  ("numVmEndpointsWithNatMappings" .=) <$>
+                    _rsnatsNumVMEndpointsWithNATMAppings,
+                  ("userAllocatedNatIps" .=) <$>
+                    _rsnatsUserAllocatedNATIPs])
+
+--
+-- /See:/ 'targetPoolsRemoveInstanceRequest' smart constructor.
+newtype TargetPoolsRemoveInstanceRequest = TargetPoolsRemoveInstanceRequest'
+    { _tprirInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprirInstances'
+targetPoolsRemoveInstanceRequest
+    :: TargetPoolsRemoveInstanceRequest
+targetPoolsRemoveInstanceRequest =
+    TargetPoolsRemoveInstanceRequest'
+    { _tprirInstances = Nothing
+    }
+
+-- | URLs of the instances to be removed from target pool.
+tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]
+tprirInstances
+  = lens _tprirInstances
+      (\ s a -> s{_tprirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsRemoveInstanceRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsRemoveInstanceRequest"
+              (\ o ->
+                 TargetPoolsRemoveInstanceRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON TargetPoolsRemoveInstanceRequest
+         where
+        toJSON TargetPoolsRemoveInstanceRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _tprirInstances])
+
+--
+-- /See:/ 'nodeTypeAggregatedListWarningDataItem' smart constructor.
+data NodeTypeAggregatedListWarningDataItem = NodeTypeAggregatedListWarningDataItem'
+    { _nValue :: !(Maybe Text)
+    , _nKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nValue'
+--
+-- * 'nKey'
+nodeTypeAggregatedListWarningDataItem
+    :: NodeTypeAggregatedListWarningDataItem
+nodeTypeAggregatedListWarningDataItem =
+    NodeTypeAggregatedListWarningDataItem'
+    { _nValue = Nothing
+    , _nKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+nValue :: Lens' NodeTypeAggregatedListWarningDataItem (Maybe Text)
+nValue = lens _nValue (\ s a -> s{_nValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+nKey :: Lens' NodeTypeAggregatedListWarningDataItem (Maybe Text)
+nKey = lens _nKey (\ s a -> s{_nKey = a})
+
+instance FromJSON
+         NodeTypeAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "NodeTypeAggregatedListWarningDataItem"
+              (\ o ->
+                 NodeTypeAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeTypeAggregatedListWarningDataItem
+         where
+        toJSON NodeTypeAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _nValue, ("key" .=) <$> _nKey])
+
+--
+-- /See:/ 'targetInstancesScopedListWarningDataItem' smart constructor.
+data TargetInstancesScopedListWarningDataItem = TargetInstancesScopedListWarningDataItem'
+    { _tislwdiValue :: !(Maybe Text)
+    , _tislwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislwdiValue'
+--
+-- * 'tislwdiKey'
+targetInstancesScopedListWarningDataItem
+    :: TargetInstancesScopedListWarningDataItem
+targetInstancesScopedListWarningDataItem =
+    TargetInstancesScopedListWarningDataItem'
+    { _tislwdiValue = Nothing
+    , _tislwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
+tislwdiValue
+  = lens _tislwdiValue (\ s a -> s{_tislwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
+tislwdiKey
+  = lens _tislwdiKey (\ s a -> s{_tislwdiKey = a})
+
+instance FromJSON
+         TargetInstancesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetInstancesScopedListWarningDataItem"
+              (\ o ->
+                 TargetInstancesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetInstancesScopedListWarningDataItem where
+        toJSON TargetInstancesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tislwdiValue,
+                  ("key" .=) <$> _tislwdiKey])
+
+-- | [Output Only] An informational warning that appears when the machine
+-- types list is empty.
+--
+-- /See:/ 'machineTypesScopedListWarning' smart constructor.
+data MachineTypesScopedListWarning = MachineTypesScopedListWarning'
+    { _mtslwData    :: !(Maybe [MachineTypesScopedListWarningDataItem])
+    , _mtslwCode    :: !(Maybe MachineTypesScopedListWarningCode)
+    , _mtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslwData'
+--
+-- * 'mtslwCode'
+--
+-- * 'mtslwMessage'
+machineTypesScopedListWarning
+    :: MachineTypesScopedListWarning
+machineTypesScopedListWarning =
+    MachineTypesScopedListWarning'
+    { _mtslwData = Nothing
+    , _mtslwCode = Nothing
+    , _mtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]
+mtslwData
+  = lens _mtslwData (\ s a -> s{_mtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)
+mtslwCode
+  = lens _mtslwCode (\ s a -> s{_mtslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)
+mtslwMessage
+  = lens _mtslwMessage (\ s a -> s{_mtslwMessage = a})
+
+instance FromJSON MachineTypesScopedListWarning where
+        parseJSON
+          = withObject "MachineTypesScopedListWarning"
+              (\ o ->
+                 MachineTypesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON MachineTypesScopedListWarning where
+        toJSON MachineTypesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _mtslwData,
+                  ("code" .=) <$> _mtslwCode,
+                  ("message" .=) <$> _mtslwMessage])
+
+--
+-- /See:/ 'zoneSetLabelsRequest' smart constructor.
+data ZoneSetLabelsRequest = ZoneSetLabelsRequest'
+    { _zslrLabels           :: !(Maybe ZoneSetLabelsRequestLabels)
+    , _zslrLabelFingerprint :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneSetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zslrLabels'
+--
+-- * 'zslrLabelFingerprint'
+zoneSetLabelsRequest
+    :: ZoneSetLabelsRequest
+zoneSetLabelsRequest =
+    ZoneSetLabelsRequest'
+    { _zslrLabels = Nothing
+    , _zslrLabelFingerprint = Nothing
+    }
+
+-- | The labels to set for this resource.
+zslrLabels :: Lens' ZoneSetLabelsRequest (Maybe ZoneSetLabelsRequestLabels)
+zslrLabels
+  = lens _zslrLabels (\ s a -> s{_zslrLabels = a})
+
+-- | The fingerprint of the previous set of labels for this resource, used to
+-- detect conflicts. The fingerprint is initially generated by Compute
+-- Engine and changes after every request to modify or update labels. You
+-- must always provide an up-to-date fingerprint hash in order to update or
+-- change labels. Make a get() request to the resource to get the latest
+-- fingerprint.
+zslrLabelFingerprint :: Lens' ZoneSetLabelsRequest (Maybe ByteString)
+zslrLabelFingerprint
+  = lens _zslrLabelFingerprint
+      (\ s a -> s{_zslrLabelFingerprint = a})
+      . mapping _Bytes
+
+instance FromJSON ZoneSetLabelsRequest where
+        parseJSON
+          = withObject "ZoneSetLabelsRequest"
+              (\ o ->
+                 ZoneSetLabelsRequest' <$>
+                   (o .:? "labels") <*> (o .:? "labelFingerprint"))
+
+instance ToJSON ZoneSetLabelsRequest where
+        toJSON ZoneSetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("labels" .=) <$> _zslrLabels,
+                  ("labelFingerprint" .=) <$> _zslrLabelFingerprint])
+
+-- | A TargetInstance resource. This resource defines an endpoint instance
+-- that terminates traffic of certain protocols. (== resource_for
+-- beta.targetInstances ==) (== resource_for v1.targetInstances ==)
+--
+-- /See:/ 'targetInstance' smart constructor.
+data TargetInstance = TargetInstance'
+    { _tiKind              :: !Text
+    , _tiNATPolicy         :: !(Maybe TargetInstanceNATPolicy)
+    , _tiZone              :: !(Maybe Text)
+    , _tiSelfLink          :: !(Maybe Text)
+    , _tiName              :: !(Maybe Text)
+    , _tiCreationTimestamp :: !(Maybe Text)
+    , _tiId                :: !(Maybe (Textual Word64))
+    , _tiDescription       :: !(Maybe Text)
+    , _tiInstance          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiKind'
+--
+-- * 'tiNATPolicy'
+--
+-- * 'tiZone'
+--
+-- * 'tiSelfLink'
+--
+-- * 'tiName'
+--
+-- * 'tiCreationTimestamp'
+--
+-- * 'tiId'
+--
+-- * 'tiDescription'
+--
+-- * 'tiInstance'
+targetInstance
+    :: TargetInstance
+targetInstance =
+    TargetInstance'
+    { _tiKind = "compute#targetInstance"
+    , _tiNATPolicy = Nothing
+    , _tiZone = Nothing
+    , _tiSelfLink = Nothing
+    , _tiName = Nothing
+    , _tiCreationTimestamp = Nothing
+    , _tiId = Nothing
+    , _tiDescription = Nothing
+    , _tiInstance = Nothing
+    }
+
+-- | [Output Only] The type of the resource. Always compute#targetInstance
+-- for target instances.
+tiKind :: Lens' TargetInstance Text
+tiKind = lens _tiKind (\ s a -> s{_tiKind = a})
+
+-- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
+-- only NO_NAT (default value) is supported.
+tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)
+tiNATPolicy
+  = lens _tiNATPolicy (\ s a -> s{_tiNATPolicy = a})
+
+-- | [Output Only] URL of the zone where the target instance resides. You
+-- must specify this field as part of the HTTP request URL. It is not
+-- settable as a field in the request body.
+tiZone :: Lens' TargetInstance (Maybe Text)
+tiZone = lens _tiZone (\ s a -> s{_tiZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tiSelfLink :: Lens' TargetInstance (Maybe Text)
+tiSelfLink
+  = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tiName :: Lens' TargetInstance (Maybe Text)
+tiName = lens _tiName (\ s a -> s{_tiName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)
+tiCreationTimestamp
+  = lens _tiCreationTimestamp
+      (\ s a -> s{_tiCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+tiId :: Lens' TargetInstance (Maybe Word64)
+tiId
+  = lens _tiId (\ s a -> s{_tiId = a}) .
+      mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+tiDescription :: Lens' TargetInstance (Maybe Text)
+tiDescription
+  = lens _tiDescription
+      (\ s a -> s{_tiDescription = a})
+
+-- | A URL to the virtual machine instance that handles traffic for this
+-- target instance. When creating a target instance, you can provide the
+-- fully-qualified URL or a valid partial URL to the desired virtual
+-- machine. For example, the following are all valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
+-- - projects\/project\/zones\/zone\/instances\/instance -
+-- zones\/zone\/instances\/instance
+tiInstance :: Lens' TargetInstance (Maybe Text)
+tiInstance
+  = lens _tiInstance (\ s a -> s{_tiInstance = a})
+
+instance FromJSON TargetInstance where
+        parseJSON
+          = withObject "TargetInstance"
+              (\ o ->
+                 TargetInstance' <$>
+                   (o .:? "kind" .!= "compute#targetInstance") <*>
+                     (o .:? "natPolicy")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "instance"))
+
+instance ToJSON TargetInstance where
+        toJSON TargetInstance'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tiKind),
+                  ("natPolicy" .=) <$> _tiNATPolicy,
+                  ("zone" .=) <$> _tiZone,
+                  ("selfLink" .=) <$> _tiSelfLink,
+                  ("name" .=) <$> _tiName,
+                  ("creationTimestamp" .=) <$> _tiCreationTimestamp,
+                  ("id" .=) <$> _tiId,
+                  ("description" .=) <$> _tiDescription,
+                  ("instance" .=) <$> _tiInstance])
+
+--
+-- /See:/ 'targetPoolInstanceHealth' smart constructor.
+data TargetPoolInstanceHealth = TargetPoolInstanceHealth'
+    { _tpihKind         :: !Text
+    , _tpihHealthStatus :: !(Maybe [HealthStatus])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolInstanceHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpihKind'
+--
+-- * 'tpihHealthStatus'
+targetPoolInstanceHealth
+    :: TargetPoolInstanceHealth
+targetPoolInstanceHealth =
+    TargetPoolInstanceHealth'
+    { _tpihKind = "compute#targetPoolInstanceHealth"
+    , _tpihHealthStatus = Nothing
+    }
+
+-- | [Output Only] Type of resource. Always compute#targetPoolInstanceHealth
+-- when checking the health of an instance.
+tpihKind :: Lens' TargetPoolInstanceHealth Text
+tpihKind = lens _tpihKind (\ s a -> s{_tpihKind = a})
+
+tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]
+tpihHealthStatus
+  = lens _tpihHealthStatus
+      (\ s a -> s{_tpihHealthStatus = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolInstanceHealth where
+        parseJSON
+          = withObject "TargetPoolInstanceHealth"
+              (\ o ->
+                 TargetPoolInstanceHealth' <$>
+                   (o .:? "kind" .!= "compute#targetPoolInstanceHealth")
+                     <*> (o .:? "healthStatus" .!= mempty))
+
+instance ToJSON TargetPoolInstanceHealth where
+        toJSON TargetPoolInstanceHealth'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tpihKind),
+                  ("healthStatus" .=) <$> _tpihHealthStatus])
+
+--
+-- /See:/ 'acceleratorTypeAggregatedList' smart constructor.
+data AcceleratorTypeAggregatedList = AcceleratorTypeAggregatedList'
+    { _atalNextPageToken :: !(Maybe Text)
+    , _atalKind          :: !Text
+    , _atalItems         :: !(Maybe AcceleratorTypeAggregatedListItems)
+    , _atalSelfLink      :: !(Maybe Text)
+    , _atalWarning       :: !(Maybe AcceleratorTypeAggregatedListWarning)
+    , _atalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atalNextPageToken'
+--
+-- * 'atalKind'
+--
+-- * 'atalItems'
+--
+-- * 'atalSelfLink'
+--
+-- * 'atalWarning'
+--
+-- * 'atalId'
+acceleratorTypeAggregatedList
+    :: AcceleratorTypeAggregatedList
+acceleratorTypeAggregatedList =
+    AcceleratorTypeAggregatedList'
+    { _atalNextPageToken = Nothing
+    , _atalKind = "compute#acceleratorTypeAggregatedList"
+    , _atalItems = Nothing
+    , _atalSelfLink = Nothing
+    , _atalWarning = Nothing
+    , _atalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+atalNextPageToken :: Lens' AcceleratorTypeAggregatedList (Maybe Text)
+atalNextPageToken
+  = lens _atalNextPageToken
+      (\ s a -> s{_atalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always
+-- compute#acceleratorTypeAggregatedList for aggregated lists of
+-- accelerator types.
+atalKind :: Lens' AcceleratorTypeAggregatedList Text
+atalKind = lens _atalKind (\ s a -> s{_atalKind = a})
+
+-- | A list of AcceleratorTypesScopedList resources.
+atalItems :: Lens' AcceleratorTypeAggregatedList (Maybe AcceleratorTypeAggregatedListItems)
+atalItems
+  = lens _atalItems (\ s a -> s{_atalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+atalSelfLink :: Lens' AcceleratorTypeAggregatedList (Maybe Text)
+atalSelfLink
+  = lens _atalSelfLink (\ s a -> s{_atalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+atalWarning :: Lens' AcceleratorTypeAggregatedList (Maybe AcceleratorTypeAggregatedListWarning)
+atalWarning
+  = lens _atalWarning (\ s a -> s{_atalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+atalId :: Lens' AcceleratorTypeAggregatedList (Maybe Text)
+atalId = lens _atalId (\ s a -> s{_atalId = a})
+
+instance FromJSON AcceleratorTypeAggregatedList where
+        parseJSON
+          = withObject "AcceleratorTypeAggregatedList"
+              (\ o ->
+                 AcceleratorTypeAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#acceleratorTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AcceleratorTypeAggregatedList where
+        toJSON AcceleratorTypeAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _atalNextPageToken,
+                  Just ("kind" .= _atalKind),
+                  ("items" .=) <$> _atalItems,
+                  ("selfLink" .=) <$> _atalSelfLink,
+                  ("warning" .=) <$> _atalWarning,
+                  ("id" .=) <$> _atalId])
+
+-- | A routing configuration attached to a network resource. The message
+-- includes the list of routers associated with the network, and a flag
+-- indicating the type of routing behavior to enforce network-wide.
+--
+-- /See:/ 'networkRoutingConfig' smart constructor.
+newtype NetworkRoutingConfig = NetworkRoutingConfig'
+    { _nrcRoutingMode :: Maybe NetworkRoutingConfigRoutingMode
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkRoutingConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nrcRoutingMode'
+networkRoutingConfig
+    :: NetworkRoutingConfig
+networkRoutingConfig =
+    NetworkRoutingConfig'
+    { _nrcRoutingMode = Nothing
+    }
+
+-- | The network-wide routing mode to use. If set to REGIONAL, this
+-- network\'s cloud routers will only advertise routes with subnets of this
+-- network in the same region as the router. If set to GLOBAL, this
+-- network\'s cloud routers will advertise routes with all subnets of this
+-- network, across regions.
+nrcRoutingMode :: Lens' NetworkRoutingConfig (Maybe NetworkRoutingConfigRoutingMode)
+nrcRoutingMode
+  = lens _nrcRoutingMode
+      (\ s a -> s{_nrcRoutingMode = a})
+
+instance FromJSON NetworkRoutingConfig where
+        parseJSON
+          = withObject "NetworkRoutingConfig"
+              (\ o ->
+                 NetworkRoutingConfig' <$> (o .:? "routingMode"))
+
+instance ToJSON NetworkRoutingConfig where
+        toJSON NetworkRoutingConfig'{..}
+          = object
+              (catMaybes [("routingMode" .=) <$> _nrcRoutingMode])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeTemplateListWarning' smart constructor.
+data NodeTemplateListWarning = NodeTemplateListWarning'
+    { _nodData    :: !(Maybe [NodeTemplateListWarningDataItem])
+    , _nodCode    :: !(Maybe NodeTemplateListWarningCode)
+    , _nodMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nodData'
+--
+-- * 'nodCode'
+--
+-- * 'nodMessage'
+nodeTemplateListWarning
+    :: NodeTemplateListWarning
+nodeTemplateListWarning =
+    NodeTemplateListWarning'
+    { _nodData = Nothing
+    , _nodCode = Nothing
+    , _nodMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+nodData :: Lens' NodeTemplateListWarning [NodeTemplateListWarningDataItem]
+nodData
+  = lens _nodData (\ s a -> s{_nodData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+nodCode :: Lens' NodeTemplateListWarning (Maybe NodeTemplateListWarningCode)
+nodCode = lens _nodCode (\ s a -> s{_nodCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+nodMessage :: Lens' NodeTemplateListWarning (Maybe Text)
+nodMessage
+  = lens _nodMessage (\ s a -> s{_nodMessage = a})
+
+instance FromJSON NodeTemplateListWarning where
+        parseJSON
+          = withObject "NodeTemplateListWarning"
+              (\ o ->
+                 NodeTemplateListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTemplateListWarning where
+        toJSON NodeTemplateListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _nodData, ("code" .=) <$> _nodCode,
+                  ("message" .=) <$> _nodMessage])
+
+--
+-- /See:/ 'instanceGroupManagersListManagedInstancesResponse' smart constructor.
+newtype InstanceGroupManagersListManagedInstancesResponse = InstanceGroupManagersListManagedInstancesResponse'
+    { _igmlmirManagedInstances :: Maybe [ManagedInstance]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersListManagedInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlmirManagedInstances'
+instanceGroupManagersListManagedInstancesResponse
+    :: InstanceGroupManagersListManagedInstancesResponse
+instanceGroupManagersListManagedInstancesResponse =
+    InstanceGroupManagersListManagedInstancesResponse'
+    { _igmlmirManagedInstances = Nothing
+    }
+
+-- | [Output Only] The list of instances in the managed instance group.
+igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]
+igmlmirManagedInstances
+  = lens _igmlmirManagedInstances
+      (\ s a -> s{_igmlmirManagedInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersListManagedInstancesResponse
+         where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersListManagedInstancesResponse"
+              (\ o ->
+                 InstanceGroupManagersListManagedInstancesResponse'
+                   <$> (o .:? "managedInstances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersListManagedInstancesResponse
+         where
+        toJSON
+          InstanceGroupManagersListManagedInstancesResponse'{..}
+          = object
+              (catMaybes
+                 [("managedInstances" .=) <$>
+                    _igmlmirManagedInstances])
+
+-- |
+--
+-- /See:/ 'instanceProperties' smart constructor.
+data InstanceProperties = InstanceProperties'
+    { _ipServiceAccounts   :: !(Maybe [ServiceAccount])
+    , _ipNetworkInterfaces :: !(Maybe [NetworkInterface])
+    , _ipGuestAccelerators :: !(Maybe [AcceleratorConfig])
+    , _ipMachineType       :: !(Maybe Text)
+    , _ipMetadata          :: !(Maybe Metadata)
+    , _ipLabels            :: !(Maybe InstancePropertiesLabels)
+    , _ipScheduling        :: !(Maybe Scheduling)
+    , _ipMinCPUPlatform    :: !(Maybe Text)
+    , _ipDisks             :: !(Maybe [AttachedDisk])
+    , _ipCanIPForward      :: !(Maybe Bool)
+    , _ipDescription       :: !(Maybe Text)
+    , _ipTags              :: !(Maybe Tags)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipServiceAccounts'
+--
+-- * 'ipNetworkInterfaces'
+--
+-- * 'ipGuestAccelerators'
+--
+-- * 'ipMachineType'
+--
+-- * 'ipMetadata'
+--
+-- * 'ipLabels'
+--
+-- * 'ipScheduling'
+--
+-- * 'ipMinCPUPlatform'
+--
+-- * 'ipDisks'
+--
+-- * 'ipCanIPForward'
+--
+-- * 'ipDescription'
+--
+-- * 'ipTags'
+instanceProperties
+    :: InstanceProperties
+instanceProperties =
+    InstanceProperties'
+    { _ipServiceAccounts = Nothing
+    , _ipNetworkInterfaces = Nothing
+    , _ipGuestAccelerators = Nothing
+    , _ipMachineType = Nothing
+    , _ipMetadata = Nothing
+    , _ipLabels = Nothing
+    , _ipScheduling = Nothing
+    , _ipMinCPUPlatform = Nothing
+    , _ipDisks = Nothing
+    , _ipCanIPForward = Nothing
+    , _ipDescription = Nothing
+    , _ipTags = Nothing
+    }
+
+-- | A list of service accounts with specified scopes. Access tokens for
+-- these service accounts are available to the instances that are created
+-- from this template. Use metadata queries to obtain the access tokens for
+-- these instances.
+ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]
+ipServiceAccounts
+  = lens _ipServiceAccounts
+      (\ s a -> s{_ipServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | An array of network access configurations for this interface.
+ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]
+ipNetworkInterfaces
+  = lens _ipNetworkInterfaces
+      (\ s a -> s{_ipNetworkInterfaces = a})
+      . _Default
+      . _Coerce
+
+-- | A list of guest accelerator cards\' type and count to use for instances
+-- created from the instance template.
+ipGuestAccelerators :: Lens' InstanceProperties [AcceleratorConfig]
+ipGuestAccelerators
+  = lens _ipGuestAccelerators
+      (\ s a -> s{_ipGuestAccelerators = a})
+      . _Default
+      . _Coerce
+
+-- | The machine type to use for instances that are created from this
+-- template.
+ipMachineType :: Lens' InstanceProperties (Maybe Text)
+ipMachineType
+  = lens _ipMachineType
+      (\ s a -> s{_ipMachineType = a})
+
+-- | The metadata key\/value pairs to assign to instances that are created
+-- from this template. These pairs can consist of custom metadata or
+-- predefined keys. See Project and instance metadata for more information.
+ipMetadata :: Lens' InstanceProperties (Maybe Metadata)
+ipMetadata
+  = lens _ipMetadata (\ s a -> s{_ipMetadata = a})
+
+-- | Labels to apply to instances that are created from this template.
+ipLabels :: Lens' InstanceProperties (Maybe InstancePropertiesLabels)
+ipLabels = lens _ipLabels (\ s a -> s{_ipLabels = a})
+
+-- | Specifies the scheduling options for the instances that are created from
+-- this template.
+ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)
+ipScheduling
+  = lens _ipScheduling (\ s a -> s{_ipScheduling = a})
+
+-- | 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 Specifying a Minimum CPU Platform.
+ipMinCPUPlatform :: Lens' InstanceProperties (Maybe Text)
+ipMinCPUPlatform
+  = lens _ipMinCPUPlatform
+      (\ s a -> s{_ipMinCPUPlatform = a})
+
+-- | An array of disks that are associated with the instances that are
+-- created from this template.
+ipDisks :: Lens' InstanceProperties [AttachedDisk]
+ipDisks
+  = lens _ipDisks (\ s a -> s{_ipDisks = a}) . _Default
+      . _Coerce
+
+-- | Enables instances created based on this template to send packets with
+-- source IP addresses other than their own and receive packets with
+-- destination IP addresses other than their own. If these instances will
+-- be used as an IP gateway or it will be set as the next-hop in a Route
+-- resource, specify true. If unsure, leave this set to false. See the
+-- Enable IP forwarding documentation for more information.
+ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)
+ipCanIPForward
+  = lens _ipCanIPForward
+      (\ s a -> s{_ipCanIPForward = a})
+
+-- | An optional text description for the instances that are created from
+-- this instance template.
+ipDescription :: Lens' InstanceProperties (Maybe Text)
+ipDescription
+  = lens _ipDescription
+      (\ s a -> s{_ipDescription = a})
+
+-- | A list of tags to apply to the instances that are created from this
+-- template. The tags identify valid sources or targets for network
+-- firewalls. The setTags method can modify this list of tags. Each tag
+-- within the list must comply with RFC1035.
+ipTags :: Lens' InstanceProperties (Maybe Tags)
+ipTags = lens _ipTags (\ s a -> s{_ipTags = a})
+
+instance FromJSON InstanceProperties where
+        parseJSON
+          = withObject "InstanceProperties"
+              (\ o ->
+                 InstanceProperties' <$>
+                   (o .:? "serviceAccounts" .!= mempty) <*>
+                     (o .:? "networkInterfaces" .!= mempty)
+                     <*> (o .:? "guestAccelerators" .!= mempty)
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "minCpuPlatform")
+                     <*> (o .:? "disks" .!= mempty)
+                     <*> (o .:? "canIpForward")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON InstanceProperties where
+        toJSON InstanceProperties'{..}
+          = object
+              (catMaybes
+                 [("serviceAccounts" .=) <$> _ipServiceAccounts,
+                  ("networkInterfaces" .=) <$> _ipNetworkInterfaces,
+                  ("guestAccelerators" .=) <$> _ipGuestAccelerators,
+                  ("machineType" .=) <$> _ipMachineType,
+                  ("metadata" .=) <$> _ipMetadata,
+                  ("labels" .=) <$> _ipLabels,
+                  ("scheduling" .=) <$> _ipScheduling,
+                  ("minCpuPlatform" .=) <$> _ipMinCPUPlatform,
+                  ("disks" .=) <$> _ipDisks,
+                  ("canIpForward" .=) <$> _ipCanIPForward,
+                  ("description" .=) <$> _ipDescription,
+                  ("tags" .=) <$> _ipTags])
+
+--
+-- /See:/ 'projectsListXpnHostsRequest' smart constructor.
+newtype ProjectsListXpnHostsRequest = ProjectsListXpnHostsRequest'
+    { _plxhrOrganization :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsListXpnHostsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plxhrOrganization'
+projectsListXpnHostsRequest
+    :: ProjectsListXpnHostsRequest
+projectsListXpnHostsRequest =
+    ProjectsListXpnHostsRequest'
+    { _plxhrOrganization = Nothing
+    }
+
+-- | Optional organization ID managed by Cloud Resource Manager, for which to
+-- list shared VPC host projects. If not specified, the organization will
+-- be inferred from the project.
+plxhrOrganization :: Lens' ProjectsListXpnHostsRequest (Maybe Text)
+plxhrOrganization
+  = lens _plxhrOrganization
+      (\ s a -> s{_plxhrOrganization = a})
+
+instance FromJSON ProjectsListXpnHostsRequest where
+        parseJSON
+          = withObject "ProjectsListXpnHostsRequest"
+              (\ o ->
+                 ProjectsListXpnHostsRequest' <$>
+                   (o .:? "organization"))
+
+instance ToJSON ProjectsListXpnHostsRequest where
+        toJSON ProjectsListXpnHostsRequest'{..}
+          = object
+              (catMaybes
+                 [("organization" .=) <$> _plxhrOrganization])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionListWarning' smart constructor.
+data RegionListWarning = RegionListWarning'
+    { _rlwData    :: !(Maybe [RegionListWarningDataItem])
+    , _rlwCode    :: !(Maybe RegionListWarningCode)
+    , _rlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlwData'
+--
+-- * 'rlwCode'
+--
+-- * 'rlwMessage'
+regionListWarning
+    :: RegionListWarning
+regionListWarning =
+    RegionListWarning'
+    { _rlwData = Nothing
+    , _rlwCode = Nothing
+    , _rlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rlwData :: Lens' RegionListWarning [RegionListWarningDataItem]
+rlwData
+  = lens _rlwData (\ s a -> s{_rlwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rlwCode :: Lens' RegionListWarning (Maybe RegionListWarningCode)
+rlwCode = lens _rlwCode (\ s a -> s{_rlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rlwMessage :: Lens' RegionListWarning (Maybe Text)
+rlwMessage
+  = lens _rlwMessage (\ s a -> s{_rlwMessage = a})
+
+instance FromJSON RegionListWarning where
+        parseJSON
+          = withObject "RegionListWarning"
+              (\ o ->
+                 RegionListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RegionListWarning where
+        toJSON RegionListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rlwData, ("code" .=) <$> _rlwCode,
+                  ("message" .=) <$> _rlwMessage])
+
+--
+-- /See:/ 'nodeGroupsScopedList' smart constructor.
+data NodeGroupsScopedList = NodeGroupsScopedList'
+    { _ngslNodeGroups :: !(Maybe [NodeGroup])
+    , _ngslWarning    :: !(Maybe NodeGroupsScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngslNodeGroups'
+--
+-- * 'ngslWarning'
+nodeGroupsScopedList
+    :: NodeGroupsScopedList
+nodeGroupsScopedList =
+    NodeGroupsScopedList'
+    { _ngslNodeGroups = Nothing
+    , _ngslWarning = Nothing
+    }
+
+-- | [Output Only] A list of node groups contained in this scope.
+ngslNodeGroups :: Lens' NodeGroupsScopedList [NodeGroup]
+ngslNodeGroups
+  = lens _ngslNodeGroups
+      (\ s a -> s{_ngslNodeGroups = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the nodeGroup
+-- list is empty.
+ngslWarning :: Lens' NodeGroupsScopedList (Maybe NodeGroupsScopedListWarning)
+ngslWarning
+  = lens _ngslWarning (\ s a -> s{_ngslWarning = a})
+
+instance FromJSON NodeGroupsScopedList where
+        parseJSON
+          = withObject "NodeGroupsScopedList"
+              (\ o ->
+                 NodeGroupsScopedList' <$>
+                   (o .:? "nodeGroups" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON NodeGroupsScopedList where
+        toJSON NodeGroupsScopedList'{..}
+          = object
+              (catMaybes
+                 [("nodeGroups" .=) <$> _ngslNodeGroups,
+                  ("warning" .=) <$> _ngslWarning])
+
+-- | [Output Only] Informational warning which replaces the list of disk
+-- types when the list is empty.
+--
+-- /See:/ 'diskTypesScopedListWarning' smart constructor.
+data DiskTypesScopedListWarning = DiskTypesScopedListWarning'
+    { _dtslwData    :: !(Maybe [DiskTypesScopedListWarningDataItem])
+    , _dtslwCode    :: !(Maybe DiskTypesScopedListWarningCode)
+    , _dtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslwData'
+--
+-- * 'dtslwCode'
+--
+-- * 'dtslwMessage'
+diskTypesScopedListWarning
+    :: DiskTypesScopedListWarning
+diskTypesScopedListWarning =
+    DiskTypesScopedListWarning'
+    { _dtslwData = Nothing
+    , _dtslwCode = Nothing
+    , _dtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]
+dtslwData
+  = lens _dtslwData (\ s a -> s{_dtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)
+dtslwCode
+  = lens _dtslwCode (\ s a -> s{_dtslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)
+dtslwMessage
+  = lens _dtslwMessage (\ s a -> s{_dtslwMessage = a})
+
+instance FromJSON DiskTypesScopedListWarning where
+        parseJSON
+          = withObject "DiskTypesScopedListWarning"
+              (\ o ->
+                 DiskTypesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskTypesScopedListWarning where
+        toJSON DiskTypesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dtslwData,
+                  ("code" .=) <$> _dtslwCode,
+                  ("message" .=) <$> _dtslwMessage])
+
+--
+-- /See:/ 'regionInstanceGroupManagerListWarningDataItem' smart constructor.
+data RegionInstanceGroupManagerListWarningDataItem = RegionInstanceGroupManagerListWarningDataItem'
+    { _rigmlwdiValue :: !(Maybe Text)
+    , _rigmlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagerListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmlwdiValue'
+--
+-- * 'rigmlwdiKey'
+regionInstanceGroupManagerListWarningDataItem
+    :: RegionInstanceGroupManagerListWarningDataItem
+regionInstanceGroupManagerListWarningDataItem =
+    RegionInstanceGroupManagerListWarningDataItem'
+    { _rigmlwdiValue = Nothing
+    , _rigmlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rigmlwdiValue :: Lens' RegionInstanceGroupManagerListWarningDataItem (Maybe Text)
+rigmlwdiValue
+  = lens _rigmlwdiValue
+      (\ s a -> s{_rigmlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rigmlwdiKey :: Lens' RegionInstanceGroupManagerListWarningDataItem (Maybe Text)
+rigmlwdiKey
+  = lens _rigmlwdiKey (\ s a -> s{_rigmlwdiKey = a})
+
+instance FromJSON
+         RegionInstanceGroupManagerListWarningDataItem where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagerListWarningDataItem"
+              (\ o ->
+                 RegionInstanceGroupManagerListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         RegionInstanceGroupManagerListWarningDataItem where
+        toJSON
+          RegionInstanceGroupManagerListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rigmlwdiValue,
+                  ("key" .=) <$> _rigmlwdiKey])
+
+-- | [Input Only] Specifies the parameters for a new disk that will be
+-- created alongside the new instance. Use initialization parameters to
+-- create boot disks or local SSDs attached to the new instance. This
+-- property is mutually exclusive with the source property; you can only
+-- define one or the other, but not both.
+--
+-- /See:/ 'attachedDiskInitializeParams' smart constructor.
+data AttachedDiskInitializeParams = AttachedDiskInitializeParams'
+    { _adipSourceImage              :: !(Maybe Text)
+    , _adipDiskSizeGb               :: !(Maybe (Textual Int64))
+    , _adipDiskName                 :: !(Maybe Text)
+    , _adipSourceImageEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _adipDiskType                 :: !(Maybe Text)
+    , _adipLabels                   :: !(Maybe AttachedDiskInitializeParamsLabels)
+    , _adipDescription              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachedDiskInitializeParams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adipSourceImage'
+--
+-- * 'adipDiskSizeGb'
+--
+-- * 'adipDiskName'
+--
+-- * 'adipSourceImageEncryptionKey'
+--
+-- * 'adipDiskType'
+--
+-- * 'adipLabels'
+--
+-- * 'adipDescription'
+attachedDiskInitializeParams
+    :: AttachedDiskInitializeParams
+attachedDiskInitializeParams =
+    AttachedDiskInitializeParams'
+    { _adipSourceImage = Nothing
+    , _adipDiskSizeGb = Nothing
+    , _adipDiskName = Nothing
+    , _adipSourceImageEncryptionKey = Nothing
+    , _adipDiskType = Nothing
+    , _adipLabels = Nothing
+    , _adipDescription = Nothing
+    }
+
+-- | The source image to create this disk. When creating a new instance, one
+-- of initializeParams.sourceImage or disks.source is required except for
+-- local SSD. To create a disk with one of the public operating system
+-- images, specify the image by its family name. For example, specify
+-- family\/debian-9 to use the latest Debian 9 image:
+-- projects\/debian-cloud\/global\/images\/family\/debian-9 Alternatively,
+-- use a specific version of a public operating system image:
+-- projects\/debian-cloud\/global\/images\/debian-9-stretch-vYYYYMMDD To
+-- create a disk with a custom image that you created, specify the image
+-- name in the following format: global\/images\/my-custom-image You can
+-- also specify a custom image by its image family, which returns the
+-- latest version of the image in that family. Replace the image name with
+-- family\/family-name: global\/images\/family\/my-image-family If the
+-- source image is deleted later, this field will not be set.
+adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipSourceImage
+  = lens _adipSourceImage
+      (\ s a -> s{_adipSourceImage = a})
+
+-- | Specifies the size of the disk in base-2 GB.
+adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)
+adipDiskSizeGb
+  = lens _adipDiskSizeGb
+      (\ s a -> s{_adipDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | Specifies the disk name. If not specified, the default is to use the
+-- name of the instance. If the disk with the instance name exists already
+-- in the given zone\/region, a new name will be automatically generated.
+adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipDiskName
+  = lens _adipDiskName (\ s a -> s{_adipDiskName = a})
+
+-- | The customer-supplied encryption key of the source image. Required if
+-- the source image is protected by a customer-supplied encryption key.
+-- Instance templates do not store customer-supplied encryption keys, so
+-- you cannot create disks for instances in a managed instance group if the
+-- source images are encrypted with your own keys.
+adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)
+adipSourceImageEncryptionKey
+  = lens _adipSourceImageEncryptionKey
+      (\ s a -> s{_adipSourceImageEncryptionKey = a})
+
+-- | Specifies the disk type to use to create the instance. If not specified,
+-- the default is pd-standard, specified using the full URL. For example:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/pd-standard
+-- Other values include pd-ssd and local-ssd. If you define this field, you
+-- can provide either the full or partial URL. For example, the following
+-- are valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/diskType
+-- - projects\/project\/zones\/zone\/diskTypes\/diskType -
+-- zones\/zone\/diskTypes\/diskType Note that for InstanceTemplate, this is
+-- the name of the disk type, not URL.
+adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipDiskType
+  = lens _adipDiskType (\ s a -> s{_adipDiskType = a})
+
+-- | Labels to apply to this disk. These can be later modified by the
+-- disks.setLabels method. This field is only applicable for persistent
+-- disks.
+adipLabels :: Lens' AttachedDiskInitializeParams (Maybe AttachedDiskInitializeParamsLabels)
+adipLabels
+  = lens _adipLabels (\ s a -> s{_adipLabels = a})
+
+-- | An optional description. Provide this property when creating the disk.
+adipDescription :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipDescription
+  = lens _adipDescription
+      (\ s a -> s{_adipDescription = a})
+
+instance FromJSON AttachedDiskInitializeParams where
+        parseJSON
+          = withObject "AttachedDiskInitializeParams"
+              (\ o ->
+                 AttachedDiskInitializeParams' <$>
+                   (o .:? "sourceImage") <*> (o .:? "diskSizeGb") <*>
+                     (o .:? "diskName")
+                     <*> (o .:? "sourceImageEncryptionKey")
+                     <*> (o .:? "diskType")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "description"))
+
+instance ToJSON AttachedDiskInitializeParams where
+        toJSON AttachedDiskInitializeParams'{..}
+          = object
+              (catMaybes
+                 [("sourceImage" .=) <$> _adipSourceImage,
+                  ("diskSizeGb" .=) <$> _adipDiskSizeGb,
+                  ("diskName" .=) <$> _adipDiskName,
+                  ("sourceImageEncryptionKey" .=) <$>
+                    _adipSourceImageEncryptionKey,
+                  ("diskType" .=) <$> _adipDiskType,
+                  ("labels" .=) <$> _adipLabels,
+                  ("description" .=) <$> _adipDescription])
+
+-- | Secondary IP range of a usable subnetwork.
+--
+-- /See:/ 'usableSubnetworkSecondaryRange' smart constructor.
+data UsableSubnetworkSecondaryRange = UsableSubnetworkSecondaryRange'
+    { _ussrRangeName   :: !(Maybe Text)
+    , _ussrIPCIdRRange :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsableSubnetworkSecondaryRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ussrRangeName'
+--
+-- * 'ussrIPCIdRRange'
+usableSubnetworkSecondaryRange
+    :: UsableSubnetworkSecondaryRange
+usableSubnetworkSecondaryRange =
+    UsableSubnetworkSecondaryRange'
+    { _ussrRangeName = Nothing
+    , _ussrIPCIdRRange = Nothing
+    }
+
+-- | The name associated with this subnetwork secondary range, used when
+-- adding an alias IP range to a VM instance. The name must be 1-63
+-- characters long, and comply with RFC1035. The name must be unique within
+-- the subnetwork.
+ussrRangeName :: Lens' UsableSubnetworkSecondaryRange (Maybe Text)
+ussrRangeName
+  = lens _ussrRangeName
+      (\ s a -> s{_ussrRangeName = a})
+
+-- | The range of IP addresses belonging to this subnetwork secondary range.
+ussrIPCIdRRange :: Lens' UsableSubnetworkSecondaryRange (Maybe Text)
+ussrIPCIdRRange
+  = lens _ussrIPCIdRRange
+      (\ s a -> s{_ussrIPCIdRRange = a})
+
+instance FromJSON UsableSubnetworkSecondaryRange
+         where
+        parseJSON
+          = withObject "UsableSubnetworkSecondaryRange"
+              (\ o ->
+                 UsableSubnetworkSecondaryRange' <$>
+                   (o .:? "rangeName") <*> (o .:? "ipCidrRange"))
+
+instance ToJSON UsableSubnetworkSecondaryRange where
+        toJSON UsableSubnetworkSecondaryRange'{..}
+          = object
+              (catMaybes
+                 [("rangeName" .=) <$> _ussrRangeName,
+                  ("ipCidrRange" .=) <$> _ussrIPCIdRRange])
+
+--
+-- /See:/ 'addressesScopedListWarningDataItem' smart constructor.
+data AddressesScopedListWarningDataItem = AddressesScopedListWarningDataItem'
+    { _aslwdiValue :: !(Maybe Text)
+    , _aslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslwdiValue'
+--
+-- * 'aslwdiKey'
+addressesScopedListWarningDataItem
+    :: AddressesScopedListWarningDataItem
+addressesScopedListWarningDataItem =
+    AddressesScopedListWarningDataItem'
+    { _aslwdiValue = Nothing
+    , _aslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
+aslwdiValue
+  = lens _aslwdiValue (\ s a -> s{_aslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
+aslwdiKey
+  = lens _aslwdiKey (\ s a -> s{_aslwdiKey = a})
+
+instance FromJSON AddressesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "AddressesScopedListWarningDataItem"
+              (\ o ->
+                 AddressesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AddressesScopedListWarningDataItem
+         where
+        toJSON AddressesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aslwdiValue,
+                  ("key" .=) <$> _aslwdiKey])
+
+--
+-- /See:/ 'instanceGroupListWarningDataItem' smart constructor.
+data InstanceGroupListWarningDataItem = InstanceGroupListWarningDataItem'
+    { _iglwdiValue :: !(Maybe Text)
+    , _iglwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglwdiValue'
+--
+-- * 'iglwdiKey'
+instanceGroupListWarningDataItem
+    :: InstanceGroupListWarningDataItem
+instanceGroupListWarningDataItem =
+    InstanceGroupListWarningDataItem'
+    { _iglwdiValue = Nothing
+    , _iglwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+iglwdiValue :: Lens' InstanceGroupListWarningDataItem (Maybe Text)
+iglwdiValue
+  = lens _iglwdiValue (\ s a -> s{_iglwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+iglwdiKey :: Lens' InstanceGroupListWarningDataItem (Maybe Text)
+iglwdiKey
+  = lens _iglwdiKey (\ s a -> s{_iglwdiKey = a})
+
+instance FromJSON InstanceGroupListWarningDataItem
+         where
+        parseJSON
+          = withObject "InstanceGroupListWarningDataItem"
+              (\ o ->
+                 InstanceGroupListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstanceGroupListWarningDataItem
+         where
+        toJSON InstanceGroupListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _iglwdiValue,
+                  ("key" .=) <$> _iglwdiKey])
+
+-- | A network interface resource attached to an instance.
+--
+-- /See:/ 'networkInterface' smart constructor.
+data NetworkInterface = NetworkInterface'
+    { _niKind          :: !Text
+    , _niFingerprint   :: !(Maybe Bytes)
+    , _niAliasIPRanges :: !(Maybe [AliasIPRange])
+    , _niNetwork       :: !(Maybe Text)
+    , _niName          :: !(Maybe Text)
+    , _niNetworkIP     :: !(Maybe Text)
+    , _niSubnetwork    :: !(Maybe Text)
+    , _niAccessConfigs :: !(Maybe [AccessConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niKind'
+--
+-- * 'niFingerprint'
+--
+-- * 'niAliasIPRanges'
+--
+-- * 'niNetwork'
+--
+-- * 'niName'
+--
+-- * 'niNetworkIP'
+--
+-- * 'niSubnetwork'
+--
+-- * 'niAccessConfigs'
+networkInterface
+    :: NetworkInterface
+networkInterface =
+    NetworkInterface'
+    { _niKind = "compute#networkInterface"
+    , _niFingerprint = Nothing
+    , _niAliasIPRanges = Nothing
+    , _niNetwork = Nothing
+    , _niName = Nothing
+    , _niNetworkIP = Nothing
+    , _niSubnetwork = Nothing
+    , _niAccessConfigs = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#networkInterface for
+-- network interfaces.
+niKind :: Lens' NetworkInterface Text
+niKind = lens _niKind (\ s a -> s{_niKind = a})
+
+-- | Fingerprint hash of contents stored in this network interface. This
+-- field will be ignored when inserting an Instance or adding a
+-- NetworkInterface. An up-to-date fingerprint must be provided in order to
+-- update the NetworkInterface, otherwise the request will fail with error
+-- 412 conditionNotMet.
+niFingerprint :: Lens' NetworkInterface (Maybe ByteString)
+niFingerprint
+  = lens _niFingerprint
+      (\ s a -> s{_niFingerprint = a})
+      . mapping _Bytes
+
+-- | An array of alias IP ranges for this network interface. Can only be
+-- specified for network interfaces on subnet-mode networks.
+niAliasIPRanges :: Lens' NetworkInterface [AliasIPRange]
+niAliasIPRanges
+  = lens _niAliasIPRanges
+      (\ s a -> s{_niAliasIPRanges = a})
+      . _Default
+      . _Coerce
+
+-- | URL of the network resource for this instance. When creating an
+-- instance, if neither the network nor the subnetwork is specified, the
+-- default network global\/networks\/default is used; if the network is not
+-- specified but the subnetwork is specified, the network is inferred. This
+-- field is optional when creating a firewall rule. If not specified when
+-- creating a firewall rule, the default network global\/networks\/default
+-- is used. If you specify this property, you can specify the network as a
+-- full or partial URL. For example, the following are all valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/networks\/network
+-- - projects\/project\/global\/networks\/network -
+-- global\/networks\/default
+niNetwork :: Lens' NetworkInterface (Maybe Text)
+niNetwork
+  = lens _niNetwork (\ s a -> s{_niNetwork = a})
+
+-- | [Output Only] The name of the network interface, generated by the
+-- server. For network devices, these are eth0, eth1, etc.
+niName :: Lens' NetworkInterface (Maybe Text)
+niName = lens _niName (\ s a -> s{_niName = a})
+
+-- | An IPv4 internal network address to assign to the instance for this
+-- network interface. If not specified by the user, an unused internal IP
+-- is assigned by the system.
+niNetworkIP :: Lens' NetworkInterface (Maybe Text)
+niNetworkIP
+  = lens _niNetworkIP (\ s a -> s{_niNetworkIP = a})
+
+-- | The URL of the Subnetwork resource for this instance. If the network
+-- resource is in legacy mode, do not provide this property. If the network
+-- is in auto subnet mode, providing the subnetwork is optional. If the
+-- network is in custom subnet mode, then this field should be specified.
+-- If you specify this property, you can specify the subnetwork as a full
+-- or partial URL. For example, the following are all valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/regions\/region\/subnetworks\/subnetwork
+-- - regions\/region\/subnetworks\/subnetwork
+niSubnetwork :: Lens' NetworkInterface (Maybe Text)
+niSubnetwork
+  = lens _niSubnetwork (\ s a -> s{_niSubnetwork = a})
+
+-- | An array of configurations for this interface. Currently, only one
+-- access config, ONE_TO_ONE_NAT, is supported. If there are no
+-- accessConfigs specified, then this instance will have no external
+-- internet access.
+niAccessConfigs :: Lens' NetworkInterface [AccessConfig]
+niAccessConfigs
+  = lens _niAccessConfigs
+      (\ s a -> s{_niAccessConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON NetworkInterface where
+        parseJSON
+          = withObject "NetworkInterface"
+              (\ o ->
+                 NetworkInterface' <$>
+                   (o .:? "kind" .!= "compute#networkInterface") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "aliasIpRanges" .!= mempty)
+                     <*> (o .:? "network")
+                     <*> (o .:? "name")
+                     <*> (o .:? "networkIP")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "accessConfigs" .!= mempty))
+
+instance ToJSON NetworkInterface where
+        toJSON NetworkInterface'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _niKind),
+                  ("fingerprint" .=) <$> _niFingerprint,
+                  ("aliasIpRanges" .=) <$> _niAliasIPRanges,
+                  ("network" .=) <$> _niNetwork,
+                  ("name" .=) <$> _niName,
+                  ("networkIP" .=) <$> _niNetworkIP,
+                  ("subnetwork" .=) <$> _niSubnetwork,
+                  ("accessConfigs" .=) <$> _niAccessConfigs])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'routerListWarning' smart constructor.
+data RouterListWarning = RouterListWarning'
+    { _rData    :: !(Maybe [RouterListWarningDataItem])
+    , _rCode    :: !(Maybe RouterListWarningCode)
+    , _rMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rData'
+--
+-- * 'rCode'
+--
+-- * 'rMessage'
+routerListWarning
+    :: RouterListWarning
+routerListWarning =
+    RouterListWarning'
+    { _rData = Nothing
+    , _rCode = Nothing
+    , _rMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rData :: Lens' RouterListWarning [RouterListWarningDataItem]
+rData
+  = lens _rData (\ s a -> s{_rData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rCode :: Lens' RouterListWarning (Maybe RouterListWarningCode)
+rCode = lens _rCode (\ s a -> s{_rCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rMessage :: Lens' RouterListWarning (Maybe Text)
+rMessage = lens _rMessage (\ s a -> s{_rMessage = a})
+
+instance FromJSON RouterListWarning where
+        parseJSON
+          = withObject "RouterListWarning"
+              (\ o ->
+                 RouterListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RouterListWarning where
+        toJSON RouterListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rData, ("code" .=) <$> _rCode,
+                  ("message" .=) <$> _rMessage])
+
+--
+-- /See:/ 'firewallListWarningDataItem' smart constructor.
+data FirewallListWarningDataItem = FirewallListWarningDataItem'
+    { _flwdiValue :: !(Maybe Text)
+    , _flwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flwdiValue'
+--
+-- * 'flwdiKey'
+firewallListWarningDataItem
+    :: FirewallListWarningDataItem
+firewallListWarningDataItem =
+    FirewallListWarningDataItem'
+    { _flwdiValue = Nothing
+    , _flwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+flwdiValue :: Lens' FirewallListWarningDataItem (Maybe Text)
+flwdiValue
+  = lens _flwdiValue (\ s a -> s{_flwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+flwdiKey :: Lens' FirewallListWarningDataItem (Maybe Text)
+flwdiKey = lens _flwdiKey (\ s a -> s{_flwdiKey = a})
+
+instance FromJSON FirewallListWarningDataItem where
+        parseJSON
+          = withObject "FirewallListWarningDataItem"
+              (\ o ->
+                 FirewallListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON FirewallListWarningDataItem where
+        toJSON FirewallListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _flwdiValue,
+                  ("key" .=) <$> _flwdiKey])
+
+--
+-- /See:/ 'targetPoolsRemoveHealthCheckRequest' smart constructor.
+newtype TargetPoolsRemoveHealthCheckRequest = TargetPoolsRemoveHealthCheckRequest'
+    { _tprhcrHealthChecks :: Maybe [HealthCheckReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveHealthCheckRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprhcrHealthChecks'
+targetPoolsRemoveHealthCheckRequest
+    :: TargetPoolsRemoveHealthCheckRequest
+targetPoolsRemoveHealthCheckRequest =
+    TargetPoolsRemoveHealthCheckRequest'
+    { _tprhcrHealthChecks = Nothing
+    }
+
+-- | Health check URL to be removed. This can be a full or valid partial URL.
+-- For example, the following are valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project\/global\/httpHealthChecks\/health-check
+-- - projects\/project\/global\/httpHealthChecks\/health-check -
+-- global\/httpHealthChecks\/health-check
+tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]
+tprhcrHealthChecks
+  = lens _tprhcrHealthChecks
+      (\ s a -> s{_tprhcrHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsRemoveHealthCheckRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsRemoveHealthCheckRequest"
+              (\ o ->
+                 TargetPoolsRemoveHealthCheckRequest' <$>
+                   (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPoolsRemoveHealthCheckRequest
+         where
+        toJSON TargetPoolsRemoveHealthCheckRequest'{..}
+          = object
+              (catMaybes
+                 [("healthChecks" .=) <$> _tprhcrHealthChecks])
+
+--
+-- /See:/ 'regionInstanceGroupManagersSetTargetPoolsRequest' smart constructor.
+data RegionInstanceGroupManagersSetTargetPoolsRequest = RegionInstanceGroupManagersSetTargetPoolsRequest'
+    { _rigmstprFingerprint :: !(Maybe Bytes)
+    , _rigmstprTargetPools :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersSetTargetPoolsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmstprFingerprint'
+--
+-- * 'rigmstprTargetPools'
+regionInstanceGroupManagersSetTargetPoolsRequest
+    :: RegionInstanceGroupManagersSetTargetPoolsRequest
+regionInstanceGroupManagersSetTargetPoolsRequest =
+    RegionInstanceGroupManagersSetTargetPoolsRequest'
+    { _rigmstprFingerprint = Nothing
+    , _rigmstprTargetPools = Nothing
+    }
+
+-- | Fingerprint of the target pools information, which is a hash of the
+-- contents. This field is used for optimistic locking when you update the
+-- target pool entries. This field is optional.
+rigmstprFingerprint :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)
+rigmstprFingerprint
+  = lens _rigmstprFingerprint
+      (\ s a -> s{_rigmstprFingerprint = a})
+      . mapping _Bytes
+
+-- | The URL of all TargetPool resources to which instances in the
+-- instanceGroup field are added. The target pools automatically apply to
+-- all of the instances in the managed instance group.
+rigmstprTargetPools :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest [Text]
+rigmstprTargetPools
+  = lens _rigmstprTargetPools
+      (\ s a -> s{_rigmstprTargetPools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupManagersSetTargetPoolsRequest
+         where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersSetTargetPoolsRequest"
+              (\ o ->
+                 RegionInstanceGroupManagersSetTargetPoolsRequest' <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "targetPools" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupManagersSetTargetPoolsRequest
+         where
+        toJSON
+          RegionInstanceGroupManagersSetTargetPoolsRequest'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _rigmstprFingerprint,
+                  ("targetPools" .=) <$> _rigmstprTargetPools])
+
+-- | Message containing Cloud CDN configuration for a backend bucket.
+--
+-- /See:/ 'backendBucketCdnPolicy' smart constructor.
+data BackendBucketCdnPolicy = BackendBucketCdnPolicy'
+    { _bbcpSignedURLCacheMaxAgeSec :: !(Maybe (Textual Int64))
+    , _bbcpSignedURLKeyNames       :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketCdnPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbcpSignedURLCacheMaxAgeSec'
+--
+-- * 'bbcpSignedURLKeyNames'
+backendBucketCdnPolicy
+    :: BackendBucketCdnPolicy
+backendBucketCdnPolicy =
+    BackendBucketCdnPolicy'
+    { _bbcpSignedURLCacheMaxAgeSec = Nothing
+    , _bbcpSignedURLKeyNames = Nothing
+    }
+
+-- | Maximum number of seconds the response to a signed URL request will be
+-- considered fresh. After this time period, the response will be
+-- revalidated before being served. Defaults to 1hr (3600s). When serving
+-- responses to signed URL requests, Cloud CDN will internally behave as
+-- though all responses from this backend had a \"Cache-Control: public,
+-- max-age=[TTL]\" header, regardless of any existing Cache-Control header.
+-- The actual headers served in responses will not be altered.
+bbcpSignedURLCacheMaxAgeSec :: Lens' BackendBucketCdnPolicy (Maybe Int64)
+bbcpSignedURLCacheMaxAgeSec
+  = lens _bbcpSignedURLCacheMaxAgeSec
+      (\ s a -> s{_bbcpSignedURLCacheMaxAgeSec = a})
+      . mapping _Coerce
+
+-- | [Output Only] Names of the keys for signing request URLs.
+bbcpSignedURLKeyNames :: Lens' BackendBucketCdnPolicy [Text]
+bbcpSignedURLKeyNames
+  = lens _bbcpSignedURLKeyNames
+      (\ s a -> s{_bbcpSignedURLKeyNames = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BackendBucketCdnPolicy where
+        parseJSON
+          = withObject "BackendBucketCdnPolicy"
+              (\ o ->
+                 BackendBucketCdnPolicy' <$>
+                   (o .:? "signedUrlCacheMaxAgeSec") <*>
+                     (o .:? "signedUrlKeyNames" .!= mempty))
+
+instance ToJSON BackendBucketCdnPolicy where
+        toJSON BackendBucketCdnPolicy'{..}
+          = object
+              (catMaybes
+                 [("signedUrlCacheMaxAgeSec" .=) <$>
+                    _bbcpSignedURLCacheMaxAgeSec,
+                  ("signedUrlKeyNames" .=) <$> _bbcpSignedURLKeyNames])
+
+-- | Contains a list of TargetSslProxy resources.
+--
+-- /See:/ 'targetSSLProxyList' smart constructor.
+data TargetSSLProxyList = TargetSSLProxyList'
+    { _tsplNextPageToken :: !(Maybe Text)
+    , _tsplKind          :: !Text
+    , _tsplItems         :: !(Maybe [TargetSSLProxy])
+    , _tsplSelfLink      :: !(Maybe Text)
+    , _tsplWarning       :: !(Maybe TargetSSLProxyListWarning)
+    , _tsplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsplNextPageToken'
+--
+-- * 'tsplKind'
+--
+-- * 'tsplItems'
+--
+-- * 'tsplSelfLink'
+--
+-- * 'tsplWarning'
+--
+-- * 'tsplId'
+targetSSLProxyList
+    :: TargetSSLProxyList
+targetSSLProxyList =
+    TargetSSLProxyList'
+    { _tsplNextPageToken = Nothing
+    , _tsplKind = "compute#targetSslProxyList"
+    , _tsplItems = Nothing
+    , _tsplSelfLink = Nothing
+    , _tsplWarning = Nothing
+    , _tsplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)
+tsplNextPageToken
+  = lens _tsplNextPageToken
+      (\ s a -> s{_tsplNextPageToken = a})
+
+-- | Type of resource.
+tsplKind :: Lens' TargetSSLProxyList Text
+tsplKind = lens _tsplKind (\ s a -> s{_tsplKind = a})
+
+-- | A list of TargetSslProxy resources.
+tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]
+tsplItems
+  = lens _tsplItems (\ s a -> s{_tsplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)
+tsplSelfLink
+  = lens _tsplSelfLink (\ s a -> s{_tsplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tsplWarning :: Lens' TargetSSLProxyList (Maybe TargetSSLProxyListWarning)
+tsplWarning
+  = lens _tsplWarning (\ s a -> s{_tsplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tsplId :: Lens' TargetSSLProxyList (Maybe Text)
+tsplId = lens _tsplId (\ s a -> s{_tsplId = a})
+
+instance FromJSON TargetSSLProxyList where
+        parseJSON
+          = withObject "TargetSSLProxyList"
+              (\ o ->
+                 TargetSSLProxyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetSslProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetSSLProxyList where
+        toJSON TargetSSLProxyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tsplNextPageToken,
+                  Just ("kind" .= _tsplKind),
+                  ("items" .=) <$> _tsplItems,
+                  ("selfLink" .=) <$> _tsplSelfLink,
+                  ("warning" .=) <$> _tsplWarning,
+                  ("id" .=) <$> _tsplId])
+
+--
+-- /See:/ 'customerEncryptionKeyProtectedDisk' smart constructor.
+data CustomerEncryptionKeyProtectedDisk = CustomerEncryptionKeyProtectedDisk'
+    { _cekpdDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _cekpdSource            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CustomerEncryptionKeyProtectedDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cekpdDiskEncryptionKey'
+--
+-- * 'cekpdSource'
+customerEncryptionKeyProtectedDisk
+    :: CustomerEncryptionKeyProtectedDisk
+customerEncryptionKeyProtectedDisk =
+    CustomerEncryptionKeyProtectedDisk'
+    { _cekpdDiskEncryptionKey = Nothing
+    , _cekpdSource = Nothing
+    }
+
+-- | Decrypts data associated with the disk with a customer-supplied
+-- encryption key.
+cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)
+cekpdDiskEncryptionKey
+  = lens _cekpdDiskEncryptionKey
+      (\ s a -> s{_cekpdDiskEncryptionKey = a})
+
+-- | Specifies a valid partial or full URL to an existing Persistent Disk
+-- resource. This field is only applicable for persistent disks.
+cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)
+cekpdSource
+  = lens _cekpdSource (\ s a -> s{_cekpdSource = a})
+
+instance FromJSON CustomerEncryptionKeyProtectedDisk
+         where
+        parseJSON
+          = withObject "CustomerEncryptionKeyProtectedDisk"
+              (\ o ->
+                 CustomerEncryptionKeyProtectedDisk' <$>
+                   (o .:? "diskEncryptionKey") <*> (o .:? "source"))
+
+instance ToJSON CustomerEncryptionKeyProtectedDisk
+         where
+        toJSON CustomerEncryptionKeyProtectedDisk'{..}
+          = object
+              (catMaybes
+                 [("diskEncryptionKey" .=) <$>
+                    _cekpdDiskEncryptionKey,
+                  ("source" .=) <$> _cekpdSource])
+
+-- | A list of instance templates.
+--
+-- /See:/ 'instanceTemplateList' smart constructor.
+data InstanceTemplateList = InstanceTemplateList'
+    { _itlNextPageToken :: !(Maybe Text)
+    , _itlKind          :: !Text
+    , _itlItems         :: !(Maybe [InstanceTemplate])
+    , _itlSelfLink      :: !(Maybe Text)
+    , _itlWarning       :: !(Maybe InstanceTemplateListWarning)
+    , _itlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itlNextPageToken'
+--
+-- * 'itlKind'
+--
+-- * 'itlItems'
+--
+-- * 'itlSelfLink'
+--
+-- * 'itlWarning'
+--
+-- * 'itlId'
+instanceTemplateList
+    :: InstanceTemplateList
+instanceTemplateList =
+    InstanceTemplateList'
+    { _itlNextPageToken = Nothing
+    , _itlKind = "compute#instanceTemplateList"
+    , _itlItems = Nothing
+    , _itlSelfLink = Nothing
+    , _itlWarning = Nothing
+    , _itlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)
+itlNextPageToken
+  = lens _itlNextPageToken
+      (\ s a -> s{_itlNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceTemplatesListResponse for instance template lists.
+itlKind :: Lens' InstanceTemplateList Text
+itlKind = lens _itlKind (\ s a -> s{_itlKind = a})
+
+-- | A list of InstanceTemplate resources.
+itlItems :: Lens' InstanceTemplateList [InstanceTemplate]
+itlItems
+  = lens _itlItems (\ s a -> s{_itlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)
+itlSelfLink
+  = lens _itlSelfLink (\ s a -> s{_itlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+itlWarning :: Lens' InstanceTemplateList (Maybe InstanceTemplateListWarning)
+itlWarning
+  = lens _itlWarning (\ s a -> s{_itlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+itlId :: Lens' InstanceTemplateList (Maybe Text)
+itlId = lens _itlId (\ s a -> s{_itlId = a})
+
+instance FromJSON InstanceTemplateList where
+        parseJSON
+          = withObject "InstanceTemplateList"
+              (\ o ->
+                 InstanceTemplateList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceTemplateList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceTemplateList where
+        toJSON InstanceTemplateList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _itlNextPageToken,
+                  Just ("kind" .= _itlKind),
+                  ("items" .=) <$> _itlItems,
+                  ("selfLink" .=) <$> _itlSelfLink,
+                  ("warning" .=) <$> _itlWarning,
+                  ("id" .=) <$> _itlId])
+
+-- | Represents a reference to a resource.
+--
+-- /See:/ 'reference' smart constructor.
+data Reference = Reference'
+    { _refKind          :: !Text
+    , _refReferrer      :: !(Maybe Text)
+    , _refReferenceType :: !(Maybe Text)
+    , _refTarget        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Reference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'refKind'
+--
+-- * 'refReferrer'
+--
+-- * 'refReferenceType'
+--
+-- * 'refTarget'
+reference
+    :: Reference
+reference =
+    Reference'
+    { _refKind = "compute#reference"
+    , _refReferrer = Nothing
+    , _refReferenceType = Nothing
+    , _refTarget = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#reference for
+-- references.
+refKind :: Lens' Reference Text
+refKind = lens _refKind (\ s a -> s{_refKind = a})
+
+-- | URL of the resource which refers to the target.
+refReferrer :: Lens' Reference (Maybe Text)
+refReferrer
+  = lens _refReferrer (\ s a -> s{_refReferrer = a})
+
+-- | A description of the reference type with no implied semantics. Possible
+-- values include: - MEMBER_OF
+refReferenceType :: Lens' Reference (Maybe Text)
+refReferenceType
+  = lens _refReferenceType
+      (\ s a -> s{_refReferenceType = a})
+
+-- | URL of the resource to which this reference points.
+refTarget :: Lens' Reference (Maybe Text)
+refTarget
+  = lens _refTarget (\ s a -> s{_refTarget = a})
+
+instance FromJSON Reference where
+        parseJSON
+          = withObject "Reference"
+              (\ o ->
+                 Reference' <$>
+                   (o .:? "kind" .!= "compute#reference") <*>
+                     (o .:? "referrer")
+                     <*> (o .:? "referenceType")
+                     <*> (o .:? "target"))
+
+instance ToJSON Reference where
+        toJSON Reference'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _refKind),
+                  ("referrer" .=) <$> _refReferrer,
+                  ("referenceType" .=) <$> _refReferenceType,
+                  ("target" .=) <$> _refTarget])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceGroupAggregatedListWarning' smart constructor.
+data InstanceGroupAggregatedListWarning = InstanceGroupAggregatedListWarning'
+    { _igalwData    :: !(Maybe [InstanceGroupAggregatedListWarningDataItem])
+    , _igalwCode    :: !(Maybe InstanceGroupAggregatedListWarningCode)
+    , _igalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igalwData'
+--
+-- * 'igalwCode'
+--
+-- * 'igalwMessage'
+instanceGroupAggregatedListWarning
+    :: InstanceGroupAggregatedListWarning
+instanceGroupAggregatedListWarning =
+    InstanceGroupAggregatedListWarning'
+    { _igalwData = Nothing
+    , _igalwCode = Nothing
+    , _igalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igalwData :: Lens' InstanceGroupAggregatedListWarning [InstanceGroupAggregatedListWarningDataItem]
+igalwData
+  = lens _igalwData (\ s a -> s{_igalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igalwCode :: Lens' InstanceGroupAggregatedListWarning (Maybe InstanceGroupAggregatedListWarningCode)
+igalwCode
+  = lens _igalwCode (\ s a -> s{_igalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igalwMessage :: Lens' InstanceGroupAggregatedListWarning (Maybe Text)
+igalwMessage
+  = lens _igalwMessage (\ s a -> s{_igalwMessage = a})
+
+instance FromJSON InstanceGroupAggregatedListWarning
+         where
+        parseJSON
+          = withObject "InstanceGroupAggregatedListWarning"
+              (\ o ->
+                 InstanceGroupAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupAggregatedListWarning
+         where
+        toJSON InstanceGroupAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igalwData,
+                  ("code" .=) <$> _igalwCode,
+                  ("message" .=) <$> _igalwMessage])
+
+-- | Contains a list of Route resources.
+--
+-- /See:/ 'routeList' smart constructor.
+data RouteList = RouteList'
+    { _rlNextPageToken :: !(Maybe Text)
+    , _rlKind          :: !Text
+    , _rlItems         :: !(Maybe [Route])
+    , _rlSelfLink      :: !(Maybe Text)
+    , _rlWarning       :: !(Maybe RouteListWarning)
+    , _rlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlNextPageToken'
+--
+-- * 'rlKind'
+--
+-- * 'rlItems'
+--
+-- * 'rlSelfLink'
+--
+-- * 'rlWarning'
+--
+-- * 'rlId'
+routeList
+    :: RouteList
+routeList =
+    RouteList'
+    { _rlNextPageToken = Nothing
+    , _rlKind = "compute#routeList"
+    , _rlItems = Nothing
+    , _rlSelfLink = Nothing
+    , _rlWarning = Nothing
+    , _rlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rlNextPageToken :: Lens' RouteList (Maybe Text)
+rlNextPageToken
+  = lens _rlNextPageToken
+      (\ s a -> s{_rlNextPageToken = a})
+
+-- | Type of resource.
+rlKind :: Lens' RouteList Text
+rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
+
+-- | A list of Route resources.
+rlItems :: Lens' RouteList [Route]
+rlItems
+  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rlSelfLink :: Lens' RouteList (Maybe Text)
+rlSelfLink
+  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rlWarning :: Lens' RouteList (Maybe RouteListWarning)
+rlWarning
+  = lens _rlWarning (\ s a -> s{_rlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rlId :: Lens' RouteList (Maybe Text)
+rlId = lens _rlId (\ s a -> s{_rlId = a})
+
+instance FromJSON RouteList where
+        parseJSON
+          = withObject "RouteList"
+              (\ o ->
+                 RouteList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#routeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RouteList where
+        toJSON RouteList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rlNextPageToken,
+                  Just ("kind" .= _rlKind), ("items" .=) <$> _rlItems,
+                  ("selfLink" .=) <$> _rlSelfLink,
+                  ("warning" .=) <$> _rlWarning, ("id" .=) <$> _rlId])
+
+-- | Contains a list of instance referrers.
+--
+-- /See:/ 'instanceListReferrers' smart constructor.
+data InstanceListReferrers = InstanceListReferrers'
+    { _ilrNextPageToken :: !(Maybe Text)
+    , _ilrKind          :: !Text
+    , _ilrItems         :: !(Maybe [Reference])
+    , _ilrSelfLink      :: !(Maybe Text)
+    , _ilrWarning       :: !(Maybe InstanceListReferrersWarning)
+    , _ilrId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceListReferrers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrNextPageToken'
+--
+-- * 'ilrKind'
+--
+-- * 'ilrItems'
+--
+-- * 'ilrSelfLink'
+--
+-- * 'ilrWarning'
+--
+-- * 'ilrId'
+instanceListReferrers
+    :: InstanceListReferrers
+instanceListReferrers =
+    InstanceListReferrers'
+    { _ilrNextPageToken = Nothing
+    , _ilrKind = "compute#instanceListReferrers"
+    , _ilrItems = Nothing
+    , _ilrSelfLink = Nothing
+    , _ilrWarning = Nothing
+    , _ilrId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ilrNextPageToken :: Lens' InstanceListReferrers (Maybe Text)
+ilrNextPageToken
+  = lens _ilrNextPageToken
+      (\ s a -> s{_ilrNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#instanceListReferrers for
+-- lists of Instance referrers.
+ilrKind :: Lens' InstanceListReferrers Text
+ilrKind = lens _ilrKind (\ s a -> s{_ilrKind = a})
+
+-- | A list of Reference resources.
+ilrItems :: Lens' InstanceListReferrers [Reference]
+ilrItems
+  = lens _ilrItems (\ s a -> s{_ilrItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ilrSelfLink :: Lens' InstanceListReferrers (Maybe Text)
+ilrSelfLink
+  = lens _ilrSelfLink (\ s a -> s{_ilrSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ilrWarning :: Lens' InstanceListReferrers (Maybe InstanceListReferrersWarning)
+ilrWarning
+  = lens _ilrWarning (\ s a -> s{_ilrWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ilrId :: Lens' InstanceListReferrers (Maybe Text)
+ilrId = lens _ilrId (\ s a -> s{_ilrId = a})
+
+instance FromJSON InstanceListReferrers where
+        parseJSON
+          = withObject "InstanceListReferrers"
+              (\ o ->
+                 InstanceListReferrers' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceListReferrers")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceListReferrers where
+        toJSON InstanceListReferrers'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ilrNextPageToken,
+                  Just ("kind" .= _ilrKind),
+                  ("items" .=) <$> _ilrItems,
+                  ("selfLink" .=) <$> _ilrSelfLink,
+                  ("warning" .=) <$> _ilrWarning,
+                  ("id" .=) <$> _ilrId])
+
+-- | Router resource.
+--
+-- /See:/ 'router' smart constructor.
+data Router = Router'
+    { _rouBGPPeers          :: !(Maybe [RouterBGPPeer])
+    , _rouBGP               :: !(Maybe RouterBGP)
+    , _rouKind              :: !Text
+    , _rouNetwork           :: !(Maybe Text)
+    , _rouInterfaces        :: !(Maybe [RouterInterface])
+    , _rouSelfLink          :: !(Maybe Text)
+    , _rouName              :: !(Maybe Text)
+    , _rouCreationTimestamp :: !(Maybe Text)
+    , _rouId                :: !(Maybe (Textual Word64))
+    , _rouRegion            :: !(Maybe Text)
+    , _rouNATs              :: !(Maybe [RouterNAT])
+    , _rouDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Router' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rouBGPPeers'
+--
+-- * 'rouBGP'
+--
+-- * 'rouKind'
+--
+-- * 'rouNetwork'
+--
+-- * 'rouInterfaces'
+--
+-- * 'rouSelfLink'
+--
+-- * 'rouName'
+--
+-- * 'rouCreationTimestamp'
+--
+-- * 'rouId'
+--
+-- * 'rouRegion'
+--
+-- * 'rouNATs'
+--
+-- * 'rouDescription'
+router
+    :: Router
+router =
+    Router'
+    { _rouBGPPeers = Nothing
+    , _rouBGP = Nothing
+    , _rouKind = "compute#router"
+    , _rouNetwork = Nothing
+    , _rouInterfaces = Nothing
+    , _rouSelfLink = Nothing
+    , _rouName = Nothing
+    , _rouCreationTimestamp = Nothing
+    , _rouId = Nothing
+    , _rouRegion = Nothing
+    , _rouNATs = Nothing
+    , _rouDescription = Nothing
+    }
+
+-- | BGP information that needs to be configured into the routing stack to
+-- establish the BGP peering. It must specify peer ASN and either interface
+-- name, IP, or peer IP. Please refer to RFC4273.
+rouBGPPeers :: Lens' Router [RouterBGPPeer]
+rouBGPPeers
+  = lens _rouBGPPeers (\ s a -> s{_rouBGPPeers = a}) .
+      _Default
+      . _Coerce
+
+-- | BGP information specific to this router.
+rouBGP :: Lens' Router (Maybe RouterBGP)
+rouBGP = lens _rouBGP (\ s a -> s{_rouBGP = a})
+
+-- | [Output Only] Type of resource. Always compute#router for routers.
+rouKind :: Lens' Router Text
+rouKind = lens _rouKind (\ s a -> s{_rouKind = a})
+
+-- | URI of the network to which this router belongs.
+rouNetwork :: Lens' Router (Maybe Text)
+rouNetwork
+  = lens _rouNetwork (\ s a -> s{_rouNetwork = a})
+
+-- | Router interfaces. Each interface requires either one linked resource
+-- (e.g. linkedVpnTunnel), or IP address and IP address range (e.g.
+-- ipRange), or both.
+rouInterfaces :: Lens' Router [RouterInterface]
+rouInterfaces
+  = lens _rouInterfaces
+      (\ s a -> s{_rouInterfaces = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+rouSelfLink :: Lens' Router (Maybe Text)
+rouSelfLink
+  = lens _rouSelfLink (\ s a -> s{_rouSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+rouName :: Lens' Router (Maybe Text)
+rouName = lens _rouName (\ s a -> s{_rouName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+rouCreationTimestamp :: Lens' Router (Maybe Text)
+rouCreationTimestamp
+  = lens _rouCreationTimestamp
+      (\ s a -> s{_rouCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+rouId :: Lens' Router (Maybe Word64)
+rouId
+  = lens _rouId (\ s a -> s{_rouId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URI of the region where the router resides. You must
+-- specify this field as part of the HTTP request URL. It is not settable
+-- as a field in the request body.
+rouRegion :: Lens' Router (Maybe Text)
+rouRegion
+  = lens _rouRegion (\ s a -> s{_rouRegion = a})
+
+-- | A list of Nat services created in this router.
+rouNATs :: Lens' Router [RouterNAT]
+rouNATs
+  = lens _rouNATs (\ s a -> s{_rouNATs = a}) . _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+rouDescription :: Lens' Router (Maybe Text)
+rouDescription
+  = lens _rouDescription
+      (\ s a -> s{_rouDescription = a})
+
+instance FromJSON Router where
+        parseJSON
+          = withObject "Router"
+              (\ o ->
+                 Router' <$>
+                   (o .:? "bgpPeers" .!= mempty) <*> (o .:? "bgp") <*>
+                     (o .:? "kind" .!= "compute#router")
+                     <*> (o .:? "network")
+                     <*> (o .:? "interfaces" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "nats" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Router where
+        toJSON Router'{..}
+          = object
+              (catMaybes
+                 [("bgpPeers" .=) <$> _rouBGPPeers,
+                  ("bgp" .=) <$> _rouBGP, Just ("kind" .= _rouKind),
+                  ("network" .=) <$> _rouNetwork,
+                  ("interfaces" .=) <$> _rouInterfaces,
+                  ("selfLink" .=) <$> _rouSelfLink,
+                  ("name" .=) <$> _rouName,
+                  ("creationTimestamp" .=) <$> _rouCreationTimestamp,
+                  ("id" .=) <$> _rouId, ("region" .=) <$> _rouRegion,
+                  ("nats" .=) <$> _rouNATs,
+                  ("description" .=) <$> _rouDescription])
+
+--
+-- /See:/ 'routerAggregatedListWarningDataItem' smart constructor.
+data RouterAggregatedListWarningDataItem = RouterAggregatedListWarningDataItem'
+    { _ralwdiValue :: !(Maybe Text)
+    , _ralwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ralwdiValue'
+--
+-- * 'ralwdiKey'
+routerAggregatedListWarningDataItem
+    :: RouterAggregatedListWarningDataItem
+routerAggregatedListWarningDataItem =
+    RouterAggregatedListWarningDataItem'
+    { _ralwdiValue = Nothing
+    , _ralwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ralwdiValue :: Lens' RouterAggregatedListWarningDataItem (Maybe Text)
+ralwdiValue
+  = lens _ralwdiValue (\ s a -> s{_ralwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ralwdiKey :: Lens' RouterAggregatedListWarningDataItem (Maybe Text)
+ralwdiKey
+  = lens _ralwdiKey (\ s a -> s{_ralwdiKey = a})
+
+instance FromJSON RouterAggregatedListWarningDataItem
+         where
+        parseJSON
+          = withObject "RouterAggregatedListWarningDataItem"
+              (\ o ->
+                 RouterAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RouterAggregatedListWarningDataItem
+         where
+        toJSON RouterAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ralwdiValue,
+                  ("key" .=) <$> _ralwdiKey])
+
+--
+-- /See:/ 'routersScopedListWarningDataItem' smart constructor.
+data RoutersScopedListWarningDataItem = RoutersScopedListWarningDataItem'
+    { _rslwdiValue :: !(Maybe Text)
+    , _rslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutersScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslwdiValue'
+--
+-- * 'rslwdiKey'
+routersScopedListWarningDataItem
+    :: RoutersScopedListWarningDataItem
+routersScopedListWarningDataItem =
+    RoutersScopedListWarningDataItem'
+    { _rslwdiValue = Nothing
+    , _rslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+rslwdiValue
+  = lens _rslwdiValue (\ s a -> s{_rslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+rslwdiKey
+  = lens _rslwdiKey (\ s a -> s{_rslwdiKey = a})
+
+instance FromJSON RoutersScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "RoutersScopedListWarningDataItem"
+              (\ o ->
+                 RoutersScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RoutersScopedListWarningDataItem
+         where
+        toJSON RoutersScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rslwdiValue,
+                  ("key" .=) <$> _rslwdiKey])
+
+--
+-- /See:/ 'subnetworksSetPrivateIPGoogleAccessRequest' smart constructor.
+newtype SubnetworksSetPrivateIPGoogleAccessRequest = SubnetworksSetPrivateIPGoogleAccessRequest'
+    { _sspigarPrivateIPGoogleAccess :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksSetPrivateIPGoogleAccessRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sspigarPrivateIPGoogleAccess'
+subnetworksSetPrivateIPGoogleAccessRequest
+    :: SubnetworksSetPrivateIPGoogleAccessRequest
+subnetworksSetPrivateIPGoogleAccessRequest =
+    SubnetworksSetPrivateIPGoogleAccessRequest'
+    { _sspigarPrivateIPGoogleAccess = Nothing
+    }
+
+sspigarPrivateIPGoogleAccess :: Lens' SubnetworksSetPrivateIPGoogleAccessRequest (Maybe Bool)
+sspigarPrivateIPGoogleAccess
+  = lens _sspigarPrivateIPGoogleAccess
+      (\ s a -> s{_sspigarPrivateIPGoogleAccess = a})
+
+instance FromJSON
+         SubnetworksSetPrivateIPGoogleAccessRequest where
+        parseJSON
+          = withObject
+              "SubnetworksSetPrivateIPGoogleAccessRequest"
+              (\ o ->
+                 SubnetworksSetPrivateIPGoogleAccessRequest' <$>
+                   (o .:? "privateIpGoogleAccess"))
+
+instance ToJSON
+         SubnetworksSetPrivateIPGoogleAccessRequest where
+        toJSON
+          SubnetworksSetPrivateIPGoogleAccessRequest'{..}
+          = object
+              (catMaybes
+                 [("privateIpGoogleAccess" .=) <$>
+                    _sspigarPrivateIPGoogleAccess])
+
+--
+-- /See:/ 'targetHTTPSProxyListWarningDataItem' smart constructor.
+data TargetHTTPSProxyListWarningDataItem = TargetHTTPSProxyListWarningDataItem'
+    { _thplwdiValue :: !(Maybe Text)
+    , _thplwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxyListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thplwdiValue'
+--
+-- * 'thplwdiKey'
+targetHTTPSProxyListWarningDataItem
+    :: TargetHTTPSProxyListWarningDataItem
+targetHTTPSProxyListWarningDataItem =
+    TargetHTTPSProxyListWarningDataItem'
+    { _thplwdiValue = Nothing
+    , _thplwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+thplwdiValue :: Lens' TargetHTTPSProxyListWarningDataItem (Maybe Text)
+thplwdiValue
+  = lens _thplwdiValue (\ s a -> s{_thplwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+thplwdiKey :: Lens' TargetHTTPSProxyListWarningDataItem (Maybe Text)
+thplwdiKey
+  = lens _thplwdiKey (\ s a -> s{_thplwdiKey = a})
+
+instance FromJSON TargetHTTPSProxyListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetHTTPSProxyListWarningDataItem"
+              (\ o ->
+                 TargetHTTPSProxyListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetHTTPSProxyListWarningDataItem
+         where
+        toJSON TargetHTTPSProxyListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _thplwdiValue,
+                  ("key" .=) <$> _thplwdiKey])
+
+-- | Contains a list of TargetVpnGateway resources.
+--
+-- /See:/ 'targetVPNGatewayList' smart constructor.
+data TargetVPNGatewayList = TargetVPNGatewayList'
+    { _tvglNextPageToken :: !(Maybe Text)
+    , _tvglKind          :: !Text
+    , _tvglItems         :: !(Maybe [TargetVPNGateway])
+    , _tvglSelfLink      :: !(Maybe Text)
+    , _tvglWarning       :: !(Maybe TargetVPNGatewayListWarning)
+    , _tvglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvglNextPageToken'
+--
+-- * 'tvglKind'
+--
+-- * 'tvglItems'
+--
+-- * 'tvglSelfLink'
+--
+-- * 'tvglWarning'
+--
+-- * 'tvglId'
+targetVPNGatewayList
+    :: TargetVPNGatewayList
+targetVPNGatewayList =
+    TargetVPNGatewayList'
+    { _tvglNextPageToken = Nothing
+    , _tvglKind = "compute#targetVpnGatewayList"
+    , _tvglItems = Nothing
+    , _tvglSelfLink = Nothing
+    , _tvglWarning = Nothing
+    , _tvglId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglNextPageToken
+  = lens _tvglNextPageToken
+      (\ s a -> s{_tvglNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvglKind :: Lens' TargetVPNGatewayList Text
+tvglKind = lens _tvglKind (\ s a -> s{_tvglKind = a})
+
+-- | A list of TargetVpnGateway resources.
+tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]
+tvglItems
+  = lens _tvglItems (\ s a -> s{_tvglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglSelfLink
+  = lens _tvglSelfLink (\ s a -> s{_tvglSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tvglWarning :: Lens' TargetVPNGatewayList (Maybe TargetVPNGatewayListWarning)
+tvglWarning
+  = lens _tvglWarning (\ s a -> s{_tvglWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tvglId :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglId = lens _tvglId (\ s a -> s{_tvglId = a})
+
+instance FromJSON TargetVPNGatewayList where
+        parseJSON
+          = withObject "TargetVPNGatewayList"
+              (\ o ->
+                 TargetVPNGatewayList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetVpnGatewayList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetVPNGatewayList where
+        toJSON TargetVPNGatewayList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tvglNextPageToken,
+                  Just ("kind" .= _tvglKind),
+                  ("items" .=) <$> _tvglItems,
+                  ("selfLink" .=) <$> _tvglSelfLink,
+                  ("warning" .=) <$> _tvglWarning,
+                  ("id" .=) <$> _tvglId])
+
+-- | Contains a list of SslCertificate resources.
+--
+-- /See:/ 'sslCertificateList' smart constructor.
+data SSLCertificateList = SSLCertificateList'
+    { _sclNextPageToken :: !(Maybe Text)
+    , _sclKind          :: !Text
+    , _sclItems         :: !(Maybe [SSLCertificate])
+    , _sclSelfLink      :: !(Maybe Text)
+    , _sclWarning       :: !(Maybe SSLCertificateListWarning)
+    , _sclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclNextPageToken'
+--
+-- * 'sclKind'
+--
+-- * 'sclItems'
+--
+-- * 'sclSelfLink'
+--
+-- * 'sclWarning'
+--
+-- * 'sclId'
+sslCertificateList
+    :: SSLCertificateList
+sslCertificateList =
+    SSLCertificateList'
+    { _sclNextPageToken = Nothing
+    , _sclKind = "compute#sslCertificateList"
+    , _sclItems = Nothing
+    , _sclSelfLink = Nothing
+    , _sclWarning = Nothing
+    , _sclId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)
+sclNextPageToken
+  = lens _sclNextPageToken
+      (\ s a -> s{_sclNextPageToken = a})
+
+-- | Type of resource.
+sclKind :: Lens' SSLCertificateList Text
+sclKind = lens _sclKind (\ s a -> s{_sclKind = a})
+
+-- | A list of SslCertificate resources.
+sclItems :: Lens' SSLCertificateList [SSLCertificate]
+sclItems
+  = lens _sclItems (\ s a -> s{_sclItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+sclSelfLink :: Lens' SSLCertificateList (Maybe Text)
+sclSelfLink
+  = lens _sclSelfLink (\ s a -> s{_sclSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+sclWarning :: Lens' SSLCertificateList (Maybe SSLCertificateListWarning)
+sclWarning
+  = lens _sclWarning (\ s a -> s{_sclWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+sclId :: Lens' SSLCertificateList (Maybe Text)
+sclId = lens _sclId (\ s a -> s{_sclId = a})
+
+instance FromJSON SSLCertificateList where
+        parseJSON
+          = withObject "SSLCertificateList"
+              (\ o ->
+                 SSLCertificateList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#sslCertificateList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SSLCertificateList where
+        toJSON SSLCertificateList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _sclNextPageToken,
+                  Just ("kind" .= _sclKind),
+                  ("items" .=) <$> _sclItems,
+                  ("selfLink" .=) <$> _sclSelfLink,
+                  ("warning" .=) <$> _sclWarning,
+                  ("id" .=) <$> _sclId])
+
+--
+-- /See:/ 'firewallAllowedItem' smart constructor.
+data FirewallAllowedItem = FirewallAllowedItem'
+    { _faiIPProtocol :: !(Maybe Text)
+    , _faiPorts      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallAllowedItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'faiIPProtocol'
+--
+-- * 'faiPorts'
+firewallAllowedItem
+    :: FirewallAllowedItem
+firewallAllowedItem =
+    FirewallAllowedItem'
+    { _faiIPProtocol = Nothing
+    , _faiPorts = Nothing
+    }
+
+-- | The IP protocol to which this rule applies. The protocol type is
+-- required when creating a firewall rule. This value can either be one of
+-- the following well known protocol strings (tcp, udp, icmp, esp, ah,
+-- ipip, sctp), or the IP protocol number.
+faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)
+faiIPProtocol
+  = lens _faiIPProtocol
+      (\ s a -> s{_faiIPProtocol = a})
+
+-- | An optional list of ports to which this rule applies. This field is only
+-- applicable for UDP or TCP protocol. Each entry must be either an integer
+-- or a range. If not specified, this rule applies to connections through
+-- any port. Example inputs include: [\"22\"], [\"80\",\"443\"], and
+-- [\"12345-12349\"].
+faiPorts :: Lens' FirewallAllowedItem [Text]
+faiPorts
+  = lens _faiPorts (\ s a -> s{_faiPorts = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON FirewallAllowedItem where
+        parseJSON
+          = withObject "FirewallAllowedItem"
+              (\ o ->
+                 FirewallAllowedItem' <$>
+                   (o .:? "IPProtocol") <*> (o .:? "ports" .!= mempty))
+
+instance ToJSON FirewallAllowedItem where
+        toJSON FirewallAllowedItem'{..}
+          = object
+              (catMaybes
+                 [("IPProtocol" .=) <$> _faiIPProtocol,
+                  ("ports" .=) <$> _faiPorts])
+
+-- | Description-tagged IP ranges for the router to advertise.
+--
+-- /See:/ 'routerAdvertisedIPRange' smart constructor.
+data RouterAdvertisedIPRange = RouterAdvertisedIPRange'
+    { _rairRange       :: !(Maybe Text)
+    , _rairDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterAdvertisedIPRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rairRange'
+--
+-- * 'rairDescription'
+routerAdvertisedIPRange
+    :: RouterAdvertisedIPRange
+routerAdvertisedIPRange =
+    RouterAdvertisedIPRange'
+    { _rairRange = Nothing
+    , _rairDescription = Nothing
+    }
+
+-- | The IP range to advertise. The value must be a CIDR-formatted string.
+rairRange :: Lens' RouterAdvertisedIPRange (Maybe Text)
+rairRange
+  = lens _rairRange (\ s a -> s{_rairRange = a})
+
+-- | User-specified description for the IP range.
+rairDescription :: Lens' RouterAdvertisedIPRange (Maybe Text)
+rairDescription
+  = lens _rairDescription
+      (\ s a -> s{_rairDescription = a})
+
+instance FromJSON RouterAdvertisedIPRange where
+        parseJSON
+          = withObject "RouterAdvertisedIPRange"
+              (\ o ->
+                 RouterAdvertisedIPRange' <$>
+                   (o .:? "range") <*> (o .:? "description"))
+
+instance ToJSON RouterAdvertisedIPRange where
+        toJSON RouterAdvertisedIPRange'{..}
+          = object
+              (catMaybes
+                 [("range" .=) <$> _rairRange,
+                  ("description" .=) <$> _rairDescription])
+
+--
+-- /See:/ 'routerListWarningDataItem' smart constructor.
+data RouterListWarningDataItem = RouterListWarningDataItem'
+    { _rlwdiValue :: !(Maybe Text)
+    , _rlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlwdiValue'
+--
+-- * 'rlwdiKey'
+routerListWarningDataItem
+    :: RouterListWarningDataItem
+routerListWarningDataItem =
+    RouterListWarningDataItem'
+    { _rlwdiValue = Nothing
+    , _rlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rlwdiValue :: Lens' RouterListWarningDataItem (Maybe Text)
+rlwdiValue
+  = lens _rlwdiValue (\ s a -> s{_rlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rlwdiKey :: Lens' RouterListWarningDataItem (Maybe Text)
+rlwdiKey = lens _rlwdiKey (\ s a -> s{_rlwdiKey = a})
+
+instance FromJSON RouterListWarningDataItem where
+        parseJSON
+          = withObject "RouterListWarningDataItem"
+              (\ o ->
+                 RouterListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RouterListWarningDataItem where
+        toJSON RouterListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rlwdiValue,
+                  ("key" .=) <$> _rlwdiKey])
+
+-- | A rule to be applied in a Policy.
+--
+-- /See:/ 'rule' smart constructor.
+data Rule = Rule'
+    { _rAction      :: !(Maybe RuleAction)
+    , _rNotIns      :: !(Maybe [Text])
+    , _rIns         :: !(Maybe [Text])
+    , _rLogConfigs  :: !(Maybe [LogConfig])
+    , _rConditions  :: !(Maybe [Condition])
+    , _rPermissions :: !(Maybe [Text])
+    , _rDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Rule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rAction'
+--
+-- * 'rNotIns'
+--
+-- * 'rIns'
+--
+-- * 'rLogConfigs'
+--
+-- * 'rConditions'
+--
+-- * 'rPermissions'
+--
+-- * 'rDescription'
+rule
+    :: Rule
+rule =
+    Rule'
+    { _rAction = Nothing
+    , _rNotIns = Nothing
+    , _rIns = Nothing
+    , _rLogConfigs = Nothing
+    , _rConditions = Nothing
+    , _rPermissions = Nothing
+    , _rDescription = Nothing
+    }
+
+-- | Required
+rAction :: Lens' Rule (Maybe RuleAction)
+rAction = lens _rAction (\ s a -> s{_rAction = a})
+
+-- | If one or more \'not_in\' clauses are specified, the rule matches if the
+-- PRINCIPAL\/AUTHORITY_SELECTOR is in none of the entries.
+rNotIns :: Lens' Rule [Text]
+rNotIns
+  = lens _rNotIns (\ s a -> s{_rNotIns = a}) . _Default
+      . _Coerce
+
+-- | If one or more \'in\' clauses are specified, the rule matches if the
+-- PRINCIPAL\/AUTHORITY_SELECTOR is in at least one of these entries.
+rIns :: Lens' Rule [Text]
+rIns
+  = lens _rIns (\ s a -> s{_rIns = a}) . _Default .
+      _Coerce
+
+-- | The config returned to callers of tech.iam.IAM.CheckPolicy for any
+-- entries that match the LOG action.
+rLogConfigs :: Lens' Rule [LogConfig]
+rLogConfigs
+  = lens _rLogConfigs (\ s a -> s{_rLogConfigs = a}) .
+      _Default
+      . _Coerce
+
+-- | Additional restrictions that must be met. All conditions must pass for
+-- the rule to match.
+rConditions :: Lens' Rule [Condition]
+rConditions
+  = lens _rConditions (\ s a -> s{_rConditions = a}) .
+      _Default
+      . _Coerce
+
+-- | A permission is a string of form \'..\' (e.g.,
+-- \'storage.buckets.list\'). A value of \'*\' matches all permissions, and
+-- a verb part of \'*\' (e.g., \'storage.buckets.*\') matches all verbs.
+rPermissions :: Lens' Rule [Text]
+rPermissions
+  = lens _rPermissions (\ s a -> s{_rPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | Human-readable description of the rule.
+rDescription :: Lens' Rule (Maybe Text)
+rDescription
+  = lens _rDescription (\ s a -> s{_rDescription = a})
+
+instance FromJSON Rule where
+        parseJSON
+          = withObject "Rule"
+              (\ o ->
+                 Rule' <$>
+                   (o .:? "action") <*> (o .:? "notIns" .!= mempty) <*>
+                     (o .:? "ins" .!= mempty)
+                     <*> (o .:? "logConfigs" .!= mempty)
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "permissions" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Rule where
+        toJSON Rule'{..}
+          = object
+              (catMaybes
+                 [("action" .=) <$> _rAction,
+                  ("notIns" .=) <$> _rNotIns, ("ins" .=) <$> _rIns,
+                  ("logConfigs" .=) <$> _rLogConfigs,
+                  ("conditions" .=) <$> _rConditions,
+                  ("permissions" .=) <$> _rPermissions,
+                  ("description" .=) <$> _rDescription])
+
+-- | Contains a list of BackendServicesScopedList.
+--
+-- /See:/ 'backendServiceAggregatedList' smart constructor.
+data BackendServiceAggregatedList = BackendServiceAggregatedList'
+    { _bsalNextPageToken :: !(Maybe Text)
+    , _bsalKind          :: !Text
+    , _bsalItems         :: !(Maybe BackendServiceAggregatedListItems)
+    , _bsalSelfLink      :: !(Maybe Text)
+    , _bsalWarning       :: !(Maybe BackendServiceAggregatedListWarning)
+    , _bsalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsalNextPageToken'
+--
+-- * 'bsalKind'
+--
+-- * 'bsalItems'
+--
+-- * 'bsalSelfLink'
+--
+-- * 'bsalWarning'
+--
+-- * 'bsalId'
+backendServiceAggregatedList
+    :: BackendServiceAggregatedList
+backendServiceAggregatedList =
+    BackendServiceAggregatedList'
+    { _bsalNextPageToken = Nothing
+    , _bsalKind = "compute#backendServiceAggregatedList"
+    , _bsalItems = Nothing
+    , _bsalSelfLink = Nothing
+    , _bsalWarning = Nothing
+    , _bsalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+bsalNextPageToken :: Lens' BackendServiceAggregatedList (Maybe Text)
+bsalNextPageToken
+  = lens _bsalNextPageToken
+      (\ s a -> s{_bsalNextPageToken = a})
+
+-- | Type of resource.
+bsalKind :: Lens' BackendServiceAggregatedList Text
+bsalKind = lens _bsalKind (\ s a -> s{_bsalKind = a})
+
+-- | A list of BackendServicesScopedList resources.
+bsalItems :: Lens' BackendServiceAggregatedList (Maybe BackendServiceAggregatedListItems)
+bsalItems
+  = lens _bsalItems (\ s a -> s{_bsalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+bsalSelfLink :: Lens' BackendServiceAggregatedList (Maybe Text)
+bsalSelfLink
+  = lens _bsalSelfLink (\ s a -> s{_bsalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+bsalWarning :: Lens' BackendServiceAggregatedList (Maybe BackendServiceAggregatedListWarning)
+bsalWarning
+  = lens _bsalWarning (\ s a -> s{_bsalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bsalId :: Lens' BackendServiceAggregatedList (Maybe Text)
+bsalId = lens _bsalId (\ s a -> s{_bsalId = a})
+
+instance FromJSON BackendServiceAggregatedList where
+        parseJSON
+          = withObject "BackendServiceAggregatedList"
+              (\ o ->
+                 BackendServiceAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#backendServiceAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON BackendServiceAggregatedList where
+        toJSON BackendServiceAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _bsalNextPageToken,
+                  Just ("kind" .= _bsalKind),
+                  ("items" .=) <$> _bsalItems,
+                  ("selfLink" .=) <$> _bsalSelfLink,
+                  ("warning" .=) <$> _bsalWarning,
+                  ("id" .=) <$> _bsalId])
+
+-- | Represents a Network resource. Read Virtual Private Cloud (VPC) Network
+-- Overview for more information. (== resource_for v1.networks ==) (==
+-- resource_for beta.networks ==)
+--
+-- /See:/ 'network' smart constructor.
+data Network = Network'
+    { _nAutoCreateSubnetworks :: !(Maybe Bool)
+    , _nKind                  :: !Text
+    , _nRoutingConfig         :: !(Maybe NetworkRoutingConfig)
+    , _nSubnetworks           :: !(Maybe [Text])
+    , _nIPv4Range             :: !(Maybe Text)
+    , _nSelfLink              :: !(Maybe Text)
+    , _nName                  :: !(Maybe Text)
+    , _nCreationTimestamp     :: !(Maybe Text)
+    , _nId                    :: !(Maybe (Textual Word64))
+    , _nGatewayIPv4           :: !(Maybe Text)
+    , _nDescription           :: !(Maybe Text)
+    , _nPeerings              :: !(Maybe [NetworkPeering])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Network' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nAutoCreateSubnetworks'
+--
+-- * 'nKind'
+--
+-- * 'nRoutingConfig'
+--
+-- * 'nSubnetworks'
+--
+-- * 'nIPv4Range'
+--
+-- * 'nSelfLink'
+--
+-- * 'nName'
+--
+-- * 'nCreationTimestamp'
+--
+-- * 'nId'
+--
+-- * 'nGatewayIPv4'
+--
+-- * 'nDescription'
+--
+-- * 'nPeerings'
+network
+    :: Network
+network =
+    Network'
+    { _nAutoCreateSubnetworks = Nothing
+    , _nKind = "compute#network"
+    , _nRoutingConfig = Nothing
+    , _nSubnetworks = Nothing
+    , _nIPv4Range = Nothing
+    , _nSelfLink = Nothing
+    , _nName = Nothing
+    , _nCreationTimestamp = Nothing
+    , _nId = Nothing
+    , _nGatewayIPv4 = Nothing
+    , _nDescription = Nothing
+    , _nPeerings = Nothing
+    }
+
+-- | When set to true, the VPC network is created in \"auto\" mode. When set
+-- to false, the VPC network is created in \"custom\" mode. An auto mode
+-- VPC network starts with one subnet per region. Each subnet has a
+-- predetermined range as described in Auto mode VPC network IP ranges.
+nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)
+nAutoCreateSubnetworks
+  = lens _nAutoCreateSubnetworks
+      (\ s a -> s{_nAutoCreateSubnetworks = a})
+
+-- | [Output Only] Type of the resource. Always compute#network for networks.
+nKind :: Lens' Network Text
+nKind = lens _nKind (\ s a -> s{_nKind = a})
+
+-- | The network-level routing configuration for this network. Used by Cloud
+-- Router to determine what type of network-wide routing behavior to
+-- enforce.
+nRoutingConfig :: Lens' Network (Maybe NetworkRoutingConfig)
+nRoutingConfig
+  = lens _nRoutingConfig
+      (\ s a -> s{_nRoutingConfig = a})
+
+-- | [Output Only] Server-defined fully-qualified URLs for all subnetworks in
+-- this VPC network.
+nSubnetworks :: Lens' Network [Text]
+nSubnetworks
+  = lens _nSubnetworks (\ s a -> s{_nSubnetworks = a})
+      . _Default
+      . _Coerce
+
+-- | The range of internal addresses that are legal on this network. This
+-- range is a CIDR specification, for example: 192.168.0.0\/16. Provided by
+-- the client when the network is created.
+nIPv4Range :: Lens' Network (Maybe Text)
+nIPv4Range
+  = lens _nIPv4Range (\ s a -> s{_nIPv4Range = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+nSelfLink :: Lens' Network (Maybe Text)
+nSelfLink
+  = lens _nSelfLink (\ s a -> s{_nSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+nName :: Lens' Network (Maybe Text)
+nName = lens _nName (\ s a -> s{_nName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+nCreationTimestamp :: Lens' Network (Maybe Text)
+nCreationTimestamp
+  = lens _nCreationTimestamp
+      (\ s a -> s{_nCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+nId :: Lens' Network (Maybe Word64)
+nId
+  = lens _nId (\ s a -> s{_nId = a}) . mapping _Coerce
+
+-- | [Output Only] The gateway address for default routing out of the
+-- network. This value is read only and is selected by GCP.
+nGatewayIPv4 :: Lens' Network (Maybe Text)
+nGatewayIPv4
+  = lens _nGatewayIPv4 (\ s a -> s{_nGatewayIPv4 = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+nDescription :: Lens' Network (Maybe Text)
+nDescription
+  = lens _nDescription (\ s a -> s{_nDescription = a})
+
+-- | [Output Only] A list of network peerings for the resource.
+nPeerings :: Lens' Network [NetworkPeering]
+nPeerings
+  = lens _nPeerings (\ s a -> s{_nPeerings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Network where
+        parseJSON
+          = withObject "Network"
+              (\ o ->
+                 Network' <$>
+                   (o .:? "autoCreateSubnetworks") <*>
+                     (o .:? "kind" .!= "compute#network")
+                     <*> (o .:? "routingConfig")
+                     <*> (o .:? "subnetworks" .!= mempty)
+                     <*> (o .:? "IPv4Range")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "gatewayIPv4")
+                     <*> (o .:? "description")
+                     <*> (o .:? "peerings" .!= mempty))
+
+instance ToJSON Network where
+        toJSON Network'{..}
+          = object
+              (catMaybes
+                 [("autoCreateSubnetworks" .=) <$>
+                    _nAutoCreateSubnetworks,
+                  Just ("kind" .= _nKind),
+                  ("routingConfig" .=) <$> _nRoutingConfig,
+                  ("subnetworks" .=) <$> _nSubnetworks,
+                  ("IPv4Range" .=) <$> _nIPv4Range,
+                  ("selfLink" .=) <$> _nSelfLink,
+                  ("name" .=) <$> _nName,
+                  ("creationTimestamp" .=) <$> _nCreationTimestamp,
+                  ("id" .=) <$> _nId,
+                  ("gatewayIPv4" .=) <$> _nGatewayIPv4,
+                  ("description" .=) <$> _nDescription,
+                  ("peerings" .=) <$> _nPeerings])
+
+-- | Informational warning which replaces the list of routers when the list
+-- is empty.
+--
+-- /See:/ 'routersScopedListWarning' smart constructor.
+data RoutersScopedListWarning = RoutersScopedListWarning'
+    { _rslwData    :: !(Maybe [RoutersScopedListWarningDataItem])
+    , _rslwCode    :: !(Maybe RoutersScopedListWarningCode)
+    , _rslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutersScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslwData'
+--
+-- * 'rslwCode'
+--
+-- * 'rslwMessage'
+routersScopedListWarning
+    :: RoutersScopedListWarning
+routersScopedListWarning =
+    RoutersScopedListWarning'
+    { _rslwData = Nothing
+    , _rslwCode = Nothing
+    , _rslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]
+rslwData
+  = lens _rslwData (\ s a -> s{_rslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)
+rslwCode = lens _rslwCode (\ s a -> s{_rslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)
+rslwMessage
+  = lens _rslwMessage (\ s a -> s{_rslwMessage = a})
+
+instance FromJSON RoutersScopedListWarning where
+        parseJSON
+          = withObject "RoutersScopedListWarning"
+              (\ o ->
+                 RoutersScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RoutersScopedListWarning where
+        toJSON RoutersScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rslwData,
+                  ("code" .=) <$> _rslwCode,
+                  ("message" .=) <$> _rslwMessage])
+
+-- | Subnetwork which the current user has compute.subnetworks.use permission
+-- on.
+--
+-- /See:/ 'usableSubnetwork' smart constructor.
+data UsableSubnetwork = UsableSubnetwork'
+    { _usNetwork           :: !(Maybe Text)
+    , _usSecondaryIPRanges :: !(Maybe [UsableSubnetworkSecondaryRange])
+    , _usIPCIdRRange       :: !(Maybe Text)
+    , _usSubnetwork        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsableSubnetwork' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usNetwork'
+--
+-- * 'usSecondaryIPRanges'
+--
+-- * 'usIPCIdRRange'
+--
+-- * 'usSubnetwork'
+usableSubnetwork
+    :: UsableSubnetwork
+usableSubnetwork =
+    UsableSubnetwork'
+    { _usNetwork = Nothing
+    , _usSecondaryIPRanges = Nothing
+    , _usIPCIdRRange = Nothing
+    , _usSubnetwork = Nothing
+    }
+
+-- | Network URL.
+usNetwork :: Lens' UsableSubnetwork (Maybe Text)
+usNetwork
+  = lens _usNetwork (\ s a -> s{_usNetwork = a})
+
+-- | Secondary IP ranges.
+usSecondaryIPRanges :: Lens' UsableSubnetwork [UsableSubnetworkSecondaryRange]
+usSecondaryIPRanges
+  = lens _usSecondaryIPRanges
+      (\ s a -> s{_usSecondaryIPRanges = a})
+      . _Default
+      . _Coerce
+
+-- | The range of internal addresses that are owned by this subnetwork.
+usIPCIdRRange :: Lens' UsableSubnetwork (Maybe Text)
+usIPCIdRRange
+  = lens _usIPCIdRRange
+      (\ s a -> s{_usIPCIdRRange = a})
+
+-- | Subnetwork URL.
+usSubnetwork :: Lens' UsableSubnetwork (Maybe Text)
+usSubnetwork
+  = lens _usSubnetwork (\ s a -> s{_usSubnetwork = a})
+
+instance FromJSON UsableSubnetwork where
+        parseJSON
+          = withObject "UsableSubnetwork"
+              (\ o ->
+                 UsableSubnetwork' <$>
+                   (o .:? "network") <*>
+                     (o .:? "secondaryIpRanges" .!= mempty)
+                     <*> (o .:? "ipCidrRange")
+                     <*> (o .:? "subnetwork"))
+
+instance ToJSON UsableSubnetwork where
+        toJSON UsableSubnetwork'{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _usNetwork,
+                  ("secondaryIpRanges" .=) <$> _usSecondaryIPRanges,
+                  ("ipCidrRange" .=) <$> _usIPCIdRRange,
+                  ("subnetwork" .=) <$> _usSubnetwork])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetHTTPSProxyListWarning' smart constructor.
+data TargetHTTPSProxyListWarning = TargetHTTPSProxyListWarning'
+    { _thplwData    :: !(Maybe [TargetHTTPSProxyListWarningDataItem])
+    , _thplwCode    :: !(Maybe TargetHTTPSProxyListWarningCode)
+    , _thplwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxyListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thplwData'
+--
+-- * 'thplwCode'
+--
+-- * 'thplwMessage'
+targetHTTPSProxyListWarning
+    :: TargetHTTPSProxyListWarning
+targetHTTPSProxyListWarning =
+    TargetHTTPSProxyListWarning'
+    { _thplwData = Nothing
+    , _thplwCode = Nothing
+    , _thplwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+thplwData :: Lens' TargetHTTPSProxyListWarning [TargetHTTPSProxyListWarningDataItem]
+thplwData
+  = lens _thplwData (\ s a -> s{_thplwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+thplwCode :: Lens' TargetHTTPSProxyListWarning (Maybe TargetHTTPSProxyListWarningCode)
+thplwCode
+  = lens _thplwCode (\ s a -> s{_thplwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+thplwMessage :: Lens' TargetHTTPSProxyListWarning (Maybe Text)
+thplwMessage
+  = lens _thplwMessage (\ s a -> s{_thplwMessage = a})
+
+instance FromJSON TargetHTTPSProxyListWarning where
+        parseJSON
+          = withObject "TargetHTTPSProxyListWarning"
+              (\ o ->
+                 TargetHTTPSProxyListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetHTTPSProxyListWarning where
+        toJSON TargetHTTPSProxyListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _thplwData,
+                  ("code" .=) <$> _thplwCode,
+                  ("message" .=) <$> _thplwMessage])
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+--
+-- /See:/ 'addressesScopedListWarning' smart constructor.
+data AddressesScopedListWarning = AddressesScopedListWarning'
+    { _aData    :: !(Maybe [AddressesScopedListWarningDataItem])
+    , _aCode    :: !(Maybe AddressesScopedListWarningCode)
+    , _aMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aData'
+--
+-- * 'aCode'
+--
+-- * 'aMessage'
+addressesScopedListWarning
+    :: AddressesScopedListWarning
+addressesScopedListWarning =
+    AddressesScopedListWarning'
+    { _aData = Nothing
+    , _aCode = Nothing
+    , _aMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]
+aData
+  = lens _aData (\ s a -> s{_aData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)
+aCode = lens _aCode (\ s a -> s{_aCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+aMessage :: Lens' AddressesScopedListWarning (Maybe Text)
+aMessage = lens _aMessage (\ s a -> s{_aMessage = a})
+
+instance FromJSON AddressesScopedListWarning where
+        parseJSON
+          = withObject "AddressesScopedListWarning"
+              (\ o ->
+                 AddressesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AddressesScopedListWarning where
+        toJSON AddressesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _aData, ("code" .=) <$> _aCode,
+                  ("message" .=) <$> _aMessage])
+
+-- | A security policy is comprised of one or more rules. It can also be
+-- associated with one or more \'targets\'. (== resource_for
+-- v1.securityPolicies ==) (== resource_for beta.securityPolicies ==)
+--
+-- /See:/ 'securityPolicy' smart constructor.
+data SecurityPolicy = SecurityPolicy'
+    { _secRules             :: !(Maybe [SecurityPolicyRule])
+    , _secKind              :: !Text
+    , _secFingerprint       :: !(Maybe Bytes)
+    , _secSelfLink          :: !(Maybe Text)
+    , _secName              :: !(Maybe Text)
+    , _secCreationTimestamp :: !(Maybe Text)
+    , _secId                :: !(Maybe (Textual Word64))
+    , _secDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secRules'
+--
+-- * 'secKind'
+--
+-- * 'secFingerprint'
+--
+-- * 'secSelfLink'
+--
+-- * 'secName'
+--
+-- * 'secCreationTimestamp'
+--
+-- * 'secId'
+--
+-- * 'secDescription'
+securityPolicy
+    :: SecurityPolicy
+securityPolicy =
+    SecurityPolicy'
+    { _secRules = Nothing
+    , _secKind = "compute#securityPolicy"
+    , _secFingerprint = Nothing
+    , _secSelfLink = Nothing
+    , _secName = Nothing
+    , _secCreationTimestamp = Nothing
+    , _secId = Nothing
+    , _secDescription = Nothing
+    }
+
+-- | A list of rules that belong to this policy. There must always be a
+-- default rule (rule with priority 2147483647 and match \"*\"). If no
+-- rules are provided when creating a security policy, a default rule with
+-- action \"allow\" will be added.
+secRules :: Lens' SecurityPolicy [SecurityPolicyRule]
+secRules
+  = lens _secRules (\ s a -> s{_secRules = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output only] Type of the resource. Always compute#securityPolicyfor
+-- security policies
+secKind :: Lens' SecurityPolicy Text
+secKind = lens _secKind (\ s a -> s{_secKind = a})
+
+-- | Specifies a fingerprint for this resource, which is essentially a hash
+-- of the metadata\'s contents and used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update metadata. You must always provide an
+-- up-to-date fingerprint hash in order to update or change metadata,
+-- otherwise the request will fail with error 412 conditionNotMet. To see
+-- the latest fingerprint, make get() request to the security policy.
+secFingerprint :: Lens' SecurityPolicy (Maybe ByteString)
+secFingerprint
+  = lens _secFingerprint
+      (\ s a -> s{_secFingerprint = a})
+      . mapping _Bytes
+
+-- | [Output Only] Server-defined URL for the resource.
+secSelfLink :: Lens' SecurityPolicy (Maybe Text)
+secSelfLink
+  = lens _secSelfLink (\ s a -> s{_secSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+secName :: Lens' SecurityPolicy (Maybe Text)
+secName = lens _secName (\ s a -> s{_secName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+secCreationTimestamp :: Lens' SecurityPolicy (Maybe Text)
+secCreationTimestamp
+  = lens _secCreationTimestamp
+      (\ s a -> s{_secCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+secId :: Lens' SecurityPolicy (Maybe Word64)
+secId
+  = lens _secId (\ s a -> s{_secId = a}) .
+      mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+secDescription :: Lens' SecurityPolicy (Maybe Text)
+secDescription
+  = lens _secDescription
+      (\ s a -> s{_secDescription = a})
+
+instance FromJSON SecurityPolicy where
+        parseJSON
+          = withObject "SecurityPolicy"
+              (\ o ->
+                 SecurityPolicy' <$>
+                   (o .:? "rules" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#securityPolicy")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON SecurityPolicy where
+        toJSON SecurityPolicy'{..}
+          = object
+              (catMaybes
+                 [("rules" .=) <$> _secRules,
+                  Just ("kind" .= _secKind),
+                  ("fingerprint" .=) <$> _secFingerprint,
+                  ("selfLink" .=) <$> _secSelfLink,
+                  ("name" .=) <$> _secName,
+                  ("creationTimestamp" .=) <$> _secCreationTimestamp,
+                  ("id" .=) <$> _secId,
+                  ("description" .=) <$> _secDescription])
+
+--
+-- /See:/ 'instanceGroupAggregatedListWarningDataItem' smart constructor.
+data InstanceGroupAggregatedListWarningDataItem = InstanceGroupAggregatedListWarningDataItem'
+    { _igalwdiValue :: !(Maybe Text)
+    , _igalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igalwdiValue'
+--
+-- * 'igalwdiKey'
+instanceGroupAggregatedListWarningDataItem
+    :: InstanceGroupAggregatedListWarningDataItem
+instanceGroupAggregatedListWarningDataItem =
+    InstanceGroupAggregatedListWarningDataItem'
+    { _igalwdiValue = Nothing
+    , _igalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igalwdiValue :: Lens' InstanceGroupAggregatedListWarningDataItem (Maybe Text)
+igalwdiValue
+  = lens _igalwdiValue (\ s a -> s{_igalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igalwdiKey :: Lens' InstanceGroupAggregatedListWarningDataItem (Maybe Text)
+igalwdiKey
+  = lens _igalwdiKey (\ s a -> s{_igalwdiKey = a})
+
+instance FromJSON
+         InstanceGroupAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupAggregatedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupAggregatedListWarningDataItem where
+        toJSON
+          InstanceGroupAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igalwdiValue,
+                  ("key" .=) <$> _igalwdiKey])
+
+-- | The parameters of the raw disk image.
+--
+-- /See:/ 'imageRawDisk' smart constructor.
+data ImageRawDisk = ImageRawDisk'
+    { _irdContainerType :: !(Maybe ImageRawDiskContainerType)
+    , _irdSource        :: !(Maybe Text)
+    , _irdSha1Checksum  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageRawDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'irdContainerType'
+--
+-- * 'irdSource'
+--
+-- * 'irdSha1Checksum'
+imageRawDisk
+    :: ImageRawDisk
+imageRawDisk =
+    ImageRawDisk'
+    { _irdContainerType = Nothing
+    , _irdSource = Nothing
+    , _irdSha1Checksum = Nothing
+    }
+
+-- | The format used to encode and transmit the block device, which should be
+-- TAR. This is just a container and transmission format and not a runtime
+-- format. Provided by the client when the disk image is created.
+irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)
+irdContainerType
+  = lens _irdContainerType
+      (\ s a -> s{_irdContainerType = a})
+
+-- | The full Google Cloud Storage URL where the disk image is stored. You
+-- must provide either this property or the sourceDisk property but not
+-- both.
+irdSource :: Lens' ImageRawDisk (Maybe Text)
+irdSource
+  = lens _irdSource (\ s a -> s{_irdSource = a})
+
+-- | An optional SHA1 checksum of the disk image before unpackaging; provided
+-- by the client when the disk image is created.
+irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)
+irdSha1Checksum
+  = lens _irdSha1Checksum
+      (\ s a -> s{_irdSha1Checksum = a})
+
+instance FromJSON ImageRawDisk where
+        parseJSON
+          = withObject "ImageRawDisk"
+              (\ o ->
+                 ImageRawDisk' <$>
+                   (o .:? "containerType") <*> (o .:? "source") <*>
+                     (o .:? "sha1Checksum"))
+
+instance ToJSON ImageRawDisk where
+        toJSON ImageRawDisk'{..}
+          = object
+              (catMaybes
+                 [("containerType" .=) <$> _irdContainerType,
+                  ("source" .=) <$> _irdSource,
+                  ("sha1Checksum" .=) <$> _irdSha1Checksum])
+
+--
+-- /See:/ 'instanceAggregatedList' smart constructor.
+data InstanceAggregatedList = InstanceAggregatedList'
+    { _ialNextPageToken :: !(Maybe Text)
+    , _ialKind          :: !Text
+    , _ialItems         :: !(Maybe InstanceAggregatedListItems)
+    , _ialSelfLink      :: !(Maybe Text)
+    , _ialWarning       :: !(Maybe InstanceAggregatedListWarning)
+    , _ialId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialNextPageToken'
+--
+-- * 'ialKind'
+--
+-- * 'ialItems'
+--
+-- * 'ialSelfLink'
+--
+-- * 'ialWarning'
+--
+-- * 'ialId'
+instanceAggregatedList
+    :: InstanceAggregatedList
+instanceAggregatedList =
+    InstanceAggregatedList'
+    { _ialNextPageToken = Nothing
+    , _ialKind = "compute#instanceAggregatedList"
+    , _ialItems = Nothing
+    , _ialSelfLink = Nothing
+    , _ialWarning = Nothing
+    , _ialId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)
+ialNextPageToken
+  = lens _ialNextPageToken
+      (\ s a -> s{_ialNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#instanceAggregatedList
+-- for aggregated lists of Instance resources.
+ialKind :: Lens' InstanceAggregatedList Text
+ialKind = lens _ialKind (\ s a -> s{_ialKind = a})
+
+-- | A list of InstancesScopedList resources.
+ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)
+ialItems = lens _ialItems (\ s a -> s{_ialItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)
+ialSelfLink
+  = lens _ialSelfLink (\ s a -> s{_ialSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ialWarning :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListWarning)
+ialWarning
+  = lens _ialWarning (\ s a -> s{_ialWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ialId :: Lens' InstanceAggregatedList (Maybe Text)
+ialId = lens _ialId (\ s a -> s{_ialId = a})
+
+instance FromJSON InstanceAggregatedList where
+        parseJSON
+          = withObject "InstanceAggregatedList"
+              (\ o ->
+                 InstanceAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceAggregatedList where
+        toJSON InstanceAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ialNextPageToken,
+                  Just ("kind" .= _ialKind),
+                  ("items" .=) <$> _ialItems,
+                  ("selfLink" .=) <$> _ialSelfLink,
+                  ("warning" .=) <$> _ialWarning,
+                  ("id" .=) <$> _ialId])
+
+--
+-- /See:/ 'targetTCPProxiesSetBackendServiceRequest' smart constructor.
+newtype TargetTCPProxiesSetBackendServiceRequest = TargetTCPProxiesSetBackendServiceRequest'
+    { _ttpsbsrService :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesSetBackendServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpsbsrService'
+targetTCPProxiesSetBackendServiceRequest
+    :: TargetTCPProxiesSetBackendServiceRequest
+targetTCPProxiesSetBackendServiceRequest =
+    TargetTCPProxiesSetBackendServiceRequest'
+    { _ttpsbsrService = Nothing
+    }
+
+-- | The URL of the new BackendService resource for the targetTcpProxy.
+ttpsbsrService :: Lens' TargetTCPProxiesSetBackendServiceRequest (Maybe Text)
+ttpsbsrService
+  = lens _ttpsbsrService
+      (\ s a -> s{_ttpsbsrService = a})
+
+instance FromJSON
+         TargetTCPProxiesSetBackendServiceRequest where
+        parseJSON
+          = withObject
+              "TargetTCPProxiesSetBackendServiceRequest"
+              (\ o ->
+                 TargetTCPProxiesSetBackendServiceRequest' <$>
+                   (o .:? "service"))
+
+instance ToJSON
+         TargetTCPProxiesSetBackendServiceRequest where
+        toJSON TargetTCPProxiesSetBackendServiceRequest'{..}
+          = object
+              (catMaybes [("service" .=) <$> _ttpsbsrService])
+
+--
+-- /See:/ 'sslHealthCheck' smart constructor.
+data SSLHealthCheck = SSLHealthCheck'
+    { _shcResponse    :: !(Maybe Text)
+    , _shcProxyHeader :: !(Maybe SSLHealthCheckProxyHeader)
+    , _shcPortName    :: !(Maybe Text)
+    , _shcPort        :: !(Maybe (Textual Int32))
+    , _shcRequest     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'shcResponse'
+--
+-- * 'shcProxyHeader'
+--
+-- * 'shcPortName'
+--
+-- * 'shcPort'
+--
+-- * 'shcRequest'
+sslHealthCheck
+    :: SSLHealthCheck
+sslHealthCheck =
+    SSLHealthCheck'
+    { _shcResponse = Nothing
+    , _shcProxyHeader = Nothing
+    , _shcPortName = Nothing
+    , _shcPort = Nothing
+    , _shcRequest = Nothing
+    }
+
+-- | The bytes to match against the beginning of the response data. If left
+-- empty (the default value), any response will indicate health. The
+-- response data can only be ASCII.
+shcResponse :: Lens' SSLHealthCheck (Maybe Text)
+shcResponse
+  = lens _shcResponse (\ s a -> s{_shcResponse = a})
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)
+shcProxyHeader
+  = lens _shcProxyHeader
+      (\ s a -> s{_shcProxyHeader = a})
+
+-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
+-- port_name are defined, port takes precedence.
+shcPortName :: Lens' SSLHealthCheck (Maybe Text)
+shcPortName
+  = lens _shcPortName (\ s a -> s{_shcPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 443. Valid values are 1 through 65535.
+shcPort :: Lens' SSLHealthCheck (Maybe Int32)
+shcPort
+  = lens _shcPort (\ s a -> s{_shcPort = a}) .
+      mapping _Coerce
+
+-- | The application data to send once the SSL connection has been
+-- established (default value is empty). If both request and response are
+-- empty, the connection establishment alone will indicate health. The
+-- request data can only be ASCII.
+shcRequest :: Lens' SSLHealthCheck (Maybe Text)
+shcRequest
+  = lens _shcRequest (\ s a -> s{_shcRequest = a})
+
+instance FromJSON SSLHealthCheck where
+        parseJSON
+          = withObject "SSLHealthCheck"
+              (\ o ->
+                 SSLHealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "proxyHeader") <*>
+                     (o .:? "portName")
+                     <*> (o .:? "port")
+                     <*> (o .:? "request"))
+
+instance ToJSON SSLHealthCheck where
+        toJSON SSLHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _shcResponse,
+                  ("proxyHeader" .=) <$> _shcProxyHeader,
+                  ("portName" .=) <$> _shcPortName,
+                  ("port" .=) <$> _shcPort,
+                  ("request" .=) <$> _shcRequest])
+
+-- | A reserved address resource. (== resource_for beta.addresses ==) (==
+-- resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==)
+-- (== resource_for v1.globalAddresses ==)
+--
+-- /See:/ 'address' smart constructor.
+data Address = Address'
+    { _aPrefixLength      :: !(Maybe (Textual Int32))
+    , _aNetworkTier       :: !(Maybe AddressNetworkTier)
+    , _aStatus            :: !(Maybe AddressStatus)
+    , _aUsers             :: !(Maybe [Text])
+    , _aKind              :: !Text
+    , _aIPVersion         :: !(Maybe AddressIPVersion)
+    , _aNetwork           :: !(Maybe Text)
+    , _aAddress           :: !(Maybe Text)
+    , _aPurpose           :: !(Maybe AddressPurpose)
+    , _aSelfLink          :: !(Maybe Text)
+    , _aName              :: !(Maybe Text)
+    , _aCreationTimestamp :: !(Maybe Text)
+    , _aSubnetwork        :: !(Maybe Text)
+    , _aId                :: !(Maybe (Textual Word64))
+    , _aRegion            :: !(Maybe Text)
+    , _aDescription       :: !(Maybe Text)
+    , _aAddressType       :: !(Maybe AddressAddressType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Address' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aPrefixLength'
+--
+-- * 'aNetworkTier'
+--
+-- * 'aStatus'
+--
+-- * 'aUsers'
+--
+-- * 'aKind'
+--
+-- * 'aIPVersion'
+--
+-- * 'aNetwork'
+--
+-- * 'aAddress'
+--
+-- * 'aPurpose'
+--
+-- * 'aSelfLink'
+--
+-- * 'aName'
+--
+-- * 'aCreationTimestamp'
+--
+-- * 'aSubnetwork'
+--
+-- * 'aId'
+--
+-- * 'aRegion'
+--
+-- * 'aDescription'
+--
+-- * 'aAddressType'
+address
+    :: Address
+address =
+    Address'
+    { _aPrefixLength = Nothing
+    , _aNetworkTier = Nothing
+    , _aStatus = Nothing
+    , _aUsers = Nothing
+    , _aKind = "compute#address"
+    , _aIPVersion = Nothing
+    , _aNetwork = Nothing
+    , _aAddress = Nothing
+    , _aPurpose = Nothing
+    , _aSelfLink = Nothing
+    , _aName = Nothing
+    , _aCreationTimestamp = Nothing
+    , _aSubnetwork = Nothing
+    , _aId = Nothing
+    , _aRegion = Nothing
+    , _aDescription = Nothing
+    , _aAddressType = Nothing
+    }
+
+-- | The prefix length if the resource reprensents an IP range.
+aPrefixLength :: Lens' Address (Maybe Int32)
+aPrefixLength
+  = lens _aPrefixLength
+      (\ s a -> s{_aPrefixLength = a})
+      . mapping _Coerce
+
+-- | This signifies the networking tier used for configuring this Address and
+-- can only take the following values: PREMIUM, STANDARD. Global forwarding
+-- rules can only be Premium Tier. Regional forwarding rules can be either
+-- Premium or Standard Tier. Standard Tier addresses applied to regional
+-- forwarding rules can be used with any external load balancer. Regional
+-- forwarding rules in Premium Tier can only be used with a Network load
+-- balancer. If this field is not specified, it is assumed to be PREMIUM.
+aNetworkTier :: Lens' Address (Maybe AddressNetworkTier)
+aNetworkTier
+  = lens _aNetworkTier (\ s a -> s{_aNetworkTier = a})
+
+-- | [Output Only] The status of the address, which can be one of RESERVING,
+-- RESERVED, or IN_USE. An address that is RESERVING is currently in the
+-- process of being reserved. A RESERVED address is currently reserved and
+-- available to use. An IN_USE address is currently being used by another
+-- resource and is not available.
+aStatus :: Lens' Address (Maybe AddressStatus)
+aStatus = lens _aStatus (\ s a -> s{_aStatus = a})
+
+-- | [Output Only] The URLs of the resources that are using this address.
+aUsers :: Lens' Address [Text]
+aUsers
+  = lens _aUsers (\ s a -> s{_aUsers = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#address for
+-- addresses.
+aKind :: Lens' Address Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | The IP Version that will be used by this address. Valid options are IPV4
+-- or IPV6. This can only be specified for a global address.
+aIPVersion :: Lens' Address (Maybe AddressIPVersion)
+aIPVersion
+  = lens _aIPVersion (\ s a -> s{_aIPVersion = a})
+
+-- | The URL of the network in which to reserve the address. This field can
+-- only be used with INTERNAL type with VPC_PEERING purpose.
+aNetwork :: Lens' Address (Maybe Text)
+aNetwork = lens _aNetwork (\ s a -> s{_aNetwork = a})
+
+-- | The static IP address represented by this resource.
+aAddress :: Lens' Address (Maybe Text)
+aAddress = lens _aAddress (\ s a -> s{_aAddress = a})
+
+-- | The purpose of resource, only used with INTERNAL type.
+aPurpose :: Lens' Address (Maybe AddressPurpose)
+aPurpose = lens _aPurpose (\ s a -> s{_aPurpose = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+aSelfLink :: Lens' Address (Maybe Text)
+aSelfLink
+  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+aName :: Lens' Address (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+aCreationTimestamp :: Lens' Address (Maybe Text)
+aCreationTimestamp
+  = lens _aCreationTimestamp
+      (\ s a -> s{_aCreationTimestamp = a})
+
+-- | The URL of the subnetwork in which to reserve the address. If an IP
+-- address is specified, it must be within the subnetwork\'s IP range. This
+-- field can only be used with INTERNAL type with
+-- GCE_ENDPOINT\/DNS_RESOLVER purposes.
+aSubnetwork :: Lens' Address (Maybe Text)
+aSubnetwork
+  = lens _aSubnetwork (\ s a -> s{_aSubnetwork = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+aId :: Lens' Address (Maybe Word64)
+aId
+  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce
+
+-- | [Output Only] URL of the region where the regional address resides. This
+-- field is not applicable to global addresses. You must specify this field
+-- as part of the HTTP request URL. You cannot set this field in the
+-- request body.
+aRegion :: Lens' Address (Maybe Text)
+aRegion = lens _aRegion (\ s a -> s{_aRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+aDescription :: Lens' Address (Maybe Text)
+aDescription
+  = lens _aDescription (\ s a -> s{_aDescription = a})
+
+-- | The type of address to reserve, either INTERNAL or EXTERNAL. If
+-- unspecified, defaults to EXTERNAL.
+aAddressType :: Lens' Address (Maybe AddressAddressType)
+aAddressType
+  = lens _aAddressType (\ s a -> s{_aAddressType = a})
+
+instance FromJSON Address where
+        parseJSON
+          = withObject "Address"
+              (\ o ->
+                 Address' <$>
+                   (o .:? "prefixLength") <*> (o .:? "networkTier") <*>
+                     (o .:? "status")
+                     <*> (o .:? "users" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#address")
+                     <*> (o .:? "ipVersion")
+                     <*> (o .:? "network")
+                     <*> (o .:? "address")
+                     <*> (o .:? "purpose")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "addressType"))
+
+instance ToJSON Address where
+        toJSON Address'{..}
+          = object
+              (catMaybes
+                 [("prefixLength" .=) <$> _aPrefixLength,
+                  ("networkTier" .=) <$> _aNetworkTier,
+                  ("status" .=) <$> _aStatus, ("users" .=) <$> _aUsers,
+                  Just ("kind" .= _aKind),
+                  ("ipVersion" .=) <$> _aIPVersion,
+                  ("network" .=) <$> _aNetwork,
+                  ("address" .=) <$> _aAddress,
+                  ("purpose" .=) <$> _aPurpose,
+                  ("selfLink" .=) <$> _aSelfLink,
+                  ("name" .=) <$> _aName,
+                  ("creationTimestamp" .=) <$> _aCreationTimestamp,
+                  ("subnetwork" .=) <$> _aSubnetwork,
+                  ("id" .=) <$> _aId, ("region" .=) <$> _aRegion,
+                  ("description" .=) <$> _aDescription,
+                  ("addressType" .=) <$> _aAddressType])
+
+-- | A list of NodeGroupsScopedList resources.
+--
+-- /See:/ 'nodeGroupAggregatedListItems' smart constructor.
+newtype NodeGroupAggregatedListItems = NodeGroupAggregatedListItems'
+    { _ngaliAddtional :: HashMap Text NodeGroupsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngaliAddtional'
+nodeGroupAggregatedListItems
+    :: HashMap Text NodeGroupsScopedList -- ^ 'ngaliAddtional'
+    -> NodeGroupAggregatedListItems
+nodeGroupAggregatedListItems pNgaliAddtional_ =
+    NodeGroupAggregatedListItems'
+    { _ngaliAddtional = _Coerce # pNgaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of node groups.
+ngaliAddtional :: Lens' NodeGroupAggregatedListItems (HashMap Text NodeGroupsScopedList)
+ngaliAddtional
+  = lens _ngaliAddtional
+      (\ s a -> s{_ngaliAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeGroupAggregatedListItems where
+        parseJSON
+          = withObject "NodeGroupAggregatedListItems"
+              (\ o ->
+                 NodeGroupAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON NodeGroupAggregatedListItems where
+        toJSON = toJSON . _ngaliAddtional
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceGroupListWarning' smart constructor.
+data InstanceGroupListWarning = InstanceGroupListWarning'
+    { _iglwData    :: !(Maybe [InstanceGroupListWarningDataItem])
+    , _iglwCode    :: !(Maybe InstanceGroupListWarningCode)
+    , _iglwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglwData'
+--
+-- * 'iglwCode'
+--
+-- * 'iglwMessage'
+instanceGroupListWarning
+    :: InstanceGroupListWarning
+instanceGroupListWarning =
+    InstanceGroupListWarning'
+    { _iglwData = Nothing
+    , _iglwCode = Nothing
+    , _iglwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+iglwData :: Lens' InstanceGroupListWarning [InstanceGroupListWarningDataItem]
+iglwData
+  = lens _iglwData (\ s a -> s{_iglwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+iglwCode :: Lens' InstanceGroupListWarning (Maybe InstanceGroupListWarningCode)
+iglwCode = lens _iglwCode (\ s a -> s{_iglwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+iglwMessage :: Lens' InstanceGroupListWarning (Maybe Text)
+iglwMessage
+  = lens _iglwMessage (\ s a -> s{_iglwMessage = a})
+
+instance FromJSON InstanceGroupListWarning where
+        parseJSON
+          = withObject "InstanceGroupListWarning"
+              (\ o ->
+                 InstanceGroupListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupListWarning where
+        toJSON InstanceGroupListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _iglwData,
+                  ("code" .=) <$> _iglwCode,
+                  ("message" .=) <$> _iglwMessage])
+
+-- | Labels to apply to this disk. These can be later modified by the
+-- disks.setLabels method. This field is only applicable for persistent
+-- disks.
+--
+-- /See:/ 'attachedDiskInitializeParamsLabels' smart constructor.
+newtype AttachedDiskInitializeParamsLabels = AttachedDiskInitializeParamsLabels'
+    { _adiplAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachedDiskInitializeParamsLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adiplAddtional'
+attachedDiskInitializeParamsLabels
+    :: HashMap Text Text -- ^ 'adiplAddtional'
+    -> AttachedDiskInitializeParamsLabels
+attachedDiskInitializeParamsLabels pAdiplAddtional_ =
+    AttachedDiskInitializeParamsLabels'
+    { _adiplAddtional = _Coerce # pAdiplAddtional_
+    }
+
+adiplAddtional :: Lens' AttachedDiskInitializeParamsLabels (HashMap Text Text)
+adiplAddtional
+  = lens _adiplAddtional
+      (\ s a -> s{_adiplAddtional = a})
+      . _Coerce
+
+instance FromJSON AttachedDiskInitializeParamsLabels
+         where
+        parseJSON
+          = withObject "AttachedDiskInitializeParamsLabels"
+              (\ o ->
+                 AttachedDiskInitializeParamsLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON AttachedDiskInitializeParamsLabels
+         where
+        toJSON = toJSON . _adiplAddtional
+
+-- | A Zone resource. (== resource_for beta.zones ==) (== resource_for
+-- v1.zones ==)
+--
+-- /See:/ 'zone' smart constructor.
+data Zone = Zone'
+    { _zStatus                :: !(Maybe ZoneStatus)
+    , _zKind                  :: !Text
+    , _zSelfLink              :: !(Maybe Text)
+    , _zName                  :: !(Maybe Text)
+    , _zCreationTimestamp     :: !(Maybe Text)
+    , _zId                    :: !(Maybe (Textual Word64))
+    , _zRegion                :: !(Maybe Text)
+    , _zAvailableCPUPlatforms :: !(Maybe [Text])
+    , _zDescription           :: !(Maybe Text)
+    , _zDeprecated            :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Zone' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zStatus'
+--
+-- * 'zKind'
+--
+-- * 'zSelfLink'
+--
+-- * 'zName'
+--
+-- * 'zCreationTimestamp'
+--
+-- * 'zId'
+--
+-- * 'zRegion'
+--
+-- * 'zAvailableCPUPlatforms'
+--
+-- * 'zDescription'
+--
+-- * 'zDeprecated'
+zone
+    :: Zone
+zone =
+    Zone'
+    { _zStatus = Nothing
+    , _zKind = "compute#zone"
+    , _zSelfLink = Nothing
+    , _zName = Nothing
+    , _zCreationTimestamp = Nothing
+    , _zId = Nothing
+    , _zRegion = Nothing
+    , _zAvailableCPUPlatforms = Nothing
+    , _zDescription = Nothing
+    , _zDeprecated = Nothing
+    }
+
+-- | [Output Only] Status of the zone, either UP or DOWN.
+zStatus :: Lens' Zone (Maybe ZoneStatus)
+zStatus = lens _zStatus (\ s a -> s{_zStatus = a})
+
+-- | [Output Only] Type of the resource. Always compute#zone for zones.
+zKind :: Lens' Zone Text
+zKind = lens _zKind (\ s a -> s{_zKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+zSelfLink :: Lens' Zone (Maybe Text)
+zSelfLink
+  = lens _zSelfLink (\ s a -> s{_zSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+zName :: Lens' Zone (Maybe Text)
+zName = lens _zName (\ s a -> s{_zName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+zCreationTimestamp :: Lens' Zone (Maybe Text)
+zCreationTimestamp
+  = lens _zCreationTimestamp
+      (\ s a -> s{_zCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+zId :: Lens' Zone (Maybe Word64)
+zId
+  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce
+
+-- | [Output Only] Full URL reference to the region which hosts the zone.
+zRegion :: Lens' Zone (Maybe Text)
+zRegion = lens _zRegion (\ s a -> s{_zRegion = a})
+
+-- | [Output Only] Available cpu\/platform selections for the zone.
+zAvailableCPUPlatforms :: Lens' Zone [Text]
+zAvailableCPUPlatforms
+  = lens _zAvailableCPUPlatforms
+      (\ s a -> s{_zAvailableCPUPlatforms = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Textual description of the resource.
+zDescription :: Lens' Zone (Maybe Text)
+zDescription
+  = lens _zDescription (\ s a -> s{_zDescription = a})
+
+-- | [Output Only] The deprecation status associated with this zone.
+zDeprecated :: Lens' Zone (Maybe DeprecationStatus)
+zDeprecated
+  = lens _zDeprecated (\ s a -> s{_zDeprecated = a})
+
+instance FromJSON Zone where
+        parseJSON
+          = withObject "Zone"
+              (\ o ->
+                 Zone' <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "availableCpuPlatforms" .!= mempty)
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON Zone where
+        toJSON Zone'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _zStatus, Just ("kind" .= _zKind),
+                  ("selfLink" .=) <$> _zSelfLink,
+                  ("name" .=) <$> _zName,
+                  ("creationTimestamp" .=) <$> _zCreationTimestamp,
+                  ("id" .=) <$> _zId, ("region" .=) <$> _zRegion,
+                  ("availableCpuPlatforms" .=) <$>
+                    _zAvailableCPUPlatforms,
+                  ("description" .=) <$> _zDescription,
+                  ("deprecated" .=) <$> _zDeprecated])
+
+--
+-- /See:/ 'routerBGP' smart constructor.
+data RouterBGP = RouterBGP'
+    { _rbASN                :: !(Maybe (Textual Word32))
+    , _rbAdvertiseMode      :: !(Maybe RouterBGPAdvertiseMode)
+    , _rbAdvertisedGroups   :: !(Maybe [RouterBGPAdvertisedGroupsItem])
+    , _rbAdvertisedIPRanges :: !(Maybe [RouterAdvertisedIPRange])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterBGP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rbASN'
+--
+-- * 'rbAdvertiseMode'
+--
+-- * 'rbAdvertisedGroups'
+--
+-- * 'rbAdvertisedIPRanges'
+routerBGP
+    :: RouterBGP
+routerBGP =
+    RouterBGP'
+    { _rbASN = Nothing
+    , _rbAdvertiseMode = Nothing
+    , _rbAdvertisedGroups = Nothing
+    , _rbAdvertisedIPRanges = Nothing
+    }
+
+-- | Local BGP Autonomous System Number (ASN). Must be an RFC6996 private
+-- ASN, either 16-bit or 32-bit. The value will be fixed for this router
+-- resource. All VPN tunnels that link to this router will have the same
+-- local ASN.
+rbASN :: Lens' RouterBGP (Maybe Word32)
+rbASN
+  = lens _rbASN (\ s a -> s{_rbASN = a}) .
+      mapping _Coerce
+
+-- | User-specified flag to indicate which mode to use for advertisement.
+rbAdvertiseMode :: Lens' RouterBGP (Maybe RouterBGPAdvertiseMode)
+rbAdvertiseMode
+  = lens _rbAdvertiseMode
+      (\ s a -> s{_rbAdvertiseMode = a})
+
+-- | User-specified list of prefix groups to advertise in custom mode. This
+-- field can only be populated if advertise_mode is CUSTOM and is
+-- advertised to all peers of the router. These groups will be advertised
+-- in addition to any specified prefixes. Leave this field blank to
+-- advertise no custom groups.
+rbAdvertisedGroups :: Lens' RouterBGP [RouterBGPAdvertisedGroupsItem]
+rbAdvertisedGroups
+  = lens _rbAdvertisedGroups
+      (\ s a -> s{_rbAdvertisedGroups = a})
+      . _Default
+      . _Coerce
+
+-- | User-specified list of individual IP ranges to advertise in custom mode.
+-- This field can only be populated if advertise_mode is CUSTOM and is
+-- advertised to all peers of the router. These IP ranges will be
+-- advertised in addition to any specified groups. Leave this field blank
+-- to advertise no custom IP ranges.
+rbAdvertisedIPRanges :: Lens' RouterBGP [RouterAdvertisedIPRange]
+rbAdvertisedIPRanges
+  = lens _rbAdvertisedIPRanges
+      (\ s a -> s{_rbAdvertisedIPRanges = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RouterBGP where
+        parseJSON
+          = withObject "RouterBGP"
+              (\ o ->
+                 RouterBGP' <$>
+                   (o .:? "asn") <*> (o .:? "advertiseMode") <*>
+                     (o .:? "advertisedGroups" .!= mempty)
+                     <*> (o .:? "advertisedIpRanges" .!= mempty))
+
+instance ToJSON RouterBGP where
+        toJSON RouterBGP'{..}
+          = object
+              (catMaybes
+                 [("asn" .=) <$> _rbASN,
+                  ("advertiseMode" .=) <$> _rbAdvertiseMode,
+                  ("advertisedGroups" .=) <$> _rbAdvertisedGroups,
+                  ("advertisedIpRanges" .=) <$> _rbAdvertisedIPRanges])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'firewallListWarning' smart constructor.
+data FirewallListWarning = FirewallListWarning'
+    { _flwData    :: !(Maybe [FirewallListWarningDataItem])
+    , _flwCode    :: !(Maybe FirewallListWarningCode)
+    , _flwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flwData'
+--
+-- * 'flwCode'
+--
+-- * 'flwMessage'
+firewallListWarning
+    :: FirewallListWarning
+firewallListWarning =
+    FirewallListWarning'
+    { _flwData = Nothing
+    , _flwCode = Nothing
+    , _flwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+flwData :: Lens' FirewallListWarning [FirewallListWarningDataItem]
+flwData
+  = lens _flwData (\ s a -> s{_flwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+flwCode :: Lens' FirewallListWarning (Maybe FirewallListWarningCode)
+flwCode = lens _flwCode (\ s a -> s{_flwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+flwMessage :: Lens' FirewallListWarning (Maybe Text)
+flwMessage
+  = lens _flwMessage (\ s a -> s{_flwMessage = a})
+
+instance FromJSON FirewallListWarning where
+        parseJSON
+          = withObject "FirewallListWarning"
+              (\ o ->
+                 FirewallListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON FirewallListWarning where
+        toJSON FirewallListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _flwData, ("code" .=) <$> _flwCode,
+                  ("message" .=) <$> _flwMessage])
+
+--
+-- /See:/ 'backendServicesScopedList' smart constructor.
+data BackendServicesScopedList = BackendServicesScopedList'
+    { _bsslWarning         :: !(Maybe BackendServicesScopedListWarning)
+    , _bsslBackendServices :: !(Maybe [BackendService])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsslWarning'
+--
+-- * 'bsslBackendServices'
+backendServicesScopedList
+    :: BackendServicesScopedList
+backendServicesScopedList =
+    BackendServicesScopedList'
+    { _bsslWarning = Nothing
+    , _bsslBackendServices = Nothing
+    }
+
+-- | Informational warning which replaces the list of backend services when
+-- the list is empty.
+bsslWarning :: Lens' BackendServicesScopedList (Maybe BackendServicesScopedListWarning)
+bsslWarning
+  = lens _bsslWarning (\ s a -> s{_bsslWarning = a})
+
+-- | A list of BackendServices contained in this scope.
+bsslBackendServices :: Lens' BackendServicesScopedList [BackendService]
+bsslBackendServices
+  = lens _bsslBackendServices
+      (\ s a -> s{_bsslBackendServices = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BackendServicesScopedList where
+        parseJSON
+          = withObject "BackendServicesScopedList"
+              (\ o ->
+                 BackendServicesScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "backendServices" .!= mempty))
+
+instance ToJSON BackendServicesScopedList where
+        toJSON BackendServicesScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _bsslWarning,
+                  ("backendServices" .=) <$> _bsslBackendServices])
+
+--
+-- /See:/ 'instanceGroupManagersRecreateInstancesRequest' smart constructor.
+newtype InstanceGroupManagersRecreateInstancesRequest = InstanceGroupManagersRecreateInstancesRequest'
+    { _igmrirInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersRecreateInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmrirInstances'
+instanceGroupManagersRecreateInstancesRequest
+    :: InstanceGroupManagersRecreateInstancesRequest
+instanceGroupManagersRecreateInstancesRequest =
+    InstanceGroupManagersRecreateInstancesRequest'
+    { _igmrirInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to recreate. This can be a full URL or
+-- a partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]
+igmrirInstances
+  = lens _igmrirInstances
+      (\ s a -> s{_igmrirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersRecreateInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersRecreateInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersRecreateInstancesRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersRecreateInstancesRequest where
+        toJSON
+          InstanceGroupManagersRecreateInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmrirInstances])
+
+--
+-- /See:/ 'targetSSLProxiesSetSSLCertificatesRequest' smart constructor.
+newtype TargetSSLProxiesSetSSLCertificatesRequest = TargetSSLProxiesSetSSLCertificatesRequest'
+    { _tspsscrSSLCertificates :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tspsscrSSLCertificates'
+targetSSLProxiesSetSSLCertificatesRequest
+    :: TargetSSLProxiesSetSSLCertificatesRequest
+targetSSLProxiesSetSSLCertificatesRequest =
+    TargetSSLProxiesSetSSLCertificatesRequest'
+    { _tspsscrSSLCertificates = Nothing
+    }
+
+-- | New set of URLs to SslCertificate resources to associate with this
+-- TargetSslProxy. Currently exactly one ssl certificate must be specified.
+tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
+tspsscrSSLCertificates
+  = lens _tspsscrSSLCertificates
+      (\ s a -> s{_tspsscrSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         TargetSSLProxiesSetSSLCertificatesRequest where
+        parseJSON
+          = withObject
+              "TargetSSLProxiesSetSSLCertificatesRequest"
+              (\ o ->
+                 TargetSSLProxiesSetSSLCertificatesRequest' <$>
+                   (o .:? "sslCertificates" .!= mempty))
+
+instance ToJSON
+         TargetSSLProxiesSetSSLCertificatesRequest where
+        toJSON TargetSSLProxiesSetSSLCertificatesRequest'{..}
+          = object
+              (catMaybes
+                 [("sslCertificates" .=) <$> _tspsscrSSLCertificates])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'routerAggregatedListWarning' smart constructor.
+data RouterAggregatedListWarning = RouterAggregatedListWarning'
+    { _rouData    :: !(Maybe [RouterAggregatedListWarningDataItem])
+    , _rouCode    :: !(Maybe RouterAggregatedListWarningCode)
+    , _rouMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rouData'
+--
+-- * 'rouCode'
+--
+-- * 'rouMessage'
+routerAggregatedListWarning
+    :: RouterAggregatedListWarning
+routerAggregatedListWarning =
+    RouterAggregatedListWarning'
+    { _rouData = Nothing
+    , _rouCode = Nothing
+    , _rouMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rouData :: Lens' RouterAggregatedListWarning [RouterAggregatedListWarningDataItem]
+rouData
+  = lens _rouData (\ s a -> s{_rouData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rouCode :: Lens' RouterAggregatedListWarning (Maybe RouterAggregatedListWarningCode)
+rouCode = lens _rouCode (\ s a -> s{_rouCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rouMessage :: Lens' RouterAggregatedListWarning (Maybe Text)
+rouMessage
+  = lens _rouMessage (\ s a -> s{_rouMessage = a})
+
+instance FromJSON RouterAggregatedListWarning where
+        parseJSON
+          = withObject "RouterAggregatedListWarning"
+              (\ o ->
+                 RouterAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RouterAggregatedListWarning where
+        toJSON RouterAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rouData, ("code" .=) <$> _rouCode,
+                  ("message" .=) <$> _rouMessage])
+
+--
+-- /See:/ 'instancesScopedList' smart constructor.
+data InstancesScopedList = InstancesScopedList'
+    { _islWarning   :: !(Maybe InstancesScopedListWarning)
+    , _islInstances :: !(Maybe [Instance])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islWarning'
+--
+-- * 'islInstances'
+instancesScopedList
+    :: InstancesScopedList
+instancesScopedList =
+    InstancesScopedList'
+    { _islWarning = Nothing
+    , _islInstances = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of instances
+-- when the list is empty.
+islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)
+islWarning
+  = lens _islWarning (\ s a -> s{_islWarning = a})
+
+-- | [Output Only] A list of instances contained in this scope.
+islInstances :: Lens' InstancesScopedList [Instance]
+islInstances
+  = lens _islInstances (\ s a -> s{_islInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstancesScopedList where
+        parseJSON
+          = withObject "InstancesScopedList"
+              (\ o ->
+                 InstancesScopedList' <$>
+                   (o .:? "warning") <*> (o .:? "instances" .!= mempty))
+
+instance ToJSON InstancesScopedList where
+        toJSON InstancesScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _islWarning,
+                  ("instances" .=) <$> _islInstances])
+
+-- | A list of AcceleratorTypesScopedList resources.
+--
+-- /See:/ 'acceleratorTypeAggregatedListItems' smart constructor.
+newtype AcceleratorTypeAggregatedListItems = AcceleratorTypeAggregatedListItems'
+    { _ataliAddtional :: HashMap Text AcceleratorTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ataliAddtional'
+acceleratorTypeAggregatedListItems
+    :: HashMap Text AcceleratorTypesScopedList -- ^ 'ataliAddtional'
+    -> AcceleratorTypeAggregatedListItems
+acceleratorTypeAggregatedListItems pAtaliAddtional_ =
+    AcceleratorTypeAggregatedListItems'
+    { _ataliAddtional = _Coerce # pAtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of accelerator
+-- types.
+ataliAddtional :: Lens' AcceleratorTypeAggregatedListItems (HashMap Text AcceleratorTypesScopedList)
+ataliAddtional
+  = lens _ataliAddtional
+      (\ s a -> s{_ataliAddtional = a})
+      . _Coerce
+
+instance FromJSON AcceleratorTypeAggregatedListItems
+         where
+        parseJSON
+          = withObject "AcceleratorTypeAggregatedListItems"
+              (\ o ->
+                 AcceleratorTypeAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON AcceleratorTypeAggregatedListItems
+         where
+        toJSON = toJSON . _ataliAddtional
+
+--
+-- /See:/ 'targetVPNGatewayAggregatedListWarningDataItem' smart constructor.
+data TargetVPNGatewayAggregatedListWarningDataItem = TargetVPNGatewayAggregatedListWarningDataItem'
+    { _tvgalwdiValue :: !(Maybe Text)
+    , _tvgalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgalwdiValue'
+--
+-- * 'tvgalwdiKey'
+targetVPNGatewayAggregatedListWarningDataItem
+    :: TargetVPNGatewayAggregatedListWarningDataItem
+targetVPNGatewayAggregatedListWarningDataItem =
+    TargetVPNGatewayAggregatedListWarningDataItem'
+    { _tvgalwdiValue = Nothing
+    , _tvgalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tvgalwdiValue :: Lens' TargetVPNGatewayAggregatedListWarningDataItem (Maybe Text)
+tvgalwdiValue
+  = lens _tvgalwdiValue
+      (\ s a -> s{_tvgalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tvgalwdiKey :: Lens' TargetVPNGatewayAggregatedListWarningDataItem (Maybe Text)
+tvgalwdiKey
+  = lens _tvgalwdiKey (\ s a -> s{_tvgalwdiKey = a})
+
+instance FromJSON
+         TargetVPNGatewayAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetVPNGatewayAggregatedListWarningDataItem"
+              (\ o ->
+                 TargetVPNGatewayAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetVPNGatewayAggregatedListWarningDataItem where
+        toJSON
+          TargetVPNGatewayAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tvgalwdiValue,
+                  ("key" .=) <$> _tvgalwdiKey])
+
+-- | A full or valid partial URL to a health check. For example, the
+-- following are valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project-id\/global\/httpHealthChecks\/health-check
+-- - projects\/project-id\/global\/httpHealthChecks\/health-check -
+-- global\/httpHealthChecks\/health-check
+--
+-- /See:/ 'healthCheckReference' smart constructor.
+newtype HealthCheckReference = HealthCheckReference'
+    { _hcrHealthCheck :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheckReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hcrHealthCheck'
+healthCheckReference
+    :: HealthCheckReference
+healthCheckReference =
+    HealthCheckReference'
+    { _hcrHealthCheck = Nothing
+    }
+
+hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)
+hcrHealthCheck
+  = lens _hcrHealthCheck
+      (\ s a -> s{_hcrHealthCheck = a})
+
+instance FromJSON HealthCheckReference where
+        parseJSON
+          = withObject "HealthCheckReference"
+              (\ o ->
+                 HealthCheckReference' <$> (o .:? "healthCheck"))
+
+instance ToJSON HealthCheckReference where
+        toJSON HealthCheckReference'{..}
+          = object
+              (catMaybes [("healthCheck" .=) <$> _hcrHealthCheck])
+
+-- | A list of TargetInstance resources.
+--
+-- /See:/ 'targetInstanceAggregatedListItems' smart constructor.
+newtype TargetInstanceAggregatedListItems = TargetInstanceAggregatedListItems'
+    { _tialiAddtional :: HashMap Text TargetInstancesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialiAddtional'
+targetInstanceAggregatedListItems
+    :: HashMap Text TargetInstancesScopedList -- ^ 'tialiAddtional'
+    -> TargetInstanceAggregatedListItems
+targetInstanceAggregatedListItems pTialiAddtional_ =
+    TargetInstanceAggregatedListItems'
+    { _tialiAddtional = _Coerce # pTialiAddtional_
+    }
+
+-- | Name of the scope containing this set of target instances.
+tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)
+tialiAddtional
+  = lens _tialiAddtional
+      (\ s a -> s{_tialiAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetInstanceAggregatedListItems
+         where
+        parseJSON
+          = withObject "TargetInstanceAggregatedListItems"
+              (\ o ->
+                 TargetInstanceAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetInstanceAggregatedListItems
+         where
+        toJSON = toJSON . _tialiAddtional
+
+--
+-- /See:/ 'targetHTTPSProxiesSetQuicOverrideRequest' smart constructor.
+newtype TargetHTTPSProxiesSetQuicOverrideRequest = TargetHTTPSProxiesSetQuicOverrideRequest'
+    { _thpsqorQuicOverride :: Maybe TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetQuicOverrideRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsqorQuicOverride'
+targetHTTPSProxiesSetQuicOverrideRequest
+    :: TargetHTTPSProxiesSetQuicOverrideRequest
+targetHTTPSProxiesSetQuicOverrideRequest =
+    TargetHTTPSProxiesSetQuicOverrideRequest'
+    { _thpsqorQuicOverride = Nothing
+    }
+
+-- | QUIC policy for the TargetHttpsProxy resource.
+thpsqorQuicOverride :: Lens' TargetHTTPSProxiesSetQuicOverrideRequest (Maybe TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride)
+thpsqorQuicOverride
+  = lens _thpsqorQuicOverride
+      (\ s a -> s{_thpsqorQuicOverride = a})
+
+instance FromJSON
+         TargetHTTPSProxiesSetQuicOverrideRequest where
+        parseJSON
+          = withObject
+              "TargetHTTPSProxiesSetQuicOverrideRequest"
+              (\ o ->
+                 TargetHTTPSProxiesSetQuicOverrideRequest' <$>
+                   (o .:? "quicOverride"))
+
+instance ToJSON
+         TargetHTTPSProxiesSetQuicOverrideRequest where
+        toJSON TargetHTTPSProxiesSetQuicOverrideRequest'{..}
+          = object
+              (catMaybes
+                 [("quicOverride" .=) <$> _thpsqorQuicOverride])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetSSLProxyListWarning' smart constructor.
+data TargetSSLProxyListWarning = TargetSSLProxyListWarning'
+    { _tsplwData    :: !(Maybe [TargetSSLProxyListWarningDataItem])
+    , _tsplwCode    :: !(Maybe TargetSSLProxyListWarningCode)
+    , _tsplwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxyListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsplwData'
+--
+-- * 'tsplwCode'
+--
+-- * 'tsplwMessage'
+targetSSLProxyListWarning
+    :: TargetSSLProxyListWarning
+targetSSLProxyListWarning =
+    TargetSSLProxyListWarning'
+    { _tsplwData = Nothing
+    , _tsplwCode = Nothing
+    , _tsplwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tsplwData :: Lens' TargetSSLProxyListWarning [TargetSSLProxyListWarningDataItem]
+tsplwData
+  = lens _tsplwData (\ s a -> s{_tsplwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tsplwCode :: Lens' TargetSSLProxyListWarning (Maybe TargetSSLProxyListWarningCode)
+tsplwCode
+  = lens _tsplwCode (\ s a -> s{_tsplwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tsplwMessage :: Lens' TargetSSLProxyListWarning (Maybe Text)
+tsplwMessage
+  = lens _tsplwMessage (\ s a -> s{_tsplwMessage = a})
+
+instance FromJSON TargetSSLProxyListWarning where
+        parseJSON
+          = withObject "TargetSSLProxyListWarning"
+              (\ o ->
+                 TargetSSLProxyListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetSSLProxyListWarning where
+        toJSON TargetSSLProxyListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tsplwData,
+                  ("code" .=) <$> _tsplwCode,
+                  ("message" .=) <$> _tsplwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceTemplateListWarning' smart constructor.
+data InstanceTemplateListWarning = InstanceTemplateListWarning'
+    { _itlwData    :: !(Maybe [InstanceTemplateListWarningDataItem])
+    , _itlwCode    :: !(Maybe InstanceTemplateListWarningCode)
+    , _itlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplateListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itlwData'
+--
+-- * 'itlwCode'
+--
+-- * 'itlwMessage'
+instanceTemplateListWarning
+    :: InstanceTemplateListWarning
+instanceTemplateListWarning =
+    InstanceTemplateListWarning'
+    { _itlwData = Nothing
+    , _itlwCode = Nothing
+    , _itlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+itlwData :: Lens' InstanceTemplateListWarning [InstanceTemplateListWarningDataItem]
+itlwData
+  = lens _itlwData (\ s a -> s{_itlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+itlwCode :: Lens' InstanceTemplateListWarning (Maybe InstanceTemplateListWarningCode)
+itlwCode = lens _itlwCode (\ s a -> s{_itlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+itlwMessage :: Lens' InstanceTemplateListWarning (Maybe Text)
+itlwMessage
+  = lens _itlwMessage (\ s a -> s{_itlwMessage = a})
+
+instance FromJSON InstanceTemplateListWarning where
+        parseJSON
+          = withObject "InstanceTemplateListWarning"
+              (\ o ->
+                 InstanceTemplateListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceTemplateListWarning where
+        toJSON InstanceTemplateListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _itlwData,
+                  ("code" .=) <$> _itlwCode,
+                  ("message" .=) <$> _itlwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceListReferrersWarning' smart constructor.
+data InstanceListReferrersWarning = InstanceListReferrersWarning'
+    { _ilrwData    :: !(Maybe [InstanceListReferrersWarningDataItem])
+    , _ilrwCode    :: !(Maybe InstanceListReferrersWarningCode)
+    , _ilrwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceListReferrersWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrwData'
+--
+-- * 'ilrwCode'
+--
+-- * 'ilrwMessage'
+instanceListReferrersWarning
+    :: InstanceListReferrersWarning
+instanceListReferrersWarning =
+    InstanceListReferrersWarning'
+    { _ilrwData = Nothing
+    , _ilrwCode = Nothing
+    , _ilrwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ilrwData :: Lens' InstanceListReferrersWarning [InstanceListReferrersWarningDataItem]
+ilrwData
+  = lens _ilrwData (\ s a -> s{_ilrwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ilrwCode :: Lens' InstanceListReferrersWarning (Maybe InstanceListReferrersWarningCode)
+ilrwCode = lens _ilrwCode (\ s a -> s{_ilrwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ilrwMessage :: Lens' InstanceListReferrersWarning (Maybe Text)
+ilrwMessage
+  = lens _ilrwMessage (\ s a -> s{_ilrwMessage = a})
+
+instance FromJSON InstanceListReferrersWarning where
+        parseJSON
+          = withObject "InstanceListReferrersWarning"
+              (\ o ->
+                 InstanceListReferrersWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceListReferrersWarning where
+        toJSON InstanceListReferrersWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ilrwData,
+                  ("code" .=) <$> _ilrwCode,
+                  ("message" .=) <$> _ilrwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'routeListWarning' smart constructor.
+data RouteListWarning = RouteListWarning'
+    { _rlwlData    :: !(Maybe [RouteListWarningDataItem])
+    , _rlwlCode    :: !(Maybe RouteListWarningCode)
+    , _rlwlMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlwlData'
+--
+-- * 'rlwlCode'
+--
+-- * 'rlwlMessage'
+routeListWarning
+    :: RouteListWarning
+routeListWarning =
+    RouteListWarning'
+    { _rlwlData = Nothing
+    , _rlwlCode = Nothing
+    , _rlwlMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rlwlData :: Lens' RouteListWarning [RouteListWarningDataItem]
+rlwlData
+  = lens _rlwlData (\ s a -> s{_rlwlData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rlwlCode :: Lens' RouteListWarning (Maybe RouteListWarningCode)
+rlwlCode = lens _rlwlCode (\ s a -> s{_rlwlCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rlwlMessage :: Lens' RouteListWarning (Maybe Text)
+rlwlMessage
+  = lens _rlwlMessage (\ s a -> s{_rlwlMessage = a})
+
+instance FromJSON RouteListWarning where
+        parseJSON
+          = withObject "RouteListWarning"
+              (\ o ->
+                 RouteListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RouteListWarning where
+        toJSON RouteListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rlwlData,
+                  ("code" .=) <$> _rlwlCode,
+                  ("message" .=) <$> _rlwlMessage])
+
+--
+-- /See:/ 'instanceGroupAggregatedList' smart constructor.
+data InstanceGroupAggregatedList = InstanceGroupAggregatedList'
+    { _igalNextPageToken :: !(Maybe Text)
+    , _igalKind          :: !Text
+    , _igalItems         :: !(Maybe InstanceGroupAggregatedListItems)
+    , _igalSelfLink      :: !(Maybe Text)
+    , _igalWarning       :: !(Maybe InstanceGroupAggregatedListWarning)
+    , _igalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igalNextPageToken'
+--
+-- * 'igalKind'
+--
+-- * 'igalItems'
+--
+-- * 'igalSelfLink'
+--
+-- * 'igalWarning'
+--
+-- * 'igalId'
+instanceGroupAggregatedList
+    :: InstanceGroupAggregatedList
+instanceGroupAggregatedList =
+    InstanceGroupAggregatedList'
+    { _igalNextPageToken = Nothing
+    , _igalKind = "compute#instanceGroupAggregatedList"
+    , _igalItems = Nothing
+    , _igalSelfLink = Nothing
+    , _igalWarning = Nothing
+    , _igalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalNextPageToken
+  = lens _igalNextPageToken
+      (\ s a -> s{_igalNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupAggregatedList for aggregated lists of instance
+-- groups.
+igalKind :: Lens' InstanceGroupAggregatedList Text
+igalKind = lens _igalKind (\ s a -> s{_igalKind = a})
+
+-- | A list of InstanceGroupsScopedList resources.
+igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)
+igalItems
+  = lens _igalItems (\ s a -> s{_igalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalSelfLink
+  = lens _igalSelfLink (\ s a -> s{_igalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+igalWarning :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListWarning)
+igalWarning
+  = lens _igalWarning (\ s a -> s{_igalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalId = lens _igalId (\ s a -> s{_igalId = a})
+
+instance FromJSON InstanceGroupAggregatedList where
+        parseJSON
+          = withObject "InstanceGroupAggregatedList"
+              (\ o ->
+                 InstanceGroupAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupAggregatedList where
+        toJSON InstanceGroupAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igalNextPageToken,
+                  Just ("kind" .= _igalKind),
+                  ("items" .=) <$> _igalItems,
+                  ("selfLink" .=) <$> _igalSelfLink,
+                  ("warning" .=) <$> _igalWarning,
+                  ("id" .=) <$> _igalId])
+
+-- | Represents a Route resource. A route specifies how certain packets
+-- should be handled by the network. Routes are associated with instances
+-- by tags and the set of routes for a particular instance is called its
+-- routing table. For each packet leaving an instance, the system searches
+-- that instance\'s routing table for a single best matching route. Routes
+-- match packets by destination IP address, preferring smaller or more
+-- specific ranges over larger ones. If there is a tie, the system selects
+-- the route with the smallest priority value. If there is still a tie, it
+-- uses the layer three and four packet headers to select just one of the
+-- remaining matching routes. The packet is then forwarded as specified by
+-- the nextHop field of the winning route - either to another instance
+-- destination, an instance gateway, or a Google Compute Engine-operated
+-- gateway. Packets that do not match any route in the sending instance\'s
+-- routing table are dropped. (== resource_for beta.routes ==) (==
+-- resource_for v1.routes ==)
+--
+-- /See:/ 'route' smart constructor.
+data Route = Route'
+    { _rrNextHopPeering    :: !(Maybe Text)
+    , _rrPriority          :: !(Maybe (Textual Word32))
+    , _rrKind              :: !Text
+    , _rrNextHopGateway    :: !(Maybe Text)
+    , _rrNextHopNetwork    :: !(Maybe Text)
+    , _rrNetwork           :: !(Maybe Text)
+    , _rrWarnings          :: !(Maybe [RouteWarningsItem])
+    , _rrNextHopIP         :: !(Maybe Text)
+    , _rrDestRange         :: !(Maybe Text)
+    , _rrSelfLink          :: !(Maybe Text)
+    , _rrName              :: !(Maybe Text)
+    , _rrCreationTimestamp :: !(Maybe Text)
+    , _rrId                :: !(Maybe (Textual Word64))
+    , _rrNextHopVPNTunnel  :: !(Maybe Text)
+    , _rrDescription       :: !(Maybe Text)
+    , _rrTags              :: !(Maybe [Text])
+    , _rrNextHopInstance   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Route' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrNextHopPeering'
+--
+-- * 'rrPriority'
+--
+-- * 'rrKind'
+--
+-- * 'rrNextHopGateway'
+--
+-- * 'rrNextHopNetwork'
+--
+-- * 'rrNetwork'
+--
+-- * 'rrWarnings'
+--
+-- * 'rrNextHopIP'
+--
+-- * 'rrDestRange'
+--
+-- * 'rrSelfLink'
+--
+-- * 'rrName'
+--
+-- * 'rrCreationTimestamp'
+--
+-- * 'rrId'
+--
+-- * 'rrNextHopVPNTunnel'
+--
+-- * 'rrDescription'
+--
+-- * 'rrTags'
+--
+-- * 'rrNextHopInstance'
+route
+    :: Route
+route =
+    Route'
+    { _rrNextHopPeering = Nothing
+    , _rrPriority = Nothing
+    , _rrKind = "compute#route"
+    , _rrNextHopGateway = Nothing
+    , _rrNextHopNetwork = Nothing
+    , _rrNetwork = Nothing
+    , _rrWarnings = Nothing
+    , _rrNextHopIP = Nothing
+    , _rrDestRange = Nothing
+    , _rrSelfLink = Nothing
+    , _rrName = Nothing
+    , _rrCreationTimestamp = Nothing
+    , _rrId = Nothing
+    , _rrNextHopVPNTunnel = Nothing
+    , _rrDescription = Nothing
+    , _rrTags = Nothing
+    , _rrNextHopInstance = Nothing
+    }
+
+-- | [Output Only] The network peering name that should handle matching
+-- packets, which should conform to RFC1035.
+rrNextHopPeering :: Lens' Route (Maybe Text)
+rrNextHopPeering
+  = lens _rrNextHopPeering
+      (\ s a -> s{_rrNextHopPeering = a})
+
+-- | The priority of this route. Priority is used to break ties in cases
+-- where there is more than one matching route of equal prefix length. In
+-- the case of two routes with equal prefix length, the one with the
+-- lowest-numbered priority value wins. Default value is 1000. Valid range
+-- is 0 through 65535.
+rrPriority :: Lens' Route (Maybe Word32)
+rrPriority
+  = lens _rrPriority (\ s a -> s{_rrPriority = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Type of this resource. Always compute#routes for Route
+-- resources.
+rrKind :: Lens' Route Text
+rrKind = lens _rrKind (\ s a -> s{_rrKind = a})
+
+-- | The URL to a gateway that should handle matching packets. You can only
+-- specify the internet gateway using a full or partial valid URL:
+-- projects\/\/global\/gateways\/default-internet-gateway
+rrNextHopGateway :: Lens' Route (Maybe Text)
+rrNextHopGateway
+  = lens _rrNextHopGateway
+      (\ s a -> s{_rrNextHopGateway = a})
+
+-- | The URL of the local network if it should handle matching packets.
+rrNextHopNetwork :: Lens' Route (Maybe Text)
+rrNextHopNetwork
+  = lens _rrNextHopNetwork
+      (\ s a -> s{_rrNextHopNetwork = a})
+
+-- | Fully-qualified URL of the network that this route applies to.
+rrNetwork :: Lens' Route (Maybe Text)
+rrNetwork
+  = lens _rrNetwork (\ s a -> s{_rrNetwork = a})
+
+-- | [Output Only] If potential misconfigurations are detected for this
+-- route, this field will be populated with warning messages.
+rrWarnings :: Lens' Route [RouteWarningsItem]
+rrWarnings
+  = lens _rrWarnings (\ s a -> s{_rrWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | The network IP address of an instance that should handle matching
+-- packets. Only IPv4 is supported.
+rrNextHopIP :: Lens' Route (Maybe Text)
+rrNextHopIP
+  = lens _rrNextHopIP (\ s a -> s{_rrNextHopIP = a})
+
+-- | The destination range of outgoing packets that this route applies to.
+-- Only IPv4 is supported.
+rrDestRange :: Lens' Route (Maybe Text)
+rrDestRange
+  = lens _rrDestRange (\ s a -> s{_rrDestRange = a})
+
+-- | [Output Only] Server-defined fully-qualified URL for this resource.
+rrSelfLink :: Lens' Route (Maybe Text)
+rrSelfLink
+  = lens _rrSelfLink (\ s a -> s{_rrSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+rrName :: Lens' Route (Maybe Text)
+rrName = lens _rrName (\ s a -> s{_rrName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+rrCreationTimestamp :: Lens' Route (Maybe Text)
+rrCreationTimestamp
+  = lens _rrCreationTimestamp
+      (\ s a -> s{_rrCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+rrId :: Lens' Route (Maybe Word64)
+rrId
+  = lens _rrId (\ s a -> s{_rrId = a}) .
+      mapping _Coerce
+
+-- | The URL to a VpnTunnel that should handle matching packets.
+rrNextHopVPNTunnel :: Lens' Route (Maybe Text)
+rrNextHopVPNTunnel
+  = lens _rrNextHopVPNTunnel
+      (\ s a -> s{_rrNextHopVPNTunnel = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+rrDescription :: Lens' Route (Maybe Text)
+rrDescription
+  = lens _rrDescription
+      (\ s a -> s{_rrDescription = a})
+
+-- | A list of instance tags to which this route applies.
+rrTags :: Lens' Route [Text]
+rrTags
+  = lens _rrTags (\ s a -> s{_rrTags = a}) . _Default .
+      _Coerce
+
+-- | The URL to an instance that should handle matching packets. You can
+-- specify this as a full or partial URL. For example:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/
+rrNextHopInstance :: Lens' Route (Maybe Text)
+rrNextHopInstance
+  = lens _rrNextHopInstance
+      (\ s a -> s{_rrNextHopInstance = a})
+
+instance FromJSON Route where
+        parseJSON
+          = withObject "Route"
+              (\ o ->
+                 Route' <$>
+                   (o .:? "nextHopPeering") <*> (o .:? "priority") <*>
+                     (o .:? "kind" .!= "compute#route")
+                     <*> (o .:? "nextHopGateway")
+                     <*> (o .:? "nextHopNetwork")
+                     <*> (o .:? "network")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "nextHopIp")
+                     <*> (o .:? "destRange")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "nextHopVpnTunnel")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags" .!= mempty)
+                     <*> (o .:? "nextHopInstance"))
+
+instance ToJSON Route where
+        toJSON Route'{..}
+          = object
+              (catMaybes
+                 [("nextHopPeering" .=) <$> _rrNextHopPeering,
+                  ("priority" .=) <$> _rrPriority,
+                  Just ("kind" .= _rrKind),
+                  ("nextHopGateway" .=) <$> _rrNextHopGateway,
+                  ("nextHopNetwork" .=) <$> _rrNextHopNetwork,
+                  ("network" .=) <$> _rrNetwork,
+                  ("warnings" .=) <$> _rrWarnings,
+                  ("nextHopIp" .=) <$> _rrNextHopIP,
+                  ("destRange" .=) <$> _rrDestRange,
+                  ("selfLink" .=) <$> _rrSelfLink,
+                  ("name" .=) <$> _rrName,
+                  ("creationTimestamp" .=) <$> _rrCreationTimestamp,
+                  ("id" .=) <$> _rrId,
+                  ("nextHopVpnTunnel" .=) <$> _rrNextHopVPNTunnel,
+                  ("description" .=) <$> _rrDescription,
+                  ("tags" .=) <$> _rrTags,
+                  ("nextHopInstance" .=) <$> _rrNextHopInstance])
+
+--
+-- /See:/ 'targetVPNGatewaysScopedListWarningDataItem' smart constructor.
+data TargetVPNGatewaysScopedListWarningDataItem = TargetVPNGatewaysScopedListWarningDataItem'
+    { _tvgslwdiValue :: !(Maybe Text)
+    , _tvgslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslwdiValue'
+--
+-- * 'tvgslwdiKey'
+targetVPNGatewaysScopedListWarningDataItem
+    :: TargetVPNGatewaysScopedListWarningDataItem
+targetVPNGatewaysScopedListWarningDataItem =
+    TargetVPNGatewaysScopedListWarningDataItem'
+    { _tvgslwdiValue = Nothing
+    , _tvgslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
+tvgslwdiValue
+  = lens _tvgslwdiValue
+      (\ s a -> s{_tvgslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
+tvgslwdiKey
+  = lens _tvgslwdiKey (\ s a -> s{_tvgslwdiKey = a})
+
+instance FromJSON
+         TargetVPNGatewaysScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetVPNGatewaysScopedListWarningDataItem"
+              (\ o ->
+                 TargetVPNGatewaysScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetVPNGatewaysScopedListWarningDataItem where
+        toJSON
+          TargetVPNGatewaysScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tvgslwdiValue,
+                  ("key" .=) <$> _tvgslwdiKey])
+
+-- | Information about any potential InterconnectAttachments between an
+-- Interconnect at a specific InterconnectLocation, and a specific Cloud
+-- Region.
+--
+-- /See:/ 'interconnectLocationRegionInfo' smart constructor.
+data InterconnectLocationRegionInfo = InterconnectLocationRegionInfo'
+    { _ilriLocationPresence :: !(Maybe InterconnectLocationRegionInfoLocationPresence)
+    , _ilriExpectedRttMs    :: !(Maybe (Textual Int64))
+    , _ilriRegion           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationRegionInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilriLocationPresence'
+--
+-- * 'ilriExpectedRttMs'
+--
+-- * 'ilriRegion'
+interconnectLocationRegionInfo
+    :: InterconnectLocationRegionInfo
+interconnectLocationRegionInfo =
+    InterconnectLocationRegionInfo'
+    { _ilriLocationPresence = Nothing
+    , _ilriExpectedRttMs = Nothing
+    , _ilriRegion = Nothing
+    }
+
+-- | Identifies the network presence of this location.
+ilriLocationPresence :: Lens' InterconnectLocationRegionInfo (Maybe InterconnectLocationRegionInfoLocationPresence)
+ilriLocationPresence
+  = lens _ilriLocationPresence
+      (\ s a -> s{_ilriLocationPresence = a})
+
+-- | Expected round-trip time in milliseconds, from this InterconnectLocation
+-- to a VM in this region.
+ilriExpectedRttMs :: Lens' InterconnectLocationRegionInfo (Maybe Int64)
+ilriExpectedRttMs
+  = lens _ilriExpectedRttMs
+      (\ s a -> s{_ilriExpectedRttMs = a})
+      . mapping _Coerce
+
+-- | URL for the region of this location.
+ilriRegion :: Lens' InterconnectLocationRegionInfo (Maybe Text)
+ilriRegion
+  = lens _ilriRegion (\ s a -> s{_ilriRegion = a})
+
+instance FromJSON InterconnectLocationRegionInfo
+         where
+        parseJSON
+          = withObject "InterconnectLocationRegionInfo"
+              (\ o ->
+                 InterconnectLocationRegionInfo' <$>
+                   (o .:? "locationPresence") <*>
+                     (o .:? "expectedRttMs")
+                     <*> (o .:? "region"))
+
+instance ToJSON InterconnectLocationRegionInfo where
+        toJSON InterconnectLocationRegionInfo'{..}
+          = object
+              (catMaybes
+                 [("locationPresence" .=) <$> _ilriLocationPresence,
+                  ("expectedRttMs" .=) <$> _ilriExpectedRttMs,
+                  ("region" .=) <$> _ilriRegion])
+
+--
+-- /See:/ 'targetHTTPSProxiesSetSSLCertificatesRequest' smart constructor.
+newtype TargetHTTPSProxiesSetSSLCertificatesRequest = TargetHTTPSProxiesSetSSLCertificatesRequest'
+    { _thpsscrSSLCertificates :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsscrSSLCertificates'
+targetHTTPSProxiesSetSSLCertificatesRequest
+    :: TargetHTTPSProxiesSetSSLCertificatesRequest
+targetHTTPSProxiesSetSSLCertificatesRequest =
+    TargetHTTPSProxiesSetSSLCertificatesRequest'
+    { _thpsscrSSLCertificates = Nothing
+    }
+
+-- | New set of SslCertificate resources to associate with this
+-- TargetHttpsProxy resource. Currently exactly one SslCertificate resource
+-- must be specified.
+thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]
+thpsscrSSLCertificates
+  = lens _thpsscrSSLCertificates
+      (\ s a -> s{_thpsscrSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         TargetHTTPSProxiesSetSSLCertificatesRequest where
+        parseJSON
+          = withObject
+              "TargetHTTPSProxiesSetSSLCertificatesRequest"
+              (\ o ->
+                 TargetHTTPSProxiesSetSSLCertificatesRequest' <$>
+                   (o .:? "sslCertificates" .!= mempty))
+
+instance ToJSON
+         TargetHTTPSProxiesSetSSLCertificatesRequest where
+        toJSON
+          TargetHTTPSProxiesSetSSLCertificatesRequest'{..}
+          = object
+              (catMaybes
+                 [("sslCertificates" .=) <$> _thpsscrSSLCertificates])
+
+-- | An Instance Template resource. (== resource_for beta.instanceTemplates
+-- ==) (== resource_for v1.instanceTemplates ==)
+--
+-- /See:/ 'instanceTemplate' smart constructor.
+data InstanceTemplate = InstanceTemplate'
+    { _itSourceInstance       :: !(Maybe Text)
+    , _itKind                 :: !Text
+    , _itSelfLink             :: !(Maybe Text)
+    , _itName                 :: !(Maybe Text)
+    , _itCreationTimestamp    :: !(Maybe Text)
+    , _itId                   :: !(Maybe (Textual Word64))
+    , _itSourceInstanceParams :: !(Maybe SourceInstanceParams)
+    , _itDescription          :: !(Maybe Text)
+    , _itProperties           :: !(Maybe InstanceProperties)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itSourceInstance'
+--
+-- * 'itKind'
+--
+-- * 'itSelfLink'
+--
+-- * 'itName'
+--
+-- * 'itCreationTimestamp'
+--
+-- * 'itId'
+--
+-- * 'itSourceInstanceParams'
+--
+-- * 'itDescription'
+--
+-- * 'itProperties'
+instanceTemplate
+    :: InstanceTemplate
+instanceTemplate =
+    InstanceTemplate'
+    { _itSourceInstance = Nothing
+    , _itKind = "compute#instanceTemplate"
+    , _itSelfLink = Nothing
+    , _itName = Nothing
+    , _itCreationTimestamp = Nothing
+    , _itId = Nothing
+    , _itSourceInstanceParams = Nothing
+    , _itDescription = Nothing
+    , _itProperties = Nothing
+    }
+
+-- | The source instance used to create the template. You can provide this as
+-- a partial or full URL to the resource. For example, the following are
+-- valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
+-- - projects\/project\/zones\/zone\/instances\/instance
+itSourceInstance :: Lens' InstanceTemplate (Maybe Text)
+itSourceInstance
+  = lens _itSourceInstance
+      (\ s a -> s{_itSourceInstance = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceTemplate for instance templates.
+itKind :: Lens' InstanceTemplate Text
+itKind = lens _itKind (\ s a -> s{_itKind = a})
+
+-- | [Output Only] The URL for this instance template. The server defines
+-- this URL.
+itSelfLink :: Lens' InstanceTemplate (Maybe Text)
+itSelfLink
+  = lens _itSelfLink (\ s a -> s{_itSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+itName :: Lens' InstanceTemplate (Maybe Text)
+itName = lens _itName (\ s a -> s{_itName = a})
+
+-- | [Output Only] The creation timestamp for this instance template in
+-- RFC3339 text format.
+itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)
+itCreationTimestamp
+  = lens _itCreationTimestamp
+      (\ s a -> s{_itCreationTimestamp = a})
+
+-- | [Output Only] A unique identifier for this instance template. The server
+-- defines this identifier.
+itId :: Lens' InstanceTemplate (Maybe Word64)
+itId
+  = lens _itId (\ s a -> s{_itId = a}) .
+      mapping _Coerce
+
+-- | The source instance params to use to create this instance template.
+itSourceInstanceParams :: Lens' InstanceTemplate (Maybe SourceInstanceParams)
+itSourceInstanceParams
+  = lens _itSourceInstanceParams
+      (\ s a -> s{_itSourceInstanceParams = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+itDescription :: Lens' InstanceTemplate (Maybe Text)
+itDescription
+  = lens _itDescription
+      (\ s a -> s{_itDescription = a})
+
+-- | The instance properties for this instance template.
+itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)
+itProperties
+  = lens _itProperties (\ s a -> s{_itProperties = a})
+
+instance FromJSON InstanceTemplate where
+        parseJSON
+          = withObject "InstanceTemplate"
+              (\ o ->
+                 InstanceTemplate' <$>
+                   (o .:? "sourceInstance") <*>
+                     (o .:? "kind" .!= "compute#instanceTemplate")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "sourceInstanceParams")
+                     <*> (o .:? "description")
+                     <*> (o .:? "properties"))
+
+instance ToJSON InstanceTemplate where
+        toJSON InstanceTemplate'{..}
+          = object
+              (catMaybes
+                 [("sourceInstance" .=) <$> _itSourceInstance,
+                  Just ("kind" .= _itKind),
+                  ("selfLink" .=) <$> _itSelfLink,
+                  ("name" .=) <$> _itName,
+                  ("creationTimestamp" .=) <$> _itCreationTimestamp,
+                  ("id" .=) <$> _itId,
+                  ("sourceInstanceParams" .=) <$>
+                    _itSourceInstanceParams,
+                  ("description" .=) <$> _itDescription,
+                  ("properties" .=) <$> _itProperties])
+
+-- | Service resource (a.k.a service project) ID.
+--
+-- /See:/ 'xpnResourceId' smart constructor.
+data XpnResourceId = XpnResourceId'
+    { _xriId   :: !(Maybe Text)
+    , _xriType :: !(Maybe XpnResourceIdType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'XpnResourceId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'xriId'
+--
+-- * 'xriType'
+xpnResourceId
+    :: XpnResourceId
+xpnResourceId =
+    XpnResourceId'
+    { _xriId = Nothing
+    , _xriType = Nothing
+    }
+
+-- | The ID of the service resource. In the case of projects, this field
+-- supports project id (e.g., my-project-123) and project number (e.g.
+-- 12345678).
+xriId :: Lens' XpnResourceId (Maybe Text)
+xriId = lens _xriId (\ s a -> s{_xriId = a})
+
+-- | The type of the service resource.
+xriType :: Lens' XpnResourceId (Maybe XpnResourceIdType)
+xriType = lens _xriType (\ s a -> s{_xriType = a})
+
+instance FromJSON XpnResourceId where
+        parseJSON
+          = withObject "XpnResourceId"
+              (\ o ->
+                 XpnResourceId' <$> (o .:? "id") <*> (o .:? "type"))
+
+instance ToJSON XpnResourceId where
+        toJSON XpnResourceId'{..}
+          = object
+              (catMaybes
+                 [("id" .=) <$> _xriId, ("type" .=) <$> _xriType])
+
+-- | Contains a list of Router resources.
+--
+-- /See:/ 'routerList' smart constructor.
+data RouterList = RouterList'
+    { _rllNextPageToken :: !(Maybe Text)
+    , _rllKind          :: !Text
+    , _rllItems         :: !(Maybe [Router])
+    , _rllSelfLink      :: !(Maybe Text)
+    , _rllWarning       :: !(Maybe RouterListWarning)
+    , _rllId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rllNextPageToken'
+--
+-- * 'rllKind'
+--
+-- * 'rllItems'
+--
+-- * 'rllSelfLink'
+--
+-- * 'rllWarning'
+--
+-- * 'rllId'
+routerList
+    :: RouterList
+routerList =
+    RouterList'
+    { _rllNextPageToken = Nothing
+    , _rllKind = "compute#routerList"
+    , _rllItems = Nothing
+    , _rllSelfLink = Nothing
+    , _rllWarning = Nothing
+    , _rllId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rllNextPageToken :: Lens' RouterList (Maybe Text)
+rllNextPageToken
+  = lens _rllNextPageToken
+      (\ s a -> s{_rllNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#router for routers.
+rllKind :: Lens' RouterList Text
+rllKind = lens _rllKind (\ s a -> s{_rllKind = a})
+
+-- | A list of Router resources.
+rllItems :: Lens' RouterList [Router]
+rllItems
+  = lens _rllItems (\ s a -> s{_rllItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rllSelfLink :: Lens' RouterList (Maybe Text)
+rllSelfLink
+  = lens _rllSelfLink (\ s a -> s{_rllSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rllWarning :: Lens' RouterList (Maybe RouterListWarning)
+rllWarning
+  = lens _rllWarning (\ s a -> s{_rllWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rllId :: Lens' RouterList (Maybe Text)
+rllId = lens _rllId (\ s a -> s{_rllId = a})
+
+instance FromJSON RouterList where
+        parseJSON
+          = withObject "RouterList"
+              (\ o ->
+                 RouterList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#routerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RouterList where
+        toJSON RouterList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rllNextPageToken,
+                  Just ("kind" .= _rllKind),
+                  ("items" .=) <$> _rllItems,
+                  ("selfLink" .=) <$> _rllSelfLink,
+                  ("warning" .=) <$> _rllWarning,
+                  ("id" .=) <$> _rllId])
+
+-- | A TargetSslProxy resource. This resource defines an SSL proxy. (==
+-- resource_for beta.targetSslProxies ==) (== resource_for
+-- v1.targetSslProxies ==)
+--
+-- /See:/ 'targetSSLProxy' smart constructor.
+data TargetSSLProxy = TargetSSLProxy'
+    { _tspSSLPolicy         :: !(Maybe Text)
+    , _tspSSLCertificates   :: !(Maybe [Text])
+    , _tspService           :: !(Maybe Text)
+    , _tspKind              :: !Text
+    , _tspSelfLink          :: !(Maybe Text)
+    , _tspName              :: !(Maybe Text)
+    , _tspCreationTimestamp :: !(Maybe Text)
+    , _tspId                :: !(Maybe (Textual Word64))
+    , _tspProxyHeader       :: !(Maybe TargetSSLProxyProxyHeader)
+    , _tspDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tspSSLPolicy'
+--
+-- * 'tspSSLCertificates'
+--
+-- * 'tspService'
+--
+-- * 'tspKind'
+--
+-- * 'tspSelfLink'
+--
+-- * 'tspName'
+--
+-- * 'tspCreationTimestamp'
+--
+-- * 'tspId'
+--
+-- * 'tspProxyHeader'
+--
+-- * 'tspDescription'
+targetSSLProxy
+    :: TargetSSLProxy
+targetSSLProxy =
+    TargetSSLProxy'
+    { _tspSSLPolicy = Nothing
+    , _tspSSLCertificates = Nothing
+    , _tspService = Nothing
+    , _tspKind = "compute#targetSslProxy"
+    , _tspSelfLink = Nothing
+    , _tspName = Nothing
+    , _tspCreationTimestamp = Nothing
+    , _tspId = Nothing
+    , _tspProxyHeader = Nothing
+    , _tspDescription = Nothing
+    }
+
+-- | URL of SslPolicy resource that will be associated with the
+-- TargetSslProxy resource. If not set, the TargetSslProxy resource will
+-- not have any SSL policy configured.
+tspSSLPolicy :: Lens' TargetSSLProxy (Maybe Text)
+tspSSLPolicy
+  = lens _tspSSLPolicy (\ s a -> s{_tspSSLPolicy = a})
+
+-- | URLs to SslCertificate resources that are used to authenticate
+-- connections to Backends. At least one SSL certificate must be specified.
+-- Currently, you may specify up to 15 SSL certificates.
+tspSSLCertificates :: Lens' TargetSSLProxy [Text]
+tspSSLCertificates
+  = lens _tspSSLCertificates
+      (\ s a -> s{_tspSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+-- | URL to the BackendService resource.
+tspService :: Lens' TargetSSLProxy (Maybe Text)
+tspService
+  = lens _tspService (\ s a -> s{_tspService = a})
+
+-- | [Output Only] Type of the resource. Always compute#targetSslProxy for
+-- target SSL proxies.
+tspKind :: Lens' TargetSSLProxy Text
+tspKind = lens _tspKind (\ s a -> s{_tspKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)
+tspSelfLink
+  = lens _tspSelfLink (\ s a -> s{_tspSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tspName :: Lens' TargetSSLProxy (Maybe Text)
+tspName = lens _tspName (\ s a -> s{_tspName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)
+tspCreationTimestamp
+  = lens _tspCreationTimestamp
+      (\ s a -> s{_tspCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+tspId :: Lens' TargetSSLProxy (Maybe Word64)
+tspId
+  = lens _tspId (\ s a -> s{_tspId = a}) .
+      mapping _Coerce
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)
+tspProxyHeader
+  = lens _tspProxyHeader
+      (\ s a -> s{_tspProxyHeader = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+tspDescription :: Lens' TargetSSLProxy (Maybe Text)
+tspDescription
+  = lens _tspDescription
+      (\ s a -> s{_tspDescription = a})
+
+instance FromJSON TargetSSLProxy where
+        parseJSON
+          = withObject "TargetSSLProxy"
+              (\ o ->
+                 TargetSSLProxy' <$>
+                   (o .:? "sslPolicy") <*>
+                     (o .:? "sslCertificates" .!= mempty)
+                     <*> (o .:? "service")
+                     <*> (o .:? "kind" .!= "compute#targetSslProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetSSLProxy where
+        toJSON TargetSSLProxy'{..}
+          = object
+              (catMaybes
+                 [("sslPolicy" .=) <$> _tspSSLPolicy,
+                  ("sslCertificates" .=) <$> _tspSSLCertificates,
+                  ("service" .=) <$> _tspService,
+                  Just ("kind" .= _tspKind),
+                  ("selfLink" .=) <$> _tspSelfLink,
+                  ("name" .=) <$> _tspName,
+                  ("creationTimestamp" .=) <$> _tspCreationTimestamp,
+                  ("id" .=) <$> _tspId,
+                  ("proxyHeader" .=) <$> _tspProxyHeader,
+                  ("description" .=) <$> _tspDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'sslCertificateListWarning' smart constructor.
+data SSLCertificateListWarning = SSLCertificateListWarning'
+    { _sclwData    :: !(Maybe [SSLCertificateListWarningDataItem])
+    , _sclwCode    :: !(Maybe SSLCertificateListWarningCode)
+    , _sclwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificateListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclwData'
+--
+-- * 'sclwCode'
+--
+-- * 'sclwMessage'
+sslCertificateListWarning
+    :: SSLCertificateListWarning
+sslCertificateListWarning =
+    SSLCertificateListWarning'
+    { _sclwData = Nothing
+    , _sclwCode = Nothing
+    , _sclwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+sclwData :: Lens' SSLCertificateListWarning [SSLCertificateListWarningDataItem]
+sclwData
+  = lens _sclwData (\ s a -> s{_sclwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+sclwCode :: Lens' SSLCertificateListWarning (Maybe SSLCertificateListWarningCode)
+sclwCode = lens _sclwCode (\ s a -> s{_sclwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+sclwMessage :: Lens' SSLCertificateListWarning (Maybe Text)
+sclwMessage
+  = lens _sclwMessage (\ s a -> s{_sclwMessage = a})
+
+instance FromJSON SSLCertificateListWarning where
+        parseJSON
+          = withObject "SSLCertificateListWarning"
+              (\ o ->
+                 SSLCertificateListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SSLCertificateListWarning where
+        toJSON SSLCertificateListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _sclwData,
+                  ("code" .=) <$> _sclwCode,
+                  ("message" .=) <$> _sclwMessage])
+
+--
+-- /See:/ 'snapshotListWarningDataItem' smart constructor.
+data SnapshotListWarningDataItem = SnapshotListWarningDataItem'
+    { _slwdiValue :: !(Maybe Text)
+    , _slwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slwdiValue'
+--
+-- * 'slwdiKey'
+snapshotListWarningDataItem
+    :: SnapshotListWarningDataItem
+snapshotListWarningDataItem =
+    SnapshotListWarningDataItem'
+    { _slwdiValue = Nothing
+    , _slwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+slwdiValue :: Lens' SnapshotListWarningDataItem (Maybe Text)
+slwdiValue
+  = lens _slwdiValue (\ s a -> s{_slwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+slwdiKey :: Lens' SnapshotListWarningDataItem (Maybe Text)
+slwdiKey = lens _slwdiKey (\ s a -> s{_slwdiKey = a})
+
+instance FromJSON SnapshotListWarningDataItem where
+        parseJSON
+          = withObject "SnapshotListWarningDataItem"
+              (\ o ->
+                 SnapshotListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SnapshotListWarningDataItem where
+        toJSON SnapshotListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _slwdiValue,
+                  ("key" .=) <$> _slwdiKey])
+
+-- | Represents a Target VPN gateway resource. (== resource_for
+-- beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)
+--
+-- /See:/ 'targetVPNGateway' smart constructor.
+data TargetVPNGateway = TargetVPNGateway'
+    { _tvgStatus            :: !(Maybe TargetVPNGatewayStatus)
+    , _tvgKind              :: !Text
+    , _tvgNetwork           :: !(Maybe Text)
+    , _tvgSelfLink          :: !(Maybe Text)
+    , _tvgName              :: !(Maybe Text)
+    , _tvgCreationTimestamp :: !(Maybe Text)
+    , _tvgId                :: !(Maybe (Textual Word64))
+    , _tvgRegion            :: !(Maybe Text)
+    , _tvgTunnels           :: !(Maybe [Text])
+    , _tvgDescription       :: !(Maybe Text)
+    , _tvgForwardingRules   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgStatus'
+--
+-- * 'tvgKind'
+--
+-- * 'tvgNetwork'
+--
+-- * 'tvgSelfLink'
+--
+-- * 'tvgName'
+--
+-- * 'tvgCreationTimestamp'
+--
+-- * 'tvgId'
+--
+-- * 'tvgRegion'
+--
+-- * 'tvgTunnels'
+--
+-- * 'tvgDescription'
+--
+-- * 'tvgForwardingRules'
+targetVPNGateway
+    :: TargetVPNGateway
+targetVPNGateway =
+    TargetVPNGateway'
+    { _tvgStatus = Nothing
+    , _tvgKind = "compute#targetVpnGateway"
+    , _tvgNetwork = Nothing
+    , _tvgSelfLink = Nothing
+    , _tvgName = Nothing
+    , _tvgCreationTimestamp = Nothing
+    , _tvgId = Nothing
+    , _tvgRegion = Nothing
+    , _tvgTunnels = Nothing
+    , _tvgDescription = Nothing
+    , _tvgForwardingRules = Nothing
+    }
+
+-- | [Output Only] The status of the VPN gateway.
+tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)
+tvgStatus
+  = lens _tvgStatus (\ s a -> s{_tvgStatus = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvgKind :: Lens' TargetVPNGateway Text
+tvgKind = lens _tvgKind (\ s a -> s{_tvgKind = a})
+
+-- | URL of the network to which this VPN gateway is attached. Provided by
+-- the client when the VPN gateway is created.
+tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)
+tvgNetwork
+  = lens _tvgNetwork (\ s a -> s{_tvgNetwork = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)
+tvgSelfLink
+  = lens _tvgSelfLink (\ s a -> s{_tvgSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tvgName :: Lens' TargetVPNGateway (Maybe Text)
+tvgName = lens _tvgName (\ s a -> s{_tvgName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)
+tvgCreationTimestamp
+  = lens _tvgCreationTimestamp
+      (\ s a -> s{_tvgCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+tvgId :: Lens' TargetVPNGateway (Maybe Word64)
+tvgId
+  = lens _tvgId (\ s a -> s{_tvgId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the target VPN gateway resides.
+-- You must specify this field as part of the HTTP request URL. It is not
+-- settable as a field in the request body.
+tvgRegion :: Lens' TargetVPNGateway (Maybe Text)
+tvgRegion
+  = lens _tvgRegion (\ s a -> s{_tvgRegion = a})
+
+-- | [Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are
+-- created using compute.vpntunnels.insert method and associated to a VPN
+-- gateway.
+tvgTunnels :: Lens' TargetVPNGateway [Text]
+tvgTunnels
+  = lens _tvgTunnels (\ s a -> s{_tvgTunnels = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+tvgDescription :: Lens' TargetVPNGateway (Maybe Text)
+tvgDescription
+  = lens _tvgDescription
+      (\ s a -> s{_tvgDescription = a})
+
+-- | [Output Only] A list of URLs to the ForwardingRule resources.
+-- ForwardingRules are created using compute.forwardingRules.insert and
+-- associated to a VPN gateway.
+tvgForwardingRules :: Lens' TargetVPNGateway [Text]
+tvgForwardingRules
+  = lens _tvgForwardingRules
+      (\ s a -> s{_tvgForwardingRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetVPNGateway where
+        parseJSON
+          = withObject "TargetVPNGateway"
+              (\ o ->
+                 TargetVPNGateway' <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#targetVpnGateway")
+                     <*> (o .:? "network")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "tunnels" .!= mempty)
+                     <*> (o .:? "description")
+                     <*> (o .:? "forwardingRules" .!= mempty))
+
+instance ToJSON TargetVPNGateway where
+        toJSON TargetVPNGateway'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _tvgStatus,
+                  Just ("kind" .= _tvgKind),
+                  ("network" .=) <$> _tvgNetwork,
+                  ("selfLink" .=) <$> _tvgSelfLink,
+                  ("name" .=) <$> _tvgName,
+                  ("creationTimestamp" .=) <$> _tvgCreationTimestamp,
+                  ("id" .=) <$> _tvgId, ("region" .=) <$> _tvgRegion,
+                  ("tunnels" .=) <$> _tvgTunnels,
+                  ("description" .=) <$> _tvgDescription,
+                  ("forwardingRules" .=) <$> _tvgForwardingRules])
+
+-- | Commitment for a particular resource (a Commitment is composed of one or
+-- more of these).
+--
+-- /See:/ 'resourceCommitment' smart constructor.
+data ResourceCommitment = ResourceCommitment'
+    { _rcAmount :: !(Maybe (Textual Int64))
+    , _rcType   :: !(Maybe ResourceCommitmentType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceCommitment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcAmount'
+--
+-- * 'rcType'
+resourceCommitment
+    :: ResourceCommitment
+resourceCommitment =
+    ResourceCommitment'
+    { _rcAmount = Nothing
+    , _rcType = Nothing
+    }
+
+-- | The amount of the resource purchased (in a type-dependent unit, such as
+-- bytes). For vCPUs, this can just be an integer. For memory, this must be
+-- provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of
+-- memory per every vCPU.
+rcAmount :: Lens' ResourceCommitment (Maybe Int64)
+rcAmount
+  = lens _rcAmount (\ s a -> s{_rcAmount = a}) .
+      mapping _Coerce
+
+-- | Type of resource for which this commitment applies. Possible values are
+-- VCPU and MEMORY
+rcType :: Lens' ResourceCommitment (Maybe ResourceCommitmentType)
+rcType = lens _rcType (\ s a -> s{_rcType = a})
+
+instance FromJSON ResourceCommitment where
+        parseJSON
+          = withObject "ResourceCommitment"
+              (\ o ->
+                 ResourceCommitment' <$>
+                   (o .:? "amount") <*> (o .:? "type"))
+
+instance ToJSON ResourceCommitment where
+        toJSON ResourceCommitment'{..}
+          = object
+              (catMaybes
+                 [("amount" .=) <$> _rcAmount,
+                  ("type" .=) <$> _rcType])
+
+-- | Identity-Aware Proxy
+--
+-- /See:/ 'backendServiceIAP' smart constructor.
+data BackendServiceIAP = BackendServiceIAP'
+    { _bsiapEnabled                  :: !(Maybe Bool)
+    , _bsiapOAuth2ClientSecretSha256 :: !(Maybe Text)
+    , _bsiapOAuth2ClientSecret       :: !(Maybe Text)
+    , _bsiapOAuth2ClientId           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceIAP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsiapEnabled'
+--
+-- * 'bsiapOAuth2ClientSecretSha256'
+--
+-- * 'bsiapOAuth2ClientSecret'
+--
+-- * 'bsiapOAuth2ClientId'
+backendServiceIAP
+    :: BackendServiceIAP
+backendServiceIAP =
+    BackendServiceIAP'
+    { _bsiapEnabled = Nothing
+    , _bsiapOAuth2ClientSecretSha256 = Nothing
+    , _bsiapOAuth2ClientSecret = Nothing
+    , _bsiapOAuth2ClientId = Nothing
+    }
+
+bsiapEnabled :: Lens' BackendServiceIAP (Maybe Bool)
+bsiapEnabled
+  = lens _bsiapEnabled (\ s a -> s{_bsiapEnabled = a})
+
+-- | [Output Only] SHA256 hash value for the field oauth2_client_secret
+-- above.
+bsiapOAuth2ClientSecretSha256 :: Lens' BackendServiceIAP (Maybe Text)
+bsiapOAuth2ClientSecretSha256
+  = lens _bsiapOAuth2ClientSecretSha256
+      (\ s a -> s{_bsiapOAuth2ClientSecretSha256 = a})
+
+bsiapOAuth2ClientSecret :: Lens' BackendServiceIAP (Maybe Text)
+bsiapOAuth2ClientSecret
+  = lens _bsiapOAuth2ClientSecret
+      (\ s a -> s{_bsiapOAuth2ClientSecret = a})
+
+bsiapOAuth2ClientId :: Lens' BackendServiceIAP (Maybe Text)
+bsiapOAuth2ClientId
+  = lens _bsiapOAuth2ClientId
+      (\ s a -> s{_bsiapOAuth2ClientId = a})
+
+instance FromJSON BackendServiceIAP where
+        parseJSON
+          = withObject "BackendServiceIAP"
+              (\ o ->
+                 BackendServiceIAP' <$>
+                   (o .:? "enabled") <*>
+                     (o .:? "oauth2ClientSecretSha256")
+                     <*> (o .:? "oauth2ClientSecret")
+                     <*> (o .:? "oauth2ClientId"))
+
+instance ToJSON BackendServiceIAP where
+        toJSON BackendServiceIAP'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _bsiapEnabled,
+                  ("oauth2ClientSecretSha256" .=) <$>
+                    _bsiapOAuth2ClientSecretSha256,
+                  ("oauth2ClientSecret" .=) <$>
+                    _bsiapOAuth2ClientSecret,
+                  ("oauth2ClientId" .=) <$> _bsiapOAuth2ClientId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetVPNGatewayListWarning' smart constructor.
+data TargetVPNGatewayListWarning = TargetVPNGatewayListWarning'
+    { _tvglwData    :: !(Maybe [TargetVPNGatewayListWarningDataItem])
+    , _tvglwCode    :: !(Maybe TargetVPNGatewayListWarningCode)
+    , _tvglwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvglwData'
+--
+-- * 'tvglwCode'
+--
+-- * 'tvglwMessage'
+targetVPNGatewayListWarning
+    :: TargetVPNGatewayListWarning
+targetVPNGatewayListWarning =
+    TargetVPNGatewayListWarning'
+    { _tvglwData = Nothing
+    , _tvglwCode = Nothing
+    , _tvglwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tvglwData :: Lens' TargetVPNGatewayListWarning [TargetVPNGatewayListWarningDataItem]
+tvglwData
+  = lens _tvglwData (\ s a -> s{_tvglwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tvglwCode :: Lens' TargetVPNGatewayListWarning (Maybe TargetVPNGatewayListWarningCode)
+tvglwCode
+  = lens _tvglwCode (\ s a -> s{_tvglwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tvglwMessage :: Lens' TargetVPNGatewayListWarning (Maybe Text)
+tvglwMessage
+  = lens _tvglwMessage (\ s a -> s{_tvglwMessage = a})
+
+instance FromJSON TargetVPNGatewayListWarning where
+        parseJSON
+          = withObject "TargetVPNGatewayListWarning"
+              (\ o ->
+                 TargetVPNGatewayListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetVPNGatewayListWarning where
+        toJSON TargetVPNGatewayListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tvglwData,
+                  ("code" .=) <$> _tvglwCode,
+                  ("message" .=) <$> _tvglwMessage])
+
+--
+-- /See:/ 'vMEndpointNATMAppingsListWarningDataItem' smart constructor.
+data VMEndpointNATMAppingsListWarningDataItem = VMEndpointNATMAppingsListWarningDataItem'
+    { _vmenatmalwdiValue :: !(Maybe Text)
+    , _vmenatmalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VMEndpointNATMAppingsListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vmenatmalwdiValue'
+--
+-- * 'vmenatmalwdiKey'
+vMEndpointNATMAppingsListWarningDataItem
+    :: VMEndpointNATMAppingsListWarningDataItem
+vMEndpointNATMAppingsListWarningDataItem =
+    VMEndpointNATMAppingsListWarningDataItem'
+    { _vmenatmalwdiValue = Nothing
+    , _vmenatmalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+vmenatmalwdiValue :: Lens' VMEndpointNATMAppingsListWarningDataItem (Maybe Text)
+vmenatmalwdiValue
+  = lens _vmenatmalwdiValue
+      (\ s a -> s{_vmenatmalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+vmenatmalwdiKey :: Lens' VMEndpointNATMAppingsListWarningDataItem (Maybe Text)
+vmenatmalwdiKey
+  = lens _vmenatmalwdiKey
+      (\ s a -> s{_vmenatmalwdiKey = a})
+
+instance FromJSON
+         VMEndpointNATMAppingsListWarningDataItem where
+        parseJSON
+          = withObject
+              "VMEndpointNATMAppingsListWarningDataItem"
+              (\ o ->
+                 VMEndpointNATMAppingsListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         VMEndpointNATMAppingsListWarningDataItem where
+        toJSON VMEndpointNATMAppingsListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _vmenatmalwdiValue,
+                  ("key" .=) <$> _vmenatmalwdiKey])
+
+--
+-- /See:/ 'urlMapsValidateResponse' smart constructor.
+newtype URLMapsValidateResponse = URLMapsValidateResponse'
+    { _umvrResult :: Maybe URLMapValidationResult
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsValidateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrResult'
+urlMapsValidateResponse
+    :: URLMapsValidateResponse
+urlMapsValidateResponse =
+    URLMapsValidateResponse'
+    { _umvrResult = Nothing
+    }
+
+umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)
+umvrResult
+  = lens _umvrResult (\ s a -> s{_umvrResult = a})
+
+instance FromJSON URLMapsValidateResponse where
+        parseJSON
+          = withObject "URLMapsValidateResponse"
+              (\ o ->
+                 URLMapsValidateResponse' <$> (o .:? "result"))
+
+instance ToJSON URLMapsValidateResponse where
+        toJSON URLMapsValidateResponse'{..}
+          = object (catMaybes [("result" .=) <$> _umvrResult])
+
+-- | An SslCertificate resource. This resource provides a mechanism to upload
+-- an SSL key and certificate to the load balancer to serve secure
+-- connections from the user. (== resource_for beta.sslCertificates ==) (==
+-- resource_for v1.sslCertificates ==)
+--
+-- /See:/ 'sslCertificate' smart constructor.
+data SSLCertificate = SSLCertificate'
+    { _scPrivateKey        :: !(Maybe Text)
+    , _scKind              :: !Text
+    , _scSelfLink          :: !(Maybe Text)
+    , _scName              :: !(Maybe Text)
+    , _scCreationTimestamp :: !(Maybe Text)
+    , _scId                :: !(Maybe (Textual Word64))
+    , _scCertificate       :: !(Maybe Text)
+    , _scDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scPrivateKey'
+--
+-- * 'scKind'
+--
+-- * 'scSelfLink'
+--
+-- * 'scName'
+--
+-- * 'scCreationTimestamp'
+--
+-- * 'scId'
+--
+-- * 'scCertificate'
+--
+-- * 'scDescription'
+sslCertificate
+    :: SSLCertificate
+sslCertificate =
+    SSLCertificate'
+    { _scPrivateKey = Nothing
+    , _scKind = "compute#sslCertificate"
+    , _scSelfLink = Nothing
+    , _scName = Nothing
+    , _scCreationTimestamp = Nothing
+    , _scId = Nothing
+    , _scCertificate = Nothing
+    , _scDescription = Nothing
+    }
+
+-- | A write-only private key in PEM format. Only insert requests will
+-- include this field.
+scPrivateKey :: Lens' SSLCertificate (Maybe Text)
+scPrivateKey
+  = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a})
+
+-- | [Output Only] Type of the resource. Always compute#sslCertificate for
+-- SSL certificates.
+scKind :: Lens' SSLCertificate Text
+scKind = lens _scKind (\ s a -> s{_scKind = a})
+
+-- | [Output only] Server-defined URL for the resource.
+scSelfLink :: Lens' SSLCertificate (Maybe Text)
+scSelfLink
+  = lens _scSelfLink (\ s a -> s{_scSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+scName :: Lens' SSLCertificate (Maybe Text)
+scName = lens _scName (\ s a -> s{_scName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)
+scCreationTimestamp
+  = lens _scCreationTimestamp
+      (\ s a -> s{_scCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+scId :: Lens' SSLCertificate (Maybe Word64)
+scId
+  = lens _scId (\ s a -> s{_scId = a}) .
+      mapping _Coerce
+
+-- | A local certificate file. The certificate must be in PEM format. The
+-- certificate chain must be no greater than 5 certs long. The chain must
+-- include at least one intermediate cert.
+scCertificate :: Lens' SSLCertificate (Maybe Text)
+scCertificate
+  = lens _scCertificate
+      (\ s a -> s{_scCertificate = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+scDescription :: Lens' SSLCertificate (Maybe Text)
+scDescription
+  = lens _scDescription
+      (\ s a -> s{_scDescription = a})
+
+instance FromJSON SSLCertificate where
+        parseJSON
+          = withObject "SSLCertificate"
+              (\ o ->
+                 SSLCertificate' <$>
+                   (o .:? "privateKey") <*>
+                     (o .:? "kind" .!= "compute#sslCertificate")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "certificate")
+                     <*> (o .:? "description"))
+
+instance ToJSON SSLCertificate where
+        toJSON SSLCertificate'{..}
+          = object
+              (catMaybes
+                 [("privateKey" .=) <$> _scPrivateKey,
+                  Just ("kind" .= _scKind),
+                  ("selfLink" .=) <$> _scSelfLink,
+                  ("name" .=) <$> _scName,
+                  ("creationTimestamp" .=) <$> _scCreationTimestamp,
+                  ("id" .=) <$> _scId,
+                  ("certificate" .=) <$> _scCertificate,
+                  ("description" .=) <$> _scDescription])
+
+--
+-- /See:/ 'routerStatusBGPPeerStatus' smart constructor.
+data RouterStatusBGPPeerStatus = RouterStatusBGPPeerStatus'
+    { _rsbpsStatus           :: !(Maybe RouterStatusBGPPeerStatusStatus)
+    , _rsbpsIPAddress        :: !(Maybe Text)
+    , _rsbpsState            :: !(Maybe Text)
+    , _rsbpsPeerIPAddress    :: !(Maybe Text)
+    , _rsbpsUptime           :: !(Maybe Text)
+    , _rsbpsNumLearnedRoutes :: !(Maybe (Textual Word32))
+    , _rsbpsName             :: !(Maybe Text)
+    , _rsbpsUptimeSeconds    :: !(Maybe Text)
+    , _rsbpsAdvertisedRoutes :: !(Maybe [Route])
+    , _rsbpsLinkedVPNTunnel  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterStatusBGPPeerStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsbpsStatus'
+--
+-- * 'rsbpsIPAddress'
+--
+-- * 'rsbpsState'
+--
+-- * 'rsbpsPeerIPAddress'
+--
+-- * 'rsbpsUptime'
+--
+-- * 'rsbpsNumLearnedRoutes'
+--
+-- * 'rsbpsName'
+--
+-- * 'rsbpsUptimeSeconds'
+--
+-- * 'rsbpsAdvertisedRoutes'
+--
+-- * 'rsbpsLinkedVPNTunnel'
+routerStatusBGPPeerStatus
+    :: RouterStatusBGPPeerStatus
+routerStatusBGPPeerStatus =
+    RouterStatusBGPPeerStatus'
+    { _rsbpsStatus = Nothing
+    , _rsbpsIPAddress = Nothing
+    , _rsbpsState = Nothing
+    , _rsbpsPeerIPAddress = Nothing
+    , _rsbpsUptime = Nothing
+    , _rsbpsNumLearnedRoutes = Nothing
+    , _rsbpsName = Nothing
+    , _rsbpsUptimeSeconds = Nothing
+    , _rsbpsAdvertisedRoutes = Nothing
+    , _rsbpsLinkedVPNTunnel = Nothing
+    }
+
+-- | Status of the BGP peer: {UP, DOWN}
+rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)
+rsbpsStatus
+  = lens _rsbpsStatus (\ s a -> s{_rsbpsStatus = a})
+
+-- | IP address of the local BGP interface.
+rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsIPAddress
+  = lens _rsbpsIPAddress
+      (\ s a -> s{_rsbpsIPAddress = a})
+
+-- | BGP state as specified in RFC1771.
+rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsState
+  = lens _rsbpsState (\ s a -> s{_rsbpsState = a})
+
+-- | IP address of the remote BGP interface.
+rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsPeerIPAddress
+  = lens _rsbpsPeerIPAddress
+      (\ s a -> s{_rsbpsPeerIPAddress = a})
+
+-- | Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23
+-- hours, 59 minutes, 59 seconds
+rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsUptime
+  = lens _rsbpsUptime (\ s a -> s{_rsbpsUptime = a})
+
+-- | Number of routes learned from the remote BGP Peer.
+rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)
+rsbpsNumLearnedRoutes
+  = lens _rsbpsNumLearnedRoutes
+      (\ s a -> s{_rsbpsNumLearnedRoutes = a})
+      . mapping _Coerce
+
+-- | Name of this BGP peer. Unique within the Routers resource.
+rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsName
+  = lens _rsbpsName (\ s a -> s{_rsbpsName = a})
+
+-- | Time this session has been up, in seconds. Format: 145
+rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsUptimeSeconds
+  = lens _rsbpsUptimeSeconds
+      (\ s a -> s{_rsbpsUptimeSeconds = a})
+
+-- | Routes that were advertised to the remote BGP peer
+rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]
+rsbpsAdvertisedRoutes
+  = lens _rsbpsAdvertisedRoutes
+      (\ s a -> s{_rsbpsAdvertisedRoutes = a})
+      . _Default
+      . _Coerce
+
+-- | URL of the VPN tunnel that this BGP peer controls.
+rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+rsbpsLinkedVPNTunnel
+  = lens _rsbpsLinkedVPNTunnel
+      (\ s a -> s{_rsbpsLinkedVPNTunnel = a})
+
+instance FromJSON RouterStatusBGPPeerStatus where
+        parseJSON
+          = withObject "RouterStatusBGPPeerStatus"
+              (\ o ->
+                 RouterStatusBGPPeerStatus' <$>
+                   (o .:? "status") <*> (o .:? "ipAddress") <*>
+                     (o .:? "state")
+                     <*> (o .:? "peerIpAddress")
+                     <*> (o .:? "uptime")
+                     <*> (o .:? "numLearnedRoutes")
+                     <*> (o .:? "name")
+                     <*> (o .:? "uptimeSeconds")
+                     <*> (o .:? "advertisedRoutes" .!= mempty)
+                     <*> (o .:? "linkedVpnTunnel"))
+
+instance ToJSON RouterStatusBGPPeerStatus where
+        toJSON RouterStatusBGPPeerStatus'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _rsbpsStatus,
+                  ("ipAddress" .=) <$> _rsbpsIPAddress,
+                  ("state" .=) <$> _rsbpsState,
+                  ("peerIpAddress" .=) <$> _rsbpsPeerIPAddress,
+                  ("uptime" .=) <$> _rsbpsUptime,
+                  ("numLearnedRoutes" .=) <$> _rsbpsNumLearnedRoutes,
+                  ("name" .=) <$> _rsbpsName,
+                  ("uptimeSeconds" .=) <$> _rsbpsUptimeSeconds,
+                  ("advertisedRoutes" .=) <$> _rsbpsAdvertisedRoutes,
+                  ("linkedVpnTunnel" .=) <$> _rsbpsLinkedVPNTunnel])
+
+--
+-- /See:/ 'urlMapReference' smart constructor.
+newtype URLMapReference = URLMapReference'
+    { _umrURLMap :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umrURLMap'
+urlMapReference
+    :: URLMapReference
+urlMapReference =
+    URLMapReference'
+    { _umrURLMap = Nothing
+    }
+
+umrURLMap :: Lens' URLMapReference (Maybe Text)
+umrURLMap
+  = lens _umrURLMap (\ s a -> s{_umrURLMap = a})
+
+instance FromJSON URLMapReference where
+        parseJSON
+          = withObject "URLMapReference"
+              (\ o -> URLMapReference' <$> (o .:? "urlMap"))
+
+instance ToJSON URLMapReference where
+        toJSON URLMapReference'{..}
+          = object (catMaybes [("urlMap" .=) <$> _umrURLMap])
+
+--
+-- /See:/ 'targetPoolsAddHealthCheckRequest' smart constructor.
+newtype TargetPoolsAddHealthCheckRequest = TargetPoolsAddHealthCheckRequest'
+    { _tpahcrHealthChecks :: Maybe [HealthCheckReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddHealthCheckRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpahcrHealthChecks'
+targetPoolsAddHealthCheckRequest
+    :: TargetPoolsAddHealthCheckRequest
+targetPoolsAddHealthCheckRequest =
+    TargetPoolsAddHealthCheckRequest'
+    { _tpahcrHealthChecks = Nothing
+    }
+
+-- | The HttpHealthCheck to add to the target pool.
+tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]
+tpahcrHealthChecks
+  = lens _tpahcrHealthChecks
+      (\ s a -> s{_tpahcrHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsAddHealthCheckRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsAddHealthCheckRequest"
+              (\ o ->
+                 TargetPoolsAddHealthCheckRequest' <$>
+                   (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPoolsAddHealthCheckRequest
+         where
+        toJSON TargetPoolsAddHealthCheckRequest'{..}
+          = object
+              (catMaybes
+                 [("healthChecks" .=) <$> _tpahcrHealthChecks])
+
+--
+-- /See:/ 'commitmentsScopedList' smart constructor.
+data CommitmentsScopedList = CommitmentsScopedList'
+    { _cslWarning     :: !(Maybe CommitmentsScopedListWarning)
+    , _cslCommitments :: !(Maybe [Commitment])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cslWarning'
+--
+-- * 'cslCommitments'
+commitmentsScopedList
+    :: CommitmentsScopedList
+commitmentsScopedList =
+    CommitmentsScopedList'
+    { _cslWarning = Nothing
+    , _cslCommitments = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of
+-- commitments when the list is empty.
+cslWarning :: Lens' CommitmentsScopedList (Maybe CommitmentsScopedListWarning)
+cslWarning
+  = lens _cslWarning (\ s a -> s{_cslWarning = a})
+
+-- | [Output Only] A list of commitments contained in this scope.
+cslCommitments :: Lens' CommitmentsScopedList [Commitment]
+cslCommitments
+  = lens _cslCommitments
+      (\ s a -> s{_cslCommitments = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON CommitmentsScopedList where
+        parseJSON
+          = withObject "CommitmentsScopedList"
+              (\ o ->
+                 CommitmentsScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "commitments" .!= mempty))
+
+instance ToJSON CommitmentsScopedList where
+        toJSON CommitmentsScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _cslWarning,
+                  ("commitments" .=) <$> _cslCommitments])
+
+-- | A list of DisksScopedList resources.
+--
+-- /See:/ 'diskAggregatedListItems' smart constructor.
+newtype DiskAggregatedListItems = DiskAggregatedListItems'
+    { _daliAddtional :: HashMap Text DisksScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daliAddtional'
+diskAggregatedListItems
+    :: HashMap Text DisksScopedList -- ^ 'daliAddtional'
+    -> DiskAggregatedListItems
+diskAggregatedListItems pDaliAddtional_ =
+    DiskAggregatedListItems'
+    { _daliAddtional = _Coerce # pDaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of disks.
+daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)
+daliAddtional
+  = lens _daliAddtional
+      (\ s a -> s{_daliAddtional = a})
+      . _Coerce
+
+instance FromJSON DiskAggregatedListItems where
+        parseJSON
+          = withObject "DiskAggregatedListItems"
+              (\ o ->
+                 DiskAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON DiskAggregatedListItems where
+        toJSON = toJSON . _daliAddtional
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetVPNGatewayAggregatedListWarning' smart constructor.
+data TargetVPNGatewayAggregatedListWarning = TargetVPNGatewayAggregatedListWarning'
+    { _tvgalwData    :: !(Maybe [TargetVPNGatewayAggregatedListWarningDataItem])
+    , _tvgalwCode    :: !(Maybe TargetVPNGatewayAggregatedListWarningCode)
+    , _tvgalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgalwData'
+--
+-- * 'tvgalwCode'
+--
+-- * 'tvgalwMessage'
+targetVPNGatewayAggregatedListWarning
+    :: TargetVPNGatewayAggregatedListWarning
+targetVPNGatewayAggregatedListWarning =
+    TargetVPNGatewayAggregatedListWarning'
+    { _tvgalwData = Nothing
+    , _tvgalwCode = Nothing
+    , _tvgalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tvgalwData :: Lens' TargetVPNGatewayAggregatedListWarning [TargetVPNGatewayAggregatedListWarningDataItem]
+tvgalwData
+  = lens _tvgalwData (\ s a -> s{_tvgalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tvgalwCode :: Lens' TargetVPNGatewayAggregatedListWarning (Maybe TargetVPNGatewayAggregatedListWarningCode)
+tvgalwCode
+  = lens _tvgalwCode (\ s a -> s{_tvgalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tvgalwMessage :: Lens' TargetVPNGatewayAggregatedListWarning (Maybe Text)
+tvgalwMessage
+  = lens _tvgalwMessage
+      (\ s a -> s{_tvgalwMessage = a})
+
+instance FromJSON
+         TargetVPNGatewayAggregatedListWarning where
+        parseJSON
+          = withObject "TargetVPNGatewayAggregatedListWarning"
+              (\ o ->
+                 TargetVPNGatewayAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetVPNGatewayAggregatedListWarning
+         where
+        toJSON TargetVPNGatewayAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tvgalwData,
+                  ("code" .=) <$> _tvgalwCode,
+                  ("message" .=) <$> _tvgalwMessage])
+
+-- | The location in Cloud Storage and naming method of the daily usage
+-- report. Contains bucket_name and report_name prefix.
+--
+-- /See:/ 'usageExportLocation' smart constructor.
+data UsageExportLocation = UsageExportLocation'
+    { _uelReportNamePrefix :: !(Maybe Text)
+    , _uelBucketName       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsageExportLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uelReportNamePrefix'
+--
+-- * 'uelBucketName'
+usageExportLocation
+    :: UsageExportLocation
+usageExportLocation =
+    UsageExportLocation'
+    { _uelReportNamePrefix = Nothing
+    , _uelBucketName = Nothing
+    }
+
+-- | An optional prefix for the name of the usage report object stored in
+-- bucketName. If not supplied, defaults to usage. The report is stored as
+-- a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is
+-- the day of the usage according to Pacific Time. If you supply a prefix,
+-- it should conform to Cloud Storage object naming conventions.
+uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)
+uelReportNamePrefix
+  = lens _uelReportNamePrefix
+      (\ s a -> s{_uelReportNamePrefix = a})
+
+-- | The name of an existing bucket in Cloud Storage where the usage report
+-- object is stored. The Google Service Account is granted write access to
+-- this bucket. This can either be the bucket name by itself, such as
+-- example-bucket, or the bucket name with gs:\/\/ or
+-- https:\/\/storage.googleapis.com\/ in front of it, such as
+-- gs:\/\/example-bucket.
+uelBucketName :: Lens' UsageExportLocation (Maybe Text)
+uelBucketName
+  = lens _uelBucketName
+      (\ s a -> s{_uelBucketName = a})
+
+instance FromJSON UsageExportLocation where
+        parseJSON
+          = withObject "UsageExportLocation"
+              (\ o ->
+                 UsageExportLocation' <$>
+                   (o .:? "reportNamePrefix") <*> (o .:? "bucketName"))
+
+instance ToJSON UsageExportLocation where
+        toJSON UsageExportLocation'{..}
+          = object
+              (catMaybes
+                 [("reportNamePrefix" .=) <$> _uelReportNamePrefix,
+                  ("bucketName" .=) <$> _uelBucketName])
+
+-- | Contains a list of zone resources.
+--
+-- /See:/ 'zoneList' smart constructor.
+data ZoneList = ZoneList'
+    { _zlNextPageToken :: !(Maybe Text)
+    , _zlKind          :: !Text
+    , _zlItems         :: !(Maybe [Zone])
+    , _zlSelfLink      :: !(Maybe Text)
+    , _zlWarning       :: !(Maybe ZoneListWarning)
+    , _zlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlNextPageToken'
+--
+-- * 'zlKind'
+--
+-- * 'zlItems'
+--
+-- * 'zlSelfLink'
+--
+-- * 'zlWarning'
+--
+-- * 'zlId'
+zoneList
+    :: ZoneList
+zoneList =
+    ZoneList'
+    { _zlNextPageToken = Nothing
+    , _zlKind = "compute#zoneList"
+    , _zlItems = Nothing
+    , _zlSelfLink = Nothing
+    , _zlWarning = Nothing
+    , _zlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+zlNextPageToken :: Lens' ZoneList (Maybe Text)
+zlNextPageToken
+  = lens _zlNextPageToken
+      (\ s a -> s{_zlNextPageToken = a})
+
+-- | Type of resource.
+zlKind :: Lens' ZoneList Text
+zlKind = lens _zlKind (\ s a -> s{_zlKind = a})
+
+-- | A list of Zone resources.
+zlItems :: Lens' ZoneList [Zone]
+zlItems
+  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+zlSelfLink :: Lens' ZoneList (Maybe Text)
+zlSelfLink
+  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+zlWarning :: Lens' ZoneList (Maybe ZoneListWarning)
+zlWarning
+  = lens _zlWarning (\ s a -> s{_zlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+zlId :: Lens' ZoneList (Maybe Text)
+zlId = lens _zlId (\ s a -> s{_zlId = a})
+
+instance FromJSON ZoneList where
+        parseJSON
+          = withObject "ZoneList"
+              (\ o ->
+                 ZoneList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#zoneList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON ZoneList where
+        toJSON ZoneList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _zlNextPageToken,
+                  Just ("kind" .= _zlKind), ("items" .=) <$> _zlItems,
+                  ("selfLink" .=) <$> _zlSelfLink,
+                  ("warning" .=) <$> _zlWarning, ("id" .=) <$> _zlId])
+
+--
+-- /See:/ 'sslCertificateListWarningDataItem' smart constructor.
+data SSLCertificateListWarningDataItem = SSLCertificateListWarningDataItem'
+    { _sclwdiValue :: !(Maybe Text)
+    , _sclwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificateListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclwdiValue'
+--
+-- * 'sclwdiKey'
+sslCertificateListWarningDataItem
+    :: SSLCertificateListWarningDataItem
+sslCertificateListWarningDataItem =
+    SSLCertificateListWarningDataItem'
+    { _sclwdiValue = Nothing
+    , _sclwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+sclwdiValue :: Lens' SSLCertificateListWarningDataItem (Maybe Text)
+sclwdiValue
+  = lens _sclwdiValue (\ s a -> s{_sclwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+sclwdiKey :: Lens' SSLCertificateListWarningDataItem (Maybe Text)
+sclwdiKey
+  = lens _sclwdiKey (\ s a -> s{_sclwdiKey = a})
+
+instance FromJSON SSLCertificateListWarningDataItem
+         where
+        parseJSON
+          = withObject "SSLCertificateListWarningDataItem"
+              (\ o ->
+                 SSLCertificateListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SSLCertificateListWarningDataItem
+         where
+        toJSON SSLCertificateListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _sclwdiValue,
+                  ("key" .=) <$> _sclwdiKey])
+
+--
+-- /See:/ 'distributionPolicyZoneConfiguration' smart constructor.
+newtype DistributionPolicyZoneConfiguration = DistributionPolicyZoneConfiguration'
+    { _dpzcZone :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DistributionPolicyZoneConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpzcZone'
+distributionPolicyZoneConfiguration
+    :: DistributionPolicyZoneConfiguration
+distributionPolicyZoneConfiguration =
+    DistributionPolicyZoneConfiguration'
+    { _dpzcZone = Nothing
+    }
+
+-- | The URL of the zone. The zone must exist in the region where the managed
+-- instance group is located.
+dpzcZone :: Lens' DistributionPolicyZoneConfiguration (Maybe Text)
+dpzcZone = lens _dpzcZone (\ s a -> s{_dpzcZone = a})
+
+instance FromJSON DistributionPolicyZoneConfiguration
+         where
+        parseJSON
+          = withObject "DistributionPolicyZoneConfiguration"
+              (\ o ->
+                 DistributionPolicyZoneConfiguration' <$>
+                   (o .:? "zone"))
+
+instance ToJSON DistributionPolicyZoneConfiguration
+         where
+        toJSON DistributionPolicyZoneConfiguration'{..}
+          = object (catMaybes [("zone" .=) <$> _dpzcZone])
+
+--
+-- /See:/ 'targetTCPProxiesSetProxyHeaderRequest' smart constructor.
+newtype TargetTCPProxiesSetProxyHeaderRequest = TargetTCPProxiesSetProxyHeaderRequest'
+    { _ttpsphrProxyHeader :: Maybe TargetTCPProxiesSetProxyHeaderRequestProxyHeader
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesSetProxyHeaderRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpsphrProxyHeader'
+targetTCPProxiesSetProxyHeaderRequest
+    :: TargetTCPProxiesSetProxyHeaderRequest
+targetTCPProxiesSetProxyHeaderRequest =
+    TargetTCPProxiesSetProxyHeaderRequest'
+    { _ttpsphrProxyHeader = Nothing
+    }
+
+-- | The new type of proxy header to append before sending data to the
+-- backend. NONE or PROXY_V1 are allowed.
+ttpsphrProxyHeader :: Lens' TargetTCPProxiesSetProxyHeaderRequest (Maybe TargetTCPProxiesSetProxyHeaderRequestProxyHeader)
+ttpsphrProxyHeader
+  = lens _ttpsphrProxyHeader
+      (\ s a -> s{_ttpsphrProxyHeader = a})
+
+instance FromJSON
+         TargetTCPProxiesSetProxyHeaderRequest where
+        parseJSON
+          = withObject "TargetTCPProxiesSetProxyHeaderRequest"
+              (\ o ->
+                 TargetTCPProxiesSetProxyHeaderRequest' <$>
+                   (o .:? "proxyHeader"))
+
+instance ToJSON TargetTCPProxiesSetProxyHeaderRequest
+         where
+        toJSON TargetTCPProxiesSetProxyHeaderRequest'{..}
+          = object
+              (catMaybes
+                 [("proxyHeader" .=) <$> _ttpsphrProxyHeader])
+
+--
+-- /See:/ 'routerBGPPeer' smart constructor.
+data RouterBGPPeer = RouterBGPPeer'
+    { _rbpIPAddress               :: !(Maybe Text)
+    , _rbpInterfaceName           :: !(Maybe Text)
+    , _rbpPeerIPAddress           :: !(Maybe Text)
+    , _rbpAdvertisedRoutePriority :: !(Maybe (Textual Word32))
+    , _rbpPeerASN                 :: !(Maybe (Textual Word32))
+    , _rbpAdvertiseMode           :: !(Maybe RouterBGPPeerAdvertiseMode)
+    , _rbpName                    :: !(Maybe Text)
+    , _rbpAdvertisedGroups        :: !(Maybe [RouterBGPPeerAdvertisedGroupsItem])
+    , _rbpManagementType          :: !(Maybe RouterBGPPeerManagementType)
+    , _rbpAdvertisedIPRanges      :: !(Maybe [RouterAdvertisedIPRange])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterBGPPeer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rbpIPAddress'
+--
+-- * 'rbpInterfaceName'
+--
+-- * 'rbpPeerIPAddress'
+--
+-- * 'rbpAdvertisedRoutePriority'
+--
+-- * 'rbpPeerASN'
+--
+-- * 'rbpAdvertiseMode'
+--
+-- * 'rbpName'
+--
+-- * 'rbpAdvertisedGroups'
+--
+-- * 'rbpManagementType'
+--
+-- * 'rbpAdvertisedIPRanges'
+routerBGPPeer
+    :: RouterBGPPeer
+routerBGPPeer =
+    RouterBGPPeer'
+    { _rbpIPAddress = Nothing
+    , _rbpInterfaceName = Nothing
+    , _rbpPeerIPAddress = Nothing
+    , _rbpAdvertisedRoutePriority = Nothing
+    , _rbpPeerASN = Nothing
+    , _rbpAdvertiseMode = Nothing
+    , _rbpName = Nothing
+    , _rbpAdvertisedGroups = Nothing
+    , _rbpManagementType = Nothing
+    , _rbpAdvertisedIPRanges = Nothing
+    }
+
+-- | IP address of the interface inside Google Cloud Platform. Only IPv4 is
+-- supported.
+rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+rbpIPAddress
+  = lens _rbpIPAddress (\ s a -> s{_rbpIPAddress = a})
+
+-- | Name of the interface the BGP peer is associated with.
+rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)
+rbpInterfaceName
+  = lens _rbpInterfaceName
+      (\ s a -> s{_rbpInterfaceName = a})
+
+-- | IP address of the BGP interface outside Google cloud. Only IPv4 is
+-- supported.
+rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+rbpPeerIPAddress
+  = lens _rbpPeerIPAddress
+      (\ s a -> s{_rbpPeerIPAddress = a})
+
+-- | The priority of routes advertised to this BGP peer. In the case where
+-- there is more than one matching route of maximum length, the routes with
+-- lowest priority value win.
+rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)
+rbpAdvertisedRoutePriority
+  = lens _rbpAdvertisedRoutePriority
+      (\ s a -> s{_rbpAdvertisedRoutePriority = a})
+      . mapping _Coerce
+
+-- | Peer BGP Autonomous System Number (ASN). For VPN use case, this value
+-- can be different for every tunnel.
+rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)
+rbpPeerASN
+  = lens _rbpPeerASN (\ s a -> s{_rbpPeerASN = a}) .
+      mapping _Coerce
+
+-- | User-specified flag to indicate which mode to use for advertisement.
+rbpAdvertiseMode :: Lens' RouterBGPPeer (Maybe RouterBGPPeerAdvertiseMode)
+rbpAdvertiseMode
+  = lens _rbpAdvertiseMode
+      (\ s a -> s{_rbpAdvertiseMode = a})
+
+-- | Name of this BGP peer. The name must be 1-63 characters long and comply
+-- with RFC1035.
+rbpName :: Lens' RouterBGPPeer (Maybe Text)
+rbpName = lens _rbpName (\ s a -> s{_rbpName = a})
+
+-- | User-specified list of prefix groups to advertise in custom mode. This
+-- field can only be populated if advertise_mode is CUSTOM and overrides
+-- the list defined for the router (in Bgp message). These groups will be
+-- advertised in addition to any specified prefixes. Leave this field blank
+-- to advertise no custom groups.
+rbpAdvertisedGroups :: Lens' RouterBGPPeer [RouterBGPPeerAdvertisedGroupsItem]
+rbpAdvertisedGroups
+  = lens _rbpAdvertisedGroups
+      (\ s a -> s{_rbpAdvertisedGroups = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The resource that configures and manages this BGP peer.
+-- MANAGED_BY_USER is the default value and can be managed by you or other
+-- users; MANAGED_BY_ATTACHMENT is a BGP peer that is configured and
+-- managed by Cloud Interconnect, specifically by an InterconnectAttachment
+-- of type PARTNER. Google will automatically create, update, and delete
+-- this type of BGP peer when the PARTNER InterconnectAttachment is
+-- created, updated, or deleted.
+rbpManagementType :: Lens' RouterBGPPeer (Maybe RouterBGPPeerManagementType)
+rbpManagementType
+  = lens _rbpManagementType
+      (\ s a -> s{_rbpManagementType = a})
+
+-- | User-specified list of individual IP ranges to advertise in custom mode.
+-- This field can only be populated if advertise_mode is CUSTOM and
+-- overrides the list defined for the router (in Bgp message). These IP
+-- ranges will be advertised in addition to any specified groups. Leave
+-- this field blank to advertise no custom IP ranges.
+rbpAdvertisedIPRanges :: Lens' RouterBGPPeer [RouterAdvertisedIPRange]
+rbpAdvertisedIPRanges
+  = lens _rbpAdvertisedIPRanges
+      (\ s a -> s{_rbpAdvertisedIPRanges = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RouterBGPPeer where
+        parseJSON
+          = withObject "RouterBGPPeer"
+              (\ o ->
+                 RouterBGPPeer' <$>
+                   (o .:? "ipAddress") <*> (o .:? "interfaceName") <*>
+                     (o .:? "peerIpAddress")
+                     <*> (o .:? "advertisedRoutePriority")
+                     <*> (o .:? "peerAsn")
+                     <*> (o .:? "advertiseMode")
+                     <*> (o .:? "name")
+                     <*> (o .:? "advertisedGroups" .!= mempty)
+                     <*> (o .:? "managementType")
+                     <*> (o .:? "advertisedIpRanges" .!= mempty))
+
+instance ToJSON RouterBGPPeer where
+        toJSON RouterBGPPeer'{..}
+          = object
+              (catMaybes
+                 [("ipAddress" .=) <$> _rbpIPAddress,
+                  ("interfaceName" .=) <$> _rbpInterfaceName,
+                  ("peerIpAddress" .=) <$> _rbpPeerIPAddress,
+                  ("advertisedRoutePriority" .=) <$>
+                    _rbpAdvertisedRoutePriority,
+                  ("peerAsn" .=) <$> _rbpPeerASN,
+                  ("advertiseMode" .=) <$> _rbpAdvertiseMode,
+                  ("name" .=) <$> _rbpName,
+                  ("advertisedGroups" .=) <$> _rbpAdvertisedGroups,
+                  ("managementType" .=) <$> _rbpManagementType,
+                  ("advertisedIpRanges" .=) <$>
+                    _rbpAdvertisedIPRanges])
+
+--
+-- /See:/ 'subnetworksExpandIPCIdRRangeRequest' smart constructor.
+newtype SubnetworksExpandIPCIdRRangeRequest = SubnetworksExpandIPCIdRRangeRequest'
+    { _seicirrrIPCIdRRange :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksExpandIPCIdRRangeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'seicirrrIPCIdRRange'
+subnetworksExpandIPCIdRRangeRequest
+    :: SubnetworksExpandIPCIdRRangeRequest
+subnetworksExpandIPCIdRRangeRequest =
+    SubnetworksExpandIPCIdRRangeRequest'
+    { _seicirrrIPCIdRRange = Nothing
+    }
+
+-- | The IP (in CIDR format or netmask) of internal addresses that are legal
+-- on this Subnetwork. This range should be disjoint from other subnetworks
+-- within this network. This range can only be larger than (i.e. a superset
+-- of) the range previously defined before the update.
+seicirrrIPCIdRRange :: Lens' SubnetworksExpandIPCIdRRangeRequest (Maybe Text)
+seicirrrIPCIdRRange
+  = lens _seicirrrIPCIdRRange
+      (\ s a -> s{_seicirrrIPCIdRRange = a})
+
+instance FromJSON SubnetworksExpandIPCIdRRangeRequest
+         where
+        parseJSON
+          = withObject "SubnetworksExpandIPCIdRRangeRequest"
+              (\ o ->
+                 SubnetworksExpandIPCIdRRangeRequest' <$>
+                   (o .:? "ipCidrRange"))
+
+instance ToJSON SubnetworksExpandIPCIdRRangeRequest
+         where
+        toJSON SubnetworksExpandIPCIdRRangeRequest'{..}
+          = object
+              (catMaybes
+                 [("ipCidrRange" .=) <$> _seicirrrIPCIdRRange])
+
+-- | A Managed Instance resource.
+--
+-- /See:/ 'managedInstance' smart constructor.
+data ManagedInstance = ManagedInstance'
+    { _miLastAttempt    :: !(Maybe ManagedInstanceLastAttempt)
+    , _miCurrentAction  :: !(Maybe ManagedInstanceCurrentAction)
+    , _miId             :: !(Maybe (Textual Word64))
+    , _miInstanceStatus :: !(Maybe ManagedInstanceInstanceStatus)
+    , _miInstance       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'miLastAttempt'
+--
+-- * 'miCurrentAction'
+--
+-- * 'miId'
+--
+-- * 'miInstanceStatus'
+--
+-- * 'miInstance'
+managedInstance
+    :: ManagedInstance
+managedInstance =
+    ManagedInstance'
+    { _miLastAttempt = Nothing
+    , _miCurrentAction = Nothing
+    , _miId = Nothing
+    , _miInstanceStatus = Nothing
+    , _miInstance = Nothing
+    }
+
+-- | [Output Only] Information about the last attempt to create or delete the
+-- instance.
+miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)
+miLastAttempt
+  = lens _miLastAttempt
+      (\ s a -> s{_miLastAttempt = a})
+
+-- | [Output Only] The current action that the managed instance group has
+-- scheduled for the instance. Possible values: - NONE The instance is
+-- running, and the managed instance group does not have any scheduled
+-- actions for this instance. - CREATING The managed instance group is
+-- creating this instance. If the group fails to create this instance, it
+-- will try again until it is successful. - CREATING_WITHOUT_RETRIES The
+-- managed instance group is attempting to create this instance only once.
+-- If the group fails to create this instance, it does not try again and
+-- the group\'s targetSize value is decreased instead. - RECREATING The
+-- managed instance group is recreating this instance. - DELETING The
+-- managed instance group is permanently deleting this instance. -
+-- ABANDONING The managed instance group is abandoning this instance. The
+-- instance will be removed from the instance group and from any target
+-- pools that are associated with this group. - RESTARTING The managed
+-- instance group is restarting the instance. - REFRESHING The managed
+-- instance group is applying configuration changes to the instance without
+-- stopping it. For example, the group can update the target pool list for
+-- an instance without stopping that instance. - VERIFYING The managed
+-- instance group has created the instance and it is in the process of
+-- being verified.
+miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)
+miCurrentAction
+  = lens _miCurrentAction
+      (\ s a -> s{_miCurrentAction = a})
+
+-- | [Output only] The unique identifier for this resource. This field is
+-- empty when instance does not exist.
+miId :: Lens' ManagedInstance (Maybe Word64)
+miId
+  = lens _miId (\ s a -> s{_miId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The status of the instance. This field is empty when the
+-- instance does not exist.
+miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)
+miInstanceStatus
+  = lens _miInstanceStatus
+      (\ s a -> s{_miInstanceStatus = a})
+
+-- | [Output Only] The URL of the instance. The URL can exist even if the
+-- instance has not yet been created.
+miInstance :: Lens' ManagedInstance (Maybe Text)
+miInstance
+  = lens _miInstance (\ s a -> s{_miInstance = a})
+
+instance FromJSON ManagedInstance where
+        parseJSON
+          = withObject "ManagedInstance"
+              (\ o ->
+                 ManagedInstance' <$>
+                   (o .:? "lastAttempt") <*> (o .:? "currentAction") <*>
+                     (o .:? "id")
+                     <*> (o .:? "instanceStatus")
+                     <*> (o .:? "instance"))
+
+instance ToJSON ManagedInstance where
+        toJSON ManagedInstance'{..}
+          = object
+              (catMaybes
+                 [("lastAttempt" .=) <$> _miLastAttempt,
+                  ("currentAction" .=) <$> _miCurrentAction,
+                  ("id" .=) <$> _miId,
+                  ("instanceStatus" .=) <$> _miInstanceStatus,
+                  ("instance" .=) <$> _miInstance])
+
+-- | A list of InstanceGroupManagersScopedList resources.
+--
+-- /See:/ 'instanceGroupManagerAggregatedListItems' smart constructor.
+newtype InstanceGroupManagerAggregatedListItems = InstanceGroupManagerAggregatedListItems'
+    { _igmaliAddtional :: HashMap Text InstanceGroupManagersScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmaliAddtional'
+instanceGroupManagerAggregatedListItems
+    :: HashMap Text InstanceGroupManagersScopedList -- ^ 'igmaliAddtional'
+    -> InstanceGroupManagerAggregatedListItems
+instanceGroupManagerAggregatedListItems pIgmaliAddtional_ =
+    InstanceGroupManagerAggregatedListItems'
+    { _igmaliAddtional = _Coerce # pIgmaliAddtional_
+    }
+
+-- | [Output Only] The name of the scope that contains this set of managed
+-- instance groups.
+igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)
+igmaliAddtional
+  = lens _igmaliAddtional
+      (\ s a -> s{_igmaliAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagerAggregatedListItems where
+        parseJSON
+          = withObject
+              "InstanceGroupManagerAggregatedListItems"
+              (\ o ->
+                 InstanceGroupManagerAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+         InstanceGroupManagerAggregatedListItems where
+        toJSON = toJSON . _igmaliAddtional
+
+--
+-- /See:/ 'instanceGroupManagersDeleteInstancesRequest' smart constructor.
+newtype InstanceGroupManagersDeleteInstancesRequest = InstanceGroupManagersDeleteInstancesRequest'
+    { _igmdirInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmdirInstances'
+instanceGroupManagersDeleteInstancesRequest
+    :: InstanceGroupManagersDeleteInstancesRequest
+instanceGroupManagersDeleteInstancesRequest =
+    InstanceGroupManagersDeleteInstancesRequest'
+    { _igmdirInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to delete. This can be a full URL or a
+-- partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]
+igmdirInstances
+  = lens _igmdirInstances
+      (\ s a -> s{_igmdirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersDeleteInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersDeleteInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersDeleteInstancesRequest' <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersDeleteInstancesRequest where
+        toJSON
+          InstanceGroupManagersDeleteInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmdirInstances])
+
+-- | Message containing information of one individual backend.
+--
+-- /See:/ 'backend' smart constructor.
+data Backend = Backend'
+    { _bGroup                     :: !(Maybe Text)
+    , _bBalancingMode             :: !(Maybe BackendBalancingMode)
+    , _bMaxUtilization            :: !(Maybe (Textual Double))
+    , _bMaxRate                   :: !(Maybe (Textual Int32))
+    , _bMaxConnections            :: !(Maybe (Textual Int32))
+    , _bMaxConnectionsPerInstance :: !(Maybe (Textual Int32))
+    , _bMaxRatePerInstance        :: !(Maybe (Textual Double))
+    , _bDescription               :: !(Maybe Text)
+    , _bCapacityScaler            :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Backend' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bGroup'
+--
+-- * 'bBalancingMode'
+--
+-- * 'bMaxUtilization'
+--
+-- * 'bMaxRate'
+--
+-- * 'bMaxConnections'
+--
+-- * 'bMaxConnectionsPerInstance'
+--
+-- * 'bMaxRatePerInstance'
+--
+-- * 'bDescription'
+--
+-- * 'bCapacityScaler'
+backend
+    :: Backend
+backend =
+    Backend'
+    { _bGroup = Nothing
+    , _bBalancingMode = Nothing
+    , _bMaxUtilization = Nothing
+    , _bMaxRate = Nothing
+    , _bMaxConnections = Nothing
+    , _bMaxConnectionsPerInstance = Nothing
+    , _bMaxRatePerInstance = Nothing
+    , _bDescription = Nothing
+    , _bCapacityScaler = Nothing
+    }
+
+-- | The fully-qualified URL of an Instance Group or Network Endpoint Group
+-- resource. In case of instance group this defines the list of instances
+-- that serve traffic. Member virtual machine instances from each instance
+-- group must live in the same zone as the instance group itself. No two
+-- backends in a backend service are allowed to use same Instance Group
+-- resource. For Network Endpoint Groups this defines list of endpoints.
+-- All endpoints of Network Endpoint Group must be hosted on instances
+-- located in the same zone as the Network Endpoint Group. Backend service
+-- can not contain mix of Instance Group and Network Endpoint Group
+-- backends. Note that you must specify an Instance Group or Network
+-- Endpoint Group resource using the fully-qualified URL, rather than a
+-- partial URL. When the BackendService has load balancing scheme INTERNAL,
+-- the instance group must be within the same region as the BackendService.
+-- Network Endpoint Groups are not supported for INTERNAL load balancing
+-- scheme.
+bGroup :: Lens' Backend (Maybe Text)
+bGroup = lens _bGroup (\ s a -> s{_bGroup = a})
+
+-- | Specifies the balancing mode for this backend. For global HTTP(S) or
+-- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are
+-- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). For
+-- Internal Load Balancing, the default and only supported mode is
+-- CONNECTION.
+bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)
+bBalancingMode
+  = lens _bBalancingMode
+      (\ s a -> s{_bBalancingMode = a})
+
+-- | Used when balancingMode is UTILIZATION. This ratio defines the CPU
+-- utilization target for the group. The default is 0.8. Valid range is
+-- [0.0, 1.0]. This cannot be used for internal load balancing.
+bMaxUtilization :: Lens' Backend (Maybe Double)
+bMaxUtilization
+  = lens _bMaxUtilization
+      (\ s a -> s{_bMaxUtilization = a})
+      . mapping _Coerce
+
+-- | The max requests per second (RPS) of the group. Can be used with either
+-- RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE
+-- mode, either maxRate or maxRatePerInstance must be set. This cannot be
+-- used for internal load balancing.
+bMaxRate :: Lens' Backend (Maybe Int32)
+bMaxRate
+  = lens _bMaxRate (\ s a -> s{_bMaxRate = a}) .
+      mapping _Coerce
+
+-- | The max number of simultaneous connections for the group. Can be used
+-- with either CONNECTION or UTILIZATION balancing modes. For CONNECTION
+-- mode, either maxConnections or maxConnectionsPerInstance must be set.
+-- This cannot be used for internal load balancing.
+bMaxConnections :: Lens' Backend (Maybe Int32)
+bMaxConnections
+  = lens _bMaxConnections
+      (\ s a -> s{_bMaxConnections = a})
+      . mapping _Coerce
+
+-- | The max number of simultaneous connections that a single backend
+-- instance can handle. This is used to calculate the capacity of the
+-- group. Can be used in either CONNECTION or UTILIZATION balancing modes.
+-- For CONNECTION mode, either maxConnections or maxConnectionsPerInstance
+-- must be set. This cannot be used for internal load balancing.
+bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)
+bMaxConnectionsPerInstance
+  = lens _bMaxConnectionsPerInstance
+      (\ s a -> s{_bMaxConnectionsPerInstance = a})
+      . mapping _Coerce
+
+-- | The max requests per second (RPS) that a single backend instance can
+-- handle. This is used to calculate the capacity of the group. Can be used
+-- in either balancing mode. For RATE mode, either maxRate or
+-- maxRatePerInstance must be set. This cannot be used for internal load
+-- balancing.
+bMaxRatePerInstance :: Lens' Backend (Maybe Double)
+bMaxRatePerInstance
+  = lens _bMaxRatePerInstance
+      (\ s a -> s{_bMaxRatePerInstance = a})
+      . mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+bDescription :: Lens' Backend (Maybe Text)
+bDescription
+  = lens _bDescription (\ s a -> s{_bDescription = a})
+
+-- | A multiplier applied to the group\'s maximum servicing capacity (based
+-- on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the
+-- group will serve up to 100% of its configured capacity (depending on
+-- balancingMode). A setting of 0 means the group is completely drained,
+-- offering 0% of its available Capacity. Valid range is [0.0,1.0]. This
+-- cannot be used for internal load balancing.
+bCapacityScaler :: Lens' Backend (Maybe Double)
+bCapacityScaler
+  = lens _bCapacityScaler
+      (\ s a -> s{_bCapacityScaler = a})
+      . mapping _Coerce
+
+instance FromJSON Backend where
+        parseJSON
+          = withObject "Backend"
+              (\ o ->
+                 Backend' <$>
+                   (o .:? "group") <*> (o .:? "balancingMode") <*>
+                     (o .:? "maxUtilization")
+                     <*> (o .:? "maxRate")
+                     <*> (o .:? "maxConnections")
+                     <*> (o .:? "maxConnectionsPerInstance")
+                     <*> (o .:? "maxRatePerInstance")
+                     <*> (o .:? "description")
+                     <*> (o .:? "capacityScaler"))
+
+instance ToJSON Backend where
+        toJSON Backend'{..}
+          = object
+              (catMaybes
+                 [("group" .=) <$> _bGroup,
+                  ("balancingMode" .=) <$> _bBalancingMode,
+                  ("maxUtilization" .=) <$> _bMaxUtilization,
+                  ("maxRate" .=) <$> _bMaxRate,
+                  ("maxConnections" .=) <$> _bMaxConnections,
+                  ("maxConnectionsPerInstance" .=) <$>
+                    _bMaxConnectionsPerInstance,
+                  ("maxRatePerInstance" .=) <$> _bMaxRatePerInstance,
+                  ("description" .=) <$> _bDescription,
+                  ("capacityScaler" .=) <$> _bCapacityScaler])
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+--
+-- /See:/ 'targetVPNGatewaysScopedListWarning' smart constructor.
+data TargetVPNGatewaysScopedListWarning = TargetVPNGatewaysScopedListWarning'
+    { _tvgslwData    :: !(Maybe [TargetVPNGatewaysScopedListWarningDataItem])
+    , _tvgslwCode    :: !(Maybe TargetVPNGatewaysScopedListWarningCode)
+    , _tvgslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslwData'
+--
+-- * 'tvgslwCode'
+--
+-- * 'tvgslwMessage'
+targetVPNGatewaysScopedListWarning
+    :: TargetVPNGatewaysScopedListWarning
+targetVPNGatewaysScopedListWarning =
+    TargetVPNGatewaysScopedListWarning'
+    { _tvgslwData = Nothing
+    , _tvgslwCode = Nothing
+    , _tvgslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]
+tvgslwData
+  = lens _tvgslwData (\ s a -> s{_tvgslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)
+tvgslwCode
+  = lens _tvgslwCode (\ s a -> s{_tvgslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)
+tvgslwMessage
+  = lens _tvgslwMessage
+      (\ s a -> s{_tvgslwMessage = a})
+
+instance FromJSON TargetVPNGatewaysScopedListWarning
+         where
+        parseJSON
+          = withObject "TargetVPNGatewaysScopedListWarning"
+              (\ o ->
+                 TargetVPNGatewaysScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetVPNGatewaysScopedListWarning
+         where
+        toJSON TargetVPNGatewaysScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tvgslwData,
+                  ("code" .=) <$> _tvgslwCode,
+                  ("message" .=) <$> _tvgslwMessage])
+
+-- | Contains a list of addresses.
+--
+-- /See:/ 'addressList' smart constructor.
+data AddressList = AddressList'
+    { _alNextPageToken :: !(Maybe Text)
+    , _alKind          :: !Text
+    , _alItems         :: !(Maybe [Address])
+    , _alSelfLink      :: !(Maybe Text)
+    , _alWarning       :: !(Maybe AddressListWarning)
+    , _alId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alNextPageToken'
+--
+-- * 'alKind'
+--
+-- * 'alItems'
+--
+-- * 'alSelfLink'
+--
+-- * 'alWarning'
+--
+-- * 'alId'
+addressList
+    :: AddressList
+addressList =
+    AddressList'
+    { _alNextPageToken = Nothing
+    , _alKind = "compute#addressList"
+    , _alItems = Nothing
+    , _alSelfLink = Nothing
+    , _alWarning = Nothing
+    , _alId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+alNextPageToken :: Lens' AddressList (Maybe Text)
+alNextPageToken
+  = lens _alNextPageToken
+      (\ s a -> s{_alNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#addressList for lists of
+-- addresses.
+alKind :: Lens' AddressList Text
+alKind = lens _alKind (\ s a -> s{_alKind = a})
+
+-- | A list of Address resources.
+alItems :: Lens' AddressList [Address]
+alItems
+  = lens _alItems (\ s a -> s{_alItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+alSelfLink :: Lens' AddressList (Maybe Text)
+alSelfLink
+  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+alWarning :: Lens' AddressList (Maybe AddressListWarning)
+alWarning
+  = lens _alWarning (\ s a -> s{_alWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+alId :: Lens' AddressList (Maybe Text)
+alId = lens _alId (\ s a -> s{_alId = a})
+
+instance FromJSON AddressList where
+        parseJSON
+          = withObject "AddressList"
+              (\ o ->
+                 AddressList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#addressList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AddressList where
+        toJSON AddressList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _alNextPageToken,
+                  Just ("kind" .= _alKind), ("items" .=) <$> _alItems,
+                  ("selfLink" .=) <$> _alSelfLink,
+                  ("warning" .=) <$> _alWarning, ("id" .=) <$> _alId])
+
+--
+-- /See:/ 'targetVPNGatewayListWarningDataItem' smart constructor.
+data TargetVPNGatewayListWarningDataItem = TargetVPNGatewayListWarningDataItem'
+    { _tvglwdiValue :: !(Maybe Text)
+    , _tvglwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvglwdiValue'
+--
+-- * 'tvglwdiKey'
+targetVPNGatewayListWarningDataItem
+    :: TargetVPNGatewayListWarningDataItem
+targetVPNGatewayListWarningDataItem =
+    TargetVPNGatewayListWarningDataItem'
+    { _tvglwdiValue = Nothing
+    , _tvglwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tvglwdiValue :: Lens' TargetVPNGatewayListWarningDataItem (Maybe Text)
+tvglwdiValue
+  = lens _tvglwdiValue (\ s a -> s{_tvglwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tvglwdiKey :: Lens' TargetVPNGatewayListWarningDataItem (Maybe Text)
+tvglwdiKey
+  = lens _tvglwdiKey (\ s a -> s{_tvglwdiKey = a})
+
+instance FromJSON TargetVPNGatewayListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetVPNGatewayListWarningDataItem"
+              (\ o ->
+                 TargetVPNGatewayListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetVPNGatewayListWarningDataItem
+         where
+        toJSON TargetVPNGatewayListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tvglwdiValue,
+                  ("key" .=) <$> _tvglwdiKey])
+
+-- | A list of ForwardingRulesScopedList resources.
+--
+-- /See:/ 'forwardingRuleAggregatedListItems' smart constructor.
+newtype ForwardingRuleAggregatedListItems = ForwardingRuleAggregatedListItems'
+    { _fraliAddtional :: HashMap Text ForwardingRulesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fraliAddtional'
+forwardingRuleAggregatedListItems
+    :: HashMap Text ForwardingRulesScopedList -- ^ 'fraliAddtional'
+    -> ForwardingRuleAggregatedListItems
+forwardingRuleAggregatedListItems pFraliAddtional_ =
+    ForwardingRuleAggregatedListItems'
+    { _fraliAddtional = _Coerce # pFraliAddtional_
+    }
+
+-- | Name of the scope containing this set of addresses.
+fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)
+fraliAddtional
+  = lens _fraliAddtional
+      (\ s a -> s{_fraliAddtional = a})
+      . _Coerce
+
+instance FromJSON ForwardingRuleAggregatedListItems
+         where
+        parseJSON
+          = withObject "ForwardingRuleAggregatedListItems"
+              (\ o ->
+                 ForwardingRuleAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON ForwardingRuleAggregatedListItems
+         where
+        toJSON = toJSON . _fraliAddtional
+
+--
+-- /See:/ 'interconnectAttachmentAggregatedList' smart constructor.
+data InterconnectAttachmentAggregatedList = InterconnectAttachmentAggregatedList'
+    { _iaalNextPageToken :: !(Maybe Text)
+    , _iaalKind          :: !Text
+    , _iaalItems         :: !(Maybe InterconnectAttachmentAggregatedListItems)
+    , _iaalSelfLink      :: !(Maybe Text)
+    , _iaalWarning       :: !(Maybe InterconnectAttachmentAggregatedListWarning)
+    , _iaalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaalNextPageToken'
+--
+-- * 'iaalKind'
+--
+-- * 'iaalItems'
+--
+-- * 'iaalSelfLink'
+--
+-- * 'iaalWarning'
+--
+-- * 'iaalId'
+interconnectAttachmentAggregatedList
+    :: InterconnectAttachmentAggregatedList
+interconnectAttachmentAggregatedList =
+    InterconnectAttachmentAggregatedList'
+    { _iaalNextPageToken = Nothing
+    , _iaalKind = "compute#interconnectAttachmentAggregatedList"
+    , _iaalItems = Nothing
+    , _iaalSelfLink = Nothing
+    , _iaalWarning = Nothing
+    , _iaalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+iaalNextPageToken :: Lens' InterconnectAttachmentAggregatedList (Maybe Text)
+iaalNextPageToken
+  = lens _iaalNextPageToken
+      (\ s a -> s{_iaalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always
+-- compute#interconnectAttachmentAggregatedList for aggregated lists of
+-- interconnect attachments.
+iaalKind :: Lens' InterconnectAttachmentAggregatedList Text
+iaalKind = lens _iaalKind (\ s a -> s{_iaalKind = a})
+
+-- | A list of InterconnectAttachmentsScopedList resources.
+iaalItems :: Lens' InterconnectAttachmentAggregatedList (Maybe InterconnectAttachmentAggregatedListItems)
+iaalItems
+  = lens _iaalItems (\ s a -> s{_iaalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+iaalSelfLink :: Lens' InterconnectAttachmentAggregatedList (Maybe Text)
+iaalSelfLink
+  = lens _iaalSelfLink (\ s a -> s{_iaalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+iaalWarning :: Lens' InterconnectAttachmentAggregatedList (Maybe InterconnectAttachmentAggregatedListWarning)
+iaalWarning
+  = lens _iaalWarning (\ s a -> s{_iaalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+iaalId :: Lens' InterconnectAttachmentAggregatedList (Maybe Text)
+iaalId = lens _iaalId (\ s a -> s{_iaalId = a})
+
+instance FromJSON
+         InterconnectAttachmentAggregatedList where
+        parseJSON
+          = withObject "InterconnectAttachmentAggregatedList"
+              (\ o ->
+                 InterconnectAttachmentAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#interconnectAttachmentAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InterconnectAttachmentAggregatedList
+         where
+        toJSON InterconnectAttachmentAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _iaalNextPageToken,
+                  Just ("kind" .= _iaalKind),
+                  ("items" .=) <$> _iaalItems,
+                  ("selfLink" .=) <$> _iaalSelfLink,
+                  ("warning" .=) <$> _iaalWarning,
+                  ("id" .=) <$> _iaalId])
+
+-- | [Output Only] A map of scoped operation lists.
+--
+-- /See:/ 'operationAggregatedListItems' smart constructor.
+newtype OperationAggregatedListItems = OperationAggregatedListItems'
+    { _oaliAddtional :: HashMap Text OperationsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oaliAddtional'
+operationAggregatedListItems
+    :: HashMap Text OperationsScopedList -- ^ 'oaliAddtional'
+    -> OperationAggregatedListItems
+operationAggregatedListItems pOaliAddtional_ =
+    OperationAggregatedListItems'
+    { _oaliAddtional = _Coerce # pOaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of operations.
+oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)
+oaliAddtional
+  = lens _oaliAddtional
+      (\ s a -> s{_oaliAddtional = a})
+      . _Coerce
+
+instance FromJSON OperationAggregatedListItems where
+        parseJSON
+          = withObject "OperationAggregatedListItems"
+              (\ o ->
+                 OperationAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON OperationAggregatedListItems where
+        toJSON = toJSON . _oaliAddtional
+
+--
+-- /See:/ 'instanceGroupManagerActionsSummary' smart constructor.
+data InstanceGroupManagerActionsSummary = InstanceGroupManagerActionsSummary'
+    { _igmasDeleting               :: !(Maybe (Textual Int32))
+    , _igmasRestarting             :: !(Maybe (Textual Int32))
+    , _igmasNone                   :: !(Maybe (Textual Int32))
+    , _igmasCreating               :: !(Maybe (Textual Int32))
+    , _igmasVerifying              :: !(Maybe (Textual Int32))
+    , _igmasRefreshing             :: !(Maybe (Textual Int32))
+    , _igmasCreatingWithoutRetries :: !(Maybe (Textual Int32))
+    , _igmasRecreating             :: !(Maybe (Textual Int32))
+    , _igmasAbandoning             :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerActionsSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmasDeleting'
+--
+-- * 'igmasRestarting'
+--
+-- * 'igmasNone'
+--
+-- * 'igmasCreating'
+--
+-- * 'igmasVerifying'
+--
+-- * 'igmasRefreshing'
+--
+-- * 'igmasCreatingWithoutRetries'
+--
+-- * 'igmasRecreating'
+--
+-- * 'igmasAbandoning'
+instanceGroupManagerActionsSummary
+    :: InstanceGroupManagerActionsSummary
+instanceGroupManagerActionsSummary =
+    InstanceGroupManagerActionsSummary'
+    { _igmasDeleting = Nothing
+    , _igmasRestarting = Nothing
+    , _igmasNone = Nothing
+    , _igmasCreating = Nothing
+    , _igmasVerifying = Nothing
+    , _igmasRefreshing = Nothing
+    , _igmasCreatingWithoutRetries = Nothing
+    , _igmasRecreating = Nothing
+    , _igmasAbandoning = Nothing
+    }
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be deleted or are currently being deleted.
+igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasDeleting
+  = lens _igmasDeleting
+      (\ s a -> s{_igmasDeleting = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be restarted or are currently being restarted.
+igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRestarting
+  = lens _igmasRestarting
+      (\ s a -> s{_igmasRestarting = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are running and have no scheduled actions.
+igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasNone
+  = lens _igmasNone (\ s a -> s{_igmasNone = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be created or are currently being created. If the group
+-- fails to create any of these instances, it tries again until it creates
+-- the instance successfully. If you have disabled creation retries, this
+-- field will not be populated; instead, the creatingWithoutRetries field
+-- will be populated.
+igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasCreating
+  = lens _igmasCreating
+      (\ s a -> s{_igmasCreating = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are being verified. See the managedInstances[].currentAction property in
+-- the listManagedInstances method documentation.
+igmasVerifying :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasVerifying
+  = lens _igmasVerifying
+      (\ s a -> s{_igmasVerifying = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are being reconfigured with properties that do not require a restart or
+-- a recreate action. For example, setting or removing target pools for the
+-- instance.
+igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRefreshing
+  = lens _igmasRefreshing
+      (\ s a -> s{_igmasRefreshing = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances that the managed instance group
+-- will attempt to create. The group attempts to create each instance only
+-- once. If the group fails to create any of these instances, it decreases
+-- the group\'s targetSize value accordingly.
+igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasCreatingWithoutRetries
+  = lens _igmasCreatingWithoutRetries
+      (\ s a -> s{_igmasCreatingWithoutRetries = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be recreated or are currently being being recreated.
+-- Recreating an instance deletes the existing root persistent disk and
+-- creates a new disk from the image that is defined in the instance
+-- template.
+igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRecreating
+  = lens _igmasRecreating
+      (\ s a -> s{_igmasRecreating = a})
+      . mapping _Coerce
+
+-- | [Output Only] The total number of instances in the managed instance
+-- group that are scheduled to be abandoned. Abandoning an instance removes
+-- it from the managed instance group without deleting it.
+igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasAbandoning
+  = lens _igmasAbandoning
+      (\ s a -> s{_igmasAbandoning = a})
+      . mapping _Coerce
+
+instance FromJSON InstanceGroupManagerActionsSummary
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerActionsSummary"
+              (\ o ->
+                 InstanceGroupManagerActionsSummary' <$>
+                   (o .:? "deleting") <*> (o .:? "restarting") <*>
+                     (o .:? "none")
+                     <*> (o .:? "creating")
+                     <*> (o .:? "verifying")
+                     <*> (o .:? "refreshing")
+                     <*> (o .:? "creatingWithoutRetries")
+                     <*> (o .:? "recreating")
+                     <*> (o .:? "abandoning"))
+
+instance ToJSON InstanceGroupManagerActionsSummary
+         where
+        toJSON InstanceGroupManagerActionsSummary'{..}
+          = object
+              (catMaybes
+                 [("deleting" .=) <$> _igmasDeleting,
+                  ("restarting" .=) <$> _igmasRestarting,
+                  ("none" .=) <$> _igmasNone,
+                  ("creating" .=) <$> _igmasCreating,
+                  ("verifying" .=) <$> _igmasVerifying,
+                  ("refreshing" .=) <$> _igmasRefreshing,
+                  ("creatingWithoutRetries" .=) <$>
+                    _igmasCreatingWithoutRetries,
+                  ("recreating" .=) <$> _igmasRecreating,
+                  ("abandoning" .=) <$> _igmasAbandoning])
+
+--
+-- /See:/ 'xpnHostList' smart constructor.
+data XpnHostList = XpnHostList'
+    { _xhlNextPageToken :: !(Maybe Text)
+    , _xhlKind          :: !Text
+    , _xhlItems         :: !(Maybe [Project])
+    , _xhlSelfLink      :: !(Maybe Text)
+    , _xhlWarning       :: !(Maybe XpnHostListWarning)
+    , _xhlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'XpnHostList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'xhlNextPageToken'
+--
+-- * 'xhlKind'
+--
+-- * 'xhlItems'
+--
+-- * 'xhlSelfLink'
+--
+-- * 'xhlWarning'
+--
+-- * 'xhlId'
+xpnHostList
+    :: XpnHostList
+xpnHostList =
+    XpnHostList'
+    { _xhlNextPageToken = Nothing
+    , _xhlKind = "compute#xpnHostList"
+    , _xhlItems = Nothing
+    , _xhlSelfLink = Nothing
+    , _xhlWarning = Nothing
+    , _xhlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+xhlNextPageToken :: Lens' XpnHostList (Maybe Text)
+xhlNextPageToken
+  = lens _xhlNextPageToken
+      (\ s a -> s{_xhlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#xpnHostList for lists of
+-- shared VPC hosts.
+xhlKind :: Lens' XpnHostList Text
+xhlKind = lens _xhlKind (\ s a -> s{_xhlKind = a})
+
+-- | [Output Only] A list of shared VPC host project URLs.
+xhlItems :: Lens' XpnHostList [Project]
+xhlItems
+  = lens _xhlItems (\ s a -> s{_xhlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+xhlSelfLink :: Lens' XpnHostList (Maybe Text)
+xhlSelfLink
+  = lens _xhlSelfLink (\ s a -> s{_xhlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+xhlWarning :: Lens' XpnHostList (Maybe XpnHostListWarning)
+xhlWarning
+  = lens _xhlWarning (\ s a -> s{_xhlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+xhlId :: Lens' XpnHostList (Maybe Text)
+xhlId = lens _xhlId (\ s a -> s{_xhlId = a})
+
+instance FromJSON XpnHostList where
+        parseJSON
+          = withObject "XpnHostList"
+              (\ o ->
+                 XpnHostList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#xpnHostList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON XpnHostList where
+        toJSON XpnHostList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _xhlNextPageToken,
+                  Just ("kind" .= _xhlKind),
+                  ("items" .=) <$> _xhlItems,
+                  ("selfLink" .=) <$> _xhlSelfLink,
+                  ("warning" .=) <$> _xhlWarning,
+                  ("id" .=) <$> _xhlId])
+
+--
+-- /See:/ 'instanceTemplateListWarningDataItem' smart constructor.
+data InstanceTemplateListWarningDataItem = InstanceTemplateListWarningDataItem'
+    { _itlwdiValue :: !(Maybe Text)
+    , _itlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplateListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itlwdiValue'
+--
+-- * 'itlwdiKey'
+instanceTemplateListWarningDataItem
+    :: InstanceTemplateListWarningDataItem
+instanceTemplateListWarningDataItem =
+    InstanceTemplateListWarningDataItem'
+    { _itlwdiValue = Nothing
+    , _itlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+itlwdiValue :: Lens' InstanceTemplateListWarningDataItem (Maybe Text)
+itlwdiValue
+  = lens _itlwdiValue (\ s a -> s{_itlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+itlwdiKey :: Lens' InstanceTemplateListWarningDataItem (Maybe Text)
+itlwdiKey
+  = lens _itlwdiKey (\ s a -> s{_itlwdiKey = a})
+
+instance FromJSON InstanceTemplateListWarningDataItem
+         where
+        parseJSON
+          = withObject "InstanceTemplateListWarningDataItem"
+              (\ o ->
+                 InstanceTemplateListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstanceTemplateListWarningDataItem
+         where
+        toJSON InstanceTemplateListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _itlwdiValue,
+                  ("key" .=) <$> _itlwdiKey])
+
+-- | A service account.
+--
+-- /See:/ 'serviceAccount' smart constructor.
+data ServiceAccount = ServiceAccount'
+    { _saEmail  :: !(Maybe Text)
+    , _saScopes :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saEmail'
+--
+-- * 'saScopes'
+serviceAccount
+    :: ServiceAccount
+serviceAccount =
+    ServiceAccount'
+    { _saEmail = Nothing
+    , _saScopes = Nothing
+    }
+
+-- | Email address of the service account.
+saEmail :: Lens' ServiceAccount (Maybe Text)
+saEmail = lens _saEmail (\ s a -> s{_saEmail = a})
+
+-- | The list of scopes to be made available for this service account.
+saScopes :: Lens' ServiceAccount [Text]
+saScopes
+  = lens _saScopes (\ s a -> s{_saScopes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ServiceAccount where
+        parseJSON
+          = withObject "ServiceAccount"
+              (\ o ->
+                 ServiceAccount' <$>
+                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))
+
+instance ToJSON ServiceAccount where
+        toJSON ServiceAccount'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _saEmail,
+                  ("scopes" .=) <$> _saScopes])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'snapshotListWarning' smart constructor.
+data SnapshotListWarning = SnapshotListWarning'
+    { _sData    :: !(Maybe [SnapshotListWarningDataItem])
+    , _sCode    :: !(Maybe SnapshotListWarningCode)
+    , _sMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sData'
+--
+-- * 'sCode'
+--
+-- * 'sMessage'
+snapshotListWarning
+    :: SnapshotListWarning
+snapshotListWarning =
+    SnapshotListWarning'
+    { _sData = Nothing
+    , _sCode = Nothing
+    , _sMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+sData :: Lens' SnapshotListWarning [SnapshotListWarningDataItem]
+sData
+  = lens _sData (\ s a -> s{_sData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+sCode :: Lens' SnapshotListWarning (Maybe SnapshotListWarningCode)
+sCode = lens _sCode (\ s a -> s{_sCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+sMessage :: Lens' SnapshotListWarning (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
+
+instance FromJSON SnapshotListWarning where
+        parseJSON
+          = withObject "SnapshotListWarning"
+              (\ o ->
+                 SnapshotListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SnapshotListWarning where
+        toJSON SnapshotListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _sData, ("code" .=) <$> _sCode,
+                  ("message" .=) <$> _sMessage])
+
+--
+-- /See:/ 'regionInstanceGroupManagersAbandonInstancesRequest' smart constructor.
+newtype RegionInstanceGroupManagersAbandonInstancesRequest = RegionInstanceGroupManagersAbandonInstancesRequest'
+    { _rigmairInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmairInstances'
+regionInstanceGroupManagersAbandonInstancesRequest
+    :: RegionInstanceGroupManagersAbandonInstancesRequest
+regionInstanceGroupManagersAbandonInstancesRequest =
+    RegionInstanceGroupManagersAbandonInstancesRequest'
+    { _rigmairInstances = Nothing
+    }
+
+-- | The URLs of one or more instances to abandon. This can be a full URL or
+-- a partial URL, such as zones\/[ZONE]\/instances\/[INSTANCE_NAME].
+rigmairInstances :: Lens' RegionInstanceGroupManagersAbandonInstancesRequest [Text]
+rigmairInstances
+  = lens _rigmairInstances
+      (\ s a -> s{_rigmairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupManagersAbandonInstancesRequest
+         where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersAbandonInstancesRequest"
+              (\ o ->
+                 RegionInstanceGroupManagersAbandonInstancesRequest'
+                   <$> (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupManagersAbandonInstancesRequest
+         where
+        toJSON
+          RegionInstanceGroupManagersAbandonInstancesRequest'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _rigmairInstances])
+
+-- | Contains a list of networks.
+--
+-- /See:/ 'networkList' smart constructor.
+data NetworkList = NetworkList'
+    { _nlNextPageToken :: !(Maybe Text)
+    , _nlKind          :: !Text
+    , _nlItems         :: !(Maybe [Network])
+    , _nlSelfLink      :: !(Maybe Text)
+    , _nlWarning       :: !(Maybe NetworkListWarning)
+    , _nlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nlNextPageToken'
+--
+-- * 'nlKind'
+--
+-- * 'nlItems'
+--
+-- * 'nlSelfLink'
+--
+-- * 'nlWarning'
+--
+-- * 'nlId'
+networkList
+    :: NetworkList
+networkList =
+    NetworkList'
+    { _nlNextPageToken = Nothing
+    , _nlKind = "compute#networkList"
+    , _nlItems = Nothing
+    , _nlSelfLink = Nothing
+    , _nlWarning = Nothing
+    , _nlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+nlNextPageToken :: Lens' NetworkList (Maybe Text)
+nlNextPageToken
+  = lens _nlNextPageToken
+      (\ s a -> s{_nlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#networkList for lists of
+-- networks.
+nlKind :: Lens' NetworkList Text
+nlKind = lens _nlKind (\ s a -> s{_nlKind = a})
+
+-- | A list of Network resources.
+nlItems :: Lens' NetworkList [Network]
+nlItems
+  = lens _nlItems (\ s a -> s{_nlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+nlSelfLink :: Lens' NetworkList (Maybe Text)
+nlSelfLink
+  = lens _nlSelfLink (\ s a -> s{_nlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+nlWarning :: Lens' NetworkList (Maybe NetworkListWarning)
+nlWarning
+  = lens _nlWarning (\ s a -> s{_nlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+nlId :: Lens' NetworkList (Maybe Text)
+nlId = lens _nlId (\ s a -> s{_nlId = a})
+
+instance FromJSON NetworkList where
+        parseJSON
+          = withObject "NetworkList"
+              (\ o ->
+                 NetworkList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#networkList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NetworkList where
+        toJSON NetworkList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _nlNextPageToken,
+                  Just ("kind" .= _nlKind), ("items" .=) <$> _nlItems,
+                  ("selfLink" .=) <$> _nlSelfLink,
+                  ("warning" .=) <$> _nlWarning, ("id" .=) <$> _nlId])
+
+-- | A network peering attached to a network resource. The message includes
+-- the peering name, peer network, peering state, and a flag indicating
+-- whether Google Compute Engine should automatically create routes for the
+-- peering.
+--
+-- /See:/ 'networkPeering' smart constructor.
+data NetworkPeering = NetworkPeering'
+    { _netState            :: !(Maybe NetworkPeeringState)
+    , _netStateDetails     :: !(Maybe Text)
+    , _netNetwork          :: !(Maybe Text)
+    , _netName             :: !(Maybe Text)
+    , _netAutoCreateRoutes :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkPeering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'netState'
+--
+-- * 'netStateDetails'
+--
+-- * 'netNetwork'
+--
+-- * 'netName'
+--
+-- * 'netAutoCreateRoutes'
+networkPeering
+    :: NetworkPeering
+networkPeering =
+    NetworkPeering'
+    { _netState = Nothing
+    , _netStateDetails = Nothing
+    , _netNetwork = Nothing
+    , _netName = Nothing
+    , _netAutoCreateRoutes = Nothing
+    }
+
+-- | [Output Only] State for the peering.
+netState :: Lens' NetworkPeering (Maybe NetworkPeeringState)
+netState = lens _netState (\ s a -> s{_netState = a})
+
+-- | [Output Only] Details about the current state of the peering.
+netStateDetails :: Lens' NetworkPeering (Maybe Text)
+netStateDetails
+  = lens _netStateDetails
+      (\ s a -> s{_netStateDetails = a})
+
+-- | The URL of the peer network. It can be either full URL or partial URL.
+-- The peer network may belong to a different project. If the partial URL
+-- does not contain project, it is assumed that the peer network is in the
+-- same project as the current network.
+netNetwork :: Lens' NetworkPeering (Maybe Text)
+netNetwork
+  = lens _netNetwork (\ s a -> s{_netNetwork = a})
+
+-- | Name of this peering. Provided by the client when the peering is
+-- created. The name must comply with RFC1035. Specifically, the name must
+-- be 1-63 characters long and match regular expression
+-- \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first character must be a
+-- lowercase letter, and all the following characters must be a dash,
+-- lowercase letter, or digit, except the last character, which cannot be a
+-- dash.
+netName :: Lens' NetworkPeering (Maybe Text)
+netName = lens _netName (\ s a -> s{_netName = a})
+
+-- | Indicates whether full mesh connectivity is created and managed
+-- automatically. When it is set to true, Google Compute Engine will
+-- automatically create and manage the routes between two networks when the
+-- state is ACTIVE. Otherwise, user needs to create routes manually to
+-- route packets to peer network.
+netAutoCreateRoutes :: Lens' NetworkPeering (Maybe Bool)
+netAutoCreateRoutes
+  = lens _netAutoCreateRoutes
+      (\ s a -> s{_netAutoCreateRoutes = a})
+
+instance FromJSON NetworkPeering where
+        parseJSON
+          = withObject "NetworkPeering"
+              (\ o ->
+                 NetworkPeering' <$>
+                   (o .:? "state") <*> (o .:? "stateDetails") <*>
+                     (o .:? "network")
+                     <*> (o .:? "name")
+                     <*> (o .:? "autoCreateRoutes"))
+
+instance ToJSON NetworkPeering where
+        toJSON NetworkPeering'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _netState,
+                  ("stateDetails" .=) <$> _netStateDetails,
+                  ("network" .=) <$> _netNetwork,
+                  ("name" .=) <$> _netName,
+                  ("autoCreateRoutes" .=) <$> _netAutoCreateRoutes])
+
+--
+-- /See:/ 'targetSSLProxyListWarningDataItem' smart constructor.
+data TargetSSLProxyListWarningDataItem = TargetSSLProxyListWarningDataItem'
+    { _tsplwdiValue :: !(Maybe Text)
+    , _tsplwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxyListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsplwdiValue'
+--
+-- * 'tsplwdiKey'
+targetSSLProxyListWarningDataItem
+    :: TargetSSLProxyListWarningDataItem
+targetSSLProxyListWarningDataItem =
+    TargetSSLProxyListWarningDataItem'
+    { _tsplwdiValue = Nothing
+    , _tsplwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tsplwdiValue :: Lens' TargetSSLProxyListWarningDataItem (Maybe Text)
+tsplwdiValue
+  = lens _tsplwdiValue (\ s a -> s{_tsplwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tsplwdiKey :: Lens' TargetSSLProxyListWarningDataItem (Maybe Text)
+tsplwdiKey
+  = lens _tsplwdiKey (\ s a -> s{_tsplwdiKey = a})
+
+instance FromJSON TargetSSLProxyListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetSSLProxyListWarningDataItem"
+              (\ o ->
+                 TargetSSLProxyListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetSSLProxyListWarningDataItem
+         where
+        toJSON TargetSSLProxyListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tsplwdiValue,
+                  ("key" .=) <$> _tsplwdiKey])
+
+--
+-- /See:/ 'instanceGroupsListInstancesRequest' smart constructor.
+newtype InstanceGroupsListInstancesRequest = InstanceGroupsListInstancesRequest'
+    { _iglirInstanceState :: Maybe InstanceGroupsListInstancesRequestInstanceState
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglirInstanceState'
+instanceGroupsListInstancesRequest
+    :: InstanceGroupsListInstancesRequest
+instanceGroupsListInstancesRequest =
+    InstanceGroupsListInstancesRequest'
+    { _iglirInstanceState = Nothing
+    }
+
+-- | A filter for the state of the instances in the instance group. Valid
+-- options are ALL or RUNNING. If you do not specify this parameter the
+-- list includes all instances regardless of their state.
+iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)
+iglirInstanceState
+  = lens _iglirInstanceState
+      (\ s a -> s{_iglirInstanceState = a})
+
+instance FromJSON InstanceGroupsListInstancesRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsListInstancesRequest"
+              (\ o ->
+                 InstanceGroupsListInstancesRequest' <$>
+                   (o .:? "instanceState"))
+
+instance ToJSON InstanceGroupsListInstancesRequest
+         where
+        toJSON InstanceGroupsListInstancesRequest'{..}
+          = object
+              (catMaybes
+                 [("instanceState" .=) <$> _iglirInstanceState])
+
+--
+-- /See:/ 'instanceListReferrersWarningDataItem' smart constructor.
+data InstanceListReferrersWarningDataItem = InstanceListReferrersWarningDataItem'
+    { _ilrwdiValue :: !(Maybe Text)
+    , _ilrwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceListReferrersWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrwdiValue'
+--
+-- * 'ilrwdiKey'
+instanceListReferrersWarningDataItem
+    :: InstanceListReferrersWarningDataItem
+instanceListReferrersWarningDataItem =
+    InstanceListReferrersWarningDataItem'
+    { _ilrwdiValue = Nothing
+    , _ilrwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ilrwdiValue :: Lens' InstanceListReferrersWarningDataItem (Maybe Text)
+ilrwdiValue
+  = lens _ilrwdiValue (\ s a -> s{_ilrwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ilrwdiKey :: Lens' InstanceListReferrersWarningDataItem (Maybe Text)
+ilrwdiKey
+  = lens _ilrwdiKey (\ s a -> s{_ilrwdiKey = a})
+
+instance FromJSON
+         InstanceListReferrersWarningDataItem where
+        parseJSON
+          = withObject "InstanceListReferrersWarningDataItem"
+              (\ o ->
+                 InstanceListReferrersWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstanceListReferrersWarningDataItem
+         where
+        toJSON InstanceListReferrersWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ilrwdiValue,
+                  ("key" .=) <$> _ilrwdiKey])
+
+--
+-- /See:/ 'routeListWarningDataItem' smart constructor.
+data RouteListWarningDataItem = RouteListWarningDataItem'
+    { _rValue :: !(Maybe Text)
+    , _rKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rValue'
+--
+-- * 'rKey'
+routeListWarningDataItem
+    :: RouteListWarningDataItem
+routeListWarningDataItem =
+    RouteListWarningDataItem'
+    { _rValue = Nothing
+    , _rKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rValue :: Lens' RouteListWarningDataItem (Maybe Text)
+rValue = lens _rValue (\ s a -> s{_rValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rKey :: Lens' RouteListWarningDataItem (Maybe Text)
+rKey = lens _rKey (\ s a -> s{_rKey = a})
+
+instance FromJSON RouteListWarningDataItem where
+        parseJSON
+          = withObject "RouteListWarningDataItem"
+              (\ o ->
+                 RouteListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RouteListWarningDataItem where
+        toJSON RouteListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rValue, ("key" .=) <$> _rKey])
+
+--
+-- /See:/ 'interconnectAttachmentsScopedList' smart constructor.
+data InterconnectAttachmentsScopedList = InterconnectAttachmentsScopedList'
+    { _iaslWarning                 :: !(Maybe InterconnectAttachmentsScopedListWarning)
+    , _iaslInterconnectAttachments :: !(Maybe [InterconnectAttachment])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaslWarning'
+--
+-- * 'iaslInterconnectAttachments'
+interconnectAttachmentsScopedList
+    :: InterconnectAttachmentsScopedList
+interconnectAttachmentsScopedList =
+    InterconnectAttachmentsScopedList'
+    { _iaslWarning = Nothing
+    , _iaslInterconnectAttachments = Nothing
+    }
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+iaslWarning :: Lens' InterconnectAttachmentsScopedList (Maybe InterconnectAttachmentsScopedListWarning)
+iaslWarning
+  = lens _iaslWarning (\ s a -> s{_iaslWarning = a})
+
+-- | A list of interconnect attachments contained in this scope.
+iaslInterconnectAttachments :: Lens' InterconnectAttachmentsScopedList [InterconnectAttachment]
+iaslInterconnectAttachments
+  = lens _iaslInterconnectAttachments
+      (\ s a -> s{_iaslInterconnectAttachments = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InterconnectAttachmentsScopedList
+         where
+        parseJSON
+          = withObject "InterconnectAttachmentsScopedList"
+              (\ o ->
+                 InterconnectAttachmentsScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "interconnectAttachments" .!= mempty))
+
+instance ToJSON InterconnectAttachmentsScopedList
+         where
+        toJSON InterconnectAttachmentsScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _iaslWarning,
+                  ("interconnectAttachments" .=) <$>
+                    _iaslInterconnectAttachments])
+
+--
+-- /See:/ 'securityPolicyList' smart constructor.
+data SecurityPolicyList = SecurityPolicyList'
+    { _splNextPageToken :: !(Maybe Text)
+    , _splKind          :: !Text
+    , _splItems         :: !(Maybe [SecurityPolicy])
+    , _splWarning       :: !(Maybe SecurityPolicyListWarning)
+    , _splId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splNextPageToken'
+--
+-- * 'splKind'
+--
+-- * 'splItems'
+--
+-- * 'splWarning'
+--
+-- * 'splId'
+securityPolicyList
+    :: SecurityPolicyList
+securityPolicyList =
+    SecurityPolicyList'
+    { _splNextPageToken = Nothing
+    , _splKind = "compute#securityPolicyList"
+    , _splItems = Nothing
+    , _splWarning = Nothing
+    , _splId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+splNextPageToken :: Lens' SecurityPolicyList (Maybe Text)
+splNextPageToken
+  = lens _splNextPageToken
+      (\ s a -> s{_splNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#securityPolicyList for
+-- listsof securityPolicies
+splKind :: Lens' SecurityPolicyList Text
+splKind = lens _splKind (\ s a -> s{_splKind = a})
+
+-- | A list of SecurityPolicy resources.
+splItems :: Lens' SecurityPolicyList [SecurityPolicy]
+splItems
+  = lens _splItems (\ s a -> s{_splItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning message.
+splWarning :: Lens' SecurityPolicyList (Maybe SecurityPolicyListWarning)
+splWarning
+  = lens _splWarning (\ s a -> s{_splWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+splId :: Lens' SecurityPolicyList (Maybe Text)
+splId = lens _splId (\ s a -> s{_splId = a})
+
+instance FromJSON SecurityPolicyList where
+        parseJSON
+          = withObject "SecurityPolicyList"
+              (\ o ->
+                 SecurityPolicyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#securityPolicyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SecurityPolicyList where
+        toJSON SecurityPolicyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _splNextPageToken,
+                  Just ("kind" .= _splKind),
+                  ("items" .=) <$> _splItems,
+                  ("warning" .=) <$> _splWarning,
+                  ("id" .=) <$> _splId])
+
+--
+-- /See:/ 'commitmentAggregatedList' smart constructor.
+data CommitmentAggregatedList = CommitmentAggregatedList'
+    { _calNextPageToken :: !(Maybe Text)
+    , _calKind          :: !Text
+    , _calItems         :: !(Maybe CommitmentAggregatedListItems)
+    , _calSelfLink      :: !(Maybe Text)
+    , _calWarning       :: !(Maybe CommitmentAggregatedListWarning)
+    , _calId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'calNextPageToken'
+--
+-- * 'calKind'
+--
+-- * 'calItems'
+--
+-- * 'calSelfLink'
+--
+-- * 'calWarning'
+--
+-- * 'calId'
+commitmentAggregatedList
+    :: CommitmentAggregatedList
+commitmentAggregatedList =
+    CommitmentAggregatedList'
+    { _calNextPageToken = Nothing
+    , _calKind = "compute#commitmentAggregatedList"
+    , _calItems = Nothing
+    , _calSelfLink = Nothing
+    , _calWarning = Nothing
+    , _calId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+calNextPageToken :: Lens' CommitmentAggregatedList (Maybe Text)
+calNextPageToken
+  = lens _calNextPageToken
+      (\ s a -> s{_calNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#commitmentAggregatedList
+-- for aggregated lists of commitments.
+calKind :: Lens' CommitmentAggregatedList Text
+calKind = lens _calKind (\ s a -> s{_calKind = a})
+
+-- | A list of CommitmentsScopedList resources.
+calItems :: Lens' CommitmentAggregatedList (Maybe CommitmentAggregatedListItems)
+calItems = lens _calItems (\ s a -> s{_calItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+calSelfLink :: Lens' CommitmentAggregatedList (Maybe Text)
+calSelfLink
+  = lens _calSelfLink (\ s a -> s{_calSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+calWarning :: Lens' CommitmentAggregatedList (Maybe CommitmentAggregatedListWarning)
+calWarning
+  = lens _calWarning (\ s a -> s{_calWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+calId :: Lens' CommitmentAggregatedList (Maybe Text)
+calId = lens _calId (\ s a -> s{_calId = a})
+
+instance FromJSON CommitmentAggregatedList where
+        parseJSON
+          = withObject "CommitmentAggregatedList"
+              (\ o ->
+                 CommitmentAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#commitmentAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON CommitmentAggregatedList where
+        toJSON CommitmentAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _calNextPageToken,
+                  Just ("kind" .= _calKind),
+                  ("items" .=) <$> _calItems,
+                  ("selfLink" .=) <$> _calSelfLink,
+                  ("warning" .=) <$> _calWarning,
+                  ("id" .=) <$> _calId])
+
+-- | Contains a list of InstanceGroup resources.
+--
+-- /See:/ 'regionInstanceGroupList' smart constructor.
+data RegionInstanceGroupList = RegionInstanceGroupList'
+    { _riglNextPageToken :: !(Maybe Text)
+    , _riglKind          :: !Text
+    , _riglItems         :: !(Maybe [InstanceGroup])
+    , _riglSelfLink      :: !(Maybe Text)
+    , _riglWarning       :: !(Maybe RegionInstanceGroupListWarning)
+    , _riglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riglNextPageToken'
+--
+-- * 'riglKind'
+--
+-- * 'riglItems'
+--
+-- * 'riglSelfLink'
+--
+-- * 'riglWarning'
+--
+-- * 'riglId'
+regionInstanceGroupList
+    :: RegionInstanceGroupList
+regionInstanceGroupList =
+    RegionInstanceGroupList'
+    { _riglNextPageToken = Nothing
+    , _riglKind = "compute#regionInstanceGroupList"
+    , _riglItems = Nothing
+    , _riglSelfLink = Nothing
+    , _riglWarning = Nothing
+    , _riglId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+riglNextPageToken :: Lens' RegionInstanceGroupList (Maybe Text)
+riglNextPageToken
+  = lens _riglNextPageToken
+      (\ s a -> s{_riglNextPageToken = a})
+
+-- | The resource type.
+riglKind :: Lens' RegionInstanceGroupList Text
+riglKind = lens _riglKind (\ s a -> s{_riglKind = a})
+
+-- | A list of InstanceGroup resources.
+riglItems :: Lens' RegionInstanceGroupList [InstanceGroup]
+riglItems
+  = lens _riglItems (\ s a -> s{_riglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+riglSelfLink :: Lens' RegionInstanceGroupList (Maybe Text)
+riglSelfLink
+  = lens _riglSelfLink (\ s a -> s{_riglSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+riglWarning :: Lens' RegionInstanceGroupList (Maybe RegionInstanceGroupListWarning)
+riglWarning
+  = lens _riglWarning (\ s a -> s{_riglWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+riglId :: Lens' RegionInstanceGroupList (Maybe Text)
+riglId = lens _riglId (\ s a -> s{_riglId = a})
+
+instance FromJSON RegionInstanceGroupList where
+        parseJSON
+          = withObject "RegionInstanceGroupList"
+              (\ o ->
+                 RegionInstanceGroupList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#regionInstanceGroupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionInstanceGroupList where
+        toJSON RegionInstanceGroupList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _riglNextPageToken,
+                  Just ("kind" .= _riglKind),
+                  ("items" .=) <$> _riglItems,
+                  ("selfLink" .=) <$> _riglSelfLink,
+                  ("warning" .=) <$> _riglWarning,
+                  ("id" .=) <$> _riglId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'vMEndpointNATMAppingsListWarning' smart constructor.
+data VMEndpointNATMAppingsListWarning = VMEndpointNATMAppingsListWarning'
+    { _vmenatmalwData    :: !(Maybe [VMEndpointNATMAppingsListWarningDataItem])
+    , _vmenatmalwCode    :: !(Maybe VMEndpointNATMAppingsListWarningCode)
+    , _vmenatmalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VMEndpointNATMAppingsListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vmenatmalwData'
+--
+-- * 'vmenatmalwCode'
+--
+-- * 'vmenatmalwMessage'
+vMEndpointNATMAppingsListWarning
+    :: VMEndpointNATMAppingsListWarning
+vMEndpointNATMAppingsListWarning =
+    VMEndpointNATMAppingsListWarning'
+    { _vmenatmalwData = Nothing
+    , _vmenatmalwCode = Nothing
+    , _vmenatmalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+vmenatmalwData :: Lens' VMEndpointNATMAppingsListWarning [VMEndpointNATMAppingsListWarningDataItem]
+vmenatmalwData
+  = lens _vmenatmalwData
+      (\ s a -> s{_vmenatmalwData = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+vmenatmalwCode :: Lens' VMEndpointNATMAppingsListWarning (Maybe VMEndpointNATMAppingsListWarningCode)
+vmenatmalwCode
+  = lens _vmenatmalwCode
+      (\ s a -> s{_vmenatmalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+vmenatmalwMessage :: Lens' VMEndpointNATMAppingsListWarning (Maybe Text)
+vmenatmalwMessage
+  = lens _vmenatmalwMessage
+      (\ s a -> s{_vmenatmalwMessage = a})
+
+instance FromJSON VMEndpointNATMAppingsListWarning
+         where
+        parseJSON
+          = withObject "VMEndpointNATMAppingsListWarning"
+              (\ o ->
+                 VMEndpointNATMAppingsListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON VMEndpointNATMAppingsListWarning
+         where
+        toJSON VMEndpointNATMAppingsListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _vmenatmalwData,
+                  ("code" .=) <$> _vmenatmalwCode,
+                  ("message" .=) <$> _vmenatmalwMessage])
+
+-- | A list of TargetPool resources.
+--
+-- /See:/ 'targetPoolAggregatedListItems' smart constructor.
+newtype TargetPoolAggregatedListItems = TargetPoolAggregatedListItems'
+    { _tpaliAddtional :: HashMap Text TargetPoolsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpaliAddtional'
+targetPoolAggregatedListItems
+    :: HashMap Text TargetPoolsScopedList -- ^ 'tpaliAddtional'
+    -> TargetPoolAggregatedListItems
+targetPoolAggregatedListItems pTpaliAddtional_ =
+    TargetPoolAggregatedListItems'
+    { _tpaliAddtional = _Coerce # pTpaliAddtional_
+    }
+
+-- | Name of the scope containing this set of target pools.
+tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)
+tpaliAddtional
+  = lens _tpaliAddtional
+      (\ s a -> s{_tpaliAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetPoolAggregatedListItems where
+        parseJSON
+          = withObject "TargetPoolAggregatedListItems"
+              (\ o ->
+                 TargetPoolAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetPoolAggregatedListItems where
+        toJSON = toJSON . _tpaliAddtional
+
+--
+-- /See:/ 'nodeGroupsAddNodesRequest' smart constructor.
+newtype NodeGroupsAddNodesRequest = NodeGroupsAddNodesRequest'
+    { _nganrAdditionalNodeCount :: Maybe (Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsAddNodesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nganrAdditionalNodeCount'
+nodeGroupsAddNodesRequest
+    :: NodeGroupsAddNodesRequest
+nodeGroupsAddNodesRequest =
+    NodeGroupsAddNodesRequest'
+    { _nganrAdditionalNodeCount = Nothing
+    }
+
+-- | Count of additional nodes to be added to the node group.
+nganrAdditionalNodeCount :: Lens' NodeGroupsAddNodesRequest (Maybe Int32)
+nganrAdditionalNodeCount
+  = lens _nganrAdditionalNodeCount
+      (\ s a -> s{_nganrAdditionalNodeCount = a})
+      . mapping _Coerce
+
+instance FromJSON NodeGroupsAddNodesRequest where
+        parseJSON
+          = withObject "NodeGroupsAddNodesRequest"
+              (\ o ->
+                 NodeGroupsAddNodesRequest' <$>
+                   (o .:? "additionalNodeCount"))
+
+instance ToJSON NodeGroupsAddNodesRequest where
+        toJSON NodeGroupsAddNodesRequest'{..}
+          = object
+              (catMaybes
+                 [("additionalNodeCount" .=) <$>
+                    _nganrAdditionalNodeCount])
+
+--
+-- /See:/ 'nodeTypeAggregatedList' smart constructor.
+data NodeTypeAggregatedList = NodeTypeAggregatedList'
+    { _ntalNextPageToken :: !(Maybe Text)
+    , _ntalKind          :: !Text
+    , _ntalItems         :: !(Maybe NodeTypeAggregatedListItems)
+    , _ntalSelfLink      :: !(Maybe Text)
+    , _ntalWarning       :: !(Maybe NodeTypeAggregatedListWarning)
+    , _ntalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntalNextPageToken'
+--
+-- * 'ntalKind'
+--
+-- * 'ntalItems'
+--
+-- * 'ntalSelfLink'
+--
+-- * 'ntalWarning'
+--
+-- * 'ntalId'
+nodeTypeAggregatedList
+    :: NodeTypeAggregatedList
+nodeTypeAggregatedList =
+    NodeTypeAggregatedList'
+    { _ntalNextPageToken = Nothing
+    , _ntalKind = "compute#nodeTypeAggregatedList"
+    , _ntalItems = Nothing
+    , _ntalSelfLink = Nothing
+    , _ntalWarning = Nothing
+    , _ntalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ntalNextPageToken :: Lens' NodeTypeAggregatedList (Maybe Text)
+ntalNextPageToken
+  = lens _ntalNextPageToken
+      (\ s a -> s{_ntalNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeTypeAggregatedList for
+-- aggregated lists of node types.
+ntalKind :: Lens' NodeTypeAggregatedList Text
+ntalKind = lens _ntalKind (\ s a -> s{_ntalKind = a})
+
+-- | A list of NodeTypesScopedList resources.
+ntalItems :: Lens' NodeTypeAggregatedList (Maybe NodeTypeAggregatedListItems)
+ntalItems
+  = lens _ntalItems (\ s a -> s{_ntalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+ntalSelfLink :: Lens' NodeTypeAggregatedList (Maybe Text)
+ntalSelfLink
+  = lens _ntalSelfLink (\ s a -> s{_ntalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ntalWarning :: Lens' NodeTypeAggregatedList (Maybe NodeTypeAggregatedListWarning)
+ntalWarning
+  = lens _ntalWarning (\ s a -> s{_ntalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ntalId :: Lens' NodeTypeAggregatedList (Maybe Text)
+ntalId = lens _ntalId (\ s a -> s{_ntalId = a})
+
+instance FromJSON NodeTypeAggregatedList where
+        parseJSON
+          = withObject "NodeTypeAggregatedList"
+              (\ o ->
+                 NodeTypeAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeTypeAggregatedList where
+        toJSON NodeTypeAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ntalNextPageToken,
+                  Just ("kind" .= _ntalKind),
+                  ("items" .=) <$> _ntalItems,
+                  ("selfLink" .=) <$> _ntalSelfLink,
+                  ("warning" .=) <$> _ntalWarning,
+                  ("id" .=) <$> _ntalId])
+
+--
+-- /See:/ 'targetInstancesScopedList' smart constructor.
+data TargetInstancesScopedList = TargetInstancesScopedList'
+    { _tislWarning         :: !(Maybe TargetInstancesScopedListWarning)
+    , _tislTargetInstances :: !(Maybe [TargetInstance])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislWarning'
+--
+-- * 'tislTargetInstances'
+targetInstancesScopedList
+    :: TargetInstancesScopedList
+targetInstancesScopedList =
+    TargetInstancesScopedList'
+    { _tislWarning = Nothing
+    , _tislTargetInstances = Nothing
+    }
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)
+tislWarning
+  = lens _tislWarning (\ s a -> s{_tislWarning = a})
+
+-- | A list of target instances contained in this scope.
+tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]
+tislTargetInstances
+  = lens _tislTargetInstances
+      (\ s a -> s{_tislTargetInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetInstancesScopedList where
+        parseJSON
+          = withObject "TargetInstancesScopedList"
+              (\ o ->
+                 TargetInstancesScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "targetInstances" .!= mempty))
+
+instance ToJSON TargetInstancesScopedList where
+        toJSON TargetInstancesScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _tislWarning,
+                  ("targetInstances" .=) <$> _tislTargetInstances])
+
+--
+-- /See:/ 'subnetworkListWarningDataItem' smart constructor.
+data SubnetworkListWarningDataItem = SubnetworkListWarningDataItem'
+    { _sValue :: !(Maybe Text)
+    , _sKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sValue'
+--
+-- * 'sKey'
+subnetworkListWarningDataItem
+    :: SubnetworkListWarningDataItem
+subnetworkListWarningDataItem =
+    SubnetworkListWarningDataItem'
+    { _sValue = Nothing
+    , _sKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+sValue :: Lens' SubnetworkListWarningDataItem (Maybe Text)
+sValue = lens _sValue (\ s a -> s{_sValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+sKey :: Lens' SubnetworkListWarningDataItem (Maybe Text)
+sKey = lens _sKey (\ s a -> s{_sKey = a})
+
+instance FromJSON SubnetworkListWarningDataItem where
+        parseJSON
+          = withObject "SubnetworkListWarningDataItem"
+              (\ o ->
+                 SubnetworkListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SubnetworkListWarningDataItem where
+        toJSON SubnetworkListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _sValue, ("key" .=) <$> _sKey])
+
+--
+-- /See:/ 'projectsDisableXpnResourceRequest' smart constructor.
+newtype ProjectsDisableXpnResourceRequest = ProjectsDisableXpnResourceRequest'
+    { _pdxrrXpnResource :: Maybe XpnResourceId
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsDisableXpnResourceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdxrrXpnResource'
+projectsDisableXpnResourceRequest
+    :: ProjectsDisableXpnResourceRequest
+projectsDisableXpnResourceRequest =
+    ProjectsDisableXpnResourceRequest'
+    { _pdxrrXpnResource = Nothing
+    }
+
+-- | Service resource (a.k.a service project) ID.
+pdxrrXpnResource :: Lens' ProjectsDisableXpnResourceRequest (Maybe XpnResourceId)
+pdxrrXpnResource
+  = lens _pdxrrXpnResource
+      (\ s a -> s{_pdxrrXpnResource = a})
+
+instance FromJSON ProjectsDisableXpnResourceRequest
+         where
+        parseJSON
+          = withObject "ProjectsDisableXpnResourceRequest"
+              (\ o ->
+                 ProjectsDisableXpnResourceRequest' <$>
+                   (o .:? "xpnResource"))
+
+instance ToJSON ProjectsDisableXpnResourceRequest
+         where
+        toJSON ProjectsDisableXpnResourceRequest'{..}
+          = object
+              (catMaybes
+                 [("xpnResource" .=) <$> _pdxrrXpnResource])
+
+-- | A list of AddressesScopedList resources.
+--
+-- /See:/ 'addressAggregatedListItems' smart constructor.
+newtype AddressAggregatedListItems = AddressAggregatedListItems'
+    { _aAddtional :: HashMap Text AddressesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAddtional'
+addressAggregatedListItems
+    :: HashMap Text AddressesScopedList -- ^ 'aAddtional'
+    -> AddressAggregatedListItems
+addressAggregatedListItems pAAddtional_ =
+    AddressAggregatedListItems'
+    { _aAddtional = _Coerce # pAAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of addresses.
+aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)
+aAddtional
+  = lens _aAddtional (\ s a -> s{_aAddtional = a}) .
+      _Coerce
+
+instance FromJSON AddressAggregatedListItems where
+        parseJSON
+          = withObject "AddressAggregatedListItems"
+              (\ o ->
+                 AddressAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON AddressAggregatedListItems where
+        toJSON = toJSON . _aAddtional
+
+-- | Contains a list of Autoscaler resources.
+--
+-- /See:/ 'autoscalerList' smart constructor.
+data AutoscalerList = AutoscalerList'
+    { _autNextPageToken :: !(Maybe Text)
+    , _autKind          :: !Text
+    , _autItems         :: !(Maybe [Autoscaler])
+    , _autSelfLink      :: !(Maybe Text)
+    , _autWarning       :: !(Maybe AutoscalerListWarning)
+    , _autId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'autNextPageToken'
+--
+-- * 'autKind'
+--
+-- * 'autItems'
+--
+-- * 'autSelfLink'
+--
+-- * 'autWarning'
+--
+-- * 'autId'
+autoscalerList
+    :: AutoscalerList
+autoscalerList =
+    AutoscalerList'
+    { _autNextPageToken = Nothing
+    , _autKind = "compute#autoscalerList"
+    , _autItems = Nothing
+    , _autSelfLink = Nothing
+    , _autWarning = Nothing
+    , _autId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+autNextPageToken :: Lens' AutoscalerList (Maybe Text)
+autNextPageToken
+  = lens _autNextPageToken
+      (\ s a -> s{_autNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#autoscalerList for lists
+-- of autoscalers.
+autKind :: Lens' AutoscalerList Text
+autKind = lens _autKind (\ s a -> s{_autKind = a})
+
+-- | A list of Autoscaler resources.
+autItems :: Lens' AutoscalerList [Autoscaler]
+autItems
+  = lens _autItems (\ s a -> s{_autItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+autSelfLink :: Lens' AutoscalerList (Maybe Text)
+autSelfLink
+  = lens _autSelfLink (\ s a -> s{_autSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+autWarning :: Lens' AutoscalerList (Maybe AutoscalerListWarning)
+autWarning
+  = lens _autWarning (\ s a -> s{_autWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+autId :: Lens' AutoscalerList (Maybe Text)
+autId = lens _autId (\ s a -> s{_autId = a})
+
+instance FromJSON AutoscalerList where
+        parseJSON
+          = withObject "AutoscalerList"
+              (\ o ->
+                 AutoscalerList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#autoscalerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AutoscalerList where
+        toJSON AutoscalerList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _autNextPageToken,
+                  Just ("kind" .= _autKind),
+                  ("items" .=) <$> _autItems,
+                  ("selfLink" .=) <$> _autSelfLink,
+                  ("warning" .=) <$> _autWarning,
+                  ("id" .=) <$> _autId])
+
+--
+-- /See:/ 'interconnectListWarningDataItem' smart constructor.
+data InterconnectListWarningDataItem = InterconnectListWarningDataItem'
+    { _iValue :: !(Maybe Text)
+    , _iKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iValue'
+--
+-- * 'iKey'
+interconnectListWarningDataItem
+    :: InterconnectListWarningDataItem
+interconnectListWarningDataItem =
+    InterconnectListWarningDataItem'
+    { _iValue = Nothing
+    , _iKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+iValue :: Lens' InterconnectListWarningDataItem (Maybe Text)
+iValue = lens _iValue (\ s a -> s{_iValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+iKey :: Lens' InterconnectListWarningDataItem (Maybe Text)
+iKey = lens _iKey (\ s a -> s{_iKey = a})
+
+instance FromJSON InterconnectListWarningDataItem
+         where
+        parseJSON
+          = withObject "InterconnectListWarningDataItem"
+              (\ o ->
+                 InterconnectListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InterconnectListWarningDataItem where
+        toJSON InterconnectListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _iValue, ("key" .=) <$> _iKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'subnetworkAggregatedListWarning' smart constructor.
+data SubnetworkAggregatedListWarning = SubnetworkAggregatedListWarning'
+    { _salwData    :: !(Maybe [SubnetworkAggregatedListWarningDataItem])
+    , _salwCode    :: !(Maybe SubnetworkAggregatedListWarningCode)
+    , _salwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'salwData'
+--
+-- * 'salwCode'
+--
+-- * 'salwMessage'
+subnetworkAggregatedListWarning
+    :: SubnetworkAggregatedListWarning
+subnetworkAggregatedListWarning =
+    SubnetworkAggregatedListWarning'
+    { _salwData = Nothing
+    , _salwCode = Nothing
+    , _salwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+salwData :: Lens' SubnetworkAggregatedListWarning [SubnetworkAggregatedListWarningDataItem]
+salwData
+  = lens _salwData (\ s a -> s{_salwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+salwCode :: Lens' SubnetworkAggregatedListWarning (Maybe SubnetworkAggregatedListWarningCode)
+salwCode = lens _salwCode (\ s a -> s{_salwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+salwMessage :: Lens' SubnetworkAggregatedListWarning (Maybe Text)
+salwMessage
+  = lens _salwMessage (\ s a -> s{_salwMessage = a})
+
+instance FromJSON SubnetworkAggregatedListWarning
+         where
+        parseJSON
+          = withObject "SubnetworkAggregatedListWarning"
+              (\ o ->
+                 SubnetworkAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SubnetworkAggregatedListWarning where
+        toJSON SubnetworkAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _salwData,
+                  ("code" .=) <$> _salwCode,
+                  ("message" .=) <$> _salwMessage])
+
+-- | Represents an InterconnectLocations resource. The InterconnectLocations
+-- resource describes the locations where you can connect to Google\'s
+-- networks. For more information, see Colocation Facilities.
+--
+-- /See:/ 'interconnectLocation' smart constructor.
+data InterconnectLocation = InterconnectLocation'
+    { _intFacilityProviderFacilityId :: !(Maybe Text)
+    , _intRegionInfos                :: !(Maybe [InterconnectLocationRegionInfo])
+    , _intKind                       :: !Text
+    , _intAddress                    :: !(Maybe Text)
+    , _intFacilityProvider           :: !(Maybe Text)
+    , _intSelfLink                   :: !(Maybe Text)
+    , _intPeeringdbFacilityId        :: !(Maybe Text)
+    , _intName                       :: !(Maybe Text)
+    , _intCity                       :: !(Maybe Text)
+    , _intAvailabilityZone           :: !(Maybe Text)
+    , _intCreationTimestamp          :: !(Maybe Text)
+    , _intId                         :: !(Maybe (Textual Word64))
+    , _intContinent                  :: !(Maybe InterconnectLocationContinent)
+    , _intDescription                :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'intFacilityProviderFacilityId'
+--
+-- * 'intRegionInfos'
+--
+-- * 'intKind'
+--
+-- * 'intAddress'
+--
+-- * 'intFacilityProvider'
+--
+-- * 'intSelfLink'
+--
+-- * 'intPeeringdbFacilityId'
+--
+-- * 'intName'
+--
+-- * 'intCity'
+--
+-- * 'intAvailabilityZone'
+--
+-- * 'intCreationTimestamp'
+--
+-- * 'intId'
+--
+-- * 'intContinent'
+--
+-- * 'intDescription'
+interconnectLocation
+    :: InterconnectLocation
+interconnectLocation =
+    InterconnectLocation'
+    { _intFacilityProviderFacilityId = Nothing
+    , _intRegionInfos = Nothing
+    , _intKind = "compute#interconnectLocation"
+    , _intAddress = Nothing
+    , _intFacilityProvider = Nothing
+    , _intSelfLink = Nothing
+    , _intPeeringdbFacilityId = Nothing
+    , _intName = Nothing
+    , _intCity = Nothing
+    , _intAvailabilityZone = Nothing
+    , _intCreationTimestamp = Nothing
+    , _intId = Nothing
+    , _intContinent = Nothing
+    , _intDescription = Nothing
+    }
+
+-- | [Output Only] A provider-assigned Identifier for this facility (e.g.,
+-- Ashburn-DC1).
+intFacilityProviderFacilityId :: Lens' InterconnectLocation (Maybe Text)
+intFacilityProviderFacilityId
+  = lens _intFacilityProviderFacilityId
+      (\ s a -> s{_intFacilityProviderFacilityId = a})
+
+-- | [Output Only] A list of InterconnectLocation.RegionInfo objects, that
+-- describe parameters pertaining to the relation between this
+-- InterconnectLocation and various Google Cloud regions.
+intRegionInfos :: Lens' InterconnectLocation [InterconnectLocationRegionInfo]
+intRegionInfos
+  = lens _intRegionInfos
+      (\ s a -> s{_intRegionInfos = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#interconnectLocation
+-- for interconnect locations.
+intKind :: Lens' InterconnectLocation Text
+intKind = lens _intKind (\ s a -> s{_intKind = a})
+
+-- | [Output Only] The postal address of the Point of Presence, each line in
+-- the address is separated by a newline character.
+intAddress :: Lens' InterconnectLocation (Maybe Text)
+intAddress
+  = lens _intAddress (\ s a -> s{_intAddress = a})
+
+-- | [Output Only] The name of the provider for this facility (e.g.,
+-- EQUINIX).
+intFacilityProvider :: Lens' InterconnectLocation (Maybe Text)
+intFacilityProvider
+  = lens _intFacilityProvider
+      (\ s a -> s{_intFacilityProvider = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+intSelfLink :: Lens' InterconnectLocation (Maybe Text)
+intSelfLink
+  = lens _intSelfLink (\ s a -> s{_intSelfLink = a})
+
+-- | [Output Only] The peeringdb identifier for this facility (corresponding
+-- with a netfac type in peeringdb).
+intPeeringdbFacilityId :: Lens' InterconnectLocation (Maybe Text)
+intPeeringdbFacilityId
+  = lens _intPeeringdbFacilityId
+      (\ s a -> s{_intPeeringdbFacilityId = a})
+
+-- | [Output Only] Name of the resource.
+intName :: Lens' InterconnectLocation (Maybe Text)
+intName = lens _intName (\ s a -> s{_intName = a})
+
+-- | [Output Only] Metropolitan area designator that indicates which city an
+-- interconnect is located. For example: \"Chicago, IL\", \"Amsterdam,
+-- Netherlands\".
+intCity :: Lens' InterconnectLocation (Maybe Text)
+intCity = lens _intCity (\ s a -> s{_intCity = a})
+
+-- | [Output Only] Availability zone for this InterconnectLocation. Within a
+-- metropolitan area (metro), maintenance will not be simultaneously
+-- scheduled in more than one availability zone. Example: \"zone1\" or
+-- \"zone2\".
+intAvailabilityZone :: Lens' InterconnectLocation (Maybe Text)
+intAvailabilityZone
+  = lens _intAvailabilityZone
+      (\ s a -> s{_intAvailabilityZone = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+intCreationTimestamp :: Lens' InterconnectLocation (Maybe Text)
+intCreationTimestamp
+  = lens _intCreationTimestamp
+      (\ s a -> s{_intCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+intId :: Lens' InterconnectLocation (Maybe Word64)
+intId
+  = lens _intId (\ s a -> s{_intId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Continent for this location.
+intContinent :: Lens' InterconnectLocation (Maybe InterconnectLocationContinent)
+intContinent
+  = lens _intContinent (\ s a -> s{_intContinent = a})
+
+-- | [Output Only] An optional description of the resource.
+intDescription :: Lens' InterconnectLocation (Maybe Text)
+intDescription
+  = lens _intDescription
+      (\ s a -> s{_intDescription = a})
+
+instance FromJSON InterconnectLocation where
+        parseJSON
+          = withObject "InterconnectLocation"
+              (\ o ->
+                 InterconnectLocation' <$>
+                   (o .:? "facilityProviderFacilityId") <*>
+                     (o .:? "regionInfos" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#interconnectLocation")
+                     <*> (o .:? "address")
+                     <*> (o .:? "facilityProvider")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "peeringdbFacilityId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "city")
+                     <*> (o .:? "availabilityZone")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "continent")
+                     <*> (o .:? "description"))
+
+instance ToJSON InterconnectLocation where
+        toJSON InterconnectLocation'{..}
+          = object
+              (catMaybes
+                 [("facilityProviderFacilityId" .=) <$>
+                    _intFacilityProviderFacilityId,
+                  ("regionInfos" .=) <$> _intRegionInfos,
+                  Just ("kind" .= _intKind),
+                  ("address" .=) <$> _intAddress,
+                  ("facilityProvider" .=) <$> _intFacilityProvider,
+                  ("selfLink" .=) <$> _intSelfLink,
+                  ("peeringdbFacilityId" .=) <$>
+                    _intPeeringdbFacilityId,
+                  ("name" .=) <$> _intName, ("city" .=) <$> _intCity,
+                  ("availabilityZone" .=) <$> _intAvailabilityZone,
+                  ("creationTimestamp" .=) <$> _intCreationTimestamp,
+                  ("id" .=) <$> _intId,
+                  ("continent" .=) <$> _intContinent,
+                  ("description" .=) <$> _intDescription])
+
+--
+-- /See:/ 'targetSSLProxiesSetProxyHeaderRequest' smart constructor.
+newtype TargetSSLProxiesSetProxyHeaderRequest = TargetSSLProxiesSetProxyHeaderRequest'
+    { _tspsphrProxyHeader :: Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxiesSetProxyHeaderRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tspsphrProxyHeader'
+targetSSLProxiesSetProxyHeaderRequest
+    :: TargetSSLProxiesSetProxyHeaderRequest
+targetSSLProxiesSetProxyHeaderRequest =
+    TargetSSLProxiesSetProxyHeaderRequest'
+    { _tspsphrProxyHeader = Nothing
+    }
+
+-- | The new type of proxy header to append before sending data to the
+-- backend. NONE or PROXY_V1 are allowed.
+tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
+tspsphrProxyHeader
+  = lens _tspsphrProxyHeader
+      (\ s a -> s{_tspsphrProxyHeader = a})
+
+instance FromJSON
+         TargetSSLProxiesSetProxyHeaderRequest where
+        parseJSON
+          = withObject "TargetSSLProxiesSetProxyHeaderRequest"
+              (\ o ->
+                 TargetSSLProxiesSetProxyHeaderRequest' <$>
+                   (o .:? "proxyHeader"))
+
+instance ToJSON TargetSSLProxiesSetProxyHeaderRequest
+         where
+        toJSON TargetSSLProxiesSetProxyHeaderRequest'{..}
+          = object
+              (catMaybes
+                 [("proxyHeader" .=) <$> _tspsphrProxyHeader])
+
+--
+-- /See:/ 'vpnTunnelAggregatedList' smart constructor.
+data VPNTunnelAggregatedList = VPNTunnelAggregatedList'
+    { _vtalNextPageToken :: !(Maybe Text)
+    , _vtalKind          :: !Text
+    , _vtalItems         :: !(Maybe VPNTunnelAggregatedListItems)
+    , _vtalSelfLink      :: !(Maybe Text)
+    , _vtalWarning       :: !(Maybe VPNTunnelAggregatedListWarning)
+    , _vtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtalNextPageToken'
+--
+-- * 'vtalKind'
+--
+-- * 'vtalItems'
+--
+-- * 'vtalSelfLink'
+--
+-- * 'vtalWarning'
+--
+-- * 'vtalId'
+vpnTunnelAggregatedList
+    :: VPNTunnelAggregatedList
+vpnTunnelAggregatedList =
+    VPNTunnelAggregatedList'
+    { _vtalNextPageToken = Nothing
+    , _vtalKind = "compute#vpnTunnelAggregatedList"
+    , _vtalItems = Nothing
+    , _vtalSelfLink = Nothing
+    , _vtalWarning = Nothing
+    , _vtalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalNextPageToken
+  = lens _vtalNextPageToken
+      (\ s a -> s{_vtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtalKind :: Lens' VPNTunnelAggregatedList Text
+vtalKind = lens _vtalKind (\ s a -> s{_vtalKind = a})
+
+-- | A list of VpnTunnelsScopedList resources.
+vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)
+vtalItems
+  = lens _vtalItems (\ s a -> s{_vtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalSelfLink
+  = lens _vtalSelfLink (\ s a -> s{_vtalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+vtalWarning :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListWarning)
+vtalWarning
+  = lens _vtalWarning (\ s a -> s{_vtalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalId = lens _vtalId (\ s a -> s{_vtalId = a})
+
+instance FromJSON VPNTunnelAggregatedList where
+        parseJSON
+          = withObject "VPNTunnelAggregatedList"
+              (\ o ->
+                 VPNTunnelAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#vpnTunnelAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON VPNTunnelAggregatedList where
+        toJSON VPNTunnelAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _vtalNextPageToken,
+                  Just ("kind" .= _vtalKind),
+                  ("items" .=) <$> _vtalItems,
+                  ("selfLink" .=) <$> _vtalSelfLink,
+                  ("warning" .=) <$> _vtalWarning,
+                  ("id" .=) <$> _vtalId])
+
+--
+-- /See:/ 'sslPoliciesListWarningDataItem' smart constructor.
+data SSLPoliciesListWarningDataItem = SSLPoliciesListWarningDataItem'
+    { _splwdiValue :: !(Maybe Text)
+    , _splwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splwdiValue'
+--
+-- * 'splwdiKey'
+sslPoliciesListWarningDataItem
+    :: SSLPoliciesListWarningDataItem
+sslPoliciesListWarningDataItem =
+    SSLPoliciesListWarningDataItem'
+    { _splwdiValue = Nothing
+    , _splwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+splwdiValue :: Lens' SSLPoliciesListWarningDataItem (Maybe Text)
+splwdiValue
+  = lens _splwdiValue (\ s a -> s{_splwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+splwdiKey :: Lens' SSLPoliciesListWarningDataItem (Maybe Text)
+splwdiKey
+  = lens _splwdiKey (\ s a -> s{_splwdiKey = a})
+
+instance FromJSON SSLPoliciesListWarningDataItem
+         where
+        parseJSON
+          = withObject "SSLPoliciesListWarningDataItem"
+              (\ o ->
+                 SSLPoliciesListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SSLPoliciesListWarningDataItem where
+        toJSON SSLPoliciesListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _splwdiValue,
+                  ("key" .=) <$> _splwdiKey])
+
+-- | Describes a single physical circuit between the Customer and Google.
+-- CircuitInfo objects are created by Google, so all fields are output
+-- only. Next id: 4
+--
+-- /See:/ 'interconnectCircuitInfo' smart constructor.
+data InterconnectCircuitInfo = InterconnectCircuitInfo'
+    { _iciGoogleCircuitId  :: !(Maybe Text)
+    , _iciCustomerDemarcId :: !(Maybe Text)
+    , _iciGoogleDemarcId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectCircuitInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iciGoogleCircuitId'
+--
+-- * 'iciCustomerDemarcId'
+--
+-- * 'iciGoogleDemarcId'
+interconnectCircuitInfo
+    :: InterconnectCircuitInfo
+interconnectCircuitInfo =
+    InterconnectCircuitInfo'
+    { _iciGoogleCircuitId = Nothing
+    , _iciCustomerDemarcId = Nothing
+    , _iciGoogleDemarcId = Nothing
+    }
+
+-- | Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
+iciGoogleCircuitId :: Lens' InterconnectCircuitInfo (Maybe Text)
+iciGoogleCircuitId
+  = lens _iciGoogleCircuitId
+      (\ s a -> s{_iciGoogleCircuitId = a})
+
+-- | Customer-side demarc ID for this circuit.
+iciCustomerDemarcId :: Lens' InterconnectCircuitInfo (Maybe Text)
+iciCustomerDemarcId
+  = lens _iciCustomerDemarcId
+      (\ s a -> s{_iciCustomerDemarcId = a})
+
+-- | Google-side demarc ID for this circuit. Assigned at circuit turn-up and
+-- provided by Google to the customer in the LOA.
+iciGoogleDemarcId :: Lens' InterconnectCircuitInfo (Maybe Text)
+iciGoogleDemarcId
+  = lens _iciGoogleDemarcId
+      (\ s a -> s{_iciGoogleDemarcId = a})
+
+instance FromJSON InterconnectCircuitInfo where
+        parseJSON
+          = withObject "InterconnectCircuitInfo"
+              (\ o ->
+                 InterconnectCircuitInfo' <$>
+                   (o .:? "googleCircuitId") <*>
+                     (o .:? "customerDemarcId")
+                     <*> (o .:? "googleDemarcId"))
+
+instance ToJSON InterconnectCircuitInfo where
+        toJSON InterconnectCircuitInfo'{..}
+          = object
+              (catMaybes
+                 [("googleCircuitId" .=) <$> _iciGoogleCircuitId,
+                  ("customerDemarcId" .=) <$> _iciCustomerDemarcId,
+                  ("googleDemarcId" .=) <$> _iciGoogleDemarcId])
+
+-- | An instance-attached disk resource.
+--
+-- /See:/ 'attachedDisk' smart constructor.
+data AttachedDisk = AttachedDisk'
+    { _adDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)
+    , _adKind              :: !Text
+    , _adMode              :: !(Maybe AttachedDiskMode)
+    , _adGuestOSFeatures   :: !(Maybe [GuestOSFeature])
+    , _adBoot              :: !(Maybe Bool)
+    , _adAutoDelete        :: !(Maybe Bool)
+    , _adInitializeParams  :: !(Maybe AttachedDiskInitializeParams)
+    , _adDeviceName        :: !(Maybe Text)
+    , _adInterface         :: !(Maybe AttachedDiskInterface)
+    , _adSource            :: !(Maybe Text)
+    , _adLicenses          :: !(Maybe [Text])
+    , _adType              :: !(Maybe AttachedDiskType)
+    , _adIndex             :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachedDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adDiskEncryptionKey'
+--
+-- * 'adKind'
+--
+-- * 'adMode'
+--
+-- * 'adGuestOSFeatures'
+--
+-- * 'adBoot'
+--
+-- * 'adAutoDelete'
+--
+-- * 'adInitializeParams'
+--
+-- * 'adDeviceName'
+--
+-- * 'adInterface'
+--
+-- * 'adSource'
+--
+-- * 'adLicenses'
+--
+-- * 'adType'
+--
+-- * 'adIndex'
+attachedDisk
+    :: AttachedDisk
+attachedDisk =
+    AttachedDisk'
+    { _adDiskEncryptionKey = Nothing
+    , _adKind = "compute#attachedDisk"
+    , _adMode = Nothing
+    , _adGuestOSFeatures = Nothing
+    , _adBoot = Nothing
+    , _adAutoDelete = Nothing
+    , _adInitializeParams = Nothing
+    , _adDeviceName = Nothing
+    , _adInterface = Nothing
+    , _adSource = Nothing
+    , _adLicenses = Nothing
+    , _adType = Nothing
+    , _adIndex = Nothing
+    }
+
+-- | Encrypts or decrypts a disk using a customer-supplied encryption key. If
+-- you are creating a new disk, this field encrypts the new disk using an
+-- encryption key that you provide. If you are attaching an existing disk
+-- that is already encrypted, this field decrypts the disk using the
+-- customer-supplied encryption key. If you encrypt a disk using a
+-- customer-supplied key, you must provide the same key again when you
+-- attempt to use this resource at a later time. For example, you must
+-- provide the key when you create a snapshot or an image from the disk or
+-- when you attach the disk to a virtual machine instance. If you do not
+-- provide an encryption key, then the disk will be encrypted using an
+-- automatically generated key and you do not need to provide a key to use
+-- the disk later. Instance templates do not store customer-supplied
+-- encryption keys, so you cannot use your own keys to encrypt disks in a
+-- managed instance group.
+adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)
+adDiskEncryptionKey
+  = lens _adDiskEncryptionKey
+      (\ s a -> s{_adDiskEncryptionKey = a})
+
+-- | [Output Only] Type of the resource. Always compute#attachedDisk for
+-- attached disks.
+adKind :: Lens' AttachedDisk Text
+adKind = lens _adKind (\ s a -> s{_adKind = a})
+
+-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
+-- If not specified, the default is to attach the disk in READ_WRITE mode.
+adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)
+adMode = lens _adMode (\ s a -> s{_adMode = a})
+
+-- | A list of features to enable on the guest operating system. Applicable
+-- only for bootable images. Read Enabling guest operating system features
+-- to see a list of available options.
+adGuestOSFeatures :: Lens' AttachedDisk [GuestOSFeature]
+adGuestOSFeatures
+  = lens _adGuestOSFeatures
+      (\ s a -> s{_adGuestOSFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | Indicates that this is a boot disk. The virtual machine will use the
+-- first partition of the disk for its root filesystem.
+adBoot :: Lens' AttachedDisk (Maybe Bool)
+adBoot = lens _adBoot (\ s a -> s{_adBoot = a})
+
+-- | Specifies whether the disk will be auto-deleted when the instance is
+-- deleted (but not when the disk is detached from the instance).
+adAutoDelete :: Lens' AttachedDisk (Maybe Bool)
+adAutoDelete
+  = lens _adAutoDelete (\ s a -> s{_adAutoDelete = a})
+
+-- | [Input Only] Specifies the parameters for a new disk that will be
+-- created alongside the new instance. Use initialization parameters to
+-- create boot disks or local SSDs attached to the new instance. This
+-- property is mutually exclusive with the source property; you can only
+-- define one or the other, but not both.
+adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)
+adInitializeParams
+  = lens _adInitializeParams
+      (\ s a -> s{_adInitializeParams = a})
+
+-- | Specifies a unique device name of your choice that is reflected into the
+-- \/dev\/disk\/by-id\/google-* tree of a Linux operating system running
+-- within the instance. This name can be used to reference the device for
+-- mounting, resizing, and so on, from within the instance. If not
+-- specified, the server chooses a default device name to apply to this
+-- disk, in the form persistent-disks-x, where x is a number assigned by
+-- Google Compute Engine. This field is only applicable for persistent
+-- disks.
+adDeviceName :: Lens' AttachedDisk (Maybe Text)
+adDeviceName
+  = lens _adDeviceName (\ s a -> s{_adDeviceName = a})
+
+-- | Specifies the disk interface to use for attaching this disk, which is
+-- either SCSI or NVME. The default is SCSI. Persistent disks must always
+-- use SCSI and the request will fail if you attempt to attach a persistent
+-- disk in any other format than SCSI. Local SSDs can use either NVME or
+-- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD
+-- performance.
+adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)
+adInterface
+  = lens _adInterface (\ s a -> s{_adInterface = a})
+
+-- | Specifies a valid partial or full URL to an existing Persistent Disk
+-- resource. When creating a new instance, one of
+-- initializeParams.sourceImage or disks.source is required except for
+-- local SSD. If desired, you can also attach existing non-root persistent
+-- disks using this property. This field is only applicable for persistent
+-- disks. Note that for InstanceTemplate, specify the disk name, not the
+-- URL for the disk.
+adSource :: Lens' AttachedDisk (Maybe Text)
+adSource = lens _adSource (\ s a -> s{_adSource = a})
+
+-- | [Output Only] Any valid publicly visible licenses.
+adLicenses :: Lens' AttachedDisk [Text]
+adLicenses
+  = lens _adLicenses (\ s a -> s{_adLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
+-- specified, the default is PERSISTENT.
+adType :: Lens' AttachedDisk (Maybe AttachedDiskType)
+adType = lens _adType (\ s a -> s{_adType = a})
+
+-- | [Output Only] A zero-based index to this disk, where 0 is reserved for
+-- the boot disk. If you have many disks attached to an instance, each disk
+-- would have a unique index number.
+adIndex :: Lens' AttachedDisk (Maybe Int32)
+adIndex
+  = lens _adIndex (\ s a -> s{_adIndex = a}) .
+      mapping _Coerce
+
+instance FromJSON AttachedDisk where
+        parseJSON
+          = withObject "AttachedDisk"
+              (\ o ->
+                 AttachedDisk' <$>
+                   (o .:? "diskEncryptionKey") <*>
+                     (o .:? "kind" .!= "compute#attachedDisk")
+                     <*> (o .:? "mode")
+                     <*> (o .:? "guestOsFeatures" .!= mempty)
+                     <*> (o .:? "boot")
+                     <*> (o .:? "autoDelete")
+                     <*> (o .:? "initializeParams")
+                     <*> (o .:? "deviceName")
+                     <*> (o .:? "interface")
+                     <*> (o .:? "source")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "type")
+                     <*> (o .:? "index"))
+
+instance ToJSON AttachedDisk where
+        toJSON AttachedDisk'{..}
+          = object
+              (catMaybes
+                 [("diskEncryptionKey" .=) <$> _adDiskEncryptionKey,
+                  Just ("kind" .= _adKind), ("mode" .=) <$> _adMode,
+                  ("guestOsFeatures" .=) <$> _adGuestOSFeatures,
+                  ("boot" .=) <$> _adBoot,
+                  ("autoDelete" .=) <$> _adAutoDelete,
+                  ("initializeParams" .=) <$> _adInitializeParams,
+                  ("deviceName" .=) <$> _adDeviceName,
+                  ("interface" .=) <$> _adInterface,
+                  ("source" .=) <$> _adSource,
+                  ("licenses" .=) <$> _adLicenses,
+                  ("type" .=) <$> _adType, ("index" .=) <$> _adIndex])
+
+--
+-- /See:/ 'hTTPHealthCheckListWarningDataItem' smart constructor.
+data HTTPHealthCheckListWarningDataItem = HTTPHealthCheckListWarningDataItem'
+    { _httphclwdiValue :: !(Maybe Text)
+    , _httphclwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheckListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphclwdiValue'
+--
+-- * 'httphclwdiKey'
+hTTPHealthCheckListWarningDataItem
+    :: HTTPHealthCheckListWarningDataItem
+hTTPHealthCheckListWarningDataItem =
+    HTTPHealthCheckListWarningDataItem'
+    { _httphclwdiValue = Nothing
+    , _httphclwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+httphclwdiValue :: Lens' HTTPHealthCheckListWarningDataItem (Maybe Text)
+httphclwdiValue
+  = lens _httphclwdiValue
+      (\ s a -> s{_httphclwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+httphclwdiKey :: Lens' HTTPHealthCheckListWarningDataItem (Maybe Text)
+httphclwdiKey
+  = lens _httphclwdiKey
+      (\ s a -> s{_httphclwdiKey = a})
+
+instance FromJSON HTTPHealthCheckListWarningDataItem
+         where
+        parseJSON
+          = withObject "HTTPHealthCheckListWarningDataItem"
+              (\ o ->
+                 HTTPHealthCheckListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON HTTPHealthCheckListWarningDataItem
+         where
+        toJSON HTTPHealthCheckListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _httphclwdiValue,
+                  ("key" .=) <$> _httphclwdiKey])
+
+-- | Contains a list of disk types.
+--
+-- /See:/ 'diskTypeList' smart constructor.
+data DiskTypeList = DiskTypeList'
+    { _dtlNextPageToken :: !(Maybe Text)
+    , _dtlKind          :: !Text
+    , _dtlItems         :: !(Maybe [DiskType])
+    , _dtlSelfLink      :: !(Maybe Text)
+    , _dtlWarning       :: !(Maybe DiskTypeListWarning)
+    , _dtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtlNextPageToken'
+--
+-- * 'dtlKind'
+--
+-- * 'dtlItems'
+--
+-- * 'dtlSelfLink'
+--
+-- * 'dtlWarning'
+--
+-- * 'dtlId'
+diskTypeList
+    :: DiskTypeList
+diskTypeList =
+    DiskTypeList'
+    { _dtlNextPageToken = Nothing
+    , _dtlKind = "compute#diskTypeList"
+    , _dtlItems = Nothing
+    , _dtlSelfLink = Nothing
+    , _dtlWarning = Nothing
+    , _dtlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)
+dtlNextPageToken
+  = lens _dtlNextPageToken
+      (\ s a -> s{_dtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskTypeList for disk
+-- types.
+dtlKind :: Lens' DiskTypeList Text
+dtlKind = lens _dtlKind (\ s a -> s{_dtlKind = a})
+
+-- | A list of DiskType resources.
+dtlItems :: Lens' DiskTypeList [DiskType]
+dtlItems
+  = lens _dtlItems (\ s a -> s{_dtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+dtlSelfLink :: Lens' DiskTypeList (Maybe Text)
+dtlSelfLink
+  = lens _dtlSelfLink (\ s a -> s{_dtlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+dtlWarning :: Lens' DiskTypeList (Maybe DiskTypeListWarning)
+dtlWarning
+  = lens _dtlWarning (\ s a -> s{_dtlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dtlId :: Lens' DiskTypeList (Maybe Text)
+dtlId = lens _dtlId (\ s a -> s{_dtlId = a})
+
+instance FromJSON DiskTypeList where
+        parseJSON
+          = withObject "DiskTypeList"
+              (\ o ->
+                 DiskTypeList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskTypeList where
+        toJSON DiskTypeList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dtlNextPageToken,
+                  Just ("kind" .= _dtlKind),
+                  ("items" .=) <$> _dtlItems,
+                  ("selfLink" .=) <$> _dtlSelfLink,
+                  ("warning" .=) <$> _dtlWarning,
+                  ("id" .=) <$> _dtlId])
+
+--
+-- /See:/ 'regionInstanceGroupsSetNamedPortsRequest' smart constructor.
+data RegionInstanceGroupsSetNamedPortsRequest = RegionInstanceGroupsSetNamedPortsRequest'
+    { _rigsnprFingerprint :: !(Maybe Bytes)
+    , _rigsnprNamedPorts  :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigsnprFingerprint'
+--
+-- * 'rigsnprNamedPorts'
+regionInstanceGroupsSetNamedPortsRequest
+    :: RegionInstanceGroupsSetNamedPortsRequest
+regionInstanceGroupsSetNamedPortsRequest =
+    RegionInstanceGroupsSetNamedPortsRequest'
+    { _rigsnprFingerprint = Nothing
+    , _rigsnprNamedPorts = Nothing
+    }
+
+-- | The fingerprint of the named ports information for this instance group.
+-- Use this optional property to prevent conflicts when multiple users
+-- change the named ports settings concurrently. Obtain the fingerprint
+-- with the instanceGroups.get method. Then, include the fingerprint in
+-- your request to ensure that you do not overwrite changes that were
+-- applied from another concurrent request.
+rigsnprFingerprint :: Lens' RegionInstanceGroupsSetNamedPortsRequest (Maybe ByteString)
+rigsnprFingerprint
+  = lens _rigsnprFingerprint
+      (\ s a -> s{_rigsnprFingerprint = a})
+      . mapping _Bytes
+
+-- | The list of named ports to set for this instance group.
+rigsnprNamedPorts :: Lens' RegionInstanceGroupsSetNamedPortsRequest [NamedPort]
+rigsnprNamedPorts
+  = lens _rigsnprNamedPorts
+      (\ s a -> s{_rigsnprNamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         RegionInstanceGroupsSetNamedPortsRequest where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupsSetNamedPortsRequest"
+              (\ o ->
+                 RegionInstanceGroupsSetNamedPortsRequest' <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON
+         RegionInstanceGroupsSetNamedPortsRequest where
+        toJSON RegionInstanceGroupsSetNamedPortsRequest'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _rigsnprFingerprint,
+                  ("namedPorts" .=) <$> _rigsnprNamedPorts])
+
+--
+-- /See:/ 'testPermissionsRequest' smart constructor.
+newtype TestPermissionsRequest = TestPermissionsRequest'
+    { _tPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tPermissions'
+testPermissionsRequest
+    :: TestPermissionsRequest
+testPermissionsRequest =
+    TestPermissionsRequest'
+    { _tPermissions = Nothing
+    }
+
+-- | The set of permissions to check for the \'resource\'. Permissions with
+-- wildcards (such as \'*\' or \'storage.*\') are not allowed.
+tPermissions :: Lens' TestPermissionsRequest [Text]
+tPermissions
+  = lens _tPermissions (\ s a -> s{_tPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestPermissionsRequest where
+        parseJSON
+          = withObject "TestPermissionsRequest"
+              (\ o ->
+                 TestPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestPermissionsRequest where
+        toJSON TestPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tPermissions])
+
+--
+-- /See:/ 'targetTCPProxyListWarningDataItem' smart constructor.
+data TargetTCPProxyListWarningDataItem = TargetTCPProxyListWarningDataItem'
+    { _ttplwdiValue :: !(Maybe Text)
+    , _ttplwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxyListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttplwdiValue'
+--
+-- * 'ttplwdiKey'
+targetTCPProxyListWarningDataItem
+    :: TargetTCPProxyListWarningDataItem
+targetTCPProxyListWarningDataItem =
+    TargetTCPProxyListWarningDataItem'
+    { _ttplwdiValue = Nothing
+    , _ttplwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ttplwdiValue :: Lens' TargetTCPProxyListWarningDataItem (Maybe Text)
+ttplwdiValue
+  = lens _ttplwdiValue (\ s a -> s{_ttplwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ttplwdiKey :: Lens' TargetTCPProxyListWarningDataItem (Maybe Text)
+ttplwdiKey
+  = lens _ttplwdiKey (\ s a -> s{_ttplwdiKey = a})
+
+instance FromJSON TargetTCPProxyListWarningDataItem
+         where
+        parseJSON
+          = withObject "TargetTCPProxyListWarningDataItem"
+              (\ o ->
+                 TargetTCPProxyListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetTCPProxyListWarningDataItem
+         where
+        toJSON TargetTCPProxyListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ttplwdiValue,
+                  ("key" .=) <$> _ttplwdiKey])
+
+--
+-- /See:/ 'projectsGetXpnResources' smart constructor.
+data ProjectsGetXpnResources = ProjectsGetXpnResources'
+    { _pgxrNextPageToken :: !(Maybe Text)
+    , _pgxrKind          :: !Text
+    , _pgxrResources     :: !(Maybe [XpnResourceId])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsGetXpnResources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgxrNextPageToken'
+--
+-- * 'pgxrKind'
+--
+-- * 'pgxrResources'
+projectsGetXpnResources
+    :: ProjectsGetXpnResources
+projectsGetXpnResources =
+    ProjectsGetXpnResources'
+    { _pgxrNextPageToken = Nothing
+    , _pgxrKind = "compute#projectsGetXpnResources"
+    , _pgxrResources = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+pgxrNextPageToken :: Lens' ProjectsGetXpnResources (Maybe Text)
+pgxrNextPageToken
+  = lens _pgxrNextPageToken
+      (\ s a -> s{_pgxrNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#projectsGetXpnResources
+-- for lists of service resources (a.k.a service projects)
+pgxrKind :: Lens' ProjectsGetXpnResources Text
+pgxrKind = lens _pgxrKind (\ s a -> s{_pgxrKind = a})
+
+-- | Service resources (a.k.a service projects) attached to this project as
+-- their shared VPC host.
+pgxrResources :: Lens' ProjectsGetXpnResources [XpnResourceId]
+pgxrResources
+  = lens _pgxrResources
+      (\ s a -> s{_pgxrResources = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ProjectsGetXpnResources where
+        parseJSON
+          = withObject "ProjectsGetXpnResources"
+              (\ o ->
+                 ProjectsGetXpnResources' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#projectsGetXpnResources")
+                     <*> (o .:? "resources" .!= mempty))
+
+instance ToJSON ProjectsGetXpnResources where
+        toJSON ProjectsGetXpnResources'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _pgxrNextPageToken,
+                  Just ("kind" .= _pgxrKind),
+                  ("resources" .=) <$> _pgxrResources])
+
+-- | Contains a list of machine types.
+--
+-- /See:/ 'machineTypeList' smart constructor.
+data MachineTypeList = MachineTypeList'
+    { _mtlNextPageToken :: !(Maybe Text)
+    , _mtlKind          :: !Text
+    , _mtlItems         :: !(Maybe [MachineType])
+    , _mtlSelfLink      :: !(Maybe Text)
+    , _mtlWarning       :: !(Maybe MachineTypeListWarning)
+    , _mtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtlNextPageToken'
+--
+-- * 'mtlKind'
+--
+-- * 'mtlItems'
+--
+-- * 'mtlSelfLink'
+--
+-- * 'mtlWarning'
+--
+-- * 'mtlId'
+machineTypeList
+    :: MachineTypeList
+machineTypeList =
+    MachineTypeList'
+    { _mtlNextPageToken = Nothing
+    , _mtlKind = "compute#machineTypeList"
+    , _mtlItems = Nothing
+    , _mtlSelfLink = Nothing
+    , _mtlWarning = Nothing
+    , _mtlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)
+mtlNextPageToken
+  = lens _mtlNextPageToken
+      (\ s a -> s{_mtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#machineTypeList for lists
+-- of machine types.
+mtlKind :: Lens' MachineTypeList Text
+mtlKind = lens _mtlKind (\ s a -> s{_mtlKind = a})
+
+-- | A list of MachineType resources.
+mtlItems :: Lens' MachineTypeList [MachineType]
+mtlItems
+  = lens _mtlItems (\ s a -> s{_mtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+mtlSelfLink :: Lens' MachineTypeList (Maybe Text)
+mtlSelfLink
+  = lens _mtlSelfLink (\ s a -> s{_mtlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+mtlWarning :: Lens' MachineTypeList (Maybe MachineTypeListWarning)
+mtlWarning
+  = lens _mtlWarning (\ s a -> s{_mtlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+mtlId :: Lens' MachineTypeList (Maybe Text)
+mtlId = lens _mtlId (\ s a -> s{_mtlId = a})
+
+instance FromJSON MachineTypeList where
+        parseJSON
+          = withObject "MachineTypeList"
+              (\ o ->
+                 MachineTypeList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#machineTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON MachineTypeList where
+        toJSON MachineTypeList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _mtlNextPageToken,
+                  Just ("kind" .= _mtlKind),
+                  ("items" .=) <$> _mtlItems,
+                  ("selfLink" .=) <$> _mtlSelfLink,
+                  ("warning" .=) <$> _mtlWarning,
+                  ("id" .=) <$> _mtlId])
+
+-- | A list of TargetHttpProxy resources.
+--
+-- /See:/ 'targetHTTPProxyList' smart constructor.
+data TargetHTTPProxyList = TargetHTTPProxyList'
+    { _thttpplNextPageToken :: !(Maybe Text)
+    , _thttpplKind          :: !Text
+    , _thttpplItems         :: !(Maybe [TargetHTTPProxy])
+    , _thttpplSelfLink      :: !(Maybe Text)
+    , _thttpplWarning       :: !(Maybe TargetHTTPProxyListWarning)
+    , _thttpplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttpplNextPageToken'
+--
+-- * 'thttpplKind'
+--
+-- * 'thttpplItems'
+--
+-- * 'thttpplSelfLink'
+--
+-- * 'thttpplWarning'
+--
+-- * 'thttpplId'
+targetHTTPProxyList
+    :: TargetHTTPProxyList
+targetHTTPProxyList =
+    TargetHTTPProxyList'
+    { _thttpplNextPageToken = Nothing
+    , _thttpplKind = "compute#targetHttpProxyList"
+    , _thttpplItems = Nothing
+    , _thttpplSelfLink = Nothing
+    , _thttpplWarning = Nothing
+    , _thttpplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplNextPageToken
+  = lens _thttpplNextPageToken
+      (\ s a -> s{_thttpplNextPageToken = a})
+
+-- | Type of resource. Always compute#targetHttpProxyList for lists of target
+-- HTTP proxies.
+thttpplKind :: Lens' TargetHTTPProxyList Text
+thttpplKind
+  = lens _thttpplKind (\ s a -> s{_thttpplKind = a})
+
+-- | A list of TargetHttpProxy resources.
+thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]
+thttpplItems
+  = lens _thttpplItems (\ s a -> s{_thttpplItems = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplSelfLink
+  = lens _thttpplSelfLink
+      (\ s a -> s{_thttpplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+thttpplWarning :: Lens' TargetHTTPProxyList (Maybe TargetHTTPProxyListWarning)
+thttpplWarning
+  = lens _thttpplWarning
+      (\ s a -> s{_thttpplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplId
+  = lens _thttpplId (\ s a -> s{_thttpplId = a})
+
+instance FromJSON TargetHTTPProxyList where
+        parseJSON
+          = withObject "TargetHTTPProxyList"
+              (\ o ->
+                 TargetHTTPProxyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetHttpProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetHTTPProxyList where
+        toJSON TargetHTTPProxyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _thttpplNextPageToken,
+                  Just ("kind" .= _thttpplKind),
+                  ("items" .=) <$> _thttpplItems,
+                  ("selfLink" .=) <$> _thttpplSelfLink,
+                  ("warning" .=) <$> _thttpplWarning,
+                  ("id" .=) <$> _thttpplId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeGroupsListNodesWarning' smart constructor.
+data NodeGroupsListNodesWarning = NodeGroupsListNodesWarning'
+    { _nglnwData    :: !(Maybe [NodeGroupsListNodesWarningDataItem])
+    , _nglnwCode    :: !(Maybe NodeGroupsListNodesWarningCode)
+    , _nglnwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsListNodesWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglnwData'
+--
+-- * 'nglnwCode'
+--
+-- * 'nglnwMessage'
+nodeGroupsListNodesWarning
+    :: NodeGroupsListNodesWarning
+nodeGroupsListNodesWarning =
+    NodeGroupsListNodesWarning'
+    { _nglnwData = Nothing
+    , _nglnwCode = Nothing
+    , _nglnwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+nglnwData :: Lens' NodeGroupsListNodesWarning [NodeGroupsListNodesWarningDataItem]
+nglnwData
+  = lens _nglnwData (\ s a -> s{_nglnwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+nglnwCode :: Lens' NodeGroupsListNodesWarning (Maybe NodeGroupsListNodesWarningCode)
+nglnwCode
+  = lens _nglnwCode (\ s a -> s{_nglnwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+nglnwMessage :: Lens' NodeGroupsListNodesWarning (Maybe Text)
+nglnwMessage
+  = lens _nglnwMessage (\ s a -> s{_nglnwMessage = a})
+
+instance FromJSON NodeGroupsListNodesWarning where
+        parseJSON
+          = withObject "NodeGroupsListNodesWarning"
+              (\ o ->
+                 NodeGroupsListNodesWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeGroupsListNodesWarning where
+        toJSON NodeGroupsListNodesWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _nglnwData,
+                  ("code" .=) <$> _nglnwCode,
+                  ("message" .=) <$> _nglnwMessage])
+
+--
+-- /See:/ 'nodeTemplateAggregatedList' smart constructor.
+data NodeTemplateAggregatedList = NodeTemplateAggregatedList'
+    { _nodNextPageToken :: !(Maybe Text)
+    , _nodKind          :: !Text
+    , _nodItems         :: !(Maybe NodeTemplateAggregatedListItems)
+    , _nodSelfLink      :: !(Maybe Text)
+    , _nodWarning       :: !(Maybe NodeTemplateAggregatedListWarning)
+    , _nodId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nodNextPageToken'
+--
+-- * 'nodKind'
+--
+-- * 'nodItems'
+--
+-- * 'nodSelfLink'
+--
+-- * 'nodWarning'
+--
+-- * 'nodId'
+nodeTemplateAggregatedList
+    :: NodeTemplateAggregatedList
+nodeTemplateAggregatedList =
+    NodeTemplateAggregatedList'
+    { _nodNextPageToken = Nothing
+    , _nodKind = "compute#nodeTemplateAggregatedList"
+    , _nodItems = Nothing
+    , _nodSelfLink = Nothing
+    , _nodWarning = Nothing
+    , _nodId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+nodNextPageToken :: Lens' NodeTemplateAggregatedList (Maybe Text)
+nodNextPageToken
+  = lens _nodNextPageToken
+      (\ s a -> s{_nodNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeTemplateAggregatedList
+-- for aggregated lists of node templates.
+nodKind :: Lens' NodeTemplateAggregatedList Text
+nodKind = lens _nodKind (\ s a -> s{_nodKind = a})
+
+-- | A list of NodeTemplatesScopedList resources.
+nodItems :: Lens' NodeTemplateAggregatedList (Maybe NodeTemplateAggregatedListItems)
+nodItems = lens _nodItems (\ s a -> s{_nodItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+nodSelfLink :: Lens' NodeTemplateAggregatedList (Maybe Text)
+nodSelfLink
+  = lens _nodSelfLink (\ s a -> s{_nodSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+nodWarning :: Lens' NodeTemplateAggregatedList (Maybe NodeTemplateAggregatedListWarning)
+nodWarning
+  = lens _nodWarning (\ s a -> s{_nodWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+nodId :: Lens' NodeTemplateAggregatedList (Maybe Text)
+nodId = lens _nodId (\ s a -> s{_nodId = a})
+
+instance FromJSON NodeTemplateAggregatedList where
+        parseJSON
+          = withObject "NodeTemplateAggregatedList"
+              (\ o ->
+                 NodeTemplateAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#nodeTemplateAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeTemplateAggregatedList where
+        toJSON NodeTemplateAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _nodNextPageToken,
+                  Just ("kind" .= _nodKind),
+                  ("items" .=) <$> _nodItems,
+                  ("selfLink" .=) <$> _nodSelfLink,
+                  ("warning" .=) <$> _nodWarning,
+                  ("id" .=) <$> _nodId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'interconnectLocationListWarning' smart constructor.
+data InterconnectLocationListWarning = InterconnectLocationListWarning'
+    { _illwData    :: !(Maybe [InterconnectLocationListWarningDataItem])
+    , _illwCode    :: !(Maybe InterconnectLocationListWarningCode)
+    , _illwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'illwData'
+--
+-- * 'illwCode'
+--
+-- * 'illwMessage'
+interconnectLocationListWarning
+    :: InterconnectLocationListWarning
+interconnectLocationListWarning =
+    InterconnectLocationListWarning'
+    { _illwData = Nothing
+    , _illwCode = Nothing
+    , _illwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+illwData :: Lens' InterconnectLocationListWarning [InterconnectLocationListWarningDataItem]
+illwData
+  = lens _illwData (\ s a -> s{_illwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+illwCode :: Lens' InterconnectLocationListWarning (Maybe InterconnectLocationListWarningCode)
+illwCode = lens _illwCode (\ s a -> s{_illwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+illwMessage :: Lens' InterconnectLocationListWarning (Maybe Text)
+illwMessage
+  = lens _illwMessage (\ s a -> s{_illwMessage = a})
+
+instance FromJSON InterconnectLocationListWarning
+         where
+        parseJSON
+          = withObject "InterconnectLocationListWarning"
+              (\ o ->
+                 InterconnectLocationListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InterconnectLocationListWarning where
+        toJSON InterconnectLocationListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _illwData,
+                  ("code" .=) <$> _illwCode,
+                  ("message" .=) <$> _illwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceGroupsListInstancesWarning' smart constructor.
+data InstanceGroupsListInstancesWarning = InstanceGroupsListInstancesWarning'
+    { _igliwData    :: !(Maybe [InstanceGroupsListInstancesWarningDataItem])
+    , _igliwCode    :: !(Maybe InstanceGroupsListInstancesWarningCode)
+    , _igliwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstancesWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igliwData'
+--
+-- * 'igliwCode'
+--
+-- * 'igliwMessage'
+instanceGroupsListInstancesWarning
+    :: InstanceGroupsListInstancesWarning
+instanceGroupsListInstancesWarning =
+    InstanceGroupsListInstancesWarning'
+    { _igliwData = Nothing
+    , _igliwCode = Nothing
+    , _igliwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igliwData :: Lens' InstanceGroupsListInstancesWarning [InstanceGroupsListInstancesWarningDataItem]
+igliwData
+  = lens _igliwData (\ s a -> s{_igliwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igliwCode :: Lens' InstanceGroupsListInstancesWarning (Maybe InstanceGroupsListInstancesWarningCode)
+igliwCode
+  = lens _igliwCode (\ s a -> s{_igliwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igliwMessage :: Lens' InstanceGroupsListInstancesWarning (Maybe Text)
+igliwMessage
+  = lens _igliwMessage (\ s a -> s{_igliwMessage = a})
+
+instance FromJSON InstanceGroupsListInstancesWarning
+         where
+        parseJSON
+          = withObject "InstanceGroupsListInstancesWarning"
+              (\ o ->
+                 InstanceGroupsListInstancesWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupsListInstancesWarning
+         where
+        toJSON InstanceGroupsListInstancesWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igliwData,
+                  ("code" .=) <$> _igliwCode,
+                  ("message" .=) <$> _igliwMessage])
+
+-- | Contains a list of managed instance groups.
+--
+-- /See:/ 'regionInstanceGroupManagerList' smart constructor.
+data RegionInstanceGroupManagerList = RegionInstanceGroupManagerList'
+    { _rigmlNextPageToken :: !(Maybe Text)
+    , _rigmlKind          :: !Text
+    , _rigmlItems         :: !(Maybe [InstanceGroupManager])
+    , _rigmlSelfLink      :: !(Maybe Text)
+    , _rigmlWarning       :: !(Maybe RegionInstanceGroupManagerListWarning)
+    , _rigmlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmlNextPageToken'
+--
+-- * 'rigmlKind'
+--
+-- * 'rigmlItems'
+--
+-- * 'rigmlSelfLink'
+--
+-- * 'rigmlWarning'
+--
+-- * 'rigmlId'
+regionInstanceGroupManagerList
+    :: RegionInstanceGroupManagerList
+regionInstanceGroupManagerList =
+    RegionInstanceGroupManagerList'
+    { _rigmlNextPageToken = Nothing
+    , _rigmlKind = "compute#regionInstanceGroupManagerList"
+    , _rigmlItems = Nothing
+    , _rigmlSelfLink = Nothing
+    , _rigmlWarning = Nothing
+    , _rigmlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+rigmlNextPageToken :: Lens' RegionInstanceGroupManagerList (Maybe Text)
+rigmlNextPageToken
+  = lens _rigmlNextPageToken
+      (\ s a -> s{_rigmlNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManagerList for a list of managed instance groups
+-- that exist in th regional scope.
+rigmlKind :: Lens' RegionInstanceGroupManagerList Text
+rigmlKind
+  = lens _rigmlKind (\ s a -> s{_rigmlKind = a})
+
+-- | A list of InstanceGroupManager resources.
+rigmlItems :: Lens' RegionInstanceGroupManagerList [InstanceGroupManager]
+rigmlItems
+  = lens _rigmlItems (\ s a -> s{_rigmlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rigmlSelfLink :: Lens' RegionInstanceGroupManagerList (Maybe Text)
+rigmlSelfLink
+  = lens _rigmlSelfLink
+      (\ s a -> s{_rigmlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+rigmlWarning :: Lens' RegionInstanceGroupManagerList (Maybe RegionInstanceGroupManagerListWarning)
+rigmlWarning
+  = lens _rigmlWarning (\ s a -> s{_rigmlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+rigmlId :: Lens' RegionInstanceGroupManagerList (Maybe Text)
+rigmlId = lens _rigmlId (\ s a -> s{_rigmlId = a})
+
+instance FromJSON RegionInstanceGroupManagerList
+         where
+        parseJSON
+          = withObject "RegionInstanceGroupManagerList"
+              (\ o ->
+                 RegionInstanceGroupManagerList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#regionInstanceGroupManagerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionInstanceGroupManagerList where
+        toJSON RegionInstanceGroupManagerList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rigmlNextPageToken,
+                  Just ("kind" .= _rigmlKind),
+                  ("items" .=) <$> _rigmlItems,
+                  ("selfLink" .=) <$> _rigmlSelfLink,
+                  ("warning" .=) <$> _rigmlWarning,
+                  ("id" .=) <$> _rigmlId])
+
+--
+-- /See:/ 'diskTypesScopedList' smart constructor.
+data DiskTypesScopedList = DiskTypesScopedList'
+    { _dtslDiskTypes :: !(Maybe [DiskType])
+    , _dtslWarning   :: !(Maybe DiskTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslDiskTypes'
+--
+-- * 'dtslWarning'
+diskTypesScopedList
+    :: DiskTypesScopedList
+diskTypesScopedList =
+    DiskTypesScopedList'
+    { _dtslDiskTypes = Nothing
+    , _dtslWarning = Nothing
+    }
+
+-- | [Output Only] A list of disk types contained in this scope.
+dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]
+dtslDiskTypes
+  = lens _dtslDiskTypes
+      (\ s a -> s{_dtslDiskTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of disk
+-- types when the list is empty.
+dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)
+dtslWarning
+  = lens _dtslWarning (\ s a -> s{_dtslWarning = a})
+
+instance FromJSON DiskTypesScopedList where
+        parseJSON
+          = withObject "DiskTypesScopedList"
+              (\ o ->
+                 DiskTypesScopedList' <$>
+                   (o .:? "diskTypes" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON DiskTypesScopedList where
+        toJSON DiskTypesScopedList'{..}
+          = object
+              (catMaybes
+                 [("diskTypes" .=) <$> _dtslDiskTypes,
+                  ("warning" .=) <$> _dtslWarning])
+
+-- | Write a Cloud Audit log
+--
+-- /See:/ 'logConfigCloudAuditOptions' smart constructor.
+data LogConfigCloudAuditOptions = LogConfigCloudAuditOptions'
+    { _lccaoAuthorizationLoggingOptions :: !(Maybe AuthorizationLoggingOptions)
+    , _lccaoLogName                     :: !(Maybe LogConfigCloudAuditOptionsLogName)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LogConfigCloudAuditOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lccaoAuthorizationLoggingOptions'
+--
+-- * 'lccaoLogName'
+logConfigCloudAuditOptions
+    :: LogConfigCloudAuditOptions
+logConfigCloudAuditOptions =
+    LogConfigCloudAuditOptions'
+    { _lccaoAuthorizationLoggingOptions = Nothing
+    , _lccaoLogName = Nothing
+    }
+
+-- | Information used by the Cloud Audit Logging pipeline.
+lccaoAuthorizationLoggingOptions :: Lens' LogConfigCloudAuditOptions (Maybe AuthorizationLoggingOptions)
+lccaoAuthorizationLoggingOptions
+  = lens _lccaoAuthorizationLoggingOptions
+      (\ s a -> s{_lccaoAuthorizationLoggingOptions = a})
+
+-- | The log_name to populate in the Cloud Audit Record.
+lccaoLogName :: Lens' LogConfigCloudAuditOptions (Maybe LogConfigCloudAuditOptionsLogName)
+lccaoLogName
+  = lens _lccaoLogName (\ s a -> s{_lccaoLogName = a})
+
+instance FromJSON LogConfigCloudAuditOptions where
+        parseJSON
+          = withObject "LogConfigCloudAuditOptions"
+              (\ o ->
+                 LogConfigCloudAuditOptions' <$>
+                   (o .:? "authorizationLoggingOptions") <*>
+                     (o .:? "logName"))
+
+instance ToJSON LogConfigCloudAuditOptions where
+        toJSON LogConfigCloudAuditOptions'{..}
+          = object
+              (catMaybes
+                 [("authorizationLoggingOptions" .=) <$>
+                    _lccaoAuthorizationLoggingOptions,
+                  ("logName" .=) <$> _lccaoLogName])
+
+--
+-- /See:/ 'projectsSetDefaultNetworkTierRequest' smart constructor.
+newtype ProjectsSetDefaultNetworkTierRequest = ProjectsSetDefaultNetworkTierRequest'
+    { _psdntrNetworkTier :: Maybe ProjectsSetDefaultNetworkTierRequestNetworkTier
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsSetDefaultNetworkTierRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psdntrNetworkTier'
+projectsSetDefaultNetworkTierRequest
+    :: ProjectsSetDefaultNetworkTierRequest
+projectsSetDefaultNetworkTierRequest =
+    ProjectsSetDefaultNetworkTierRequest'
+    { _psdntrNetworkTier = Nothing
+    }
+
+-- | Default network tier to be set.
+psdntrNetworkTier :: Lens' ProjectsSetDefaultNetworkTierRequest (Maybe ProjectsSetDefaultNetworkTierRequestNetworkTier)
+psdntrNetworkTier
+  = lens _psdntrNetworkTier
+      (\ s a -> s{_psdntrNetworkTier = a})
+
+instance FromJSON
+         ProjectsSetDefaultNetworkTierRequest where
+        parseJSON
+          = withObject "ProjectsSetDefaultNetworkTierRequest"
+              (\ o ->
+                 ProjectsSetDefaultNetworkTierRequest' <$>
+                   (o .:? "networkTier"))
+
+instance ToJSON ProjectsSetDefaultNetworkTierRequest
+         where
+        toJSON ProjectsSetDefaultNetworkTierRequest'{..}
+          = object
+              (catMaybes
+                 [("networkTier" .=) <$> _psdntrNetworkTier])
+
+--
+-- /See:/ 'imageListWarningDataItem' smart constructor.
+data ImageListWarningDataItem = ImageListWarningDataItem'
+    { _imaValue :: !(Maybe Text)
+    , _imaKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imaValue'
+--
+-- * 'imaKey'
+imageListWarningDataItem
+    :: ImageListWarningDataItem
+imageListWarningDataItem =
+    ImageListWarningDataItem'
+    { _imaValue = Nothing
+    , _imaKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+imaValue :: Lens' ImageListWarningDataItem (Maybe Text)
+imaValue = lens _imaValue (\ s a -> s{_imaValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+imaKey :: Lens' ImageListWarningDataItem (Maybe Text)
+imaKey = lens _imaKey (\ s a -> s{_imaKey = a})
+
+instance FromJSON ImageListWarningDataItem where
+        parseJSON
+          = withObject "ImageListWarningDataItem"
+              (\ o ->
+                 ImageListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON ImageListWarningDataItem where
+        toJSON ImageListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _imaValue, ("key" .=) <$> _imaKey])
+
+--
+-- /See:/ 'acceleratorTypeListWarningDataItem' smart constructor.
+data AcceleratorTypeListWarningDataItem = AcceleratorTypeListWarningDataItem'
+    { _atlwdiValue :: !(Maybe Text)
+    , _atlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atlwdiValue'
+--
+-- * 'atlwdiKey'
+acceleratorTypeListWarningDataItem
+    :: AcceleratorTypeListWarningDataItem
+acceleratorTypeListWarningDataItem =
+    AcceleratorTypeListWarningDataItem'
+    { _atlwdiValue = Nothing
+    , _atlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+atlwdiValue :: Lens' AcceleratorTypeListWarningDataItem (Maybe Text)
+atlwdiValue
+  = lens _atlwdiValue (\ s a -> s{_atlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+atlwdiKey :: Lens' AcceleratorTypeListWarningDataItem (Maybe Text)
+atlwdiKey
+  = lens _atlwdiKey (\ s a -> s{_atlwdiKey = a})
+
+instance FromJSON AcceleratorTypeListWarningDataItem
+         where
+        parseJSON
+          = withObject "AcceleratorTypeListWarningDataItem"
+              (\ o ->
+                 AcceleratorTypeListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AcceleratorTypeListWarningDataItem
+         where
+        toJSON AcceleratorTypeListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _atlwdiValue,
+                  ("key" .=) <$> _atlwdiKey])
+
+-- | Description of a planned outage on this Interconnect. Next id: 9
+--
+-- /See:/ 'interconnectOutageNotification' smart constructor.
+data InterconnectOutageNotification = InterconnectOutageNotification'
+    { _ionState            :: !(Maybe InterconnectOutageNotificationState)
+    , _ionAffectedCircuits :: !(Maybe [Text])
+    , _ionStartTime        :: !(Maybe (Textual Int64))
+    , _ionIssueType        :: !(Maybe InterconnectOutageNotificationIssueType)
+    , _ionName             :: !(Maybe Text)
+    , _ionEndTime          :: !(Maybe (Textual Int64))
+    , _ionSource           :: !(Maybe InterconnectOutageNotificationSource)
+    , _ionDescription      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectOutageNotification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ionState'
+--
+-- * 'ionAffectedCircuits'
+--
+-- * 'ionStartTime'
+--
+-- * 'ionIssueType'
+--
+-- * 'ionName'
+--
+-- * 'ionEndTime'
+--
+-- * 'ionSource'
+--
+-- * 'ionDescription'
+interconnectOutageNotification
+    :: InterconnectOutageNotification
+interconnectOutageNotification =
+    InterconnectOutageNotification'
+    { _ionState = Nothing
+    , _ionAffectedCircuits = Nothing
+    , _ionStartTime = Nothing
+    , _ionIssueType = Nothing
+    , _ionName = Nothing
+    , _ionEndTime = Nothing
+    , _ionSource = Nothing
+    , _ionDescription = Nothing
+    }
+
+-- | State of this notification. Note that the \"NS_\" versions of this enum
+-- have been deprecated in favor of the unprefixed values.
+ionState :: Lens' InterconnectOutageNotification (Maybe InterconnectOutageNotificationState)
+ionState = lens _ionState (\ s a -> s{_ionState = a})
+
+-- | If issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit
+-- IDs that will be affected.
+ionAffectedCircuits :: Lens' InterconnectOutageNotification [Text]
+ionAffectedCircuits
+  = lens _ionAffectedCircuits
+      (\ s a -> s{_ionAffectedCircuits = a})
+      . _Default
+      . _Coerce
+
+-- | Scheduled start time for the outage (milliseconds since Unix epoch).
+ionStartTime :: Lens' InterconnectOutageNotification (Maybe Int64)
+ionStartTime
+  = lens _ionStartTime (\ s a -> s{_ionStartTime = a})
+      . mapping _Coerce
+
+-- | Form this outage is expected to take. Note that the \"IT_\" versions of
+-- this enum have been deprecated in favor of the unprefixed values.
+ionIssueType :: Lens' InterconnectOutageNotification (Maybe InterconnectOutageNotificationIssueType)
+ionIssueType
+  = lens _ionIssueType (\ s a -> s{_ionIssueType = a})
+
+-- | Unique identifier for this outage notification.
+ionName :: Lens' InterconnectOutageNotification (Maybe Text)
+ionName = lens _ionName (\ s a -> s{_ionName = a})
+
+-- | Scheduled end time for the outage (milliseconds since Unix epoch).
+ionEndTime :: Lens' InterconnectOutageNotification (Maybe Int64)
+ionEndTime
+  = lens _ionEndTime (\ s a -> s{_ionEndTime = a}) .
+      mapping _Coerce
+
+-- | The party that generated this notification. Note that \"NSRC_GOOGLE\"
+-- has been deprecated in favor of \"GOOGLE\"
+ionSource :: Lens' InterconnectOutageNotification (Maybe InterconnectOutageNotificationSource)
+ionSource
+  = lens _ionSource (\ s a -> s{_ionSource = a})
+
+-- | A description about the purpose of the outage.
+ionDescription :: Lens' InterconnectOutageNotification (Maybe Text)
+ionDescription
+  = lens _ionDescription
+      (\ s a -> s{_ionDescription = a})
+
+instance FromJSON InterconnectOutageNotification
+         where
+        parseJSON
+          = withObject "InterconnectOutageNotification"
+              (\ o ->
+                 InterconnectOutageNotification' <$>
+                   (o .:? "state") <*>
+                     (o .:? "affectedCircuits" .!= mempty)
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "issueType")
+                     <*> (o .:? "name")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "source")
+                     <*> (o .:? "description"))
+
+instance ToJSON InterconnectOutageNotification where
+        toJSON InterconnectOutageNotification'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _ionState,
+                  ("affectedCircuits" .=) <$> _ionAffectedCircuits,
+                  ("startTime" .=) <$> _ionStartTime,
+                  ("issueType" .=) <$> _ionIssueType,
+                  ("name" .=) <$> _ionName,
+                  ("endTime" .=) <$> _ionEndTime,
+                  ("source" .=) <$> _ionSource,
+                  ("description" .=) <$> _ionDescription])
+
+-- | Contains a list of node templates.
+--
+-- /See:/ 'nodeTemplateList' smart constructor.
+data NodeTemplateList = NodeTemplateList'
+    { _ntlNextPageToken :: !(Maybe Text)
+    , _ntlKind          :: !Text
+    , _ntlItems         :: !(Maybe [NodeTemplate])
+    , _ntlSelfLink      :: !(Maybe Text)
+    , _ntlWarning       :: !(Maybe NodeTemplateListWarning)
+    , _ntlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntlNextPageToken'
+--
+-- * 'ntlKind'
+--
+-- * 'ntlItems'
+--
+-- * 'ntlSelfLink'
+--
+-- * 'ntlWarning'
+--
+-- * 'ntlId'
+nodeTemplateList
+    :: NodeTemplateList
+nodeTemplateList =
+    NodeTemplateList'
+    { _ntlNextPageToken = Nothing
+    , _ntlKind = "compute#nodeTemplateList"
+    , _ntlItems = Nothing
+    , _ntlSelfLink = Nothing
+    , _ntlWarning = Nothing
+    , _ntlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ntlNextPageToken :: Lens' NodeTemplateList (Maybe Text)
+ntlNextPageToken
+  = lens _ntlNextPageToken
+      (\ s a -> s{_ntlNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeTemplateList for lists
+-- of node templates.
+ntlKind :: Lens' NodeTemplateList Text
+ntlKind = lens _ntlKind (\ s a -> s{_ntlKind = a})
+
+-- | A list of NodeTemplate resources.
+ntlItems :: Lens' NodeTemplateList [NodeTemplate]
+ntlItems
+  = lens _ntlItems (\ s a -> s{_ntlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ntlSelfLink :: Lens' NodeTemplateList (Maybe Text)
+ntlSelfLink
+  = lens _ntlSelfLink (\ s a -> s{_ntlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ntlWarning :: Lens' NodeTemplateList (Maybe NodeTemplateListWarning)
+ntlWarning
+  = lens _ntlWarning (\ s a -> s{_ntlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ntlId :: Lens' NodeTemplateList (Maybe Text)
+ntlId = lens _ntlId (\ s a -> s{_ntlId = a})
+
+instance FromJSON NodeTemplateList where
+        parseJSON
+          = withObject "NodeTemplateList"
+              (\ o ->
+                 NodeTemplateList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeTemplateList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeTemplateList where
+        toJSON NodeTemplateList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ntlNextPageToken,
+                  Just ("kind" .= _ntlKind),
+                  ("items" .=) <$> _ntlItems,
+                  ("selfLink" .=) <$> _ntlSelfLink,
+                  ("warning" .=) <$> _ntlWarning,
+                  ("id" .=) <$> _ntlId])
+
+--
+-- /See:/ 'diskTypeAggregatedList' smart constructor.
+data DiskTypeAggregatedList = DiskTypeAggregatedList'
+    { _dtalNextPageToken :: !(Maybe Text)
+    , _dtalKind          :: !Text
+    , _dtalItems         :: !(Maybe DiskTypeAggregatedListItems)
+    , _dtalSelfLink      :: !(Maybe Text)
+    , _dtalWarning       :: !(Maybe DiskTypeAggregatedListWarning)
+    , _dtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtalNextPageToken'
+--
+-- * 'dtalKind'
+--
+-- * 'dtalItems'
+--
+-- * 'dtalSelfLink'
+--
+-- * 'dtalWarning'
+--
+-- * 'dtalId'
+diskTypeAggregatedList
+    :: DiskTypeAggregatedList
+diskTypeAggregatedList =
+    DiskTypeAggregatedList'
+    { _dtalNextPageToken = Nothing
+    , _dtalKind = "compute#diskTypeAggregatedList"
+    , _dtalItems = Nothing
+    , _dtalSelfLink = Nothing
+    , _dtalWarning = Nothing
+    , _dtalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalNextPageToken
+  = lens _dtalNextPageToken
+      (\ s a -> s{_dtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskTypeAggregatedList.
+dtalKind :: Lens' DiskTypeAggregatedList Text
+dtalKind = lens _dtalKind (\ s a -> s{_dtalKind = a})
+
+-- | A list of DiskTypesScopedList resources.
+dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)
+dtalItems
+  = lens _dtalItems (\ s a -> s{_dtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalSelfLink
+  = lens _dtalSelfLink (\ s a -> s{_dtalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+dtalWarning :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListWarning)
+dtalWarning
+  = lens _dtalWarning (\ s a -> s{_dtalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalId = lens _dtalId (\ s a -> s{_dtalId = a})
+
+instance FromJSON DiskTypeAggregatedList where
+        parseJSON
+          = withObject "DiskTypeAggregatedList"
+              (\ o ->
+                 DiskTypeAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskTypeAggregatedList where
+        toJSON DiskTypeAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dtalNextPageToken,
+                  Just ("kind" .= _dtalKind),
+                  ("items" .=) <$> _dtalItems,
+                  ("selfLink" .=) <$> _dtalSelfLink,
+                  ("warning" .=) <$> _dtalWarning,
+                  ("id" .=) <$> _dtalId])
+
+--
+-- /See:/ 'hTTPHealthCheck' smart constructor.
+data HTTPHealthCheck = HTTPHealthCheck'
+    { _httphcResponse    :: !(Maybe Text)
+    , _httphcRequestPath :: !(Maybe Text)
+    , _httphcHost        :: !(Maybe Text)
+    , _httphcProxyHeader :: !(Maybe HTTPHealthCheckProxyHeader)
+    , _httphcPortName    :: !(Maybe Text)
+    , _httphcPort        :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcResponse'
+--
+-- * 'httphcRequestPath'
+--
+-- * 'httphcHost'
+--
+-- * 'httphcProxyHeader'
+--
+-- * 'httphcPortName'
+--
+-- * 'httphcPort'
+hTTPHealthCheck
+    :: HTTPHealthCheck
+hTTPHealthCheck =
+    HTTPHealthCheck'
+    { _httphcResponse = Nothing
+    , _httphcRequestPath = Nothing
+    , _httphcHost = Nothing
+    , _httphcProxyHeader = Nothing
+    , _httphcPortName = Nothing
+    , _httphcPort = Nothing
+    }
+
+-- | The string to match anywhere in the first 1024 bytes of the response
+-- body. If left empty (the default value), the status code determines
+-- health. The response data can only be ASCII.
+httphcResponse :: Lens' HTTPHealthCheck (Maybe Text)
+httphcResponse
+  = lens _httphcResponse
+      (\ s a -> s{_httphcResponse = a})
+
+-- | The request path of the HTTP health check request. The default value is
+-- \/.
+httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+httphcRequestPath
+  = lens _httphcRequestPath
+      (\ s a -> s{_httphcRequestPath = a})
+
+-- | The value of the host header in the HTTP health check request. If left
+-- empty (default value), the IP on behalf of which this health check is
+-- performed will be used.
+httphcHost :: Lens' HTTPHealthCheck (Maybe Text)
+httphcHost
+  = lens _httphcHost (\ s a -> s{_httphcHost = a})
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+httphcProxyHeader :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckProxyHeader)
+httphcProxyHeader
+  = lens _httphcProxyHeader
+      (\ s a -> s{_httphcProxyHeader = a})
+
+-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
+-- port_name are defined, port takes precedence.
+httphcPortName :: Lens' HTTPHealthCheck (Maybe Text)
+httphcPortName
+  = lens _httphcPortName
+      (\ s a -> s{_httphcPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 80. Valid values are 1 through 65535.
+httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcPort
+  = lens _httphcPort (\ s a -> s{_httphcPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTPHealthCheck where
+        parseJSON
+          = withObject "HTTPHealthCheck"
+              (\ o ->
+                 HTTPHealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "requestPath") <*>
+                     (o .:? "host")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPHealthCheck where
+        toJSON HTTPHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _httphcResponse,
+                  ("requestPath" .=) <$> _httphcRequestPath,
+                  ("host" .=) <$> _httphcHost,
+                  ("proxyHeader" .=) <$> _httphcProxyHeader,
+                  ("portName" .=) <$> _httphcPortName,
+                  ("port" .=) <$> _httphcPort])
+
+--
+-- /See:/ 'urlMapListWarningDataItem' smart constructor.
+data URLMapListWarningDataItem = URLMapListWarningDataItem'
+    { _umlwdiValue :: !(Maybe Text)
+    , _umlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umlwdiValue'
+--
+-- * 'umlwdiKey'
+urlMapListWarningDataItem
+    :: URLMapListWarningDataItem
+urlMapListWarningDataItem =
+    URLMapListWarningDataItem'
+    { _umlwdiValue = Nothing
+    , _umlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+umlwdiValue :: Lens' URLMapListWarningDataItem (Maybe Text)
+umlwdiValue
+  = lens _umlwdiValue (\ s a -> s{_umlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+umlwdiKey :: Lens' URLMapListWarningDataItem (Maybe Text)
+umlwdiKey
+  = lens _umlwdiKey (\ s a -> s{_umlwdiKey = a})
+
+instance FromJSON URLMapListWarningDataItem where
+        parseJSON
+          = withObject "URLMapListWarningDataItem"
+              (\ o ->
+                 URLMapListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON URLMapListWarningDataItem where
+        toJSON URLMapListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _umlwdiValue,
+                  ("key" .=) <$> _umlwdiKey])
+
+-- | Defines the IP ranges that want to use NAT for a subnetwork.
+--
+-- /See:/ 'routerNATSubnetworkToNAT' smart constructor.
+data RouterNATSubnetworkToNAT = RouterNATSubnetworkToNAT'
+    { _rnatstnatSourceIPRangesToNAT   :: !(Maybe [RouterNATSubnetworkToNATSourceIPRangesToNATItem])
+    , _rnatstnatName                  :: !(Maybe Text)
+    , _rnatstnatSecondaryIPRangeNames :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterNATSubnetworkToNAT' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rnatstnatSourceIPRangesToNAT'
+--
+-- * 'rnatstnatName'
+--
+-- * 'rnatstnatSecondaryIPRangeNames'
+routerNATSubnetworkToNAT
+    :: RouterNATSubnetworkToNAT
+routerNATSubnetworkToNAT =
+    RouterNATSubnetworkToNAT'
+    { _rnatstnatSourceIPRangesToNAT = Nothing
+    , _rnatstnatName = Nothing
+    , _rnatstnatSecondaryIPRangeNames = Nothing
+    }
+
+-- | Specify the options for NAT ranges in the Subnetwork. All usages of
+-- single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only
+-- valid option with multiple values is: [\"PRIMARY_IP_RANGE\",
+-- \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]
+rnatstnatSourceIPRangesToNAT :: Lens' RouterNATSubnetworkToNAT [RouterNATSubnetworkToNATSourceIPRangesToNATItem]
+rnatstnatSourceIPRangesToNAT
+  = lens _rnatstnatSourceIPRangesToNAT
+      (\ s a -> s{_rnatstnatSourceIPRangesToNAT = a})
+      . _Default
+      . _Coerce
+
+-- | URL for the subnetwork resource to use NAT.
+rnatstnatName :: Lens' RouterNATSubnetworkToNAT (Maybe Text)
+rnatstnatName
+  = lens _rnatstnatName
+      (\ s a -> s{_rnatstnatName = a})
+
+-- | A list of the secondary ranges of the Subnetwork that are allowed to use
+-- NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is
+-- one of the values in source_ip_ranges_to_nat.
+rnatstnatSecondaryIPRangeNames :: Lens' RouterNATSubnetworkToNAT [Text]
+rnatstnatSecondaryIPRangeNames
+  = lens _rnatstnatSecondaryIPRangeNames
+      (\ s a -> s{_rnatstnatSecondaryIPRangeNames = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RouterNATSubnetworkToNAT where
+        parseJSON
+          = withObject "RouterNATSubnetworkToNAT"
+              (\ o ->
+                 RouterNATSubnetworkToNAT' <$>
+                   (o .:? "sourceIpRangesToNat" .!= mempty) <*>
+                     (o .:? "name")
+                     <*> (o .:? "secondaryIpRangeNames" .!= mempty))
+
+instance ToJSON RouterNATSubnetworkToNAT where
+        toJSON RouterNATSubnetworkToNAT'{..}
+          = object
+              (catMaybes
+                 [("sourceIpRangesToNat" .=) <$>
+                    _rnatstnatSourceIPRangesToNAT,
+                  ("name" .=) <$> _rnatstnatName,
+                  ("secondaryIpRangeNames" .=) <$>
+                    _rnatstnatSecondaryIPRangeNames])
+
+--
+-- /See:/ 'backendServiceGroupHealth' smart constructor.
+data BackendServiceGroupHealth = BackendServiceGroupHealth'
+    { _bsghKind         :: !Text
+    , _bsghHealthStatus :: !(Maybe [HealthStatus])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceGroupHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsghKind'
+--
+-- * 'bsghHealthStatus'
+backendServiceGroupHealth
+    :: BackendServiceGroupHealth
+backendServiceGroupHealth =
+    BackendServiceGroupHealth'
+    { _bsghKind = "compute#backendServiceGroupHealth"
+    , _bsghHealthStatus = Nothing
+    }
+
+-- | [Output Only] Type of resource. Always compute#backendServiceGroupHealth
+-- for the health of backend services.
+bsghKind :: Lens' BackendServiceGroupHealth Text
+bsghKind = lens _bsghKind (\ s a -> s{_bsghKind = a})
+
+-- | Health state of the backend instances or endpoints in requested instance
+-- or network endpoint group, determined based on configured health checks.
+bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]
+bsghHealthStatus
+  = lens _bsghHealthStatus
+      (\ s a -> s{_bsghHealthStatus = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BackendServiceGroupHealth where
+        parseJSON
+          = withObject "BackendServiceGroupHealth"
+              (\ o ->
+                 BackendServiceGroupHealth' <$>
+                   (o .:? "kind" .!=
+                      "compute#backendServiceGroupHealth")
+                     <*> (o .:? "healthStatus" .!= mempty))
+
+instance ToJSON BackendServiceGroupHealth where
+        toJSON BackendServiceGroupHealth'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _bsghKind),
+                  ("healthStatus" .=) <$> _bsghHealthStatus])
+
+--
+-- /See:/ 'autoscalersScopedList' smart constructor.
+data AutoscalersScopedList = AutoscalersScopedList'
+    { _aAutoscalers :: !(Maybe [Autoscaler])
+    , _aWarning     :: !(Maybe AutoscalersScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAutoscalers'
+--
+-- * 'aWarning'
+autoscalersScopedList
+    :: AutoscalersScopedList
+autoscalersScopedList =
+    AutoscalersScopedList'
+    { _aAutoscalers = Nothing
+    , _aWarning = Nothing
+    }
+
+-- | [Output Only] A list of autoscalers contained in this scope.
+aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]
+aAutoscalers
+  = lens _aAutoscalers (\ s a -> s{_aAutoscalers = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of
+-- autoscalers when the list is empty.
+aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)
+aWarning = lens _aWarning (\ s a -> s{_aWarning = a})
+
+instance FromJSON AutoscalersScopedList where
+        parseJSON
+          = withObject "AutoscalersScopedList"
+              (\ o ->
+                 AutoscalersScopedList' <$>
+                   (o .:? "autoscalers" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON AutoscalersScopedList where
+        toJSON AutoscalersScopedList'{..}
+          = object
+              (catMaybes
+                 [("autoscalers" .=) <$> _aAutoscalers,
+                  ("warning" .=) <$> _aWarning])
+
+-- | Write a Data Access (Gin) log
+--
+-- /See:/ 'logConfigDataAccessOptions' smart constructor.
+newtype LogConfigDataAccessOptions = LogConfigDataAccessOptions'
+    { _lcdaoLogMode :: Maybe LogConfigDataAccessOptionsLogMode
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LogConfigDataAccessOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcdaoLogMode'
+logConfigDataAccessOptions
+    :: LogConfigDataAccessOptions
+logConfigDataAccessOptions =
+    LogConfigDataAccessOptions'
+    { _lcdaoLogMode = Nothing
+    }
+
+-- | Whether Gin logging should happen in a fail-closed manner at the caller.
+-- This is relevant only in the LocalIAM implementation, for now. NOTE:
+-- Logging to Gin in a fail-closed manner is currently unsupported while
+-- work is being done to satisfy the requirements of go\/345. Currently,
+-- setting LOG_FAIL_CLOSED mode will have no effect, but still exists
+-- because there is active work being done to support it (b\/115874152).
+lcdaoLogMode :: Lens' LogConfigDataAccessOptions (Maybe LogConfigDataAccessOptionsLogMode)
+lcdaoLogMode
+  = lens _lcdaoLogMode (\ s a -> s{_lcdaoLogMode = a})
+
+instance FromJSON LogConfigDataAccessOptions where
+        parseJSON
+          = withObject "LogConfigDataAccessOptions"
+              (\ o ->
+                 LogConfigDataAccessOptions' <$> (o .:? "logMode"))
+
+instance ToJSON LogConfigDataAccessOptions where
+        toJSON LogConfigDataAccessOptions'{..}
+          = object
+              (catMaybes [("logMode" .=) <$> _lcdaoLogMode])
+
+--
+-- /See:/ 'autoscalerAggregatedList' smart constructor.
+data AutoscalerAggregatedList = AutoscalerAggregatedList'
+    { _aalNextPageToken :: !(Maybe Text)
+    , _aalKind          :: !Text
+    , _aalItems         :: !(Maybe AutoscalerAggregatedListItems)
+    , _aalSelfLink      :: !(Maybe Text)
+    , _aalWarning       :: !(Maybe AutoscalerAggregatedListWarning)
+    , _aalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalNextPageToken'
+--
+-- * 'aalKind'
+--
+-- * 'aalItems'
+--
+-- * 'aalSelfLink'
+--
+-- * 'aalWarning'
+--
+-- * 'aalId'
+autoscalerAggregatedList
+    :: AutoscalerAggregatedList
+autoscalerAggregatedList =
+    AutoscalerAggregatedList'
+    { _aalNextPageToken = Nothing
+    , _aalKind = "compute#autoscalerAggregatedList"
+    , _aalItems = Nothing
+    , _aalSelfLink = Nothing
+    , _aalWarning = Nothing
+    , _aalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalNextPageToken
+  = lens _aalNextPageToken
+      (\ s a -> s{_aalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#autoscalerAggregatedList
+-- for aggregated lists of autoscalers.
+aalKind :: Lens' AutoscalerAggregatedList Text
+aalKind = lens _aalKind (\ s a -> s{_aalKind = a})
+
+-- | A list of AutoscalersScopedList resources.
+aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)
+aalItems = lens _aalItems (\ s a -> s{_aalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalSelfLink
+  = lens _aalSelfLink (\ s a -> s{_aalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+aalWarning :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListWarning)
+aalWarning
+  = lens _aalWarning (\ s a -> s{_aalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+aalId :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalId = lens _aalId (\ s a -> s{_aalId = a})
+
+instance FromJSON AutoscalerAggregatedList where
+        parseJSON
+          = withObject "AutoscalerAggregatedList"
+              (\ o ->
+                 AutoscalerAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#autoscalerAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AutoscalerAggregatedList where
+        toJSON AutoscalerAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _aalNextPageToken,
+                  Just ("kind" .= _aalKind),
+                  ("items" .=) <$> _aalItems,
+                  ("selfLink" .=) <$> _aalSelfLink,
+                  ("warning" .=) <$> _aalWarning,
+                  ("id" .=) <$> _aalId])
+
+-- | A list of Router resources.
+--
+-- /See:/ 'routerAggregatedListItems' smart constructor.
+newtype RouterAggregatedListItems = RouterAggregatedListItems'
+    { _raliAddtional :: HashMap Text RoutersScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raliAddtional'
+routerAggregatedListItems
+    :: HashMap Text RoutersScopedList -- ^ 'raliAddtional'
+    -> RouterAggregatedListItems
+routerAggregatedListItems pRaliAddtional_ =
+    RouterAggregatedListItems'
+    { _raliAddtional = _Coerce # pRaliAddtional_
+    }
+
+-- | Name of the scope containing this set of routers.
+raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)
+raliAddtional
+  = lens _raliAddtional
+      (\ s a -> s{_raliAddtional = a})
+      . _Coerce
+
+instance FromJSON RouterAggregatedListItems where
+        parseJSON
+          = withObject "RouterAggregatedListItems"
+              (\ o ->
+                 RouterAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON RouterAggregatedListItems where
+        toJSON = toJSON . _raliAddtional
+
+-- | [Output Only] An informational warning that appears when the accelerator
+-- types list is empty.
+--
+-- /See:/ 'acceleratorTypesScopedListWarning' smart constructor.
+data AcceleratorTypesScopedListWarning = AcceleratorTypesScopedListWarning'
+    { _atslwData    :: !(Maybe [AcceleratorTypesScopedListWarningDataItem])
+    , _atslwCode    :: !(Maybe AcceleratorTypesScopedListWarningCode)
+    , _atslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atslwData'
+--
+-- * 'atslwCode'
+--
+-- * 'atslwMessage'
+acceleratorTypesScopedListWarning
+    :: AcceleratorTypesScopedListWarning
+acceleratorTypesScopedListWarning =
+    AcceleratorTypesScopedListWarning'
+    { _atslwData = Nothing
+    , _atslwCode = Nothing
+    , _atslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+atslwData :: Lens' AcceleratorTypesScopedListWarning [AcceleratorTypesScopedListWarningDataItem]
+atslwData
+  = lens _atslwData (\ s a -> s{_atslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+atslwCode :: Lens' AcceleratorTypesScopedListWarning (Maybe AcceleratorTypesScopedListWarningCode)
+atslwCode
+  = lens _atslwCode (\ s a -> s{_atslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+atslwMessage :: Lens' AcceleratorTypesScopedListWarning (Maybe Text)
+atslwMessage
+  = lens _atslwMessage (\ s a -> s{_atslwMessage = a})
+
+instance FromJSON AcceleratorTypesScopedListWarning
+         where
+        parseJSON
+          = withObject "AcceleratorTypesScopedListWarning"
+              (\ o ->
+                 AcceleratorTypesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AcceleratorTypesScopedListWarning
+         where
+        toJSON AcceleratorTypesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _atslwData,
+                  ("code" .=) <$> _atslwCode,
+                  ("message" .=) <$> _atslwMessage])
+
+-- | A TargetTcpProxy resource. This resource defines a TCP proxy. (==
+-- resource_for beta.targetTcpProxies ==) (== resource_for
+-- v1.targetTcpProxies ==)
+--
+-- /See:/ 'targetTCPProxy' smart constructor.
+data TargetTCPProxy = TargetTCPProxy'
+    { _ttpService           :: !(Maybe Text)
+    , _ttpKind              :: !Text
+    , _ttpSelfLink          :: !(Maybe Text)
+    , _ttpName              :: !(Maybe Text)
+    , _ttpCreationTimestamp :: !(Maybe Text)
+    , _ttpId                :: !(Maybe (Textual Word64))
+    , _ttpProxyHeader       :: !(Maybe TargetTCPProxyProxyHeader)
+    , _ttpDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpService'
+--
+-- * 'ttpKind'
+--
+-- * 'ttpSelfLink'
+--
+-- * 'ttpName'
+--
+-- * 'ttpCreationTimestamp'
+--
+-- * 'ttpId'
+--
+-- * 'ttpProxyHeader'
+--
+-- * 'ttpDescription'
+targetTCPProxy
+    :: TargetTCPProxy
+targetTCPProxy =
+    TargetTCPProxy'
+    { _ttpService = Nothing
+    , _ttpKind = "compute#targetTcpProxy"
+    , _ttpSelfLink = Nothing
+    , _ttpName = Nothing
+    , _ttpCreationTimestamp = Nothing
+    , _ttpId = Nothing
+    , _ttpProxyHeader = Nothing
+    , _ttpDescription = Nothing
+    }
+
+-- | URL to the BackendService resource.
+ttpService :: Lens' TargetTCPProxy (Maybe Text)
+ttpService
+  = lens _ttpService (\ s a -> s{_ttpService = a})
+
+-- | [Output Only] Type of the resource. Always compute#targetTcpProxy for
+-- target TCP proxies.
+ttpKind :: Lens' TargetTCPProxy Text
+ttpKind = lens _ttpKind (\ s a -> s{_ttpKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+ttpSelfLink :: Lens' TargetTCPProxy (Maybe Text)
+ttpSelfLink
+  = lens _ttpSelfLink (\ s a -> s{_ttpSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+ttpName :: Lens' TargetTCPProxy (Maybe Text)
+ttpName = lens _ttpName (\ s a -> s{_ttpName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+ttpCreationTimestamp :: Lens' TargetTCPProxy (Maybe Text)
+ttpCreationTimestamp
+  = lens _ttpCreationTimestamp
+      (\ s a -> s{_ttpCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+ttpId :: Lens' TargetTCPProxy (Maybe Word64)
+ttpId
+  = lens _ttpId (\ s a -> s{_ttpId = a}) .
+      mapping _Coerce
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+ttpProxyHeader :: Lens' TargetTCPProxy (Maybe TargetTCPProxyProxyHeader)
+ttpProxyHeader
+  = lens _ttpProxyHeader
+      (\ s a -> s{_ttpProxyHeader = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+ttpDescription :: Lens' TargetTCPProxy (Maybe Text)
+ttpDescription
+  = lens _ttpDescription
+      (\ s a -> s{_ttpDescription = a})
+
+instance FromJSON TargetTCPProxy where
+        parseJSON
+          = withObject "TargetTCPProxy"
+              (\ o ->
+                 TargetTCPProxy' <$>
+                   (o .:? "service") <*>
+                     (o .:? "kind" .!= "compute#targetTcpProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetTCPProxy where
+        toJSON TargetTCPProxy'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _ttpService,
+                  Just ("kind" .= _ttpKind),
+                  ("selfLink" .=) <$> _ttpSelfLink,
+                  ("name" .=) <$> _ttpName,
+                  ("creationTimestamp" .=) <$> _ttpCreationTimestamp,
+                  ("id" .=) <$> _ttpId,
+                  ("proxyHeader" .=) <$> _ttpProxyHeader,
+                  ("description" .=) <$> _ttpDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'backendBucketListWarning' smart constructor.
+data BackendBucketListWarning = BackendBucketListWarning'
+    { _bblwData    :: !(Maybe [BackendBucketListWarningDataItem])
+    , _bblwCode    :: !(Maybe BackendBucketListWarningCode)
+    , _bblwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bblwData'
+--
+-- * 'bblwCode'
+--
+-- * 'bblwMessage'
+backendBucketListWarning
+    :: BackendBucketListWarning
+backendBucketListWarning =
+    BackendBucketListWarning'
+    { _bblwData = Nothing
+    , _bblwCode = Nothing
+    , _bblwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+bblwData :: Lens' BackendBucketListWarning [BackendBucketListWarningDataItem]
+bblwData
+  = lens _bblwData (\ s a -> s{_bblwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+bblwCode :: Lens' BackendBucketListWarning (Maybe BackendBucketListWarningCode)
+bblwCode = lens _bblwCode (\ s a -> s{_bblwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+bblwMessage :: Lens' BackendBucketListWarning (Maybe Text)
+bblwMessage
+  = lens _bblwMessage (\ s a -> s{_bblwMessage = a})
+
+instance FromJSON BackendBucketListWarning where
+        parseJSON
+          = withObject "BackendBucketListWarning"
+              (\ o ->
+                 BackendBucketListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON BackendBucketListWarning where
+        toJSON BackendBucketListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _bblwData,
+                  ("code" .=) <$> _bblwCode,
+                  ("message" .=) <$> _bblwMessage])
+
+-- | Labels to apply to this image. These can be later modified by the
+-- setLabels method.
+--
+-- /See:/ 'imageLabels' smart constructor.
+newtype ImageLabels = ImageLabels'
+    { _iAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iAddtional'
+imageLabels
+    :: HashMap Text Text -- ^ 'iAddtional'
+    -> ImageLabels
+imageLabels pIAddtional_ =
+    ImageLabels'
+    { _iAddtional = _Coerce # pIAddtional_
+    }
+
+iAddtional :: Lens' ImageLabels (HashMap Text Text)
+iAddtional
+  = lens _iAddtional (\ s a -> s{_iAddtional = a}) .
+      _Coerce
+
+instance FromJSON ImageLabels where
+        parseJSON
+          = withObject "ImageLabels"
+              (\ o -> ImageLabels' <$> (parseJSONObject o))
+
+instance ToJSON ImageLabels where
+        toJSON = toJSON . _iAddtional
+
+--
+-- /See:/ 'distributionPolicy' smart constructor.
+newtype DistributionPolicy = DistributionPolicy'
+    { _dpZones :: Maybe [DistributionPolicyZoneConfiguration]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DistributionPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpZones'
+distributionPolicy
+    :: DistributionPolicy
+distributionPolicy =
+    DistributionPolicy'
+    { _dpZones = Nothing
+    }
+
+-- | Zones where the regional managed instance group will create and manage
+-- instances.
+dpZones :: Lens' DistributionPolicy [DistributionPolicyZoneConfiguration]
+dpZones
+  = lens _dpZones (\ s a -> s{_dpZones = a}) . _Default
+      . _Coerce
+
+instance FromJSON DistributionPolicy where
+        parseJSON
+          = withObject "DistributionPolicy"
+              (\ o ->
+                 DistributionPolicy' <$> (o .:? "zones" .!= mempty))
+
+instance ToJSON DistributionPolicy where
+        toJSON DistributionPolicy'{..}
+          = object (catMaybes [("zones" .=) <$> _dpZones])
+
+--
+-- /See:/ 'nodeGroupListWarningDataItem' smart constructor.
+data NodeGroupListWarningDataItem = NodeGroupListWarningDataItem'
+    { _nglwdiValue :: !(Maybe Text)
+    , _nglwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglwdiValue'
+--
+-- * 'nglwdiKey'
+nodeGroupListWarningDataItem
+    :: NodeGroupListWarningDataItem
+nodeGroupListWarningDataItem =
+    NodeGroupListWarningDataItem'
+    { _nglwdiValue = Nothing
+    , _nglwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+nglwdiValue :: Lens' NodeGroupListWarningDataItem (Maybe Text)
+nglwdiValue
+  = lens _nglwdiValue (\ s a -> s{_nglwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+nglwdiKey :: Lens' NodeGroupListWarningDataItem (Maybe Text)
+nglwdiKey
+  = lens _nglwdiKey (\ s a -> s{_nglwdiKey = a})
+
+instance FromJSON NodeGroupListWarningDataItem where
+        parseJSON
+          = withObject "NodeGroupListWarningDataItem"
+              (\ o ->
+                 NodeGroupListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeGroupListWarningDataItem where
+        toJSON NodeGroupListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _nglwdiValue,
+                  ("key" .=) <$> _nglwdiKey])
+
+-- | Cloud Autoscaler policy.
+--
+-- /See:/ 'autoscalingPolicy' smart constructor.
+data AutoscalingPolicy = AutoscalingPolicy'
+    { _apCustomMetricUtilizations :: !(Maybe [AutoscalingPolicyCustomMetricUtilization])
+    , _apMaxNumReplicas           :: !(Maybe (Textual Int32))
+    , _apCPUUtilization           :: !(Maybe AutoscalingPolicyCPUUtilization)
+    , _apLoadBalancingUtilization :: !(Maybe AutoscalingPolicyLoadBalancingUtilization)
+    , _apMinNumReplicas           :: !(Maybe (Textual Int32))
+    , _apCoolDownPeriodSec        :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apCustomMetricUtilizations'
+--
+-- * 'apMaxNumReplicas'
+--
+-- * 'apCPUUtilization'
+--
+-- * 'apLoadBalancingUtilization'
+--
+-- * 'apMinNumReplicas'
+--
+-- * 'apCoolDownPeriodSec'
+autoscalingPolicy
+    :: AutoscalingPolicy
+autoscalingPolicy =
+    AutoscalingPolicy'
+    { _apCustomMetricUtilizations = Nothing
+    , _apMaxNumReplicas = Nothing
+    , _apCPUUtilization = Nothing
+    , _apLoadBalancingUtilization = Nothing
+    , _apMinNumReplicas = Nothing
+    , _apCoolDownPeriodSec = Nothing
+    }
+
+-- | Configuration parameters of autoscaling based on a custom metric.
+apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]
+apCustomMetricUtilizations
+  = lens _apCustomMetricUtilizations
+      (\ s a -> s{_apCustomMetricUtilizations = a})
+      . _Default
+      . _Coerce
+
+-- | The maximum number of instances that the autoscaler can scale up to.
+-- This is required when creating or updating an autoscaler. The maximum
+-- number of replicas should not be lower than minimal number of replicas.
+apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
+apMaxNumReplicas
+  = lens _apMaxNumReplicas
+      (\ s a -> s{_apMaxNumReplicas = a})
+      . mapping _Coerce
+
+-- | Defines the CPU utilization policy that allows the autoscaler to scale
+-- based on the average CPU utilization of a managed instance group.
+apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)
+apCPUUtilization
+  = lens _apCPUUtilization
+      (\ s a -> s{_apCPUUtilization = a})
+
+-- | Configuration parameters of autoscaling based on load balancer.
+apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)
+apLoadBalancingUtilization
+  = lens _apLoadBalancingUtilization
+      (\ s a -> s{_apLoadBalancingUtilization = a})
+
+-- | The minimum number of replicas that the autoscaler can scale down to.
+-- This cannot be less than 0. If not provided, autoscaler will choose a
+-- default value depending on maximum number of instances allowed.
+apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
+apMinNumReplicas
+  = lens _apMinNumReplicas
+      (\ s a -> s{_apMinNumReplicas = a})
+      . mapping _Coerce
+
+-- | The number of seconds that the autoscaler should wait before it starts
+-- collecting information from a new instance. This prevents the autoscaler
+-- from collecting information when the instance is initializing, during
+-- which the collected usage would not be reliable. The default time
+-- autoscaler waits is 60 seconds. Virtual machine initialization times
+-- might vary because of numerous factors. We recommend that you test how
+-- long an instance may take to initialize. To do this, create an instance
+-- and time the startup process.
+apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)
+apCoolDownPeriodSec
+  = lens _apCoolDownPeriodSec
+      (\ s a -> s{_apCoolDownPeriodSec = a})
+      . mapping _Coerce
+
+instance FromJSON AutoscalingPolicy where
+        parseJSON
+          = withObject "AutoscalingPolicy"
+              (\ o ->
+                 AutoscalingPolicy' <$>
+                   (o .:? "customMetricUtilizations" .!= mempty) <*>
+                     (o .:? "maxNumReplicas")
+                     <*> (o .:? "cpuUtilization")
+                     <*> (o .:? "loadBalancingUtilization")
+                     <*> (o .:? "minNumReplicas")
+                     <*> (o .:? "coolDownPeriodSec"))
+
+instance ToJSON AutoscalingPolicy where
+        toJSON AutoscalingPolicy'{..}
+          = object
+              (catMaybes
+                 [("customMetricUtilizations" .=) <$>
+                    _apCustomMetricUtilizations,
+                  ("maxNumReplicas" .=) <$> _apMaxNumReplicas,
+                  ("cpuUtilization" .=) <$> _apCPUUtilization,
+                  ("loadBalancingUtilization" .=) <$>
+                    _apLoadBalancingUtilization,
+                  ("minNumReplicas" .=) <$> _apMinNumReplicas,
+                  ("coolDownPeriodSec" .=) <$> _apCoolDownPeriodSec])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeGroupAggregatedListWarning' smart constructor.
+data NodeGroupAggregatedListWarning = NodeGroupAggregatedListWarning'
+    { _ngalwData    :: !(Maybe [NodeGroupAggregatedListWarningDataItem])
+    , _ngalwCode    :: !(Maybe NodeGroupAggregatedListWarningCode)
+    , _ngalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngalwData'
+--
+-- * 'ngalwCode'
+--
+-- * 'ngalwMessage'
+nodeGroupAggregatedListWarning
+    :: NodeGroupAggregatedListWarning
+nodeGroupAggregatedListWarning =
+    NodeGroupAggregatedListWarning'
+    { _ngalwData = Nothing
+    , _ngalwCode = Nothing
+    , _ngalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ngalwData :: Lens' NodeGroupAggregatedListWarning [NodeGroupAggregatedListWarningDataItem]
+ngalwData
+  = lens _ngalwData (\ s a -> s{_ngalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ngalwCode :: Lens' NodeGroupAggregatedListWarning (Maybe NodeGroupAggregatedListWarningCode)
+ngalwCode
+  = lens _ngalwCode (\ s a -> s{_ngalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ngalwMessage :: Lens' NodeGroupAggregatedListWarning (Maybe Text)
+ngalwMessage
+  = lens _ngalwMessage (\ s a -> s{_ngalwMessage = a})
+
+instance FromJSON NodeGroupAggregatedListWarning
+         where
+        parseJSON
+          = withObject "NodeGroupAggregatedListWarning"
+              (\ o ->
+                 NodeGroupAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeGroupAggregatedListWarning where
+        toJSON NodeGroupAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ngalwData,
+                  ("code" .=) <$> _ngalwCode,
+                  ("message" .=) <$> _ngalwMessage])
+
+-- | Contains a list of region resources.
+--
+-- /See:/ 'regionList' smart constructor.
+data RegionList = RegionList'
+    { _regNextPageToken :: !(Maybe Text)
+    , _regKind          :: !Text
+    , _regItems         :: !(Maybe [Region])
+    , _regSelfLink      :: !(Maybe Text)
+    , _regWarning       :: !(Maybe RegionListWarning)
+    , _regId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'regNextPageToken'
+--
+-- * 'regKind'
+--
+-- * 'regItems'
+--
+-- * 'regSelfLink'
+--
+-- * 'regWarning'
+--
+-- * 'regId'
+regionList
+    :: RegionList
+regionList =
+    RegionList'
+    { _regNextPageToken = Nothing
+    , _regKind = "compute#regionList"
+    , _regItems = Nothing
+    , _regSelfLink = Nothing
+    , _regWarning = Nothing
+    , _regId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+regNextPageToken :: Lens' RegionList (Maybe Text)
+regNextPageToken
+  = lens _regNextPageToken
+      (\ s a -> s{_regNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#regionList for lists of
+-- regions.
+regKind :: Lens' RegionList Text
+regKind = lens _regKind (\ s a -> s{_regKind = a})
+
+-- | A list of Region resources.
+regItems :: Lens' RegionList [Region]
+regItems
+  = lens _regItems (\ s a -> s{_regItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+regSelfLink :: Lens' RegionList (Maybe Text)
+regSelfLink
+  = lens _regSelfLink (\ s a -> s{_regSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+regWarning :: Lens' RegionList (Maybe RegionListWarning)
+regWarning
+  = lens _regWarning (\ s a -> s{_regWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+regId :: Lens' RegionList (Maybe Text)
+regId = lens _regId (\ s a -> s{_regId = a})
+
+instance FromJSON RegionList where
+        parseJSON
+          = withObject "RegionList"
+              (\ o ->
+                 RegionList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#regionList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionList where
+        toJSON RegionList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _regNextPageToken,
+                  Just ("kind" .= _regKind),
+                  ("items" .=) <$> _regItems,
+                  ("selfLink" .=) <$> _regSelfLink,
+                  ("warning" .=) <$> _regWarning,
+                  ("id" .=) <$> _regId])
+
+-- | Node Affinity: the configuration of desired nodes onto which this
+-- Instance could be scheduled.
+--
+-- /See:/ 'schedulingNodeAffinity' smart constructor.
+data SchedulingNodeAffinity = SchedulingNodeAffinity'
+    { _snaOperator :: !(Maybe SchedulingNodeAffinityOperator)
+    , _snaValues   :: !(Maybe [Text])
+    , _snaKey      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SchedulingNodeAffinity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snaOperator'
+--
+-- * 'snaValues'
+--
+-- * 'snaKey'
+schedulingNodeAffinity
+    :: SchedulingNodeAffinity
+schedulingNodeAffinity =
+    SchedulingNodeAffinity'
+    { _snaOperator = Nothing
+    , _snaValues = Nothing
+    , _snaKey = Nothing
+    }
+
+-- | Defines the operation of node selection.
+snaOperator :: Lens' SchedulingNodeAffinity (Maybe SchedulingNodeAffinityOperator)
+snaOperator
+  = lens _snaOperator (\ s a -> s{_snaOperator = a})
+
+-- | Corresponds to the label values of Node resource.
+snaValues :: Lens' SchedulingNodeAffinity [Text]
+snaValues
+  = lens _snaValues (\ s a -> s{_snaValues = a}) .
+      _Default
+      . _Coerce
+
+-- | Corresponds to the label key of Node resource.
+snaKey :: Lens' SchedulingNodeAffinity (Maybe Text)
+snaKey = lens _snaKey (\ s a -> s{_snaKey = a})
+
+instance FromJSON SchedulingNodeAffinity where
+        parseJSON
+          = withObject "SchedulingNodeAffinity"
+              (\ o ->
+                 SchedulingNodeAffinity' <$>
+                   (o .:? "operator") <*> (o .:? "values" .!= mempty)
+                     <*> (o .:? "key"))
+
+instance ToJSON SchedulingNodeAffinity where
+        toJSON SchedulingNodeAffinity'{..}
+          = object
+              (catMaybes
+                 [("operator" .=) <$> _snaOperator,
+                  ("values" .=) <$> _snaValues,
+                  ("key" .=) <$> _snaKey])
+
+-- | Contains a list of VpnTunnel resources.
+--
+-- /See:/ 'vpnTunnelList' smart constructor.
+data VPNTunnelList = VPNTunnelList'
+    { _vtlNextPageToken :: !(Maybe Text)
+    , _vtlKind          :: !Text
+    , _vtlItems         :: !(Maybe [VPNTunnel])
+    , _vtlSelfLink      :: !(Maybe Text)
+    , _vtlWarning       :: !(Maybe VPNTunnelListWarning)
+    , _vtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtlNextPageToken'
+--
+-- * 'vtlKind'
+--
+-- * 'vtlItems'
+--
+-- * 'vtlSelfLink'
+--
+-- * 'vtlWarning'
+--
+-- * 'vtlId'
+vpnTunnelList
+    :: VPNTunnelList
+vpnTunnelList =
+    VPNTunnelList'
+    { _vtlNextPageToken = Nothing
+    , _vtlKind = "compute#vpnTunnelList"
+    , _vtlItems = Nothing
+    , _vtlSelfLink = Nothing
+    , _vtlWarning = Nothing
+    , _vtlId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)
+vtlNextPageToken
+  = lens _vtlNextPageToken
+      (\ s a -> s{_vtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtlKind :: Lens' VPNTunnelList Text
+vtlKind = lens _vtlKind (\ s a -> s{_vtlKind = a})
+
+-- | A list of VpnTunnel resources.
+vtlItems :: Lens' VPNTunnelList [VPNTunnel]
+vtlItems
+  = lens _vtlItems (\ s a -> s{_vtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)
+vtlSelfLink
+  = lens _vtlSelfLink (\ s a -> s{_vtlSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+vtlWarning :: Lens' VPNTunnelList (Maybe VPNTunnelListWarning)
+vtlWarning
+  = lens _vtlWarning (\ s a -> s{_vtlWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+vtlId :: Lens' VPNTunnelList (Maybe Text)
+vtlId = lens _vtlId (\ s a -> s{_vtlId = a})
+
+instance FromJSON VPNTunnelList where
+        parseJSON
+          = withObject "VPNTunnelList"
+              (\ o ->
+                 VPNTunnelList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#vpnTunnelList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON VPNTunnelList where
+        toJSON VPNTunnelList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _vtlNextPageToken,
+                  Just ("kind" .= _vtlKind),
+                  ("items" .=) <$> _vtlItems,
+                  ("selfLink" .=) <$> _vtlSelfLink,
+                  ("warning" .=) <$> _vtlWarning,
+                  ("id" .=) <$> _vtlId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'acceleratorTypeAggregatedListWarning' smart constructor.
+data AcceleratorTypeAggregatedListWarning = AcceleratorTypeAggregatedListWarning'
+    { _atalwData    :: !(Maybe [AcceleratorTypeAggregatedListWarningDataItem])
+    , _atalwCode    :: !(Maybe AcceleratorTypeAggregatedListWarningCode)
+    , _atalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypeAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atalwData'
+--
+-- * 'atalwCode'
+--
+-- * 'atalwMessage'
+acceleratorTypeAggregatedListWarning
+    :: AcceleratorTypeAggregatedListWarning
+acceleratorTypeAggregatedListWarning =
+    AcceleratorTypeAggregatedListWarning'
+    { _atalwData = Nothing
+    , _atalwCode = Nothing
+    , _atalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+atalwData :: Lens' AcceleratorTypeAggregatedListWarning [AcceleratorTypeAggregatedListWarningDataItem]
+atalwData
+  = lens _atalwData (\ s a -> s{_atalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+atalwCode :: Lens' AcceleratorTypeAggregatedListWarning (Maybe AcceleratorTypeAggregatedListWarningCode)
+atalwCode
+  = lens _atalwCode (\ s a -> s{_atalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+atalwMessage :: Lens' AcceleratorTypeAggregatedListWarning (Maybe Text)
+atalwMessage
+  = lens _atalwMessage (\ s a -> s{_atalwMessage = a})
+
+instance FromJSON
+         AcceleratorTypeAggregatedListWarning where
+        parseJSON
+          = withObject "AcceleratorTypeAggregatedListWarning"
+              (\ o ->
+                 AcceleratorTypeAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AcceleratorTypeAggregatedListWarning
+         where
+        toJSON AcceleratorTypeAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _atalwData,
+                  ("code" .=) <$> _atalwCode,
+                  ("message" .=) <$> _atalwMessage])
+
+--
+-- /See:/ 'regionInstanceGroupsListInstancesWarningDataItem' smart constructor.
+data RegionInstanceGroupsListInstancesWarningDataItem = RegionInstanceGroupsListInstancesWarningDataItem'
+    { _rigliwdiValue :: !(Maybe Text)
+    , _rigliwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupsListInstancesWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigliwdiValue'
+--
+-- * 'rigliwdiKey'
+regionInstanceGroupsListInstancesWarningDataItem
+    :: RegionInstanceGroupsListInstancesWarningDataItem
+regionInstanceGroupsListInstancesWarningDataItem =
+    RegionInstanceGroupsListInstancesWarningDataItem'
+    { _rigliwdiValue = Nothing
+    , _rigliwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rigliwdiValue :: Lens' RegionInstanceGroupsListInstancesWarningDataItem (Maybe Text)
+rigliwdiValue
+  = lens _rigliwdiValue
+      (\ s a -> s{_rigliwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rigliwdiKey :: Lens' RegionInstanceGroupsListInstancesWarningDataItem (Maybe Text)
+rigliwdiKey
+  = lens _rigliwdiKey (\ s a -> s{_rigliwdiKey = a})
+
+instance FromJSON
+         RegionInstanceGroupsListInstancesWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupsListInstancesWarningDataItem"
+              (\ o ->
+                 RegionInstanceGroupsListInstancesWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         RegionInstanceGroupsListInstancesWarningDataItem
+         where
+        toJSON
+          RegionInstanceGroupsListInstancesWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rigliwdiValue,
+                  ("key" .=) <$> _rigliwdiKey])
+
+-- | Represents an Interconnects resource. The Interconnects resource is a
+-- dedicated connection between Google\'s network and your on-premises
+-- network. For more information, see the Dedicated overview page. (==
+-- resource_for v1.interconnects ==) (== resource_for beta.interconnects
+-- ==)
+--
+-- /See:/ 'interconnect' smart constructor.
+data Interconnect = Interconnect'
+    { _iiState                   :: !(Maybe InterconnectState)
+    , _iiInterconnectType        :: !(Maybe InterconnectInterconnectType)
+    , _iiLocation                :: !(Maybe Text)
+    , _iiPeerIPAddress           :: !(Maybe Text)
+    , _iiKind                    :: !Text
+    , _iiExpectedOutages         :: !(Maybe [InterconnectOutageNotification])
+    , _iiProvisionedLinkCount    :: !(Maybe (Textual Int32))
+    , _iiCustomerName            :: !(Maybe Text)
+    , _iiRequestedLinkCount      :: !(Maybe (Textual Int32))
+    , _iiOperationalStatus       :: !(Maybe InterconnectOperationalStatus)
+    , _iiSelfLink                :: !(Maybe Text)
+    , _iiName                    :: !(Maybe Text)
+    , _iiGoogleReferenceId       :: !(Maybe Text)
+    , _iiCreationTimestamp       :: !(Maybe Text)
+    , _iiAdminEnabled            :: !(Maybe Bool)
+    , _iiId                      :: !(Maybe (Textual Word64))
+    , _iiInterconnectAttachments :: !(Maybe [Text])
+    , _iiLinkType                :: !(Maybe InterconnectLinkType)
+    , _iiGoogleIPAddress         :: !(Maybe Text)
+    , _iiDescription             :: !(Maybe Text)
+    , _iiNocContactEmail         :: !(Maybe Text)
+    , _iiCircuitInfos            :: !(Maybe [InterconnectCircuitInfo])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Interconnect' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiState'
+--
+-- * 'iiInterconnectType'
+--
+-- * 'iiLocation'
+--
+-- * 'iiPeerIPAddress'
+--
+-- * 'iiKind'
+--
+-- * 'iiExpectedOutages'
+--
+-- * 'iiProvisionedLinkCount'
+--
+-- * 'iiCustomerName'
+--
+-- * 'iiRequestedLinkCount'
+--
+-- * 'iiOperationalStatus'
+--
+-- * 'iiSelfLink'
+--
+-- * 'iiName'
+--
+-- * 'iiGoogleReferenceId'
+--
+-- * 'iiCreationTimestamp'
+--
+-- * 'iiAdminEnabled'
+--
+-- * 'iiId'
+--
+-- * 'iiInterconnectAttachments'
+--
+-- * 'iiLinkType'
+--
+-- * 'iiGoogleIPAddress'
+--
+-- * 'iiDescription'
+--
+-- * 'iiNocContactEmail'
+--
+-- * 'iiCircuitInfos'
+interconnect
+    :: Interconnect
+interconnect =
+    Interconnect'
+    { _iiState = Nothing
+    , _iiInterconnectType = Nothing
+    , _iiLocation = Nothing
+    , _iiPeerIPAddress = Nothing
+    , _iiKind = "compute#interconnect"
+    , _iiExpectedOutages = Nothing
+    , _iiProvisionedLinkCount = Nothing
+    , _iiCustomerName = Nothing
+    , _iiRequestedLinkCount = Nothing
+    , _iiOperationalStatus = Nothing
+    , _iiSelfLink = Nothing
+    , _iiName = Nothing
+    , _iiGoogleReferenceId = Nothing
+    , _iiCreationTimestamp = Nothing
+    , _iiAdminEnabled = Nothing
+    , _iiId = Nothing
+    , _iiInterconnectAttachments = Nothing
+    , _iiLinkType = Nothing
+    , _iiGoogleIPAddress = Nothing
+    , _iiDescription = Nothing
+    , _iiNocContactEmail = Nothing
+    , _iiCircuitInfos = Nothing
+    }
+
+-- | [Output Only] The current state of whether or not this Interconnect is
+-- functional.
+iiState :: Lens' Interconnect (Maybe InterconnectState)
+iiState = lens _iiState (\ s a -> s{_iiState = a})
+
+-- | Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in
+-- favor of \"DEDICATED\"
+iiInterconnectType :: Lens' Interconnect (Maybe InterconnectInterconnectType)
+iiInterconnectType
+  = lens _iiInterconnectType
+      (\ s a -> s{_iiInterconnectType = a})
+
+-- | URL of the InterconnectLocation object that represents where this
+-- connection is to be provisioned.
+iiLocation :: Lens' Interconnect (Maybe Text)
+iiLocation
+  = lens _iiLocation (\ s a -> s{_iiLocation = a})
+
+-- | [Output Only] IP address configured on the customer side of the
+-- Interconnect link. The customer should configure this IP address during
+-- turnup when prompted by Google NOC. This can be used only for ping
+-- tests.
+iiPeerIPAddress :: Lens' Interconnect (Maybe Text)
+iiPeerIPAddress
+  = lens _iiPeerIPAddress
+      (\ s a -> s{_iiPeerIPAddress = a})
+
+-- | [Output Only] Type of the resource. Always compute#interconnect for
+-- interconnects.
+iiKind :: Lens' Interconnect Text
+iiKind = lens _iiKind (\ s a -> s{_iiKind = a})
+
+-- | [Output Only] A list of outages expected for this Interconnect.
+iiExpectedOutages :: Lens' Interconnect [InterconnectOutageNotification]
+iiExpectedOutages
+  = lens _iiExpectedOutages
+      (\ s a -> s{_iiExpectedOutages = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Number of links actually provisioned in this interconnect.
+iiProvisionedLinkCount :: Lens' Interconnect (Maybe Int32)
+iiProvisionedLinkCount
+  = lens _iiProvisionedLinkCount
+      (\ s a -> s{_iiProvisionedLinkCount = a})
+      . mapping _Coerce
+
+-- | Customer name, to put in the Letter of Authorization as the party
+-- authorized to request a crossconnect.
+iiCustomerName :: Lens' Interconnect (Maybe Text)
+iiCustomerName
+  = lens _iiCustomerName
+      (\ s a -> s{_iiCustomerName = a})
+
+-- | Target number of physical links in the link bundle, as requested by the
+-- customer.
+iiRequestedLinkCount :: Lens' Interconnect (Maybe Int32)
+iiRequestedLinkCount
+  = lens _iiRequestedLinkCount
+      (\ s a -> s{_iiRequestedLinkCount = a})
+      . mapping _Coerce
+
+-- | [Output Only] The current status of whether or not this Interconnect is
+-- functional.
+iiOperationalStatus :: Lens' Interconnect (Maybe InterconnectOperationalStatus)
+iiOperationalStatus
+  = lens _iiOperationalStatus
+      (\ s a -> s{_iiOperationalStatus = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+iiSelfLink :: Lens' Interconnect (Maybe Text)
+iiSelfLink
+  = lens _iiSelfLink (\ s a -> s{_iiSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+iiName :: Lens' Interconnect (Maybe Text)
+iiName = lens _iiName (\ s a -> s{_iiName = a})
+
+-- | [Output Only] Google reference ID; to be used when raising support
+-- tickets with Google or otherwise to debug backend connectivity issues.
+iiGoogleReferenceId :: Lens' Interconnect (Maybe Text)
+iiGoogleReferenceId
+  = lens _iiGoogleReferenceId
+      (\ s a -> s{_iiGoogleReferenceId = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+iiCreationTimestamp :: Lens' Interconnect (Maybe Text)
+iiCreationTimestamp
+  = lens _iiCreationTimestamp
+      (\ s a -> s{_iiCreationTimestamp = a})
+
+-- | Administrative status of the interconnect. When this is set to true, the
+-- Interconnect is functional and can carry traffic. When set to false, no
+-- packets can be carried over the interconnect and no BGP routes are
+-- exchanged over it. By default, the status is set to true.
+iiAdminEnabled :: Lens' Interconnect (Maybe Bool)
+iiAdminEnabled
+  = lens _iiAdminEnabled
+      (\ s a -> s{_iiAdminEnabled = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+iiId :: Lens' Interconnect (Maybe Word64)
+iiId
+  = lens _iiId (\ s a -> s{_iiId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] A list of the URLs of all InterconnectAttachments
+-- configured to use this Interconnect.
+iiInterconnectAttachments :: Lens' Interconnect [Text]
+iiInterconnectAttachments
+  = lens _iiInterconnectAttachments
+      (\ s a -> s{_iiInterconnectAttachments = a})
+      . _Default
+      . _Coerce
+
+-- | Type of link requested. This field indicates speed of each of the links
+-- in the bundle, not the entire bundle. Only 10G per link is allowed for a
+-- dedicated interconnect. Options: Ethernet_10G_LR
+iiLinkType :: Lens' Interconnect (Maybe InterconnectLinkType)
+iiLinkType
+  = lens _iiLinkType (\ s a -> s{_iiLinkType = a})
+
+-- | [Output Only] IP address configured on the Google side of the
+-- Interconnect link. This can be used only for ping tests.
+iiGoogleIPAddress :: Lens' Interconnect (Maybe Text)
+iiGoogleIPAddress
+  = lens _iiGoogleIPAddress
+      (\ s a -> s{_iiGoogleIPAddress = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+iiDescription :: Lens' Interconnect (Maybe Text)
+iiDescription
+  = lens _iiDescription
+      (\ s a -> s{_iiDescription = a})
+
+-- | Email address to contact the customer NOC for operations and maintenance
+-- notifications regarding this Interconnect. If specified, this will be
+-- used for notifications in addition to all other forms described, such as
+-- Stackdriver logs alerting and Cloud Notifications.
+iiNocContactEmail :: Lens' Interconnect (Maybe Text)
+iiNocContactEmail
+  = lens _iiNocContactEmail
+      (\ s a -> s{_iiNocContactEmail = a})
+
+-- | [Output Only] A list of CircuitInfo objects, that describe the
+-- individual circuits in this LAG.
+iiCircuitInfos :: Lens' Interconnect [InterconnectCircuitInfo]
+iiCircuitInfos
+  = lens _iiCircuitInfos
+      (\ s a -> s{_iiCircuitInfos = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Interconnect where
+        parseJSON
+          = withObject "Interconnect"
+              (\ o ->
+                 Interconnect' <$>
+                   (o .:? "state") <*> (o .:? "interconnectType") <*>
+                     (o .:? "location")
+                     <*> (o .:? "peerIpAddress")
+                     <*> (o .:? "kind" .!= "compute#interconnect")
+                     <*> (o .:? "expectedOutages" .!= mempty)
+                     <*> (o .:? "provisionedLinkCount")
+                     <*> (o .:? "customerName")
+                     <*> (o .:? "requestedLinkCount")
+                     <*> (o .:? "operationalStatus")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "googleReferenceId")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "adminEnabled")
+                     <*> (o .:? "id")
+                     <*> (o .:? "interconnectAttachments" .!= mempty)
+                     <*> (o .:? "linkType")
+                     <*> (o .:? "googleIpAddress")
+                     <*> (o .:? "description")
+                     <*> (o .:? "nocContactEmail")
+                     <*> (o .:? "circuitInfos" .!= mempty))
+
+instance ToJSON Interconnect where
+        toJSON Interconnect'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _iiState,
+                  ("interconnectType" .=) <$> _iiInterconnectType,
+                  ("location" .=) <$> _iiLocation,
+                  ("peerIpAddress" .=) <$> _iiPeerIPAddress,
+                  Just ("kind" .= _iiKind),
+                  ("expectedOutages" .=) <$> _iiExpectedOutages,
+                  ("provisionedLinkCount" .=) <$>
+                    _iiProvisionedLinkCount,
+                  ("customerName" .=) <$> _iiCustomerName,
+                  ("requestedLinkCount" .=) <$> _iiRequestedLinkCount,
+                  ("operationalStatus" .=) <$> _iiOperationalStatus,
+                  ("selfLink" .=) <$> _iiSelfLink,
+                  ("name" .=) <$> _iiName,
+                  ("googleReferenceId" .=) <$> _iiGoogleReferenceId,
+                  ("creationTimestamp" .=) <$> _iiCreationTimestamp,
+                  ("adminEnabled" .=) <$> _iiAdminEnabled,
+                  ("id" .=) <$> _iiId,
+                  ("interconnectAttachments" .=) <$>
+                    _iiInterconnectAttachments,
+                  ("linkType" .=) <$> _iiLinkType,
+                  ("googleIpAddress" .=) <$> _iiGoogleIPAddress,
+                  ("description" .=) <$> _iiDescription,
+                  ("nocContactEmail" .=) <$> _iiNocContactEmail,
+                  ("circuitInfos" .=) <$> _iiCircuitInfos])
+
+--
+-- /See:/ 'machineTypeScratchDisksItem' smart constructor.
+newtype MachineTypeScratchDisksItem = MachineTypeScratchDisksItem'
+    { _mtsdiDiskGb :: Maybe (Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeScratchDisksItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtsdiDiskGb'
+machineTypeScratchDisksItem
+    :: MachineTypeScratchDisksItem
+machineTypeScratchDisksItem =
+    MachineTypeScratchDisksItem'
+    { _mtsdiDiskGb = Nothing
+    }
+
+-- | Size of the scratch disk, defined in GB.
+mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)
+mtsdiDiskGb
+  = lens _mtsdiDiskGb (\ s a -> s{_mtsdiDiskGb = a}) .
+      mapping _Coerce
+
+instance FromJSON MachineTypeScratchDisksItem where
+        parseJSON
+          = withObject "MachineTypeScratchDisksItem"
+              (\ o ->
+                 MachineTypeScratchDisksItem' <$> (o .:? "diskGb"))
+
+instance ToJSON MachineTypeScratchDisksItem where
+        toJSON MachineTypeScratchDisksItem'{..}
+          = object (catMaybes [("diskGb" .=) <$> _mtsdiDiskGb])
+
+--
+-- /See:/ 'subnetworksScopedListWarningDataItem' smart constructor.
+data SubnetworksScopedListWarningDataItem = SubnetworksScopedListWarningDataItem'
+    { _sslwdiValue :: !(Maybe Text)
+    , _sslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslwdiValue'
+--
+-- * 'sslwdiKey'
+subnetworksScopedListWarningDataItem
+    :: SubnetworksScopedListWarningDataItem
+subnetworksScopedListWarningDataItem =
+    SubnetworksScopedListWarningDataItem'
+    { _sslwdiValue = Nothing
+    , _sslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
+sslwdiValue
+  = lens _sslwdiValue (\ s a -> s{_sslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
+sslwdiKey
+  = lens _sslwdiKey (\ s a -> s{_sslwdiKey = a})
+
+instance FromJSON
+         SubnetworksScopedListWarningDataItem where
+        parseJSON
+          = withObject "SubnetworksScopedListWarningDataItem"
+              (\ o ->
+                 SubnetworksScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SubnetworksScopedListWarningDataItem
+         where
+        toJSON SubnetworksScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _sslwdiValue,
+                  ("key" .=) <$> _sslwdiKey])
+
+--
+-- /See:/ 'machineTypesScopedList' smart constructor.
+data MachineTypesScopedList = MachineTypesScopedList'
+    { _mtslMachineTypes :: !(Maybe [MachineType])
+    , _mtslWarning      :: !(Maybe MachineTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslMachineTypes'
+--
+-- * 'mtslWarning'
+machineTypesScopedList
+    :: MachineTypesScopedList
+machineTypesScopedList =
+    MachineTypesScopedList'
+    { _mtslMachineTypes = Nothing
+    , _mtslWarning = Nothing
+    }
+
+-- | [Output Only] A list of machine types contained in this scope.
+mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]
+mtslMachineTypes
+  = lens _mtslMachineTypes
+      (\ s a -> s{_mtslMachineTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the machine
+-- types list is empty.
+mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)
+mtslWarning
+  = lens _mtslWarning (\ s a -> s{_mtslWarning = a})
+
+instance FromJSON MachineTypesScopedList where
+        parseJSON
+          = withObject "MachineTypesScopedList"
+              (\ o ->
+                 MachineTypesScopedList' <$>
+                   (o .:? "machineTypes" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON MachineTypesScopedList where
+        toJSON MachineTypesScopedList'{..}
+          = object
+              (catMaybes
+                 [("machineTypes" .=) <$> _mtslMachineTypes,
+                  ("warning" .=) <$> _mtslWarning])
+
+-- | A Subnetwork resource. (== resource_for beta.subnetworks ==) (==
+-- resource_for v1.subnetworks ==)
+--
+-- /See:/ 'subnetwork' smart constructor.
+data Subnetwork = Subnetwork'
+    { _subKind                  :: !Text
+    , _subFingerprint           :: !(Maybe Bytes)
+    , _subNetwork               :: !(Maybe Text)
+    , _subGatewayAddress        :: !(Maybe Text)
+    , _subSelfLink              :: !(Maybe Text)
+    , _subEnableFlowLogs        :: !(Maybe Bool)
+    , _subName                  :: !(Maybe Text)
+    , _subSecondaryIPRanges     :: !(Maybe [SubnetworkSecondaryRange])
+    , _subCreationTimestamp     :: !(Maybe Text)
+    , _subIPCIdRRange           :: !(Maybe Text)
+    , _subId                    :: !(Maybe (Textual Word64))
+    , _subRegion                :: !(Maybe Text)
+    , _subDescription           :: !(Maybe Text)
+    , _subPrivateIPGoogleAccess :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Subnetwork' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'subKind'
+--
+-- * 'subFingerprint'
+--
+-- * 'subNetwork'
+--
+-- * 'subGatewayAddress'
+--
+-- * 'subSelfLink'
+--
+-- * 'subEnableFlowLogs'
+--
+-- * 'subName'
+--
+-- * 'subSecondaryIPRanges'
+--
+-- * 'subCreationTimestamp'
+--
+-- * 'subIPCIdRRange'
+--
+-- * 'subId'
+--
+-- * 'subRegion'
+--
+-- * 'subDescription'
+--
+-- * 'subPrivateIPGoogleAccess'
+subnetwork
+    :: Subnetwork
+subnetwork =
+    Subnetwork'
+    { _subKind = "compute#subnetwork"
+    , _subFingerprint = Nothing
+    , _subNetwork = Nothing
+    , _subGatewayAddress = Nothing
+    , _subSelfLink = Nothing
+    , _subEnableFlowLogs = Nothing
+    , _subName = Nothing
+    , _subSecondaryIPRanges = Nothing
+    , _subCreationTimestamp = Nothing
+    , _subIPCIdRRange = Nothing
+    , _subId = Nothing
+    , _subRegion = Nothing
+    , _subDescription = Nothing
+    , _subPrivateIPGoogleAccess = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#subnetwork for
+-- Subnetwork resources.
+subKind :: Lens' Subnetwork Text
+subKind = lens _subKind (\ s a -> s{_subKind = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a Subnetwork. An up-to-date fingerprint must be
+-- provided in order to update the Subnetwork, otherwise the request will
+-- fail with error 412 conditionNotMet. To see the latest fingerprint, make
+-- a get() request to retrieve a Subnetwork.
+subFingerprint :: Lens' Subnetwork (Maybe ByteString)
+subFingerprint
+  = lens _subFingerprint
+      (\ s a -> s{_subFingerprint = a})
+      . mapping _Bytes
+
+-- | The URL of the network to which this subnetwork belongs, provided by the
+-- client when initially creating the subnetwork. Only networks that are in
+-- the distributed mode can have subnetworks. This field can be set only at
+-- resource creation time.
+subNetwork :: Lens' Subnetwork (Maybe Text)
+subNetwork
+  = lens _subNetwork (\ s a -> s{_subNetwork = a})
+
+-- | [Output Only] The gateway address for default routes to reach
+-- destination addresses outside this subnetwork.
+subGatewayAddress :: Lens' Subnetwork (Maybe Text)
+subGatewayAddress
+  = lens _subGatewayAddress
+      (\ s a -> s{_subGatewayAddress = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+subSelfLink :: Lens' Subnetwork (Maybe Text)
+subSelfLink
+  = lens _subSelfLink (\ s a -> s{_subSelfLink = a})
+
+-- | Whether to enable flow logging for this subnetwork. If this field is not
+-- explicitly set, it will not appear in get listings. If not set the
+-- default behavior is to disable flow logging.
+subEnableFlowLogs :: Lens' Subnetwork (Maybe Bool)
+subEnableFlowLogs
+  = lens _subEnableFlowLogs
+      (\ s a -> s{_subEnableFlowLogs = a})
+
+-- | The name of the resource, provided by the client when initially creating
+-- the resource. The name must be 1-63 characters long, and comply with
+-- RFC1035. Specifically, the name must be 1-63 characters long and match
+-- the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the
+-- first character must be a lowercase letter, and all following characters
+-- must be a dash, lowercase letter, or digit, except the last character,
+-- which cannot be a dash.
+subName :: Lens' Subnetwork (Maybe Text)
+subName = lens _subName (\ s a -> s{_subName = a})
+
+-- | An array of configurations for secondary IP ranges for VM instances
+-- contained in this subnetwork. The primary IP of such VM must belong to
+-- the primary ipCidrRange of the subnetwork. The alias IPs may belong to
+-- either primary or secondary ranges. This field can be updated with a
+-- patch request.
+subSecondaryIPRanges :: Lens' Subnetwork [SubnetworkSecondaryRange]
+subSecondaryIPRanges
+  = lens _subSecondaryIPRanges
+      (\ s a -> s{_subSecondaryIPRanges = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+subCreationTimestamp :: Lens' Subnetwork (Maybe Text)
+subCreationTimestamp
+  = lens _subCreationTimestamp
+      (\ s a -> s{_subCreationTimestamp = a})
+
+-- | The range of internal addresses that are owned by this subnetwork.
+-- Provide this property when you create the subnetwork. For example,
+-- 10.0.0.0\/8 or 192.168.0.0\/16. Ranges must be unique and
+-- non-overlapping within a network. Only IPv4 is supported. This field can
+-- be set only at resource creation time.
+subIPCIdRRange :: Lens' Subnetwork (Maybe Text)
+subIPCIdRRange
+  = lens _subIPCIdRRange
+      (\ s a -> s{_subIPCIdRRange = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+subId :: Lens' Subnetwork (Maybe Word64)
+subId
+  = lens _subId (\ s a -> s{_subId = a}) .
+      mapping _Coerce
+
+-- | URL of the region where the Subnetwork resides. This field can be set
+-- only at resource creation time.
+subRegion :: Lens' Subnetwork (Maybe Text)
+subRegion
+  = lens _subRegion (\ s a -> s{_subRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource. This field can be set only at resource creation
+-- time.
+subDescription :: Lens' Subnetwork (Maybe Text)
+subDescription
+  = lens _subDescription
+      (\ s a -> s{_subDescription = a})
+
+-- | Whether the VMs in this subnet can access Google services without
+-- assigned external IP addresses. This field can be both set at resource
+-- creation time and updated using setPrivateIpGoogleAccess.
+subPrivateIPGoogleAccess :: Lens' Subnetwork (Maybe Bool)
+subPrivateIPGoogleAccess
+  = lens _subPrivateIPGoogleAccess
+      (\ s a -> s{_subPrivateIPGoogleAccess = a})
+
+instance FromJSON Subnetwork where
+        parseJSON
+          = withObject "Subnetwork"
+              (\ o ->
+                 Subnetwork' <$>
+                   (o .:? "kind" .!= "compute#subnetwork") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "network")
+                     <*> (o .:? "gatewayAddress")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "enableFlowLogs")
+                     <*> (o .:? "name")
+                     <*> (o .:? "secondaryIpRanges" .!= mempty)
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "ipCidrRange")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "privateIpGoogleAccess"))
+
+instance ToJSON Subnetwork where
+        toJSON Subnetwork'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _subKind),
+                  ("fingerprint" .=) <$> _subFingerprint,
+                  ("network" .=) <$> _subNetwork,
+                  ("gatewayAddress" .=) <$> _subGatewayAddress,
+                  ("selfLink" .=) <$> _subSelfLink,
+                  ("enableFlowLogs" .=) <$> _subEnableFlowLogs,
+                  ("name" .=) <$> _subName,
+                  ("secondaryIpRanges" .=) <$> _subSecondaryIPRanges,
+                  ("creationTimestamp" .=) <$> _subCreationTimestamp,
+                  ("ipCidrRange" .=) <$> _subIPCIdRRange,
+                  ("id" .=) <$> _subId, ("region" .=) <$> _subRegion,
+                  ("description" .=) <$> _subDescription,
+                  ("privateIpGoogleAccess" .=) <$>
+                    _subPrivateIPGoogleAccess])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'healthCheckListWarning' smart constructor.
+data HealthCheckListWarning = HealthCheckListWarning'
+    { _hclwData    :: !(Maybe [HealthCheckListWarningDataItem])
+    , _hclwCode    :: !(Maybe HealthCheckListWarningCode)
+    , _hclwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheckListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hclwData'
+--
+-- * 'hclwCode'
+--
+-- * 'hclwMessage'
+healthCheckListWarning
+    :: HealthCheckListWarning
+healthCheckListWarning =
+    HealthCheckListWarning'
+    { _hclwData = Nothing
+    , _hclwCode = Nothing
+    , _hclwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+hclwData :: Lens' HealthCheckListWarning [HealthCheckListWarningDataItem]
+hclwData
+  = lens _hclwData (\ s a -> s{_hclwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+hclwCode :: Lens' HealthCheckListWarning (Maybe HealthCheckListWarningCode)
+hclwCode = lens _hclwCode (\ s a -> s{_hclwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+hclwMessage :: Lens' HealthCheckListWarning (Maybe Text)
+hclwMessage
+  = lens _hclwMessage (\ s a -> s{_hclwMessage = a})
+
+instance FromJSON HealthCheckListWarning where
+        parseJSON
+          = withObject "HealthCheckListWarning"
+              (\ o ->
+                 HealthCheckListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON HealthCheckListWarning where
+        toJSON HealthCheckListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _hclwData,
+                  ("code" .=) <$> _hclwCode,
+                  ("message" .=) <$> _hclwMessage])
+
+--
+-- /See:/ 'machineTypeAggregatedList' smart constructor.
+data MachineTypeAggregatedList = MachineTypeAggregatedList'
+    { _mtalNextPageToken :: !(Maybe Text)
+    , _mtalKind          :: !Text
+    , _mtalItems         :: !(Maybe MachineTypeAggregatedListItems)
+    , _mtalSelfLink      :: !(Maybe Text)
+    , _mtalWarning       :: !(Maybe MachineTypeAggregatedListWarning)
+    , _mtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtalNextPageToken'
+--
+-- * 'mtalKind'
+--
+-- * 'mtalItems'
+--
+-- * 'mtalSelfLink'
+--
+-- * 'mtalWarning'
+--
+-- * 'mtalId'
+machineTypeAggregatedList
+    :: MachineTypeAggregatedList
+machineTypeAggregatedList =
+    MachineTypeAggregatedList'
+    { _mtalNextPageToken = Nothing
+    , _mtalKind = "compute#machineTypeAggregatedList"
+    , _mtalItems = Nothing
+    , _mtalSelfLink = Nothing
+    , _mtalWarning = Nothing
+    , _mtalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalNextPageToken
+  = lens _mtalNextPageToken
+      (\ s a -> s{_mtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#machineTypeAggregatedList
+-- for aggregated lists of machine types.
+mtalKind :: Lens' MachineTypeAggregatedList Text
+mtalKind = lens _mtalKind (\ s a -> s{_mtalKind = a})
+
+-- | A list of MachineTypesScopedList resources.
+mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)
+mtalItems
+  = lens _mtalItems (\ s a -> s{_mtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalSelfLink
+  = lens _mtalSelfLink (\ s a -> s{_mtalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+mtalWarning :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListWarning)
+mtalWarning
+  = lens _mtalWarning (\ s a -> s{_mtalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalId = lens _mtalId (\ s a -> s{_mtalId = a})
+
+instance FromJSON MachineTypeAggregatedList where
+        parseJSON
+          = withObject "MachineTypeAggregatedList"
+              (\ o ->
+                 MachineTypeAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#machineTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON MachineTypeAggregatedList where
+        toJSON MachineTypeAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _mtalNextPageToken,
+                  Just ("kind" .= _mtalKind),
+                  ("items" .=) <$> _mtalItems,
+                  ("selfLink" .=) <$> _mtalSelfLink,
+                  ("warning" .=) <$> _mtalWarning,
+                  ("id" .=) <$> _mtalId])
+
+-- | [Output Only] An informational warning that appears when the nodeGroup
+-- list is empty.
+--
+-- /See:/ 'nodeGroupsScopedListWarning' smart constructor.
+data NodeGroupsScopedListWarning = NodeGroupsScopedListWarning'
+    { _ngslwData    :: !(Maybe [NodeGroupsScopedListWarningDataItem])
+    , _ngslwCode    :: !(Maybe NodeGroupsScopedListWarningCode)
+    , _ngslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngslwData'
+--
+-- * 'ngslwCode'
+--
+-- * 'ngslwMessage'
+nodeGroupsScopedListWarning
+    :: NodeGroupsScopedListWarning
+nodeGroupsScopedListWarning =
+    NodeGroupsScopedListWarning'
+    { _ngslwData = Nothing
+    , _ngslwCode = Nothing
+    , _ngslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ngslwData :: Lens' NodeGroupsScopedListWarning [NodeGroupsScopedListWarningDataItem]
+ngslwData
+  = lens _ngslwData (\ s a -> s{_ngslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ngslwCode :: Lens' NodeGroupsScopedListWarning (Maybe NodeGroupsScopedListWarningCode)
+ngslwCode
+  = lens _ngslwCode (\ s a -> s{_ngslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ngslwMessage :: Lens' NodeGroupsScopedListWarning (Maybe Text)
+ngslwMessage
+  = lens _ngslwMessage (\ s a -> s{_ngslwMessage = a})
+
+instance FromJSON NodeGroupsScopedListWarning where
+        parseJSON
+          = withObject "NodeGroupsScopedListWarning"
+              (\ o ->
+                 NodeGroupsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeGroupsScopedListWarning where
+        toJSON NodeGroupsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ngslwData,
+                  ("code" .=) <$> _ngslwCode,
+                  ("message" .=) <$> _ngslwMessage])
+
+-- | Contains a list of node types.
+--
+-- /See:/ 'nodeTypeList' smart constructor.
+data NodeTypeList = NodeTypeList'
+    { _ntltNextPageToken :: !(Maybe Text)
+    , _ntltKind          :: !Text
+    , _ntltItems         :: !(Maybe [NodeType])
+    , _ntltSelfLink      :: !(Maybe Text)
+    , _ntltWarning       :: !(Maybe NodeTypeListWarning)
+    , _ntltId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntltNextPageToken'
+--
+-- * 'ntltKind'
+--
+-- * 'ntltItems'
+--
+-- * 'ntltSelfLink'
+--
+-- * 'ntltWarning'
+--
+-- * 'ntltId'
+nodeTypeList
+    :: NodeTypeList
+nodeTypeList =
+    NodeTypeList'
+    { _ntltNextPageToken = Nothing
+    , _ntltKind = "compute#nodeTypeList"
+    , _ntltItems = Nothing
+    , _ntltSelfLink = Nothing
+    , _ntltWarning = Nothing
+    , _ntltId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ntltNextPageToken :: Lens' NodeTypeList (Maybe Text)
+ntltNextPageToken
+  = lens _ntltNextPageToken
+      (\ s a -> s{_ntltNextPageToken = a})
+
+-- | [Output Only] Type of resource.Always compute#nodeTypeList for lists of
+-- node types.
+ntltKind :: Lens' NodeTypeList Text
+ntltKind = lens _ntltKind (\ s a -> s{_ntltKind = a})
+
+-- | A list of NodeType resources.
+ntltItems :: Lens' NodeTypeList [NodeType]
+ntltItems
+  = lens _ntltItems (\ s a -> s{_ntltItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ntltSelfLink :: Lens' NodeTypeList (Maybe Text)
+ntltSelfLink
+  = lens _ntltSelfLink (\ s a -> s{_ntltSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ntltWarning :: Lens' NodeTypeList (Maybe NodeTypeListWarning)
+ntltWarning
+  = lens _ntltWarning (\ s a -> s{_ntltWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ntltId :: Lens' NodeTypeList (Maybe Text)
+ntltId = lens _ntltId (\ s a -> s{_ntltId = a})
+
+instance FromJSON NodeTypeList where
+        parseJSON
+          = withObject "NodeTypeList"
+              (\ o ->
+                 NodeTypeList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeTypeList where
+        toJSON NodeTypeList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ntltNextPageToken,
+                  Just ("kind" .= _ntltKind),
+                  ("items" .=) <$> _ntltItems,
+                  ("selfLink" .=) <$> _ntltSelfLink,
+                  ("warning" .=) <$> _ntltWarning,
+                  ("id" .=) <$> _ntltId])
+
+-- | A DiskType resource. (== resource_for beta.diskTypes ==) (==
+-- resource_for v1.diskTypes ==)
+--
+-- /See:/ 'diskType' smart constructor.
+data DiskType = DiskType'
+    { _dtKind              :: !Text
+    , _dtZone              :: !(Maybe Text)
+    , _dtSelfLink          :: !(Maybe Text)
+    , _dtName              :: !(Maybe Text)
+    , _dtCreationTimestamp :: !(Maybe Text)
+    , _dtId                :: !(Maybe (Textual Word64))
+    , _dtRegion            :: !(Maybe Text)
+    , _dtValidDiskSize     :: !(Maybe Text)
+    , _dtDescription       :: !(Maybe Text)
+    , _dtDefaultDiskSizeGb :: !(Maybe (Textual Int64))
+    , _dtDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtKind'
+--
+-- * 'dtZone'
+--
+-- * 'dtSelfLink'
+--
+-- * 'dtName'
+--
+-- * 'dtCreationTimestamp'
+--
+-- * 'dtId'
+--
+-- * 'dtRegion'
+--
+-- * 'dtValidDiskSize'
+--
+-- * 'dtDescription'
+--
+-- * 'dtDefaultDiskSizeGb'
+--
+-- * 'dtDeprecated'
+diskType
+    :: DiskType
+diskType =
+    DiskType'
+    { _dtKind = "compute#diskType"
+    , _dtZone = Nothing
+    , _dtSelfLink = Nothing
+    , _dtName = Nothing
+    , _dtCreationTimestamp = Nothing
+    , _dtId = Nothing
+    , _dtRegion = Nothing
+    , _dtValidDiskSize = Nothing
+    , _dtDescription = Nothing
+    , _dtDefaultDiskSizeGb = Nothing
+    , _dtDeprecated = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#diskType for disk
+-- types.
+dtKind :: Lens' DiskType Text
+dtKind = lens _dtKind (\ s a -> s{_dtKind = a})
+
+-- | [Output Only] URL of the zone where the disk type resides. You must
+-- specify this field as part of the HTTP request URL. It is not settable
+-- as a field in the request body.
+dtZone :: Lens' DiskType (Maybe Text)
+dtZone = lens _dtZone (\ s a -> s{_dtZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+dtSelfLink :: Lens' DiskType (Maybe Text)
+dtSelfLink
+  = lens _dtSelfLink (\ s a -> s{_dtSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+dtName :: Lens' DiskType (Maybe Text)
+dtName = lens _dtName (\ s a -> s{_dtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+dtCreationTimestamp :: Lens' DiskType (Maybe Text)
+dtCreationTimestamp
+  = lens _dtCreationTimestamp
+      (\ s a -> s{_dtCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+dtId :: Lens' DiskType (Maybe Word64)
+dtId
+  = lens _dtId (\ s a -> s{_dtId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the disk type resides. Only
+-- applicable for regional resources. You must specify this field as part
+-- of the HTTP request URL. It is not settable as a field in the request
+-- body.
+dtRegion :: Lens' DiskType (Maybe Text)
+dtRegion = lens _dtRegion (\ s a -> s{_dtRegion = a})
+
+-- | [Output Only] An optional textual description of the valid disk size,
+-- such as \"10GB-10TB\".
+dtValidDiskSize :: Lens' DiskType (Maybe Text)
+dtValidDiskSize
+  = lens _dtValidDiskSize
+      (\ s a -> s{_dtValidDiskSize = a})
+
+-- | [Output Only] An optional description of this resource.
+dtDescription :: Lens' DiskType (Maybe Text)
+dtDescription
+  = lens _dtDescription
+      (\ s a -> s{_dtDescription = a})
+
+-- | [Output Only] Server-defined default disk size in GB.
+dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)
+dtDefaultDiskSizeGb
+  = lens _dtDefaultDiskSizeGb
+      (\ s a -> s{_dtDefaultDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] The deprecation status associated with this disk type.
+dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)
+dtDeprecated
+  = lens _dtDeprecated (\ s a -> s{_dtDeprecated = a})
+
+instance FromJSON DiskType where
+        parseJSON
+          = withObject "DiskType"
+              (\ o ->
+                 DiskType' <$>
+                   (o .:? "kind" .!= "compute#diskType") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "validDiskSize")
+                     <*> (o .:? "description")
+                     <*> (o .:? "defaultDiskSizeGb")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON DiskType where
+        toJSON DiskType'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _dtKind), ("zone" .=) <$> _dtZone,
+                  ("selfLink" .=) <$> _dtSelfLink,
+                  ("name" .=) <$> _dtName,
+                  ("creationTimestamp" .=) <$> _dtCreationTimestamp,
+                  ("id" .=) <$> _dtId, ("region" .=) <$> _dtRegion,
+                  ("validDiskSize" .=) <$> _dtValidDiskSize,
+                  ("description" .=) <$> _dtDescription,
+                  ("defaultDiskSizeGb" .=) <$> _dtDefaultDiskSizeGb,
+                  ("deprecated" .=) <$> _dtDeprecated])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeTemplateAggregatedListWarning' smart constructor.
+data NodeTemplateAggregatedListWarning = NodeTemplateAggregatedListWarning'
+    { _ntalwData    :: !(Maybe [NodeTemplateAggregatedListWarningDataItem])
+    , _ntalwCode    :: !(Maybe NodeTemplateAggregatedListWarningCode)
+    , _ntalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntalwData'
+--
+-- * 'ntalwCode'
+--
+-- * 'ntalwMessage'
+nodeTemplateAggregatedListWarning
+    :: NodeTemplateAggregatedListWarning
+nodeTemplateAggregatedListWarning =
+    NodeTemplateAggregatedListWarning'
+    { _ntalwData = Nothing
+    , _ntalwCode = Nothing
+    , _ntalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ntalwData :: Lens' NodeTemplateAggregatedListWarning [NodeTemplateAggregatedListWarningDataItem]
+ntalwData
+  = lens _ntalwData (\ s a -> s{_ntalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ntalwCode :: Lens' NodeTemplateAggregatedListWarning (Maybe NodeTemplateAggregatedListWarningCode)
+ntalwCode
+  = lens _ntalwCode (\ s a -> s{_ntalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ntalwMessage :: Lens' NodeTemplateAggregatedListWarning (Maybe Text)
+ntalwMessage
+  = lens _ntalwMessage (\ s a -> s{_ntalwMessage = a})
+
+instance FromJSON NodeTemplateAggregatedListWarning
+         where
+        parseJSON
+          = withObject "NodeTemplateAggregatedListWarning"
+              (\ o ->
+                 NodeTemplateAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTemplateAggregatedListWarning
+         where
+        toJSON NodeTemplateAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ntalwData,
+                  ("code" .=) <$> _ntalwCode,
+                  ("message" .=) <$> _ntalwMessage])
+
+--
+-- /See:/ 'autoscalerAggregatedListWarningDataItem' smart constructor.
+data AutoscalerAggregatedListWarningDataItem = AutoscalerAggregatedListWarningDataItem'
+    { _aalwdiValue :: !(Maybe Text)
+    , _aalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalwdiValue'
+--
+-- * 'aalwdiKey'
+autoscalerAggregatedListWarningDataItem
+    :: AutoscalerAggregatedListWarningDataItem
+autoscalerAggregatedListWarningDataItem =
+    AutoscalerAggregatedListWarningDataItem'
+    { _aalwdiValue = Nothing
+    , _aalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aalwdiValue :: Lens' AutoscalerAggregatedListWarningDataItem (Maybe Text)
+aalwdiValue
+  = lens _aalwdiValue (\ s a -> s{_aalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+aalwdiKey :: Lens' AutoscalerAggregatedListWarningDataItem (Maybe Text)
+aalwdiKey
+  = lens _aalwdiKey (\ s a -> s{_aalwdiKey = a})
+
+instance FromJSON
+         AutoscalerAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "AutoscalerAggregatedListWarningDataItem"
+              (\ o ->
+                 AutoscalerAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         AutoscalerAggregatedListWarningDataItem where
+        toJSON AutoscalerAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aalwdiValue,
+                  ("key" .=) <$> _aalwdiKey])
+
+-- | The labels to set for this resource.
+--
+-- /See:/ 'zoneSetLabelsRequestLabels' smart constructor.
+newtype ZoneSetLabelsRequestLabels = ZoneSetLabelsRequestLabels'
+    { _zslrlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneSetLabelsRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zslrlAddtional'
+zoneSetLabelsRequestLabels
+    :: HashMap Text Text -- ^ 'zslrlAddtional'
+    -> ZoneSetLabelsRequestLabels
+zoneSetLabelsRequestLabels pZslrlAddtional_ =
+    ZoneSetLabelsRequestLabels'
+    { _zslrlAddtional = _Coerce # pZslrlAddtional_
+    }
+
+zslrlAddtional :: Lens' ZoneSetLabelsRequestLabels (HashMap Text Text)
+zslrlAddtional
+  = lens _zslrlAddtional
+      (\ s a -> s{_zslrlAddtional = a})
+      . _Coerce
+
+instance FromJSON ZoneSetLabelsRequestLabels where
+        parseJSON
+          = withObject "ZoneSetLabelsRequestLabels"
+              (\ o ->
+                 ZoneSetLabelsRequestLabels' <$> (parseJSONObject o))
+
+instance ToJSON ZoneSetLabelsRequestLabels where
+        toJSON = toJSON . _zslrlAddtional
+
+--
+-- /See:/ 'nodeTypeListWarningDataItem' smart constructor.
+data NodeTypeListWarningDataItem = NodeTypeListWarningDataItem'
+    { _ntlwdiValue :: !(Maybe Text)
+    , _ntlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntlwdiValue'
+--
+-- * 'ntlwdiKey'
+nodeTypeListWarningDataItem
+    :: NodeTypeListWarningDataItem
+nodeTypeListWarningDataItem =
+    NodeTypeListWarningDataItem'
+    { _ntlwdiValue = Nothing
+    , _ntlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ntlwdiValue :: Lens' NodeTypeListWarningDataItem (Maybe Text)
+ntlwdiValue
+  = lens _ntlwdiValue (\ s a -> s{_ntlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ntlwdiKey :: Lens' NodeTypeListWarningDataItem (Maybe Text)
+ntlwdiKey
+  = lens _ntlwdiKey (\ s a -> s{_ntlwdiKey = a})
+
+instance FromJSON NodeTypeListWarningDataItem where
+        parseJSON
+          = withObject "NodeTypeListWarningDataItem"
+              (\ o ->
+                 NodeTypeListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeTypeListWarningDataItem where
+        toJSON NodeTypeListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ntlwdiValue,
+                  ("key" .=) <$> _ntlwdiKey])
+
+-- | Message representing the validation result for a UrlMap.
+--
+-- /See:/ 'urlMapValidationResult' smart constructor.
+data URLMapValidationResult = URLMapValidationResult'
+    { _umvrLoadErrors    :: !(Maybe [Text])
+    , _umvrLoadSucceeded :: !(Maybe Bool)
+    , _umvrTestPassed    :: !(Maybe Bool)
+    , _umvrTestFailures  :: !(Maybe [TestFailure])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapValidationResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrLoadErrors'
+--
+-- * 'umvrLoadSucceeded'
+--
+-- * 'umvrTestPassed'
+--
+-- * 'umvrTestFailures'
+urlMapValidationResult
+    :: URLMapValidationResult
+urlMapValidationResult =
+    URLMapValidationResult'
+    { _umvrLoadErrors = Nothing
+    , _umvrLoadSucceeded = Nothing
+    , _umvrTestPassed = Nothing
+    , _umvrTestFailures = Nothing
+    }
+
+umvrLoadErrors :: Lens' URLMapValidationResult [Text]
+umvrLoadErrors
+  = lens _umvrLoadErrors
+      (\ s a -> s{_umvrLoadErrors = a})
+      . _Default
+      . _Coerce
+
+-- | Whether the given UrlMap can be successfully loaded. If false,
+-- \'loadErrors\' indicates the reasons.
+umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)
+umvrLoadSucceeded
+  = lens _umvrLoadSucceeded
+      (\ s a -> s{_umvrLoadSucceeded = a})
+
+-- | If successfully loaded, this field indicates whether the test passed. If
+-- false, \'testFailures\'s indicate the reason of failure.
+umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)
+umvrTestPassed
+  = lens _umvrTestPassed
+      (\ s a -> s{_umvrTestPassed = a})
+
+umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]
+umvrTestFailures
+  = lens _umvrTestFailures
+      (\ s a -> s{_umvrTestFailures = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON URLMapValidationResult where
+        parseJSON
+          = withObject "URLMapValidationResult"
+              (\ o ->
+                 URLMapValidationResult' <$>
+                   (o .:? "loadErrors" .!= mempty) <*>
+                     (o .:? "loadSucceeded")
+                     <*> (o .:? "testPassed")
+                     <*> (o .:? "testFailures" .!= mempty))
+
+instance ToJSON URLMapValidationResult where
+        toJSON URLMapValidationResult'{..}
+          = object
+              (catMaybes
+                 [("loadErrors" .=) <$> _umvrLoadErrors,
+                  ("loadSucceeded" .=) <$> _umvrLoadSucceeded,
+                  ("testPassed" .=) <$> _umvrTestPassed,
+                  ("testFailures" .=) <$> _umvrTestFailures])
+
+-- | A metadata key\/value entry.
+--
+-- /See:/ 'metadata' smart constructor.
+data Metadata = Metadata'
+    { _mKind        :: !Text
+    , _mFingerprint :: !(Maybe Bytes)
+    , _mItems       :: !(Maybe [MetadataItemsItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Metadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mKind'
+--
+-- * 'mFingerprint'
+--
+-- * 'mItems'
+metadata
+    :: Metadata
+metadata =
+    Metadata'
+    { _mKind = "compute#metadata"
+    , _mFingerprint = Nothing
+    , _mItems = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#metadata for
+-- metadata.
+mKind :: Lens' Metadata Text
+mKind = lens _mKind (\ s a -> s{_mKind = a})
+
+-- | Specifies a fingerprint for this request, which is essentially a hash of
+-- the metadata\'s contents and used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update metadata. You must always provide an
+-- up-to-date fingerprint hash in order to update or change metadata,
+-- otherwise the request will fail with error 412 conditionNotMet. To see
+-- the latest fingerprint, make a get() request to retrieve the resource.
+mFingerprint :: Lens' Metadata (Maybe ByteString)
+mFingerprint
+  = lens _mFingerprint (\ s a -> s{_mFingerprint = a})
+      . mapping _Bytes
+
+-- | Array of key\/value pairs. The total size of all keys and values must be
+-- less than 512 KB.
+mItems :: Lens' Metadata [MetadataItemsItem]
+mItems
+  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Metadata where
+        parseJSON
+          = withObject "Metadata"
+              (\ o ->
+                 Metadata' <$>
+                   (o .:? "kind" .!= "compute#metadata") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Metadata where
+        toJSON Metadata'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mKind),
+                  ("fingerprint" .=) <$> _mFingerprint,
+                  ("items" .=) <$> _mItems])
+
+--
+-- /See:/ 'routeWarningsItem' smart constructor.
+data RouteWarningsItem = RouteWarningsItem'
+    { _rwiData    :: !(Maybe [RouteWarningsItemDataItem])
+    , _rwiCode    :: !(Maybe RouteWarningsItemCode)
+    , _rwiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwiData'
+--
+-- * 'rwiCode'
+--
+-- * 'rwiMessage'
+routeWarningsItem
+    :: RouteWarningsItem
+routeWarningsItem =
+    RouteWarningsItem'
+    { _rwiData = Nothing
+    , _rwiCode = Nothing
+    , _rwiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]
+rwiData
+  = lens _rwiData (\ s a -> s{_rwiData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)
+rwiCode = lens _rwiCode (\ s a -> s{_rwiCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rwiMessage :: Lens' RouteWarningsItem (Maybe Text)
+rwiMessage
+  = lens _rwiMessage (\ s a -> s{_rwiMessage = a})
+
+instance FromJSON RouteWarningsItem where
+        parseJSON
+          = withObject "RouteWarningsItem"
+              (\ o ->
+                 RouteWarningsItem' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RouteWarningsItem where
+        toJSON RouteWarningsItem'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rwiData, ("code" .=) <$> _rwiCode,
+                  ("message" .=) <$> _rwiMessage])
+
+--
+-- /See:/ 'nodeGroupsListNodes' smart constructor.
+data NodeGroupsListNodes = NodeGroupsListNodes'
+    { _nglnNextPageToken :: !(Maybe Text)
+    , _nglnKind          :: !Text
+    , _nglnItems         :: !(Maybe [NodeGroupNode])
+    , _nglnSelfLink      :: !(Maybe Text)
+    , _nglnWarning       :: !(Maybe NodeGroupsListNodesWarning)
+    , _nglnId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsListNodes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglnNextPageToken'
+--
+-- * 'nglnKind'
+--
+-- * 'nglnItems'
+--
+-- * 'nglnSelfLink'
+--
+-- * 'nglnWarning'
+--
+-- * 'nglnId'
+nodeGroupsListNodes
+    :: NodeGroupsListNodes
+nodeGroupsListNodes =
+    NodeGroupsListNodes'
+    { _nglnNextPageToken = Nothing
+    , _nglnKind = "compute#nodeGroupsListNodes"
+    , _nglnItems = Nothing
+    , _nglnSelfLink = Nothing
+    , _nglnWarning = Nothing
+    , _nglnId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+nglnNextPageToken :: Lens' NodeGroupsListNodes (Maybe Text)
+nglnNextPageToken
+  = lens _nglnNextPageToken
+      (\ s a -> s{_nglnNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute.nodeGroupsListNodes for the list of nodes in the specified node
+-- group.
+nglnKind :: Lens' NodeGroupsListNodes Text
+nglnKind = lens _nglnKind (\ s a -> s{_nglnKind = a})
+
+-- | A list of Node resources.
+nglnItems :: Lens' NodeGroupsListNodes [NodeGroupNode]
+nglnItems
+  = lens _nglnItems (\ s a -> s{_nglnItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+nglnSelfLink :: Lens' NodeGroupsListNodes (Maybe Text)
+nglnSelfLink
+  = lens _nglnSelfLink (\ s a -> s{_nglnSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+nglnWarning :: Lens' NodeGroupsListNodes (Maybe NodeGroupsListNodesWarning)
+nglnWarning
+  = lens _nglnWarning (\ s a -> s{_nglnWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+nglnId :: Lens' NodeGroupsListNodes (Maybe Text)
+nglnId = lens _nglnId (\ s a -> s{_nglnId = a})
+
+instance FromJSON NodeGroupsListNodes where
+        parseJSON
+          = withObject "NodeGroupsListNodes"
+              (\ o ->
+                 NodeGroupsListNodes' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#nodeGroupsListNodes")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NodeGroupsListNodes where
+        toJSON NodeGroupsListNodes'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _nglnNextPageToken,
+                  Just ("kind" .= _nglnKind),
+                  ("items" .=) <$> _nglnItems,
+                  ("selfLink" .=) <$> _nglnSelfLink,
+                  ("warning" .=) <$> _nglnWarning,
+                  ("id" .=) <$> _nglnId])
+
+-- | Response to the list request, and contains a list of interconnect
+-- locations.
+--
+-- /See:/ 'interconnectLocationList' smart constructor.
+data InterconnectLocationList = InterconnectLocationList'
+    { _illNextPageToken :: !(Maybe Text)
+    , _illKind          :: !Text
+    , _illItems         :: !(Maybe [InterconnectLocation])
+    , _illSelfLink      :: !(Maybe Text)
+    , _illWarning       :: !(Maybe InterconnectLocationListWarning)
+    , _illId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'illNextPageToken'
+--
+-- * 'illKind'
+--
+-- * 'illItems'
+--
+-- * 'illSelfLink'
+--
+-- * 'illWarning'
+--
+-- * 'illId'
+interconnectLocationList
+    :: InterconnectLocationList
+interconnectLocationList =
+    InterconnectLocationList'
+    { _illNextPageToken = Nothing
+    , _illKind = "compute#interconnectLocationList"
+    , _illItems = Nothing
+    , _illSelfLink = Nothing
+    , _illWarning = Nothing
+    , _illId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+illNextPageToken :: Lens' InterconnectLocationList (Maybe Text)
+illNextPageToken
+  = lens _illNextPageToken
+      (\ s a -> s{_illNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#interconnectLocationList
+-- for lists of interconnect locations.
+illKind :: Lens' InterconnectLocationList Text
+illKind = lens _illKind (\ s a -> s{_illKind = a})
+
+-- | A list of InterconnectLocation resources.
+illItems :: Lens' InterconnectLocationList [InterconnectLocation]
+illItems
+  = lens _illItems (\ s a -> s{_illItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+illSelfLink :: Lens' InterconnectLocationList (Maybe Text)
+illSelfLink
+  = lens _illSelfLink (\ s a -> s{_illSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+illWarning :: Lens' InterconnectLocationList (Maybe InterconnectLocationListWarning)
+illWarning
+  = lens _illWarning (\ s a -> s{_illWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+illId :: Lens' InterconnectLocationList (Maybe Text)
+illId = lens _illId (\ s a -> s{_illId = a})
+
+instance FromJSON InterconnectLocationList where
+        parseJSON
+          = withObject "InterconnectLocationList"
+              (\ o ->
+                 InterconnectLocationList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#interconnectLocationList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InterconnectLocationList where
+        toJSON InterconnectLocationList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _illNextPageToken,
+                  Just ("kind" .= _illKind),
+                  ("items" .=) <$> _illItems,
+                  ("selfLink" .=) <$> _illSelfLink,
+                  ("warning" .=) <$> _illWarning,
+                  ("id" .=) <$> _illId])
+
+--
+-- /See:/ 'sslPoliciesListAvailableFeaturesResponse' smart constructor.
+newtype SSLPoliciesListAvailableFeaturesResponse = SSLPoliciesListAvailableFeaturesResponse'
+    { _splafrFeatures :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesListAvailableFeaturesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splafrFeatures'
+sslPoliciesListAvailableFeaturesResponse
+    :: SSLPoliciesListAvailableFeaturesResponse
+sslPoliciesListAvailableFeaturesResponse =
+    SSLPoliciesListAvailableFeaturesResponse'
+    { _splafrFeatures = Nothing
+    }
+
+splafrFeatures :: Lens' SSLPoliciesListAvailableFeaturesResponse [Text]
+splafrFeatures
+  = lens _splafrFeatures
+      (\ s a -> s{_splafrFeatures = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         SSLPoliciesListAvailableFeaturesResponse where
+        parseJSON
+          = withObject
+              "SSLPoliciesListAvailableFeaturesResponse"
+              (\ o ->
+                 SSLPoliciesListAvailableFeaturesResponse' <$>
+                   (o .:? "features" .!= mempty))
+
+instance ToJSON
+         SSLPoliciesListAvailableFeaturesResponse where
+        toJSON SSLPoliciesListAvailableFeaturesResponse'{..}
+          = object
+              (catMaybes [("features" .=) <$> _splafrFeatures])
+
+-- | Labels to apply to instances that are created from this template.
+--
+-- /See:/ 'instancePropertiesLabels' smart constructor.
+newtype InstancePropertiesLabels = InstancePropertiesLabels'
+    { _iplAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancePropertiesLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iplAddtional'
+instancePropertiesLabels
+    :: HashMap Text Text -- ^ 'iplAddtional'
+    -> InstancePropertiesLabels
+instancePropertiesLabels pIplAddtional_ =
+    InstancePropertiesLabels'
+    { _iplAddtional = _Coerce # pIplAddtional_
+    }
+
+iplAddtional :: Lens' InstancePropertiesLabels (HashMap Text Text)
+iplAddtional
+  = lens _iplAddtional (\ s a -> s{_iplAddtional = a})
+      . _Coerce
+
+instance FromJSON InstancePropertiesLabels where
+        parseJSON
+          = withObject "InstancePropertiesLabels"
+              (\ o ->
+                 InstancePropertiesLabels' <$> (parseJSONObject o))
+
+instance ToJSON InstancePropertiesLabels where
+        toJSON = toJSON . _iplAddtional
+
+--
+-- /See:/ 'machineTypesScopedListWarningDataItem' smart constructor.
+data MachineTypesScopedListWarningDataItem = MachineTypesScopedListWarningDataItem'
+    { _mtslwdiValue :: !(Maybe Text)
+    , _mtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslwdiValue'
+--
+-- * 'mtslwdiKey'
+machineTypesScopedListWarningDataItem
+    :: MachineTypesScopedListWarningDataItem
+machineTypesScopedListWarningDataItem =
+    MachineTypesScopedListWarningDataItem'
+    { _mtslwdiValue = Nothing
+    , _mtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
+mtslwdiValue
+  = lens _mtslwdiValue (\ s a -> s{_mtslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
+mtslwdiKey
+  = lens _mtslwdiKey (\ s a -> s{_mtslwdiKey = a})
+
+instance FromJSON
+         MachineTypesScopedListWarningDataItem where
+        parseJSON
+          = withObject "MachineTypesScopedListWarningDataItem"
+              (\ o ->
+                 MachineTypesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON MachineTypesScopedListWarningDataItem
+         where
+        toJSON MachineTypesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _mtslwdiValue,
+                  ("key" .=) <$> _mtslwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'diskTypeListWarning' smart constructor.
+data DiskTypeListWarning = DiskTypeListWarning'
+    { _dtlwData    :: !(Maybe [DiskTypeListWarningDataItem])
+    , _dtlwCode    :: !(Maybe DiskTypeListWarningCode)
+    , _dtlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtlwData'
+--
+-- * 'dtlwCode'
+--
+-- * 'dtlwMessage'
+diskTypeListWarning
+    :: DiskTypeListWarning
+diskTypeListWarning =
+    DiskTypeListWarning'
+    { _dtlwData = Nothing
+    , _dtlwCode = Nothing
+    , _dtlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dtlwData :: Lens' DiskTypeListWarning [DiskTypeListWarningDataItem]
+dtlwData
+  = lens _dtlwData (\ s a -> s{_dtlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dtlwCode :: Lens' DiskTypeListWarning (Maybe DiskTypeListWarningCode)
+dtlwCode = lens _dtlwCode (\ s a -> s{_dtlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dtlwMessage :: Lens' DiskTypeListWarning (Maybe Text)
+dtlwMessage
+  = lens _dtlwMessage (\ s a -> s{_dtlwMessage = a})
+
+instance FromJSON DiskTypeListWarning where
+        parseJSON
+          = withObject "DiskTypeListWarning"
+              (\ o ->
+                 DiskTypeListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskTypeListWarning where
+        toJSON DiskTypeListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dtlwData,
+                  ("code" .=) <$> _dtlwCode,
+                  ("message" .=) <$> _dtlwMessage])
+
+--
+-- /See:/ 'nodeTemplateListWarningDataItem' smart constructor.
+data NodeTemplateListWarningDataItem = NodeTemplateListWarningDataItem'
+    { _nodValue :: !(Maybe Text)
+    , _nodKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nodValue'
+--
+-- * 'nodKey'
+nodeTemplateListWarningDataItem
+    :: NodeTemplateListWarningDataItem
+nodeTemplateListWarningDataItem =
+    NodeTemplateListWarningDataItem'
+    { _nodValue = Nothing
+    , _nodKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+nodValue :: Lens' NodeTemplateListWarningDataItem (Maybe Text)
+nodValue = lens _nodValue (\ s a -> s{_nodValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+nodKey :: Lens' NodeTemplateListWarningDataItem (Maybe Text)
+nodKey = lens _nodKey (\ s a -> s{_nodKey = a})
+
+instance FromJSON NodeTemplateListWarningDataItem
+         where
+        parseJSON
+          = withObject "NodeTemplateListWarningDataItem"
+              (\ o ->
+                 NodeTemplateListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeTemplateListWarningDataItem where
+        toJSON NodeTemplateListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _nodValue, ("key" .=) <$> _nodKey])
+
+--
+-- /See:/ 'regionListWarningDataItem' smart constructor.
+data RegionListWarningDataItem = RegionListWarningDataItem'
+    { _regValue :: !(Maybe Text)
+    , _regKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'regValue'
+--
+-- * 'regKey'
+regionListWarningDataItem
+    :: RegionListWarningDataItem
+regionListWarningDataItem =
+    RegionListWarningDataItem'
+    { _regValue = Nothing
+    , _regKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+regValue :: Lens' RegionListWarningDataItem (Maybe Text)
+regValue = lens _regValue (\ s a -> s{_regValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+regKey :: Lens' RegionListWarningDataItem (Maybe Text)
+regKey = lens _regKey (\ s a -> s{_regKey = a})
+
+instance FromJSON RegionListWarningDataItem where
+        parseJSON
+          = withObject "RegionListWarningDataItem"
+              (\ o ->
+                 RegionListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RegionListWarningDataItem where
+        toJSON RegionListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _regValue, ("key" .=) <$> _regKey])
+
+--
+-- /See:/ 'instancesSetMachineResourcesRequest' smart constructor.
+newtype InstancesSetMachineResourcesRequest = InstancesSetMachineResourcesRequest'
+    { _ismrrGuestAccelerators :: Maybe [AcceleratorConfig]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMachineResourcesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismrrGuestAccelerators'
+instancesSetMachineResourcesRequest
+    :: InstancesSetMachineResourcesRequest
+instancesSetMachineResourcesRequest =
+    InstancesSetMachineResourcesRequest'
+    { _ismrrGuestAccelerators = Nothing
+    }
+
+-- | A list of the type and count of accelerator cards attached to the
+-- instance.
+ismrrGuestAccelerators :: Lens' InstancesSetMachineResourcesRequest [AcceleratorConfig]
+ismrrGuestAccelerators
+  = lens _ismrrGuestAccelerators
+      (\ s a -> s{_ismrrGuestAccelerators = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstancesSetMachineResourcesRequest
+         where
+        parseJSON
+          = withObject "InstancesSetMachineResourcesRequest"
+              (\ o ->
+                 InstancesSetMachineResourcesRequest' <$>
+                   (o .:? "guestAccelerators" .!= mempty))
+
+instance ToJSON InstancesSetMachineResourcesRequest
+         where
+        toJSON InstancesSetMachineResourcesRequest'{..}
+          = object
+              (catMaybes
+                 [("guestAccelerators" .=) <$>
+                    _ismrrGuestAccelerators])
+
+--
+-- /See:/ 'instancesSetServiceAccountRequest' smart constructor.
+data InstancesSetServiceAccountRequest = InstancesSetServiceAccountRequest'
+    { _issarEmail  :: !(Maybe Text)
+    , _issarScopes :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetServiceAccountRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'issarEmail'
+--
+-- * 'issarScopes'
+instancesSetServiceAccountRequest
+    :: InstancesSetServiceAccountRequest
+instancesSetServiceAccountRequest =
+    InstancesSetServiceAccountRequest'
+    { _issarEmail = Nothing
+    , _issarScopes = Nothing
+    }
+
+-- | Email address of the service account.
+issarEmail :: Lens' InstancesSetServiceAccountRequest (Maybe Text)
+issarEmail
+  = lens _issarEmail (\ s a -> s{_issarEmail = a})
+
+-- | The list of scopes to be made available for this service account.
+issarScopes :: Lens' InstancesSetServiceAccountRequest [Text]
+issarScopes
+  = lens _issarScopes (\ s a -> s{_issarScopes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON InstancesSetServiceAccountRequest
+         where
+        parseJSON
+          = withObject "InstancesSetServiceAccountRequest"
+              (\ o ->
+                 InstancesSetServiceAccountRequest' <$>
+                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))
+
+instance ToJSON InstancesSetServiceAccountRequest
+         where
+        toJSON InstancesSetServiceAccountRequest'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _issarEmail,
+                  ("scopes" .=) <$> _issarScopes])
+
+--
+-- /See:/ 'securityPolicyReference' smart constructor.
+newtype SecurityPolicyReference = SecurityPolicyReference'
+    { _sprSecurityPolicy :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprSecurityPolicy'
+securityPolicyReference
+    :: SecurityPolicyReference
+securityPolicyReference =
+    SecurityPolicyReference'
+    { _sprSecurityPolicy = Nothing
+    }
+
+sprSecurityPolicy :: Lens' SecurityPolicyReference (Maybe Text)
+sprSecurityPolicy
+  = lens _sprSecurityPolicy
+      (\ s a -> s{_sprSecurityPolicy = a})
+
+instance FromJSON SecurityPolicyReference where
+        parseJSON
+          = withObject "SecurityPolicyReference"
+              (\ o ->
+                 SecurityPolicyReference' <$>
+                   (o .:? "securityPolicy"))
+
+instance ToJSON SecurityPolicyReference where
+        toJSON SecurityPolicyReference'{..}
+          = object
+              (catMaybes
+                 [("securityPolicy" .=) <$> _sprSecurityPolicy])
+
+--
+-- /See:/ 'diskTypesScopedListWarningDataItem' smart constructor.
+data DiskTypesScopedListWarningDataItem = DiskTypesScopedListWarningDataItem'
+    { _dtslwdiValue :: !(Maybe Text)
+    , _dtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslwdiValue'
+--
+-- * 'dtslwdiKey'
+diskTypesScopedListWarningDataItem
+    :: DiskTypesScopedListWarningDataItem
+diskTypesScopedListWarningDataItem =
+    DiskTypesScopedListWarningDataItem'
+    { _dtslwdiValue = Nothing
+    , _dtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
+dtslwdiValue
+  = lens _dtslwdiValue (\ s a -> s{_dtslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
+dtslwdiKey
+  = lens _dtslwdiKey (\ s a -> s{_dtslwdiKey = a})
+
+instance FromJSON DiskTypesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "DiskTypesScopedListWarningDataItem"
+              (\ o ->
+                 DiskTypesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskTypesScopedListWarningDataItem
+         where
+        toJSON DiskTypesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dtslwdiValue,
+                  ("key" .=) <$> _dtslwdiKey])
+
+-- | Contain information of Nat mapping for an interface of this endpoint.
+--
+-- /See:/ 'vMEndpointNATMAppingsInterfaceNATMAppings' smart constructor.
+data VMEndpointNATMAppingsInterfaceNATMAppings = VMEndpointNATMAppingsInterfaceNATMAppings'
+    { _vmenatmainatmaSourceAliasIPRange :: !(Maybe Text)
+    , _vmenatmainatmaSourceVirtualIP    :: !(Maybe Text)
+    , _vmenatmainatmaNATIPPortRanges    :: !(Maybe [Text])
+    , _vmenatmainatmaNumTotalNATPorts   :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VMEndpointNATMAppingsInterfaceNATMAppings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vmenatmainatmaSourceAliasIPRange'
+--
+-- * 'vmenatmainatmaSourceVirtualIP'
+--
+-- * 'vmenatmainatmaNATIPPortRanges'
+--
+-- * 'vmenatmainatmaNumTotalNATPorts'
+vMEndpointNATMAppingsInterfaceNATMAppings
+    :: VMEndpointNATMAppingsInterfaceNATMAppings
+vMEndpointNATMAppingsInterfaceNATMAppings =
+    VMEndpointNATMAppingsInterfaceNATMAppings'
+    { _vmenatmainatmaSourceAliasIPRange = Nothing
+    , _vmenatmainatmaSourceVirtualIP = Nothing
+    , _vmenatmainatmaNATIPPortRanges = Nothing
+    , _vmenatmainatmaNumTotalNATPorts = Nothing
+    }
+
+-- | Alias IP range for this interface endpoint. It will be a private (RFC
+-- 1918) IP range. Examples: \"10.33.4.55\/32\", or \"192.168.5.0\/24\".
+vmenatmainatmaSourceAliasIPRange :: Lens' VMEndpointNATMAppingsInterfaceNATMAppings (Maybe Text)
+vmenatmainatmaSourceAliasIPRange
+  = lens _vmenatmainatmaSourceAliasIPRange
+      (\ s a -> s{_vmenatmainatmaSourceAliasIPRange = a})
+
+-- | Primary IP of the VM for this NIC.
+vmenatmainatmaSourceVirtualIP :: Lens' VMEndpointNATMAppingsInterfaceNATMAppings (Maybe Text)
+vmenatmainatmaSourceVirtualIP
+  = lens _vmenatmainatmaSourceVirtualIP
+      (\ s a -> s{_vmenatmainatmaSourceVirtualIP = a})
+
+-- | A list of all IP:port-range mappings assigned to this interface. These
+-- ranges are inclusive, that is, both the first and the last ports can be
+-- used for NAT. Example: [\"2.2.2.2:12345-12355\", \"1.1.1.1:2234-2234\"].
+vmenatmainatmaNATIPPortRanges :: Lens' VMEndpointNATMAppingsInterfaceNATMAppings [Text]
+vmenatmainatmaNATIPPortRanges
+  = lens _vmenatmainatmaNATIPPortRanges
+      (\ s a -> s{_vmenatmainatmaNATIPPortRanges = a})
+      . _Default
+      . _Coerce
+
+-- | Total number of ports across all NAT IPs allocated to this interface. It
+-- equals to the aggregated port number in the field nat_ip_port_ranges.
+vmenatmainatmaNumTotalNATPorts :: Lens' VMEndpointNATMAppingsInterfaceNATMAppings (Maybe Int32)
+vmenatmainatmaNumTotalNATPorts
+  = lens _vmenatmainatmaNumTotalNATPorts
+      (\ s a -> s{_vmenatmainatmaNumTotalNATPorts = a})
+      . mapping _Coerce
+
+instance FromJSON
+         VMEndpointNATMAppingsInterfaceNATMAppings where
+        parseJSON
+          = withObject
+              "VMEndpointNATMAppingsInterfaceNATMAppings"
+              (\ o ->
+                 VMEndpointNATMAppingsInterfaceNATMAppings' <$>
+                   (o .:? "sourceAliasIpRange") <*>
+                     (o .:? "sourceVirtualIp")
+                     <*> (o .:? "natIpPortRanges" .!= mempty)
+                     <*> (o .:? "numTotalNatPorts"))
+
+instance ToJSON
+         VMEndpointNATMAppingsInterfaceNATMAppings where
+        toJSON VMEndpointNATMAppingsInterfaceNATMAppings'{..}
+          = object
+              (catMaybes
+                 [("sourceAliasIpRange" .=) <$>
+                    _vmenatmainatmaSourceAliasIPRange,
+                  ("sourceVirtualIp" .=) <$>
+                    _vmenatmainatmaSourceVirtualIP,
+                  ("natIpPortRanges" .=) <$>
+                    _vmenatmainatmaNATIPPortRanges,
+                  ("numTotalNatPorts" .=) <$>
+                    _vmenatmainatmaNumTotalNATPorts])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'vpnTunnelAggregatedListWarning' smart constructor.
+data VPNTunnelAggregatedListWarning = VPNTunnelAggregatedListWarning'
+    { _vtalwData    :: !(Maybe [VPNTunnelAggregatedListWarningDataItem])
+    , _vtalwCode    :: !(Maybe VPNTunnelAggregatedListWarningCode)
+    , _vtalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtalwData'
+--
+-- * 'vtalwCode'
+--
+-- * 'vtalwMessage'
+vpnTunnelAggregatedListWarning
+    :: VPNTunnelAggregatedListWarning
+vpnTunnelAggregatedListWarning =
+    VPNTunnelAggregatedListWarning'
+    { _vtalwData = Nothing
+    , _vtalwCode = Nothing
+    , _vtalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+vtalwData :: Lens' VPNTunnelAggregatedListWarning [VPNTunnelAggregatedListWarningDataItem]
+vtalwData
+  = lens _vtalwData (\ s a -> s{_vtalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+vtalwCode :: Lens' VPNTunnelAggregatedListWarning (Maybe VPNTunnelAggregatedListWarningCode)
+vtalwCode
+  = lens _vtalwCode (\ s a -> s{_vtalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+vtalwMessage :: Lens' VPNTunnelAggregatedListWarning (Maybe Text)
+vtalwMessage
+  = lens _vtalwMessage (\ s a -> s{_vtalwMessage = a})
+
+instance FromJSON VPNTunnelAggregatedListWarning
+         where
+        parseJSON
+          = withObject "VPNTunnelAggregatedListWarning"
+              (\ o ->
+                 VPNTunnelAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON VPNTunnelAggregatedListWarning where
+        toJSON VPNTunnelAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _vtalwData,
+                  ("code" .=) <$> _vtalwCode,
+                  ("message" .=) <$> _vtalwMessage])
+
+-- | A TargetHttpProxy resource. This resource defines an HTTP proxy. (==
+-- resource_for beta.targetHttpProxies ==) (== resource_for
+-- v1.targetHttpProxies ==)
+--
+-- /See:/ 'targetHTTPProxy' smart constructor.
+data TargetHTTPProxy = TargetHTTPProxy'
+    { _thttppURLMap            :: !(Maybe Text)
+    , _thttppKind              :: !Text
+    , _thttppSelfLink          :: !(Maybe Text)
+    , _thttppName              :: !(Maybe Text)
+    , _thttppCreationTimestamp :: !(Maybe Text)
+    , _thttppId                :: !(Maybe (Textual Word64))
+    , _thttppDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppURLMap'
+--
+-- * 'thttppKind'
+--
+-- * 'thttppSelfLink'
+--
+-- * 'thttppName'
+--
+-- * 'thttppCreationTimestamp'
+--
+-- * 'thttppId'
+--
+-- * 'thttppDescription'
+targetHTTPProxy
+    :: TargetHTTPProxy
+targetHTTPProxy =
+    TargetHTTPProxy'
+    { _thttppURLMap = Nothing
+    , _thttppKind = "compute#targetHttpProxy"
+    , _thttppSelfLink = Nothing
+    , _thttppName = Nothing
+    , _thttppCreationTimestamp = Nothing
+    , _thttppId = Nothing
+    , _thttppDescription = Nothing
+    }
+
+-- | URL to the UrlMap resource that defines the mapping from URL to the
+-- BackendService.
+thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)
+thttppURLMap
+  = lens _thttppURLMap (\ s a -> s{_thttppURLMap = a})
+
+-- | [Output Only] Type of resource. Always compute#targetHttpProxy for
+-- target HTTP proxies.
+thttppKind :: Lens' TargetHTTPProxy Text
+thttppKind
+  = lens _thttppKind (\ s a -> s{_thttppKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)
+thttppSelfLink
+  = lens _thttppSelfLink
+      (\ s a -> s{_thttppSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+thttppName :: Lens' TargetHTTPProxy (Maybe Text)
+thttppName
+  = lens _thttppName (\ s a -> s{_thttppName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)
+thttppCreationTimestamp
+  = lens _thttppCreationTimestamp
+      (\ s a -> s{_thttppCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+thttppId :: Lens' TargetHTTPProxy (Maybe Word64)
+thttppId
+  = lens _thttppId (\ s a -> s{_thttppId = a}) .
+      mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)
+thttppDescription
+  = lens _thttppDescription
+      (\ s a -> s{_thttppDescription = a})
+
+instance FromJSON TargetHTTPProxy where
+        parseJSON
+          = withObject "TargetHTTPProxy"
+              (\ o ->
+                 TargetHTTPProxy' <$>
+                   (o .:? "urlMap") <*>
+                     (o .:? "kind" .!= "compute#targetHttpProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetHTTPProxy where
+        toJSON TargetHTTPProxy'{..}
+          = object
+              (catMaybes
+                 [("urlMap" .=) <$> _thttppURLMap,
+                  Just ("kind" .= _thttppKind),
+                  ("selfLink" .=) <$> _thttppSelfLink,
+                  ("name" .=) <$> _thttppName,
+                  ("creationTimestamp" .=) <$>
+                    _thttppCreationTimestamp,
+                  ("id" .=) <$> _thttppId,
+                  ("description" .=) <$> _thttppDescription])
+
+-- | A Machine Type resource. (== resource_for v1.machineTypes ==) (==
+-- resource_for beta.machineTypes ==)
+--
+-- /See:/ 'machineType' smart constructor.
+data MachineType = MachineType'
+    { _mtIsSharedCPU                  :: !(Maybe Bool)
+    , _mtKind                         :: !Text
+    , _mtImageSpaceGb                 :: !(Maybe (Textual Int32))
+    , _mtZone                         :: !(Maybe Text)
+    , _mtSelfLink                     :: !(Maybe Text)
+    , _mtName                         :: !(Maybe Text)
+    , _mtCreationTimestamp            :: !(Maybe Text)
+    , _mtScratchDisks                 :: !(Maybe [MachineTypeScratchDisksItem])
+    , _mtId                           :: !(Maybe (Textual Word64))
+    , _mtGuestCPUs                    :: !(Maybe (Textual Int32))
+    , _mtMaximumPersistentDisksSizeGb :: !(Maybe (Textual Int64))
+    , _mtMaximumPersistentDisks       :: !(Maybe (Textual Int32))
+    , _mtMemoryMb                     :: !(Maybe (Textual Int32))
+    , _mtDescription                  :: !(Maybe Text)
+    , _mtDeprecated                   :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtIsSharedCPU'
+--
+-- * 'mtKind'
+--
+-- * 'mtImageSpaceGb'
+--
+-- * 'mtZone'
+--
+-- * 'mtSelfLink'
+--
+-- * 'mtName'
+--
+-- * 'mtCreationTimestamp'
+--
+-- * 'mtScratchDisks'
+--
+-- * 'mtId'
+--
+-- * 'mtGuestCPUs'
+--
+-- * 'mtMaximumPersistentDisksSizeGb'
+--
+-- * 'mtMaximumPersistentDisks'
+--
+-- * 'mtMemoryMb'
+--
+-- * 'mtDescription'
+--
+-- * 'mtDeprecated'
+machineType
+    :: MachineType
+machineType =
+    MachineType'
+    { _mtIsSharedCPU = Nothing
+    , _mtKind = "compute#machineType"
+    , _mtImageSpaceGb = Nothing
+    , _mtZone = Nothing
+    , _mtSelfLink = Nothing
+    , _mtName = Nothing
+    , _mtCreationTimestamp = Nothing
+    , _mtScratchDisks = Nothing
+    , _mtId = Nothing
+    , _mtGuestCPUs = Nothing
+    , _mtMaximumPersistentDisksSizeGb = Nothing
+    , _mtMaximumPersistentDisks = Nothing
+    , _mtMemoryMb = Nothing
+    , _mtDescription = Nothing
+    , _mtDeprecated = Nothing
+    }
+
+-- | [Output Only] Whether this machine type has a shared CPU. See
+-- Shared-core machine types for more information.
+mtIsSharedCPU :: Lens' MachineType (Maybe Bool)
+mtIsSharedCPU
+  = lens _mtIsSharedCPU
+      (\ s a -> s{_mtIsSharedCPU = a})
+
+-- | [Output Only] The type of the resource. Always compute#machineType for
+-- machine types.
+mtKind :: Lens' MachineType Text
+mtKind = lens _mtKind (\ s a -> s{_mtKind = a})
+
+-- | [Deprecated] This property is deprecated and will never be populated
+-- with any relevant values.
+mtImageSpaceGb :: Lens' MachineType (Maybe Int32)
+mtImageSpaceGb
+  = lens _mtImageSpaceGb
+      (\ s a -> s{_mtImageSpaceGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] The name of the zone where the machine type resides, such
+-- as us-central1-a.
+mtZone :: Lens' MachineType (Maybe Text)
+mtZone = lens _mtZone (\ s a -> s{_mtZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+mtSelfLink :: Lens' MachineType (Maybe Text)
+mtSelfLink
+  = lens _mtSelfLink (\ s a -> s{_mtSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+mtName :: Lens' MachineType (Maybe Text)
+mtName = lens _mtName (\ s a -> s{_mtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+mtCreationTimestamp :: Lens' MachineType (Maybe Text)
+mtCreationTimestamp
+  = lens _mtCreationTimestamp
+      (\ s a -> s{_mtCreationTimestamp = a})
+
+-- | [Output Only] A list of extended scratch disks assigned to the instance.
+mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]
+mtScratchDisks
+  = lens _mtScratchDisks
+      (\ s a -> s{_mtScratchDisks = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+mtId :: Lens' MachineType (Maybe Word64)
+mtId
+  = lens _mtId (\ s a -> s{_mtId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The number of virtual CPUs that are available to the
+-- instance.
+mtGuestCPUs :: Lens' MachineType (Maybe Int32)
+mtGuestCPUs
+  = lens _mtGuestCPUs (\ s a -> s{_mtGuestCPUs = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Maximum total persistent disks size (GB) allowed.
+mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)
+mtMaximumPersistentDisksSizeGb
+  = lens _mtMaximumPersistentDisksSizeGb
+      (\ s a -> s{_mtMaximumPersistentDisksSizeGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] Maximum persistent disks allowed.
+mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)
+mtMaximumPersistentDisks
+  = lens _mtMaximumPersistentDisks
+      (\ s a -> s{_mtMaximumPersistentDisks = a})
+      . mapping _Coerce
+
+-- | [Output Only] The amount of physical memory available to the instance,
+-- defined in MB.
+mtMemoryMb :: Lens' MachineType (Maybe Int32)
+mtMemoryMb
+  = lens _mtMemoryMb (\ s a -> s{_mtMemoryMb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] An optional textual description of the resource.
+mtDescription :: Lens' MachineType (Maybe Text)
+mtDescription
+  = lens _mtDescription
+      (\ s a -> s{_mtDescription = a})
+
+-- | [Output Only] The deprecation status associated with this machine type.
+mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)
+mtDeprecated
+  = lens _mtDeprecated (\ s a -> s{_mtDeprecated = a})
+
+instance FromJSON MachineType where
+        parseJSON
+          = withObject "MachineType"
+              (\ o ->
+                 MachineType' <$>
+                   (o .:? "isSharedCpu") <*>
+                     (o .:? "kind" .!= "compute#machineType")
+                     <*> (o .:? "imageSpaceGb")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "scratchDisks" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "guestCpus")
+                     <*> (o .:? "maximumPersistentDisksSizeGb")
+                     <*> (o .:? "maximumPersistentDisks")
+                     <*> (o .:? "memoryMb")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON MachineType where
+        toJSON MachineType'{..}
+          = object
+              (catMaybes
+                 [("isSharedCpu" .=) <$> _mtIsSharedCPU,
+                  Just ("kind" .= _mtKind),
+                  ("imageSpaceGb" .=) <$> _mtImageSpaceGb,
+                  ("zone" .=) <$> _mtZone,
+                  ("selfLink" .=) <$> _mtSelfLink,
+                  ("name" .=) <$> _mtName,
+                  ("creationTimestamp" .=) <$> _mtCreationTimestamp,
+                  ("scratchDisks" .=) <$> _mtScratchDisks,
+                  ("id" .=) <$> _mtId,
+                  ("guestCpus" .=) <$> _mtGuestCPUs,
+                  ("maximumPersistentDisksSizeGb" .=) <$>
+                    _mtMaximumPersistentDisksSizeGb,
+                  ("maximumPersistentDisks" .=) <$>
+                    _mtMaximumPersistentDisks,
+                  ("memoryMb" .=) <$> _mtMemoryMb,
+                  ("description" .=) <$> _mtDescription,
+                  ("deprecated" .=) <$> _mtDeprecated])
+
+-- | A specification of the type and number of accelerator cards attached to
+-- the instance.
+--
+-- /See:/ 'acceleratorConfig' smart constructor.
+data AcceleratorConfig = AcceleratorConfig'
+    { _acAcceleratorCount :: !(Maybe (Textual Int32))
+    , _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 guest accelerator cards exposed to this instance.
+acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int32)
+acAcceleratorCount
+  = lens _acAcceleratorCount
+      (\ s a -> s{_acAcceleratorCount = a})
+      . mapping _Coerce
+
+-- | Full or partial URL of the accelerator type resource to attach to this
+-- instance. If you are creating an instance template, specify only the
+-- accelerator name.
+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])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'autoscalerListWarning' smart constructor.
+data AutoscalerListWarning = AutoscalerListWarning'
+    { _alwData    :: !(Maybe [AutoscalerListWarningDataItem])
+    , _alwCode    :: !(Maybe AutoscalerListWarningCode)
+    , _alwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alwData'
+--
+-- * 'alwCode'
+--
+-- * 'alwMessage'
+autoscalerListWarning
+    :: AutoscalerListWarning
+autoscalerListWarning =
+    AutoscalerListWarning'
+    { _alwData = Nothing
+    , _alwCode = Nothing
+    , _alwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+alwData :: Lens' AutoscalerListWarning [AutoscalerListWarningDataItem]
+alwData
+  = lens _alwData (\ s a -> s{_alwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+alwCode :: Lens' AutoscalerListWarning (Maybe AutoscalerListWarningCode)
+alwCode = lens _alwCode (\ s a -> s{_alwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+alwMessage :: Lens' AutoscalerListWarning (Maybe Text)
+alwMessage
+  = lens _alwMessage (\ s a -> s{_alwMessage = a})
+
+instance FromJSON AutoscalerListWarning where
+        parseJSON
+          = withObject "AutoscalerListWarning"
+              (\ o ->
+                 AutoscalerListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AutoscalerListWarning where
+        toJSON AutoscalerListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _alwData, ("code" .=) <$> _alwCode,
+                  ("message" .=) <$> _alwMessage])
+
+--
+-- /See:/ 'machineTypeAggregatedListWarningDataItem' smart constructor.
+data MachineTypeAggregatedListWarningDataItem = MachineTypeAggregatedListWarningDataItem'
+    { _mtalwdiValue :: !(Maybe Text)
+    , _mtalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtalwdiValue'
+--
+-- * 'mtalwdiKey'
+machineTypeAggregatedListWarningDataItem
+    :: MachineTypeAggregatedListWarningDataItem
+machineTypeAggregatedListWarningDataItem =
+    MachineTypeAggregatedListWarningDataItem'
+    { _mtalwdiValue = Nothing
+    , _mtalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+mtalwdiValue :: Lens' MachineTypeAggregatedListWarningDataItem (Maybe Text)
+mtalwdiValue
+  = lens _mtalwdiValue (\ s a -> s{_mtalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+mtalwdiKey :: Lens' MachineTypeAggregatedListWarningDataItem (Maybe Text)
+mtalwdiKey
+  = lens _mtalwdiKey (\ s a -> s{_mtalwdiKey = a})
+
+instance FromJSON
+         MachineTypeAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "MachineTypeAggregatedListWarningDataItem"
+              (\ o ->
+                 MachineTypeAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         MachineTypeAggregatedListWarningDataItem where
+        toJSON MachineTypeAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _mtalwdiValue,
+                  ("key" .=) <$> _mtalwdiKey])
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+--
+-- /See:/ 'operationError' smart constructor.
+newtype OperationError = OperationError'
+    { _oeErrors :: Maybe [OperationErrorErrorsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeErrors'
+operationError
+    :: OperationError
+operationError =
+    OperationError'
+    { _oeErrors = Nothing
+    }
+
+-- | [Output Only] The array of errors encountered while processing this
+-- operation.
+oeErrors :: Lens' OperationError [OperationErrorErrorsItem]
+oeErrors
+  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON OperationError where
+        parseJSON
+          = withObject "OperationError"
+              (\ o ->
+                 OperationError' <$> (o .:? "errors" .!= mempty))
+
+instance ToJSON OperationError where
+        toJSON OperationError'{..}
+          = object (catMaybes [("errors" .=) <$> _oeErrors])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'nodeTypeAggregatedListWarning' smart constructor.
+data NodeTypeAggregatedListWarning = NodeTypeAggregatedListWarning'
+    { _ntalwtData    :: !(Maybe [NodeTypeAggregatedListWarningDataItem])
+    , _ntalwtCode    :: !(Maybe NodeTypeAggregatedListWarningCode)
+    , _ntalwtMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntalwtData'
+--
+-- * 'ntalwtCode'
+--
+-- * 'ntalwtMessage'
+nodeTypeAggregatedListWarning
+    :: NodeTypeAggregatedListWarning
+nodeTypeAggregatedListWarning =
+    NodeTypeAggregatedListWarning'
+    { _ntalwtData = Nothing
+    , _ntalwtCode = Nothing
+    , _ntalwtMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+ntalwtData :: Lens' NodeTypeAggregatedListWarning [NodeTypeAggregatedListWarningDataItem]
+ntalwtData
+  = lens _ntalwtData (\ s a -> s{_ntalwtData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+ntalwtCode :: Lens' NodeTypeAggregatedListWarning (Maybe NodeTypeAggregatedListWarningCode)
+ntalwtCode
+  = lens _ntalwtCode (\ s a -> s{_ntalwtCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+ntalwtMessage :: Lens' NodeTypeAggregatedListWarning (Maybe Text)
+ntalwtMessage
+  = lens _ntalwtMessage
+      (\ s a -> s{_ntalwtMessage = a})
+
+instance FromJSON NodeTypeAggregatedListWarning where
+        parseJSON
+          = withObject "NodeTypeAggregatedListWarning"
+              (\ o ->
+                 NodeTypeAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NodeTypeAggregatedListWarning where
+        toJSON NodeTypeAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _ntalwtData,
+                  ("code" .=) <$> _ntalwtCode,
+                  ("message" .=) <$> _ntalwtMessage])
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'targetInstancesScopedListWarning' smart constructor.
+data TargetInstancesScopedListWarning = TargetInstancesScopedListWarning'
+    { _tislwData    :: !(Maybe [TargetInstancesScopedListWarningDataItem])
+    , _tislwCode    :: !(Maybe TargetInstancesScopedListWarningCode)
+    , _tislwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislwData'
+--
+-- * 'tislwCode'
+--
+-- * 'tislwMessage'
+targetInstancesScopedListWarning
+    :: TargetInstancesScopedListWarning
+targetInstancesScopedListWarning =
+    TargetInstancesScopedListWarning'
+    { _tislwData = Nothing
+    , _tislwCode = Nothing
+    , _tislwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]
+tislwData
+  = lens _tislwData (\ s a -> s{_tislwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)
+tislwCode
+  = lens _tislwCode (\ s a -> s{_tislwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)
+tislwMessage
+  = lens _tislwMessage (\ s a -> s{_tislwMessage = a})
+
+instance FromJSON TargetInstancesScopedListWarning
+         where
+        parseJSON
+          = withObject "TargetInstancesScopedListWarning"
+              (\ o ->
+                 TargetInstancesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetInstancesScopedListWarning
+         where
+        toJSON TargetInstancesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tislwData,
+                  ("code" .=) <$> _tislwCode,
+                  ("message" .=) <$> _tislwMessage])
+
+--
+-- /See:/ 'subnetworkAggregatedList' smart constructor.
+data SubnetworkAggregatedList = SubnetworkAggregatedList'
+    { _salNextPageToken :: !(Maybe Text)
+    , _salKind          :: !Text
+    , _salItems         :: !(Maybe SubnetworkAggregatedListItems)
+    , _salSelfLink      :: !(Maybe Text)
+    , _salWarning       :: !(Maybe SubnetworkAggregatedListWarning)
+    , _salId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'salNextPageToken'
+--
+-- * 'salKind'
+--
+-- * 'salItems'
+--
+-- * 'salSelfLink'
+--
+-- * 'salWarning'
+--
+-- * 'salId'
+subnetworkAggregatedList
+    :: SubnetworkAggregatedList
+subnetworkAggregatedList =
+    SubnetworkAggregatedList'
+    { _salNextPageToken = Nothing
+    , _salKind = "compute#subnetworkAggregatedList"
+    , _salItems = Nothing
+    , _salSelfLink = Nothing
+    , _salWarning = Nothing
+    , _salId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)
+salNextPageToken
+  = lens _salNextPageToken
+      (\ s a -> s{_salNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#subnetworkAggregatedList
+-- for aggregated lists of subnetworks.
+salKind :: Lens' SubnetworkAggregatedList Text
+salKind = lens _salKind (\ s a -> s{_salKind = a})
+
+-- | A list of SubnetworksScopedList resources.
+salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)
+salItems = lens _salItems (\ s a -> s{_salItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)
+salSelfLink
+  = lens _salSelfLink (\ s a -> s{_salSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+salWarning :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListWarning)
+salWarning
+  = lens _salWarning (\ s a -> s{_salWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+salId :: Lens' SubnetworkAggregatedList (Maybe Text)
+salId = lens _salId (\ s a -> s{_salId = a})
+
+instance FromJSON SubnetworkAggregatedList where
+        parseJSON
+          = withObject "SubnetworkAggregatedList"
+              (\ o ->
+                 SubnetworkAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#subnetworkAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SubnetworkAggregatedList where
+        toJSON SubnetworkAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _salNextPageToken,
+                  Just ("kind" .= _salKind),
+                  ("items" .=) <$> _salItems,
+                  ("selfLink" .=) <$> _salSelfLink,
+                  ("warning" .=) <$> _salWarning,
+                  ("id" .=) <$> _salId])
+
+--
+-- /See:/ 'vpnTunnelListWarningDataItem' smart constructor.
+data VPNTunnelListWarningDataItem = VPNTunnelListWarningDataItem'
+    { _vtlwdiValue :: !(Maybe Text)
+    , _vtlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtlwdiValue'
+--
+-- * 'vtlwdiKey'
+vpnTunnelListWarningDataItem
+    :: VPNTunnelListWarningDataItem
+vpnTunnelListWarningDataItem =
+    VPNTunnelListWarningDataItem'
+    { _vtlwdiValue = Nothing
+    , _vtlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+vtlwdiValue :: Lens' VPNTunnelListWarningDataItem (Maybe Text)
+vtlwdiValue
+  = lens _vtlwdiValue (\ s a -> s{_vtlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+vtlwdiKey :: Lens' VPNTunnelListWarningDataItem (Maybe Text)
+vtlwdiKey
+  = lens _vtlwdiKey (\ s a -> s{_vtlwdiKey = a})
+
+instance FromJSON VPNTunnelListWarningDataItem where
+        parseJSON
+          = withObject "VPNTunnelListWarningDataItem"
+              (\ o ->
+                 VPNTunnelListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON VPNTunnelListWarningDataItem where
+        toJSON VPNTunnelListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _vtlwdiValue,
+                  ("key" .=) <$> _vtlwdiKey])
+
+--
+-- /See:/ 'interconnectDiagnosticsLinkOpticalPower' smart constructor.
+data InterconnectDiagnosticsLinkOpticalPower = InterconnectDiagnosticsLinkOpticalPower'
+    { _idlopState :: !(Maybe InterconnectDiagnosticsLinkOpticalPowerState)
+    , _idlopValue :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectDiagnosticsLinkOpticalPower' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idlopState'
+--
+-- * 'idlopValue'
+interconnectDiagnosticsLinkOpticalPower
+    :: InterconnectDiagnosticsLinkOpticalPower
+interconnectDiagnosticsLinkOpticalPower =
+    InterconnectDiagnosticsLinkOpticalPower'
+    { _idlopState = Nothing
+    , _idlopValue = Nothing
+    }
+
+idlopState :: Lens' InterconnectDiagnosticsLinkOpticalPower (Maybe InterconnectDiagnosticsLinkOpticalPowerState)
+idlopState
+  = lens _idlopState (\ s a -> s{_idlopState = a})
+
+-- | Value of the current optical power, read in dBm. Take a known good
+-- optical value, give it a 10% margin and trigger warnings relative to
+-- that value. In general, a -7dBm warning and a -11dBm alarm are good
+-- optical value estimates for most links.
+idlopValue :: Lens' InterconnectDiagnosticsLinkOpticalPower (Maybe Double)
+idlopValue
+  = lens _idlopValue (\ s a -> s{_idlopValue = a}) .
+      mapping _Coerce
+
+instance FromJSON
+         InterconnectDiagnosticsLinkOpticalPower where
+        parseJSON
+          = withObject
+              "InterconnectDiagnosticsLinkOpticalPower"
+              (\ o ->
+                 InterconnectDiagnosticsLinkOpticalPower' <$>
+                   (o .:? "state") <*> (o .:? "value"))
+
+instance ToJSON
+         InterconnectDiagnosticsLinkOpticalPower where
+        toJSON InterconnectDiagnosticsLinkOpticalPower'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _idlopState,
+                  ("value" .=) <$> _idlopValue])
+
+--
+-- /See:/ 'disksResizeRequest' smart constructor.
+newtype DisksResizeRequest = DisksResizeRequest'
+    { _drrSizeGb :: Maybe (Textual Int64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksResizeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrSizeGb'
+disksResizeRequest
+    :: DisksResizeRequest
+disksResizeRequest =
+    DisksResizeRequest'
+    { _drrSizeGb = Nothing
+    }
+
+-- | The new size of the persistent disk, which is specified in GB.
+drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)
+drrSizeGb
+  = lens _drrSizeGb (\ s a -> s{_drrSizeGb = a}) .
+      mapping _Coerce
+
+instance FromJSON DisksResizeRequest where
+        parseJSON
+          = withObject "DisksResizeRequest"
+              (\ o -> DisksResizeRequest' <$> (o .:? "sizeGb"))
+
+instance ToJSON DisksResizeRequest where
+        toJSON DisksResizeRequest'{..}
+          = object (catMaybes [("sizeGb" .=) <$> _drrSizeGb])
+
+--
+-- /See:/ 'autoscalersScopedListWarningDataItem' smart constructor.
+data AutoscalersScopedListWarningDataItem = AutoscalersScopedListWarningDataItem'
+    { _aValue :: !(Maybe Text)
+    , _aKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aValue'
+--
+-- * 'aKey'
+autoscalersScopedListWarningDataItem
+    :: AutoscalersScopedListWarningDataItem
+autoscalersScopedListWarningDataItem =
+    AutoscalersScopedListWarningDataItem'
+    { _aValue = Nothing
+    , _aKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
+aValue = lens _aValue (\ s a -> s{_aValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
+aKey = lens _aKey (\ s a -> s{_aKey = a})
+
+instance FromJSON
+         AutoscalersScopedListWarningDataItem where
+        parseJSON
+          = withObject "AutoscalersScopedListWarningDataItem"
+              (\ o ->
+                 AutoscalersScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AutoscalersScopedListWarningDataItem
+         where
+        toJSON AutoscalersScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])
+
+--
+-- /See:/ 'zoneSetPolicyRequest' smart constructor.
+data ZoneSetPolicyRequest = ZoneSetPolicyRequest'
+    { _zsprEtag     :: !(Maybe Bytes)
+    , _zsprBindings :: !(Maybe [Binding])
+    , _zsprPolicy   :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneSetPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zsprEtag'
+--
+-- * 'zsprBindings'
+--
+-- * 'zsprPolicy'
+zoneSetPolicyRequest
+    :: ZoneSetPolicyRequest
+zoneSetPolicyRequest =
+    ZoneSetPolicyRequest'
+    { _zsprEtag = Nothing
+    , _zsprBindings = Nothing
+    , _zsprPolicy = Nothing
+    }
+
+-- | Flatten Policy to create a backward compatible wire-format. Deprecated.
+-- Use \'policy\' to specify the etag.
+zsprEtag :: Lens' ZoneSetPolicyRequest (Maybe ByteString)
+zsprEtag
+  = lens _zsprEtag (\ s a -> s{_zsprEtag = a}) .
+      mapping _Bytes
+
+-- | Flatten Policy to create a backwacd compatible wire-format. Deprecated.
+-- Use \'policy\' to specify bindings.
+zsprBindings :: Lens' ZoneSetPolicyRequest [Binding]
+zsprBindings
+  = lens _zsprBindings (\ s a -> s{_zsprBindings = a})
+      . _Default
+      . _Coerce
+
+-- | REQUIRED: The complete policy to be applied to the \'resource\'. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is in
+-- general a valid policy but certain services (like Projects) might reject
+-- them.
+zsprPolicy :: Lens' ZoneSetPolicyRequest (Maybe Policy)
+zsprPolicy
+  = lens _zsprPolicy (\ s a -> s{_zsprPolicy = a})
+
+instance FromJSON ZoneSetPolicyRequest where
+        parseJSON
+          = withObject "ZoneSetPolicyRequest"
+              (\ o ->
+                 ZoneSetPolicyRequest' <$>
+                   (o .:? "etag") <*> (o .:? "bindings" .!= mempty) <*>
+                     (o .:? "policy"))
+
+instance ToJSON ZoneSetPolicyRequest where
+        toJSON ZoneSetPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _zsprEtag,
+                  ("bindings" .=) <$> _zsprBindings,
+                  ("policy" .=) <$> _zsprPolicy])
+
+--
+-- /See:/ 'diskTypeAggregatedListWarningDataItem' smart constructor.
+data DiskTypeAggregatedListWarningDataItem = DiskTypeAggregatedListWarningDataItem'
+    { _dtalwdiValue :: !(Maybe Text)
+    , _dtalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtalwdiValue'
+--
+-- * 'dtalwdiKey'
+diskTypeAggregatedListWarningDataItem
+    :: DiskTypeAggregatedListWarningDataItem
+diskTypeAggregatedListWarningDataItem =
+    DiskTypeAggregatedListWarningDataItem'
+    { _dtalwdiValue = Nothing
+    , _dtalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dtalwdiValue :: Lens' DiskTypeAggregatedListWarningDataItem (Maybe Text)
+dtalwdiValue
+  = lens _dtalwdiValue (\ s a -> s{_dtalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dtalwdiKey :: Lens' DiskTypeAggregatedListWarningDataItem (Maybe Text)
+dtalwdiKey
+  = lens _dtalwdiKey (\ s a -> s{_dtalwdiKey = a})
+
+instance FromJSON
+         DiskTypeAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "DiskTypeAggregatedListWarningDataItem"
+              (\ o ->
+                 DiskTypeAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskTypeAggregatedListWarningDataItem
+         where
+        toJSON DiskTypeAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dtalwdiValue,
+                  ("key" .=) <$> _dtalwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionInstanceGroupManagerListWarning' smart constructor.
+data RegionInstanceGroupManagerListWarning = RegionInstanceGroupManagerListWarning'
+    { _rigmlwData    :: !(Maybe [RegionInstanceGroupManagerListWarningDataItem])
+    , _rigmlwCode    :: !(Maybe RegionInstanceGroupManagerListWarningCode)
+    , _rigmlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagerListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmlwData'
+--
+-- * 'rigmlwCode'
+--
+-- * 'rigmlwMessage'
+regionInstanceGroupManagerListWarning
+    :: RegionInstanceGroupManagerListWarning
+regionInstanceGroupManagerListWarning =
+    RegionInstanceGroupManagerListWarning'
+    { _rigmlwData = Nothing
+    , _rigmlwCode = Nothing
+    , _rigmlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+rigmlwData :: Lens' RegionInstanceGroupManagerListWarning [RegionInstanceGroupManagerListWarningDataItem]
+rigmlwData
+  = lens _rigmlwData (\ s a -> s{_rigmlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+rigmlwCode :: Lens' RegionInstanceGroupManagerListWarning (Maybe RegionInstanceGroupManagerListWarningCode)
+rigmlwCode
+  = lens _rigmlwCode (\ s a -> s{_rigmlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+rigmlwMessage :: Lens' RegionInstanceGroupManagerListWarning (Maybe Text)
+rigmlwMessage
+  = lens _rigmlwMessage
+      (\ s a -> s{_rigmlwMessage = a})
+
+instance FromJSON
+         RegionInstanceGroupManagerListWarning where
+        parseJSON
+          = withObject "RegionInstanceGroupManagerListWarning"
+              (\ o ->
+                 RegionInstanceGroupManagerListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RegionInstanceGroupManagerListWarning
+         where
+        toJSON RegionInstanceGroupManagerListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rigmlwData,
+                  ("code" .=) <$> _rigmlwCode,
+                  ("message" .=) <$> _rigmlwMessage])
+
+--
+-- /See:/ 'regionInstanceGroupManagersSetTemplateRequest' smart constructor.
+newtype RegionInstanceGroupManagersSetTemplateRequest = RegionInstanceGroupManagersSetTemplateRequest'
+    { _rigmstrInstanceTemplate :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersSetTemplateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmstrInstanceTemplate'
+regionInstanceGroupManagersSetTemplateRequest
+    :: RegionInstanceGroupManagersSetTemplateRequest
+regionInstanceGroupManagersSetTemplateRequest =
+    RegionInstanceGroupManagersSetTemplateRequest'
+    { _rigmstrInstanceTemplate = Nothing
+    }
+
+-- | URL of the InstanceTemplate resource from which all new instances will
+-- be created.
+rigmstrInstanceTemplate :: Lens' RegionInstanceGroupManagersSetTemplateRequest (Maybe Text)
+rigmstrInstanceTemplate
+  = lens _rigmstrInstanceTemplate
+      (\ s a -> s{_rigmstrInstanceTemplate = a})
+
+instance FromJSON
+         RegionInstanceGroupManagersSetTemplateRequest where
+        parseJSON
+          = withObject
+              "RegionInstanceGroupManagersSetTemplateRequest"
+              (\ o ->
+                 RegionInstanceGroupManagersSetTemplateRequest' <$>
+                   (o .:? "instanceTemplate"))
+
+instance ToJSON
+         RegionInstanceGroupManagersSetTemplateRequest where
+        toJSON
+          RegionInstanceGroupManagersSetTemplateRequest'{..}
+          = object
+              (catMaybes
+                 [("instanceTemplate" .=) <$>
+                    _rigmstrInstanceTemplate])
+
+--
+-- /See:/ 'instanceGroupsListInstances' smart constructor.
+data InstanceGroupsListInstances = InstanceGroupsListInstances'
+    { _igliNextPageToken :: !(Maybe Text)
+    , _igliKind          :: !Text
+    , _igliItems         :: !(Maybe [InstanceWithNamedPorts])
+    , _igliSelfLink      :: !(Maybe Text)
+    , _igliWarning       :: !(Maybe InstanceGroupsListInstancesWarning)
+    , _igliId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igliNextPageToken'
+--
+-- * 'igliKind'
+--
+-- * 'igliItems'
+--
+-- * 'igliSelfLink'
+--
+-- * 'igliWarning'
+--
+-- * 'igliId'
+instanceGroupsListInstances
+    :: InstanceGroupsListInstances
+instanceGroupsListInstances =
+    InstanceGroupsListInstances'
+    { _igliNextPageToken = Nothing
+    , _igliKind = "compute#instanceGroupsListInstances"
+    , _igliItems = Nothing
+    , _igliSelfLink = Nothing
+    , _igliWarning = Nothing
+    , _igliId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliNextPageToken
+  = lens _igliNextPageToken
+      (\ s a -> s{_igliNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupsListInstances for the list of instances in the
+-- specified instance group.
+igliKind :: Lens' InstanceGroupsListInstances Text
+igliKind = lens _igliKind (\ s a -> s{_igliKind = a})
+
+-- | A list of InstanceWithNamedPorts resources.
+igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]
+igliItems
+  = lens _igliItems (\ s a -> s{_igliItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliSelfLink
+  = lens _igliSelfLink (\ s a -> s{_igliSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+igliWarning :: Lens' InstanceGroupsListInstances (Maybe InstanceGroupsListInstancesWarning)
+igliWarning
+  = lens _igliWarning (\ s a -> s{_igliWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+igliId :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliId = lens _igliId (\ s a -> s{_igliId = a})
+
+instance FromJSON InstanceGroupsListInstances where
+        parseJSON
+          = withObject "InstanceGroupsListInstances"
+              (\ o ->
+                 InstanceGroupsListInstances' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupsListInstances")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupsListInstances where
+        toJSON InstanceGroupsListInstances'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igliNextPageToken,
+                  Just ("kind" .= _igliKind),
+                  ("items" .=) <$> _igliItems,
+                  ("selfLink" .=) <$> _igliSelfLink,
+                  ("warning" .=) <$> _igliWarning,
+                  ("id" .=) <$> _igliId])
+
+-- | Represents an Autoscaler resource. Autoscalers allow you to
+-- automatically scale virtual machine instances in managed instance groups
+-- according to an autoscaling policy that you define. For more
+-- information, read Autoscaling Groups of Instances. (== resource_for
+-- beta.autoscalers ==) (== resource_for v1.autoscalers ==) (==
+-- resource_for beta.regionAutoscalers ==) (== resource_for
+-- v1.regionAutoscalers ==)
+--
+-- /See:/ 'autoscaler' smart constructor.
+data Autoscaler = Autoscaler'
+    { _aaStatus            :: !(Maybe AutoscalerStatus)
+    , _aaKind              :: !Text
+    , _aaZone              :: !(Maybe Text)
+    , _aaStatusDetails     :: !(Maybe [AutoscalerStatusDetails])
+    , _aaSelfLink          :: !(Maybe Text)
+    , _aaName              :: !(Maybe Text)
+    , _aaCreationTimestamp :: !(Maybe Text)
+    , _aaAutoscalingPolicy :: !(Maybe AutoscalingPolicy)
+    , _aaId                :: !(Maybe (Textual Word64))
+    , _aaRegion            :: !(Maybe Text)
+    , _aaDescription       :: !(Maybe Text)
+    , _aaTarget            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Autoscaler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaStatus'
+--
+-- * 'aaKind'
+--
+-- * 'aaZone'
+--
+-- * 'aaStatusDetails'
+--
+-- * 'aaSelfLink'
+--
+-- * 'aaName'
+--
+-- * 'aaCreationTimestamp'
+--
+-- * 'aaAutoscalingPolicy'
+--
+-- * 'aaId'
+--
+-- * 'aaRegion'
+--
+-- * 'aaDescription'
+--
+-- * 'aaTarget'
+autoscaler
+    :: Autoscaler
+autoscaler =
+    Autoscaler'
+    { _aaStatus = Nothing
+    , _aaKind = "compute#autoscaler"
+    , _aaZone = Nothing
+    , _aaStatusDetails = Nothing
+    , _aaSelfLink = Nothing
+    , _aaName = Nothing
+    , _aaCreationTimestamp = Nothing
+    , _aaAutoscalingPolicy = Nothing
+    , _aaId = Nothing
+    , _aaRegion = Nothing
+    , _aaDescription = Nothing
+    , _aaTarget = Nothing
+    }
+
+-- | [Output Only] The status of the autoscaler configuration.
+aaStatus :: Lens' Autoscaler (Maybe AutoscalerStatus)
+aaStatus = lens _aaStatus (\ s a -> s{_aaStatus = a})
+
+-- | [Output Only] Type of the resource. Always compute#autoscaler for
+-- autoscalers.
+aaKind :: Lens' Autoscaler Text
+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
+
+-- | [Output Only] URL of the zone where the instance group resides (for
+-- autoscalers living in zonal scope).
+aaZone :: Lens' Autoscaler (Maybe Text)
+aaZone = lens _aaZone (\ s a -> s{_aaZone = a})
+
+-- | [Output Only] Human-readable details about the current state of the
+-- autoscaler. Read the documentation for Commonly returned status messages
+-- for examples of status messages you might encounter.
+aaStatusDetails :: Lens' Autoscaler [AutoscalerStatusDetails]
+aaStatusDetails
+  = lens _aaStatusDetails
+      (\ s a -> s{_aaStatusDetails = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+aaSelfLink :: Lens' Autoscaler (Maybe Text)
+aaSelfLink
+  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+aaName :: Lens' Autoscaler (Maybe Text)
+aaName = lens _aaName (\ s a -> s{_aaName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)
+aaCreationTimestamp
+  = lens _aaCreationTimestamp
+      (\ s a -> s{_aaCreationTimestamp = a})
+
+-- | The configuration parameters for the autoscaling algorithm. You can
+-- define one or more of the policies for an autoscaler: cpuUtilization,
+-- customMetricUtilizations, and loadBalancingUtilization. If none of these
+-- are specified, the default will be to autoscale based on cpuUtilization
+-- to 0.6 or 60%.
+aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)
+aaAutoscalingPolicy
+  = lens _aaAutoscalingPolicy
+      (\ s a -> s{_aaAutoscalingPolicy = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+aaId :: Lens' Autoscaler (Maybe Word64)
+aaId
+  = lens _aaId (\ s a -> s{_aaId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the instance group resides (for
+-- autoscalers living in regional scope).
+aaRegion :: Lens' Autoscaler (Maybe Text)
+aaRegion = lens _aaRegion (\ s a -> s{_aaRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+aaDescription :: Lens' Autoscaler (Maybe Text)
+aaDescription
+  = lens _aaDescription
+      (\ s a -> s{_aaDescription = a})
+
+-- | URL of the managed instance group that this autoscaler will scale.
+aaTarget :: Lens' Autoscaler (Maybe Text)
+aaTarget = lens _aaTarget (\ s a -> s{_aaTarget = a})
+
+instance FromJSON Autoscaler where
+        parseJSON
+          = withObject "Autoscaler"
+              (\ o ->
+                 Autoscaler' <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#autoscaler")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "statusDetails" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "autoscalingPolicy")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "target"))
+
+instance ToJSON Autoscaler where
+        toJSON Autoscaler'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _aaStatus,
+                  Just ("kind" .= _aaKind), ("zone" .=) <$> _aaZone,
+                  ("statusDetails" .=) <$> _aaStatusDetails,
+                  ("selfLink" .=) <$> _aaSelfLink,
+                  ("name" .=) <$> _aaName,
+                  ("creationTimestamp" .=) <$> _aaCreationTimestamp,
+                  ("autoscalingPolicy" .=) <$> _aaAutoscalingPolicy,
+                  ("id" .=) <$> _aaId, ("region" .=) <$> _aaRegion,
+                  ("description" .=) <$> _aaDescription,
+                  ("target" .=) <$> _aaTarget])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'machineTypeListWarning' smart constructor.
+data MachineTypeListWarning = MachineTypeListWarning'
+    { _mtlwData    :: !(Maybe [MachineTypeListWarningDataItem])
+    , _mtlwCode    :: !(Maybe MachineTypeListWarningCode)
+    , _mtlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtlwData'
+--
+-- * 'mtlwCode'
+--
+-- * 'mtlwMessage'
+machineTypeListWarning
+    :: MachineTypeListWarning
+machineTypeListWarning =
+    MachineTypeListWarning'
+    { _mtlwData = Nothing
+    , _mtlwCode = Nothing
+    , _mtlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+mtlwData :: Lens' MachineTypeListWarning [MachineTypeListWarningDataItem]
+mtlwData
+  = lens _mtlwData (\ s a -> s{_mtlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+mtlwCode :: Lens' MachineTypeListWarning (Maybe MachineTypeListWarningCode)
+mtlwCode = lens _mtlwCode (\ s a -> s{_mtlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+mtlwMessage :: Lens' MachineTypeListWarning (Maybe Text)
+mtlwMessage
+  = lens _mtlwMessage (\ s a -> s{_mtlwMessage = a})
+
+instance FromJSON MachineTypeListWarning where
+        parseJSON
+          = withObject "MachineTypeListWarning"
+              (\ o ->
+                 MachineTypeListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON MachineTypeListWarning where
+        toJSON MachineTypeListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _mtlwData,
+                  ("code" .=) <$> _mtlwCode,
+                  ("message" .=) <$> _mtlwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetHTTPProxyListWarning' smart constructor.
+data TargetHTTPProxyListWarning = TargetHTTPProxyListWarning'
+    { _thttpplwData    :: !(Maybe [TargetHTTPProxyListWarningDataItem])
+    , _thttpplwCode    :: !(Maybe TargetHTTPProxyListWarningCode)
+    , _thttpplwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxyListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttpplwData'
+--
+-- * 'thttpplwCode'
+--
+-- * 'thttpplwMessage'
+targetHTTPProxyListWarning
+    :: TargetHTTPProxyListWarning
+targetHTTPProxyListWarning =
+    TargetHTTPProxyListWarning'
+    { _thttpplwData = Nothing
+    , _thttpplwCode = Nothing
+    , _thttpplwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+thttpplwData :: Lens' TargetHTTPProxyListWarning [TargetHTTPProxyListWarningDataItem]
+thttpplwData
+  = lens _thttpplwData (\ s a -> s{_thttpplwData = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+thttpplwCode :: Lens' TargetHTTPProxyListWarning (Maybe TargetHTTPProxyListWarningCode)
+thttpplwCode
+  = lens _thttpplwCode (\ s a -> s{_thttpplwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+thttpplwMessage :: Lens' TargetHTTPProxyListWarning (Maybe Text)
+thttpplwMessage
+  = lens _thttpplwMessage
+      (\ s a -> s{_thttpplwMessage = a})
+
+instance FromJSON TargetHTTPProxyListWarning where
+        parseJSON
+          = withObject "TargetHTTPProxyListWarning"
+              (\ o ->
+                 TargetHTTPProxyListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetHTTPProxyListWarning where
+        toJSON TargetHTTPProxyListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _thttpplwData,
+                  ("code" .=) <$> _thttpplwCode,
+                  ("message" .=) <$> _thttpplwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'diskAggregatedListWarning' smart constructor.
+data DiskAggregatedListWarning = DiskAggregatedListWarning'
+    { _dalwData    :: !(Maybe [DiskAggregatedListWarningDataItem])
+    , _dalwCode    :: !(Maybe DiskAggregatedListWarningCode)
+    , _dalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalwData'
+--
+-- * 'dalwCode'
+--
+-- * 'dalwMessage'
+diskAggregatedListWarning
+    :: DiskAggregatedListWarning
+diskAggregatedListWarning =
+    DiskAggregatedListWarning'
+    { _dalwData = Nothing
+    , _dalwCode = Nothing
+    , _dalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dalwData :: Lens' DiskAggregatedListWarning [DiskAggregatedListWarningDataItem]
+dalwData
+  = lens _dalwData (\ s a -> s{_dalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dalwCode :: Lens' DiskAggregatedListWarning (Maybe DiskAggregatedListWarningCode)
+dalwCode = lens _dalwCode (\ s a -> s{_dalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dalwMessage :: Lens' DiskAggregatedListWarning (Maybe Text)
+dalwMessage
+  = lens _dalwMessage (\ s a -> s{_dalwMessage = a})
+
+instance FromJSON DiskAggregatedListWarning where
+        parseJSON
+          = withObject "DiskAggregatedListWarning"
+              (\ o ->
+                 DiskAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskAggregatedListWarning where
+        toJSON DiskAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dalwData,
+                  ("code" .=) <$> _dalwCode,
+                  ("message" .=) <$> _dalwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetPoolAggregatedListWarning' smart constructor.
+data TargetPoolAggregatedListWarning = TargetPoolAggregatedListWarning'
+    { _tpalwData    :: !(Maybe [TargetPoolAggregatedListWarningDataItem])
+    , _tpalwCode    :: !(Maybe TargetPoolAggregatedListWarningCode)
+    , _tpalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpalwData'
+--
+-- * 'tpalwCode'
+--
+-- * 'tpalwMessage'
+targetPoolAggregatedListWarning
+    :: TargetPoolAggregatedListWarning
+targetPoolAggregatedListWarning =
+    TargetPoolAggregatedListWarning'
+    { _tpalwData = Nothing
+    , _tpalwCode = Nothing
+    , _tpalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tpalwData :: Lens' TargetPoolAggregatedListWarning [TargetPoolAggregatedListWarningDataItem]
+tpalwData
+  = lens _tpalwData (\ s a -> s{_tpalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tpalwCode :: Lens' TargetPoolAggregatedListWarning (Maybe TargetPoolAggregatedListWarningCode)
+tpalwCode
+  = lens _tpalwCode (\ s a -> s{_tpalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tpalwMessage :: Lens' TargetPoolAggregatedListWarning (Maybe Text)
+tpalwMessage
+  = lens _tpalwMessage (\ s a -> s{_tpalwMessage = a})
+
+instance FromJSON TargetPoolAggregatedListWarning
+         where
+        parseJSON
+          = withObject "TargetPoolAggregatedListWarning"
+              (\ o ->
+                 TargetPoolAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetPoolAggregatedListWarning where
+        toJSON TargetPoolAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tpalwData,
+                  ("code" .=) <$> _tpalwCode,
+                  ("message" .=) <$> _tpalwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'usableSubnetworksAggregatedListWarning' smart constructor.
+data UsableSubnetworksAggregatedListWarning = UsableSubnetworksAggregatedListWarning'
+    { _usalwData    :: !(Maybe [UsableSubnetworksAggregatedListWarningDataItem])
+    , _usalwCode    :: !(Maybe UsableSubnetworksAggregatedListWarningCode)
+    , _usalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsableSubnetworksAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'usalwData'
+--
+-- * 'usalwCode'
+--
+-- * 'usalwMessage'
+usableSubnetworksAggregatedListWarning
+    :: UsableSubnetworksAggregatedListWarning
+usableSubnetworksAggregatedListWarning =
+    UsableSubnetworksAggregatedListWarning'
+    { _usalwData = Nothing
+    , _usalwCode = Nothing
+    , _usalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+usalwData :: Lens' UsableSubnetworksAggregatedListWarning [UsableSubnetworksAggregatedListWarningDataItem]
+usalwData
+  = lens _usalwData (\ s a -> s{_usalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+usalwCode :: Lens' UsableSubnetworksAggregatedListWarning (Maybe UsableSubnetworksAggregatedListWarningCode)
+usalwCode
+  = lens _usalwCode (\ s a -> s{_usalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+usalwMessage :: Lens' UsableSubnetworksAggregatedListWarning (Maybe Text)
+usalwMessage
+  = lens _usalwMessage (\ s a -> s{_usalwMessage = a})
+
+instance FromJSON
+         UsableSubnetworksAggregatedListWarning where
+        parseJSON
+          = withObject "UsableSubnetworksAggregatedListWarning"
+              (\ o ->
+                 UsableSubnetworksAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         UsableSubnetworksAggregatedListWarning where
+        toJSON UsableSubnetworksAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _usalwData,
+                  ("code" .=) <$> _usalwCode,
+                  ("message" .=) <$> _usalwMessage])
+
+-- | [Output Only] Informational warning which replaces the list of disks
+-- when the list is empty.
+--
+-- /See:/ 'disksScopedListWarning' smart constructor.
+data DisksScopedListWarning = DisksScopedListWarning'
+    { _dslwData    :: !(Maybe [DisksScopedListWarningDataItem])
+    , _dslwCode    :: !(Maybe DisksScopedListWarningCode)
+    , _dslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslwData'
+--
+-- * 'dslwCode'
+--
+-- * 'dslwMessage'
+disksScopedListWarning
+    :: DisksScopedListWarning
+disksScopedListWarning =
+    DisksScopedListWarning'
+    { _dslwData = Nothing
+    , _dslwCode = Nothing
+    , _dslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]
+dslwData
+  = lens _dslwData (\ s a -> s{_dslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)
+dslwCode = lens _dslwCode (\ s a -> s{_dslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)
+dslwMessage
+  = lens _dslwMessage (\ s a -> s{_dslwMessage = a})
+
+instance FromJSON DisksScopedListWarning where
+        parseJSON
+          = withObject "DisksScopedListWarning"
+              (\ o ->
+                 DisksScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DisksScopedListWarning where
+        toJSON DisksScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dslwData,
+                  ("code" .=) <$> _dslwCode,
+                  ("message" .=) <$> _dslwMessage])
+
+--
+-- /See:/ 'nodeTemplatesScopedListWarningDataItem' smart constructor.
+data NodeTemplatesScopedListWarningDataItem = NodeTemplatesScopedListWarningDataItem'
+    { _ntslwdiValue :: !(Maybe Text)
+    , _ntslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntslwdiValue'
+--
+-- * 'ntslwdiKey'
+nodeTemplatesScopedListWarningDataItem
+    :: NodeTemplatesScopedListWarningDataItem
+nodeTemplatesScopedListWarningDataItem =
+    NodeTemplatesScopedListWarningDataItem'
+    { _ntslwdiValue = Nothing
+    , _ntslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ntslwdiValue :: Lens' NodeTemplatesScopedListWarningDataItem (Maybe Text)
+ntslwdiValue
+  = lens _ntslwdiValue (\ s a -> s{_ntslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ntslwdiKey :: Lens' NodeTemplatesScopedListWarningDataItem (Maybe Text)
+ntslwdiKey
+  = lens _ntslwdiKey (\ s a -> s{_ntslwdiKey = a})
+
+instance FromJSON
+         NodeTemplatesScopedListWarningDataItem where
+        parseJSON
+          = withObject "NodeTemplatesScopedListWarningDataItem"
+              (\ o ->
+                 NodeTemplatesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         NodeTemplatesScopedListWarningDataItem where
+        toJSON NodeTemplatesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ntslwdiValue,
+                  ("key" .=) <$> _ntslwdiKey])
+
+-- | A list of TargetVpnGateway resources.
+--
+-- /See:/ 'targetVPNGatewayAggregatedListItems' smart constructor.
+newtype TargetVPNGatewayAggregatedListItems = TargetVPNGatewayAggregatedListItems'
+    { _tvgaliAddtional :: HashMap Text TargetVPNGatewaysScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgaliAddtional'
+targetVPNGatewayAggregatedListItems
+    :: HashMap Text TargetVPNGatewaysScopedList -- ^ 'tvgaliAddtional'
+    -> TargetVPNGatewayAggregatedListItems
+targetVPNGatewayAggregatedListItems pTvgaliAddtional_ =
+    TargetVPNGatewayAggregatedListItems'
+    { _tvgaliAddtional = _Coerce # pTvgaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of target VPN
+-- gateways.
+tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)
+tvgaliAddtional
+  = lens _tvgaliAddtional
+      (\ s a -> s{_tvgaliAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetVPNGatewayAggregatedListItems
+         where
+        parseJSON
+          = withObject "TargetVPNGatewayAggregatedListItems"
+              (\ o ->
+                 TargetVPNGatewayAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetVPNGatewayAggregatedListItems
+         where
+        toJSON = toJSON . _tvgaliAddtional
+
+-- | Labels to apply to this disk. These can be later modified by the
+-- setLabels method.
+--
+-- /See:/ 'diskLabels' smart constructor.
+newtype DiskLabels = DiskLabels'
+    { _dlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlAddtional'
+diskLabels
+    :: HashMap Text Text -- ^ 'dlAddtional'
+    -> DiskLabels
+diskLabels pDlAddtional_ =
+    DiskLabels'
+    { _dlAddtional = _Coerce # pDlAddtional_
+    }
+
+dlAddtional :: Lens' DiskLabels (HashMap Text Text)
+dlAddtional
+  = lens _dlAddtional (\ s a -> s{_dlAddtional = a}) .
+      _Coerce
+
+instance FromJSON DiskLabels where
+        parseJSON
+          = withObject "DiskLabels"
+              (\ o -> DiskLabels' <$> (parseJSONObject o))
+
+instance ToJSON DiskLabels where
+        toJSON = toJSON . _dlAddtional
+
+--
+-- /See:/ 'instanceGroupManagerListWarningDataItem' smart constructor.
+data InstanceGroupManagerListWarningDataItem = InstanceGroupManagerListWarningDataItem'
+    { _igmlwdiValue :: !(Maybe Text)
+    , _igmlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlwdiValue'
+--
+-- * 'igmlwdiKey'
+instanceGroupManagerListWarningDataItem
+    :: InstanceGroupManagerListWarningDataItem
+instanceGroupManagerListWarningDataItem =
+    InstanceGroupManagerListWarningDataItem'
+    { _igmlwdiValue = Nothing
+    , _igmlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igmlwdiValue :: Lens' InstanceGroupManagerListWarningDataItem (Maybe Text)
+igmlwdiValue
+  = lens _igmlwdiValue (\ s a -> s{_igmlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igmlwdiKey :: Lens' InstanceGroupManagerListWarningDataItem (Maybe Text)
+igmlwdiKey
+  = lens _igmlwdiKey (\ s a -> s{_igmlwdiKey = a})
+
+instance FromJSON
+         InstanceGroupManagerListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupManagerListWarningDataItem"
+              (\ o ->
+                 InstanceGroupManagerListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupManagerListWarningDataItem where
+        toJSON InstanceGroupManagerListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igmlwdiValue,
+                  ("key" .=) <$> _igmlwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'forwardingRuleAggregatedListWarning' smart constructor.
+data ForwardingRuleAggregatedListWarning = ForwardingRuleAggregatedListWarning'
+    { _fralwData    :: !(Maybe [ForwardingRuleAggregatedListWarningDataItem])
+    , _fralwCode    :: !(Maybe ForwardingRuleAggregatedListWarningCode)
+    , _fralwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fralwData'
+--
+-- * 'fralwCode'
+--
+-- * 'fralwMessage'
+forwardingRuleAggregatedListWarning
+    :: ForwardingRuleAggregatedListWarning
+forwardingRuleAggregatedListWarning =
+    ForwardingRuleAggregatedListWarning'
+    { _fralwData = Nothing
+    , _fralwCode = Nothing
+    , _fralwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+fralwData :: Lens' ForwardingRuleAggregatedListWarning [ForwardingRuleAggregatedListWarningDataItem]
+fralwData
+  = lens _fralwData (\ s a -> s{_fralwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+fralwCode :: Lens' ForwardingRuleAggregatedListWarning (Maybe ForwardingRuleAggregatedListWarningCode)
+fralwCode
+  = lens _fralwCode (\ s a -> s{_fralwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+fralwMessage :: Lens' ForwardingRuleAggregatedListWarning (Maybe Text)
+fralwMessage
+  = lens _fralwMessage (\ s a -> s{_fralwMessage = a})
+
+instance FromJSON ForwardingRuleAggregatedListWarning
+         where
+        parseJSON
+          = withObject "ForwardingRuleAggregatedListWarning"
+              (\ o ->
+                 ForwardingRuleAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ForwardingRuleAggregatedListWarning
+         where
+        toJSON ForwardingRuleAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _fralwData,
+                  ("code" .=) <$> _fralwCode,
+                  ("message" .=) <$> _fralwMessage])
+
+--
+-- /See:/ 'sslPolicyWarningsItem' smart constructor.
+data SSLPolicyWarningsItem = SSLPolicyWarningsItem'
+    { _spwiData    :: !(Maybe [SSLPolicyWarningsItemDataItem])
+    , _spwiCode    :: !(Maybe SSLPolicyWarningsItemCode)
+    , _spwiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPolicyWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spwiData'
+--
+-- * 'spwiCode'
+--
+-- * 'spwiMessage'
+sslPolicyWarningsItem
+    :: SSLPolicyWarningsItem
+sslPolicyWarningsItem =
+    SSLPolicyWarningsItem'
+    { _spwiData = Nothing
+    , _spwiCode = Nothing
+    , _spwiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+spwiData :: Lens' SSLPolicyWarningsItem [SSLPolicyWarningsItemDataItem]
+spwiData
+  = lens _spwiData (\ s a -> s{_spwiData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+spwiCode :: Lens' SSLPolicyWarningsItem (Maybe SSLPolicyWarningsItemCode)
+spwiCode = lens _spwiCode (\ s a -> s{_spwiCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+spwiMessage :: Lens' SSLPolicyWarningsItem (Maybe Text)
+spwiMessage
+  = lens _spwiMessage (\ s a -> s{_spwiMessage = a})
+
+instance FromJSON SSLPolicyWarningsItem where
+        parseJSON
+          = withObject "SSLPolicyWarningsItem"
+              (\ o ->
+                 SSLPolicyWarningsItem' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SSLPolicyWarningsItem where
+        toJSON SSLPolicyWarningsItem'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _spwiData,
+                  ("code" .=) <$> _spwiCode,
+                  ("message" .=) <$> _spwiMessage])
+
+--
+-- /See:/ 'globalSetPolicyRequest' smart constructor.
+data GlobalSetPolicyRequest = GlobalSetPolicyRequest'
+    { _gsprEtag     :: !(Maybe Bytes)
+    , _gsprBindings :: !(Maybe [Binding])
+    , _gsprPolicy   :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalSetPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gsprEtag'
+--
+-- * 'gsprBindings'
+--
+-- * 'gsprPolicy'
+globalSetPolicyRequest
+    :: GlobalSetPolicyRequest
+globalSetPolicyRequest =
+    GlobalSetPolicyRequest'
+    { _gsprEtag = Nothing
+    , _gsprBindings = Nothing
+    , _gsprPolicy = Nothing
+    }
+
+-- | Flatten Policy to create a backward compatible wire-format. Deprecated.
+-- Use \'policy\' to specify the etag.
+gsprEtag :: Lens' GlobalSetPolicyRequest (Maybe ByteString)
+gsprEtag
+  = lens _gsprEtag (\ s a -> s{_gsprEtag = a}) .
+      mapping _Bytes
+
+-- | Flatten Policy to create a backward compatible wire-format. Deprecated.
+-- Use \'policy\' to specify bindings.
+gsprBindings :: Lens' GlobalSetPolicyRequest [Binding]
+gsprBindings
+  = lens _gsprBindings (\ s a -> s{_gsprBindings = a})
+      . _Default
+      . _Coerce
+
+-- | REQUIRED: The complete policy to be applied to the \'resource\'. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is in
+-- general a valid policy but certain services (like Projects) might reject
+-- them.
+gsprPolicy :: Lens' GlobalSetPolicyRequest (Maybe Policy)
+gsprPolicy
+  = lens _gsprPolicy (\ s a -> s{_gsprPolicy = a})
+
+instance FromJSON GlobalSetPolicyRequest where
+        parseJSON
+          = withObject "GlobalSetPolicyRequest"
+              (\ o ->
+                 GlobalSetPolicyRequest' <$>
+                   (o .:? "etag") <*> (o .:? "bindings" .!= mempty) <*>
+                     (o .:? "policy"))
+
+instance ToJSON GlobalSetPolicyRequest where
+        toJSON GlobalSetPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _gsprEtag,
+                  ("bindings" .=) <$> _gsprBindings,
+                  ("policy" .=) <$> _gsprPolicy])
+
+--
+-- /See:/ 'regionAutoscalerListWarningDataItem' smart constructor.
+data RegionAutoscalerListWarningDataItem = RegionAutoscalerListWarningDataItem'
+    { _ralwdiaValue :: !(Maybe Text)
+    , _ralwdiaKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionAutoscalerListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ralwdiaValue'
+--
+-- * 'ralwdiaKey'
+regionAutoscalerListWarningDataItem
+    :: RegionAutoscalerListWarningDataItem
+regionAutoscalerListWarningDataItem =
+    RegionAutoscalerListWarningDataItem'
+    { _ralwdiaValue = Nothing
+    , _ralwdiaKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ralwdiaValue :: Lens' RegionAutoscalerListWarningDataItem (Maybe Text)
+ralwdiaValue
+  = lens _ralwdiaValue (\ s a -> s{_ralwdiaValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ralwdiaKey :: Lens' RegionAutoscalerListWarningDataItem (Maybe Text)
+ralwdiaKey
+  = lens _ralwdiaKey (\ s a -> s{_ralwdiaKey = a})
+
+instance FromJSON RegionAutoscalerListWarningDataItem
+         where
+        parseJSON
+          = withObject "RegionAutoscalerListWarningDataItem"
+              (\ o ->
+                 RegionAutoscalerListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RegionAutoscalerListWarningDataItem
+         where
+        toJSON RegionAutoscalerListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ralwdiaValue,
+                  ("key" .=) <$> _ralwdiaKey])
+
+-- | A list of labels to apply for this resource. Each label key & value must
+-- comply with RFC1035. Specifically, the name must be 1-63 characters long
+-- and match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which
+-- means the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash. For example, \"webserver-frontend\":
+-- \"images\". A label value can also be empty (e.g. \"my-label\": \"\").
+--
+-- /See:/ 'globalSetLabelsRequestLabels' smart constructor.
+newtype GlobalSetLabelsRequestLabels = GlobalSetLabelsRequestLabels'
+    { _gslrlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalSetLabelsRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gslrlAddtional'
+globalSetLabelsRequestLabels
+    :: HashMap Text Text -- ^ 'gslrlAddtional'
+    -> GlobalSetLabelsRequestLabels
+globalSetLabelsRequestLabels pGslrlAddtional_ =
+    GlobalSetLabelsRequestLabels'
+    { _gslrlAddtional = _Coerce # pGslrlAddtional_
+    }
+
+gslrlAddtional :: Lens' GlobalSetLabelsRequestLabels (HashMap Text Text)
+gslrlAddtional
+  = lens _gslrlAddtional
+      (\ s a -> s{_gslrlAddtional = a})
+      . _Coerce
+
+instance FromJSON GlobalSetLabelsRequestLabels where
+        parseJSON
+          = withObject "GlobalSetLabelsRequestLabels"
+              (\ o ->
+                 GlobalSetLabelsRequestLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON GlobalSetLabelsRequestLabels where
+        toJSON = toJSON . _gslrlAddtional
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'targetPoolsScopedListWarning' smart constructor.
+data TargetPoolsScopedListWarning = TargetPoolsScopedListWarning'
+    { _tpslwData    :: !(Maybe [TargetPoolsScopedListWarningDataItem])
+    , _tpslwCode    :: !(Maybe TargetPoolsScopedListWarningCode)
+    , _tpslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslwData'
+--
+-- * 'tpslwCode'
+--
+-- * 'tpslwMessage'
+targetPoolsScopedListWarning
+    :: TargetPoolsScopedListWarning
+targetPoolsScopedListWarning =
+    TargetPoolsScopedListWarning'
+    { _tpslwData = Nothing
+    , _tpslwCode = Nothing
+    , _tpslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]
+tpslwData
+  = lens _tpslwData (\ s a -> s{_tpslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)
+tpslwCode
+  = lens _tpslwCode (\ s a -> s{_tpslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)
+tpslwMessage
+  = lens _tpslwMessage (\ s a -> s{_tpslwMessage = a})
+
+instance FromJSON TargetPoolsScopedListWarning where
+        parseJSON
+          = withObject "TargetPoolsScopedListWarning"
+              (\ o ->
+                 TargetPoolsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetPoolsScopedListWarning where
+        toJSON TargetPoolsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tpslwData,
+                  ("code" .=) <$> _tpslwCode,
+                  ("message" .=) <$> _tpslwMessage])
+
+--
+-- /See:/ 'healthStatus' smart constructor.
+data HealthStatus = HealthStatus'
+    { _hsIPAddress   :: !(Maybe Text)
+    , _hsHealthState :: !(Maybe HealthStatusHealthState)
+    , _hsPort        :: !(Maybe (Textual Int32))
+    , _hsInstance    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hsIPAddress'
+--
+-- * 'hsHealthState'
+--
+-- * 'hsPort'
+--
+-- * 'hsInstance'
+healthStatus
+    :: HealthStatus
+healthStatus =
+    HealthStatus'
+    { _hsIPAddress = Nothing
+    , _hsHealthState = Nothing
+    , _hsPort = Nothing
+    , _hsInstance = Nothing
+    }
+
+-- | The IP address represented by this resource.
+hsIPAddress :: Lens' HealthStatus (Maybe Text)
+hsIPAddress
+  = lens _hsIPAddress (\ s a -> s{_hsIPAddress = a})
+
+-- | Health state of the instance.
+hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)
+hsHealthState
+  = lens _hsHealthState
+      (\ s a -> s{_hsHealthState = a})
+
+-- | The port on the instance.
+hsPort :: Lens' HealthStatus (Maybe Int32)
+hsPort
+  = lens _hsPort (\ s a -> s{_hsPort = a}) .
+      mapping _Coerce
+
+-- | URL of the instance resource.
+hsInstance :: Lens' HealthStatus (Maybe Text)
+hsInstance
+  = lens _hsInstance (\ s a -> s{_hsInstance = a})
+
+instance FromJSON HealthStatus where
+        parseJSON
+          = withObject "HealthStatus"
+              (\ o ->
+                 HealthStatus' <$>
+                   (o .:? "ipAddress") <*> (o .:? "healthState") <*>
+                     (o .:? "port")
+                     <*> (o .:? "instance"))
+
+instance ToJSON HealthStatus where
+        toJSON HealthStatus'{..}
+          = object
+              (catMaybes
+                 [("ipAddress" .=) <$> _hsIPAddress,
+                  ("healthState" .=) <$> _hsHealthState,
+                  ("port" .=) <$> _hsPort,
+                  ("instance" .=) <$> _hsInstance])
+
+-- | Contains a list of TargetTcpProxy resources.
+--
+-- /See:/ 'targetTCPProxyList' smart constructor.
+data TargetTCPProxyList = TargetTCPProxyList'
+    { _ttplNextPageToken :: !(Maybe Text)
+    , _ttplKind          :: !Text
+    , _ttplItems         :: !(Maybe [TargetTCPProxy])
+    , _ttplSelfLink      :: !(Maybe Text)
+    , _ttplWarning       :: !(Maybe TargetTCPProxyListWarning)
+    , _ttplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttplNextPageToken'
+--
+-- * 'ttplKind'
+--
+-- * 'ttplItems'
+--
+-- * 'ttplSelfLink'
+--
+-- * 'ttplWarning'
+--
+-- * 'ttplId'
+targetTCPProxyList
+    :: TargetTCPProxyList
+targetTCPProxyList =
+    TargetTCPProxyList'
+    { _ttplNextPageToken = Nothing
+    , _ttplKind = "compute#targetTcpProxyList"
+    , _ttplItems = Nothing
+    , _ttplSelfLink = Nothing
+    , _ttplWarning = Nothing
+    , _ttplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ttplNextPageToken :: Lens' TargetTCPProxyList (Maybe Text)
+ttplNextPageToken
+  = lens _ttplNextPageToken
+      (\ s a -> s{_ttplNextPageToken = a})
+
+-- | Type of resource.
+ttplKind :: Lens' TargetTCPProxyList Text
+ttplKind = lens _ttplKind (\ s a -> s{_ttplKind = a})
+
+-- | A list of TargetTcpProxy resources.
+ttplItems :: Lens' TargetTCPProxyList [TargetTCPProxy]
+ttplItems
+  = lens _ttplItems (\ s a -> s{_ttplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ttplSelfLink :: Lens' TargetTCPProxyList (Maybe Text)
+ttplSelfLink
+  = lens _ttplSelfLink (\ s a -> s{_ttplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ttplWarning :: Lens' TargetTCPProxyList (Maybe TargetTCPProxyListWarning)
+ttplWarning
+  = lens _ttplWarning (\ s a -> s{_ttplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ttplId :: Lens' TargetTCPProxyList (Maybe Text)
+ttplId = lens _ttplId (\ s a -> s{_ttplId = a})
+
+instance FromJSON TargetTCPProxyList where
+        parseJSON
+          = withObject "TargetTCPProxyList"
+              (\ o ->
+                 TargetTCPProxyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetTcpProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetTCPProxyList where
+        toJSON TargetTCPProxyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ttplNextPageToken,
+                  Just ("kind" .= _ttplKind),
+                  ("items" .=) <$> _ttplItems,
+                  ("selfLink" .=) <$> _ttplSelfLink,
+                  ("warning" .=) <$> _ttplWarning,
+                  ("id" .=) <$> _ttplId])
+
+-- | Region resource. (== resource_for beta.regions ==) (== resource_for
+-- v1.regions ==)
+--
+-- /See:/ 'region' smart constructor.
+data Region = Region'
+    { _regeStatus            :: !(Maybe RegionStatus)
+    , _regeZones             :: !(Maybe [Text])
+    , _regeKind              :: !Text
+    , _regeSelfLink          :: !(Maybe Text)
+    , _regeName              :: !(Maybe Text)
+    , _regeCreationTimestamp :: !(Maybe Text)
+    , _regeQuotas            :: !(Maybe [Quota])
+    , _regeId                :: !(Maybe (Textual Word64))
+    , _regeDescription       :: !(Maybe Text)
+    , _regeDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Region' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'regeStatus'
+--
+-- * 'regeZones'
+--
+-- * 'regeKind'
+--
+-- * 'regeSelfLink'
+--
+-- * 'regeName'
+--
+-- * 'regeCreationTimestamp'
+--
+-- * 'regeQuotas'
+--
+-- * 'regeId'
+--
+-- * 'regeDescription'
+--
+-- * 'regeDeprecated'
+region
+    :: Region
+region =
+    Region'
+    { _regeStatus = Nothing
+    , _regeZones = Nothing
+    , _regeKind = "compute#region"
+    , _regeSelfLink = Nothing
+    , _regeName = Nothing
+    , _regeCreationTimestamp = Nothing
+    , _regeQuotas = Nothing
+    , _regeId = Nothing
+    , _regeDescription = Nothing
+    , _regeDeprecated = Nothing
+    }
+
+-- | [Output Only] Status of the region, either UP or DOWN.
+regeStatus :: Lens' Region (Maybe RegionStatus)
+regeStatus
+  = lens _regeStatus (\ s a -> s{_regeStatus = a})
+
+-- | [Output Only] A list of zones available in this region, in the form of
+-- resource URLs.
+regeZones :: Lens' Region [Text]
+regeZones
+  = lens _regeZones (\ s a -> s{_regeZones = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#region for regions.
+regeKind :: Lens' Region Text
+regeKind = lens _regeKind (\ s a -> s{_regeKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+regeSelfLink :: Lens' Region (Maybe Text)
+regeSelfLink
+  = lens _regeSelfLink (\ s a -> s{_regeSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+regeName :: Lens' Region (Maybe Text)
+regeName = lens _regeName (\ s a -> s{_regeName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+regeCreationTimestamp :: Lens' Region (Maybe Text)
+regeCreationTimestamp
+  = lens _regeCreationTimestamp
+      (\ s a -> s{_regeCreationTimestamp = a})
+
+-- | [Output Only] Quotas assigned to this region.
+regeQuotas :: Lens' Region [Quota]
+regeQuotas
+  = lens _regeQuotas (\ s a -> s{_regeQuotas = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+regeId :: Lens' Region (Maybe Word64)
+regeId
+  = lens _regeId (\ s a -> s{_regeId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Textual description of the resource.
+regeDescription :: Lens' Region (Maybe Text)
+regeDescription
+  = lens _regeDescription
+      (\ s a -> s{_regeDescription = a})
+
+-- | [Output Only] The deprecation status associated with this region.
+regeDeprecated :: Lens' Region (Maybe DeprecationStatus)
+regeDeprecated
+  = lens _regeDeprecated
+      (\ s a -> s{_regeDeprecated = a})
+
+instance FromJSON Region where
+        parseJSON
+          = withObject "Region"
+              (\ o ->
+                 Region' <$>
+                   (o .:? "status") <*> (o .:? "zones" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#region")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "quotas" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON Region where
+        toJSON Region'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _regeStatus,
+                  ("zones" .=) <$> _regeZones,
+                  Just ("kind" .= _regeKind),
+                  ("selfLink" .=) <$> _regeSelfLink,
+                  ("name" .=) <$> _regeName,
+                  ("creationTimestamp" .=) <$> _regeCreationTimestamp,
+                  ("quotas" .=) <$> _regeQuotas, ("id" .=) <$> _regeId,
+                  ("description" .=) <$> _regeDescription,
+                  ("deprecated" .=) <$> _regeDeprecated])
+
+--
+-- /See:/ 'operationListWarningDataItem' smart constructor.
+data OperationListWarningDataItem = OperationListWarningDataItem'
+    { _olwdiValue :: !(Maybe Text)
+    , _olwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'olwdiValue'
+--
+-- * 'olwdiKey'
+operationListWarningDataItem
+    :: OperationListWarningDataItem
+operationListWarningDataItem =
+    OperationListWarningDataItem'
+    { _olwdiValue = Nothing
+    , _olwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+olwdiValue :: Lens' OperationListWarningDataItem (Maybe Text)
+olwdiValue
+  = lens _olwdiValue (\ s a -> s{_olwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+olwdiKey :: Lens' OperationListWarningDataItem (Maybe Text)
+olwdiKey = lens _olwdiKey (\ s a -> s{_olwdiKey = a})
+
+instance FromJSON OperationListWarningDataItem where
+        parseJSON
+          = withObject "OperationListWarningDataItem"
+              (\ o ->
+                 OperationListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationListWarningDataItem where
+        toJSON OperationListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _olwdiValue,
+                  ("key" .=) <$> _olwdiKey])
+
+-- | Guest OS features.
+--
+-- /See:/ 'guestOSFeature' smart constructor.
+newtype GuestOSFeature = GuestOSFeature'
+    { _gofType :: Maybe GuestOSFeatureType
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GuestOSFeature' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gofType'
+guestOSFeature
+    :: GuestOSFeature
+guestOSFeature =
+    GuestOSFeature'
+    { _gofType = Nothing
+    }
+
+-- | The ID of a supported feature. Read Enabling guest operating system
+-- features to see a list of available options.
+gofType :: Lens' GuestOSFeature (Maybe GuestOSFeatureType)
+gofType = lens _gofType (\ s a -> s{_gofType = a})
+
+instance FromJSON GuestOSFeature where
+        parseJSON
+          = withObject "GuestOSFeature"
+              (\ o -> GuestOSFeature' <$> (o .:? "type"))
+
+instance ToJSON GuestOSFeature where
+        toJSON GuestOSFeature'{..}
+          = object (catMaybes [("type" .=) <$> _gofType])
+
+-- | VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (==
+-- resource_for v1.vpnTunnels ==)
+--
+-- /See:/ 'vpnTunnel' smart constructor.
+data VPNTunnel = VPNTunnel'
+    { _vtDetailedStatus        :: !(Maybe Text)
+    , _vtStatus                :: !(Maybe VPNTunnelStatus)
+    , _vtLocalTrafficSelector  :: !(Maybe [Text])
+    , _vtKind                  :: !Text
+    , _vtPeerIP                :: !(Maybe Text)
+    , _vtRouter                :: !(Maybe Text)
+    , _vtTargetVPNGateway      :: !(Maybe Text)
+    , _vtRemoteTrafficSelector :: !(Maybe [Text])
+    , _vtSelfLink              :: !(Maybe Text)
+    , _vtSharedSecret          :: !(Maybe Text)
+    , _vtName                  :: !(Maybe Text)
+    , _vtCreationTimestamp     :: !(Maybe Text)
+    , _vtSharedSecretHash      :: !(Maybe Text)
+    , _vtId                    :: !(Maybe (Textual Word64))
+    , _vtIkeVersion            :: !(Maybe (Textual Int32))
+    , _vtRegion                :: !(Maybe Text)
+    , _vtDescription           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtDetailedStatus'
+--
+-- * 'vtStatus'
+--
+-- * 'vtLocalTrafficSelector'
+--
+-- * 'vtKind'
+--
+-- * 'vtPeerIP'
+--
+-- * 'vtRouter'
+--
+-- * 'vtTargetVPNGateway'
+--
+-- * 'vtRemoteTrafficSelector'
+--
+-- * 'vtSelfLink'
+--
+-- * 'vtSharedSecret'
+--
+-- * 'vtName'
+--
+-- * 'vtCreationTimestamp'
+--
+-- * 'vtSharedSecretHash'
+--
+-- * 'vtId'
+--
+-- * 'vtIkeVersion'
+--
+-- * 'vtRegion'
+--
+-- * 'vtDescription'
+vpnTunnel
+    :: VPNTunnel
+vpnTunnel =
+    VPNTunnel'
+    { _vtDetailedStatus = Nothing
+    , _vtStatus = Nothing
+    , _vtLocalTrafficSelector = Nothing
+    , _vtKind = "compute#vpnTunnel"
+    , _vtPeerIP = Nothing
+    , _vtRouter = Nothing
+    , _vtTargetVPNGateway = Nothing
+    , _vtRemoteTrafficSelector = Nothing
+    , _vtSelfLink = Nothing
+    , _vtSharedSecret = Nothing
+    , _vtName = Nothing
+    , _vtCreationTimestamp = Nothing
+    , _vtSharedSecretHash = Nothing
+    , _vtId = Nothing
+    , _vtIkeVersion = Nothing
+    , _vtRegion = Nothing
+    , _vtDescription = Nothing
+    }
+
+-- | [Output Only] Detailed status message for the VPN tunnel.
+vtDetailedStatus :: Lens' VPNTunnel (Maybe Text)
+vtDetailedStatus
+  = lens _vtDetailedStatus
+      (\ s a -> s{_vtDetailedStatus = a})
+
+-- | [Output Only] The status of the VPN tunnel.
+vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)
+vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a})
+
+-- | Local traffic selector to use when establishing the VPN tunnel with peer
+-- VPN gateway. The value should be a CIDR formatted string, for example:
+-- 192.168.0.0\/16. The ranges should be disjoint. Only IPv4 is supported.
+vtLocalTrafficSelector :: Lens' VPNTunnel [Text]
+vtLocalTrafficSelector
+  = lens _vtLocalTrafficSelector
+      (\ s a -> s{_vtLocalTrafficSelector = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtKind :: Lens' VPNTunnel Text
+vtKind = lens _vtKind (\ s a -> s{_vtKind = a})
+
+-- | IP address of the peer VPN gateway. Only IPv4 is supported.
+vtPeerIP :: Lens' VPNTunnel (Maybe Text)
+vtPeerIP = lens _vtPeerIP (\ s a -> s{_vtPeerIP = a})
+
+-- | URL of router resource to be used for dynamic routing.
+vtRouter :: Lens' VPNTunnel (Maybe Text)
+vtRouter = lens _vtRouter (\ s a -> s{_vtRouter = a})
+
+-- | URL of the Target VPN gateway with which this VPN tunnel is associated.
+-- Provided by the client when the VPN tunnel is created.
+vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)
+vtTargetVPNGateway
+  = lens _vtTargetVPNGateway
+      (\ s a -> s{_vtTargetVPNGateway = a})
+
+-- | Remote traffic selectors to use when establishing the VPN tunnel with
+-- peer VPN gateway. The value should be a CIDR formatted string, for
+-- example: 192.168.0.0\/16. The ranges should be disjoint. Only IPv4 is
+-- supported.
+vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]
+vtRemoteTrafficSelector
+  = lens _vtRemoteTrafficSelector
+      (\ s a -> s{_vtRemoteTrafficSelector = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+vtSelfLink :: Lens' VPNTunnel (Maybe Text)
+vtSelfLink
+  = lens _vtSelfLink (\ s a -> s{_vtSelfLink = a})
+
+-- | Shared secret used to set the secure session between the Cloud VPN
+-- gateway and the peer VPN gateway.
+vtSharedSecret :: Lens' VPNTunnel (Maybe Text)
+vtSharedSecret
+  = lens _vtSharedSecret
+      (\ s a -> s{_vtSharedSecret = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+vtName :: Lens' VPNTunnel (Maybe Text)
+vtName = lens _vtName (\ s a -> s{_vtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)
+vtCreationTimestamp
+  = lens _vtCreationTimestamp
+      (\ s a -> s{_vtCreationTimestamp = a})
+
+-- | Hash of the shared secret.
+vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)
+vtSharedSecretHash
+  = lens _vtSharedSecretHash
+      (\ s a -> s{_vtSharedSecretHash = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+vtId :: Lens' VPNTunnel (Maybe Word64)
+vtId
+  = lens _vtId (\ s a -> s{_vtId = a}) .
+      mapping _Coerce
+
+-- | IKE protocol version to use when establishing the VPN tunnel with peer
+-- VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.
+vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)
+vtIkeVersion
+  = lens _vtIkeVersion (\ s a -> s{_vtIkeVersion = a})
+      . mapping _Coerce
+
+-- | [Output Only] URL of the region where the VPN tunnel resides. You must
+-- specify this field as part of the HTTP request URL. It is not settable
+-- as a field in the request body.
+vtRegion :: Lens' VPNTunnel (Maybe Text)
+vtRegion = lens _vtRegion (\ s a -> s{_vtRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+vtDescription :: Lens' VPNTunnel (Maybe Text)
+vtDescription
+  = lens _vtDescription
+      (\ s a -> s{_vtDescription = a})
+
+instance FromJSON VPNTunnel where
+        parseJSON
+          = withObject "VPNTunnel"
+              (\ o ->
+                 VPNTunnel' <$>
+                   (o .:? "detailedStatus") <*> (o .:? "status") <*>
+                     (o .:? "localTrafficSelector" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#vpnTunnel")
+                     <*> (o .:? "peerIp")
+                     <*> (o .:? "router")
+                     <*> (o .:? "targetVpnGateway")
+                     <*> (o .:? "remoteTrafficSelector" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "sharedSecret")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "sharedSecretHash")
+                     <*> (o .:? "id")
+                     <*> (o .:? "ikeVersion")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description"))
+
+instance ToJSON VPNTunnel where
+        toJSON VPNTunnel'{..}
+          = object
+              (catMaybes
+                 [("detailedStatus" .=) <$> _vtDetailedStatus,
+                  ("status" .=) <$> _vtStatus,
+                  ("localTrafficSelector" .=) <$>
+                    _vtLocalTrafficSelector,
+                  Just ("kind" .= _vtKind),
+                  ("peerIp" .=) <$> _vtPeerIP,
+                  ("router" .=) <$> _vtRouter,
+                  ("targetVpnGateway" .=) <$> _vtTargetVPNGateway,
+                  ("remoteTrafficSelector" .=) <$>
+                    _vtRemoteTrafficSelector,
+                  ("selfLink" .=) <$> _vtSelfLink,
+                  ("sharedSecret" .=) <$> _vtSharedSecret,
+                  ("name" .=) <$> _vtName,
+                  ("creationTimestamp" .=) <$> _vtCreationTimestamp,
+                  ("sharedSecretHash" .=) <$> _vtSharedSecretHash,
+                  ("id" .=) <$> _vtId,
+                  ("ikeVersion" .=) <$> _vtIkeVersion,
+                  ("region" .=) <$> _vtRegion,
+                  ("description" .=) <$> _vtDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceGroupManagerAggregatedListWarning' smart constructor.
+data InstanceGroupManagerAggregatedListWarning = InstanceGroupManagerAggregatedListWarning'
+    { _igmalwData    :: !(Maybe [InstanceGroupManagerAggregatedListWarningDataItem])
+    , _igmalwCode    :: !(Maybe InstanceGroupManagerAggregatedListWarningCode)
+    , _igmalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmalwData'
+--
+-- * 'igmalwCode'
+--
+-- * 'igmalwMessage'
+instanceGroupManagerAggregatedListWarning
+    :: InstanceGroupManagerAggregatedListWarning
+instanceGroupManagerAggregatedListWarning =
+    InstanceGroupManagerAggregatedListWarning'
+    { _igmalwData = Nothing
+    , _igmalwCode = Nothing
+    , _igmalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igmalwData :: Lens' InstanceGroupManagerAggregatedListWarning [InstanceGroupManagerAggregatedListWarningDataItem]
+igmalwData
+  = lens _igmalwData (\ s a -> s{_igmalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igmalwCode :: Lens' InstanceGroupManagerAggregatedListWarning (Maybe InstanceGroupManagerAggregatedListWarningCode)
+igmalwCode
+  = lens _igmalwCode (\ s a -> s{_igmalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igmalwMessage :: Lens' InstanceGroupManagerAggregatedListWarning (Maybe Text)
+igmalwMessage
+  = lens _igmalwMessage
+      (\ s a -> s{_igmalwMessage = a})
+
+instance FromJSON
+         InstanceGroupManagerAggregatedListWarning where
+        parseJSON
+          = withObject
+              "InstanceGroupManagerAggregatedListWarning"
+              (\ o ->
+                 InstanceGroupManagerAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         InstanceGroupManagerAggregatedListWarning where
+        toJSON InstanceGroupManagerAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igmalwData,
+                  ("code" .=) <$> _igmalwCode,
+                  ("message" .=) <$> _igmalwMessage])
+
+--
+-- /See:/ 'diskListWarningDataItem' smart constructor.
+data DiskListWarningDataItem = DiskListWarningDataItem'
+    { _dlwdiValue :: !(Maybe Text)
+    , _dlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlwdiValue'
+--
+-- * 'dlwdiKey'
+diskListWarningDataItem
+    :: DiskListWarningDataItem
+diskListWarningDataItem =
+    DiskListWarningDataItem'
+    { _dlwdiValue = Nothing
+    , _dlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dlwdiValue :: Lens' DiskListWarningDataItem (Maybe Text)
+dlwdiValue
+  = lens _dlwdiValue (\ s a -> s{_dlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+dlwdiKey :: Lens' DiskListWarningDataItem (Maybe Text)
+dlwdiKey = lens _dlwdiKey (\ s a -> s{_dlwdiKey = a})
+
+instance FromJSON DiskListWarningDataItem where
+        parseJSON
+          = withObject "DiskListWarningDataItem"
+              (\ o ->
+                 DiskListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskListWarningDataItem where
+        toJSON DiskListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dlwdiValue,
+                  ("key" .=) <$> _dlwdiKey])
+
+-- | A specification of the parameters to use when creating the instance
+-- template from a source instance.
+--
+-- /See:/ 'sourceInstanceParams' smart constructor.
+newtype SourceInstanceParams = SourceInstanceParams'
+    { _sipDiskConfigs :: Maybe [DiskInstantiationConfig]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SourceInstanceParams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sipDiskConfigs'
+sourceInstanceParams
+    :: SourceInstanceParams
+sourceInstanceParams =
+    SourceInstanceParams'
+    { _sipDiskConfigs = Nothing
+    }
+
+-- | Attached disks configuration. If not provided, defaults are applied: For
+-- boot disk and any other R\/W disks, new custom images will be created
+-- from each disk. For read-only disks, they will be attached in read-only
+-- mode. Local SSD disks will be created as blank volumes.
+sipDiskConfigs :: Lens' SourceInstanceParams [DiskInstantiationConfig]
+sipDiskConfigs
+  = lens _sipDiskConfigs
+      (\ s a -> s{_sipDiskConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON SourceInstanceParams where
+        parseJSON
+          = withObject "SourceInstanceParams"
+              (\ o ->
+                 SourceInstanceParams' <$>
+                   (o .:? "diskConfigs" .!= mempty))
+
+instance ToJSON SourceInstanceParams where
+        toJSON SourceInstanceParams'{..}
+          = object
+              (catMaybes [("diskConfigs" .=) <$> _sipDiskConfigs])
+
+-- | An alias IP range attached to an instance\'s network interface.
+--
+-- /See:/ 'aliasIPRange' smart constructor.
+data AliasIPRange = AliasIPRange'
+    { _airIPCIdRRange         :: !(Maybe Text)
+    , _airSubnetworkRangeName :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AliasIPRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'airIPCIdRRange'
+--
+-- * 'airSubnetworkRangeName'
+aliasIPRange
+    :: AliasIPRange
+aliasIPRange =
+    AliasIPRange'
+    { _airIPCIdRRange = Nothing
+    , _airSubnetworkRangeName = Nothing
+    }
+
+-- | The IP CIDR range represented by this alias IP range. This IP CIDR range
+-- must belong to the specified subnetwork and cannot contain IP addresses
+-- reserved by system or used by other network interfaces. This range may
+-- be a single IP address (e.g. 10.2.3.4), a netmask (e.g. \/24) or a CIDR
+-- format string (e.g. 10.1.2.0\/24).
+airIPCIdRRange :: Lens' AliasIPRange (Maybe Text)
+airIPCIdRRange
+  = lens _airIPCIdRRange
+      (\ s a -> s{_airIPCIdRRange = a})
+
+-- | Optional subnetwork secondary range name specifying the secondary range
+-- from which to allocate the IP CIDR range for this alias IP range. If
+-- left unspecified, the primary range of the subnetwork will be used.
+airSubnetworkRangeName :: Lens' AliasIPRange (Maybe Text)
+airSubnetworkRangeName
+  = lens _airSubnetworkRangeName
+      (\ s a -> s{_airSubnetworkRangeName = a})
+
+instance FromJSON AliasIPRange where
+        parseJSON
+          = withObject "AliasIPRange"
+              (\ o ->
+                 AliasIPRange' <$>
+                   (o .:? "ipCidrRange") <*>
+                     (o .:? "subnetworkRangeName"))
+
+instance ToJSON AliasIPRange where
+        toJSON AliasIPRange'{..}
+          = object
+              (catMaybes
+                 [("ipCidrRange" .=) <$> _airIPCIdRRange,
+                  ("subnetworkRangeName" .=) <$>
+                    _airSubnetworkRangeName])
+
+--
+-- /See:/ 'nodeTypesScopedListWarningDataItem' smart constructor.
+data NodeTypesScopedListWarningDataItem = NodeTypesScopedListWarningDataItem'
+    { _ntslwditValue :: !(Maybe Text)
+    , _ntslwditKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntslwditValue'
+--
+-- * 'ntslwditKey'
+nodeTypesScopedListWarningDataItem
+    :: NodeTypesScopedListWarningDataItem
+nodeTypesScopedListWarningDataItem =
+    NodeTypesScopedListWarningDataItem'
+    { _ntslwditValue = Nothing
+    , _ntslwditKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ntslwditValue :: Lens' NodeTypesScopedListWarningDataItem (Maybe Text)
+ntslwditValue
+  = lens _ntslwditValue
+      (\ s a -> s{_ntslwditValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ntslwditKey :: Lens' NodeTypesScopedListWarningDataItem (Maybe Text)
+ntslwditKey
+  = lens _ntslwditKey (\ s a -> s{_ntslwditKey = a})
+
+instance FromJSON NodeTypesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "NodeTypesScopedListWarningDataItem"
+              (\ o ->
+                 NodeTypesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NodeTypesScopedListWarningDataItem
+         where
+        toJSON NodeTypesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ntslwditValue,
+                  ("key" .=) <$> _ntslwditKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'targetInstanceListWarning' smart constructor.
+data TargetInstanceListWarning = TargetInstanceListWarning'
+    { _tilwData    :: !(Maybe [TargetInstanceListWarningDataItem])
+    , _tilwCode    :: !(Maybe TargetInstanceListWarningCode)
+    , _tilwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tilwData'
+--
+-- * 'tilwCode'
+--
+-- * 'tilwMessage'
+targetInstanceListWarning
+    :: TargetInstanceListWarning
+targetInstanceListWarning =
+    TargetInstanceListWarning'
+    { _tilwData = Nothing
+    , _tilwCode = Nothing
+    , _tilwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+tilwData :: Lens' TargetInstanceListWarning [TargetInstanceListWarningDataItem]
+tilwData
+  = lens _tilwData (\ s a -> s{_tilwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+tilwCode :: Lens' TargetInstanceListWarning (Maybe TargetInstanceListWarningCode)
+tilwCode = lens _tilwCode (\ s a -> s{_tilwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+tilwMessage :: Lens' TargetInstanceListWarning (Maybe Text)
+tilwMessage
+  = lens _tilwMessage (\ s a -> s{_tilwMessage = a})
+
+instance FromJSON TargetInstanceListWarning where
+        parseJSON
+          = withObject "TargetInstanceListWarning"
+              (\ o ->
+                 TargetInstanceListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetInstanceListWarning where
+        toJSON TargetInstanceListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tilwData,
+                  ("code" .=) <$> _tilwCode,
+                  ("message" .=) <$> _tilwMessage])
+
+-- | A Node Type resource.
+--
+-- /See:/ 'nodeType' smart constructor.
+data NodeType = NodeType'
+    { _ntKind              :: !Text
+    , _ntZone              :: !(Maybe Text)
+    , _ntCPUPlatform       :: !(Maybe Text)
+    , _ntLocalSsdGb        :: !(Maybe (Textual Int32))
+    , _ntSelfLink          :: !(Maybe Text)
+    , _ntName              :: !(Maybe Text)
+    , _ntCreationTimestamp :: !(Maybe Text)
+    , _ntId                :: !(Maybe (Textual Word64))
+    , _ntGuestCPUs         :: !(Maybe (Textual Int32))
+    , _ntMemoryMb          :: !(Maybe (Textual Int32))
+    , _ntDescription       :: !(Maybe Text)
+    , _ntDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntKind'
+--
+-- * 'ntZone'
+--
+-- * 'ntCPUPlatform'
+--
+-- * 'ntLocalSsdGb'
+--
+-- * 'ntSelfLink'
+--
+-- * 'ntName'
+--
+-- * 'ntCreationTimestamp'
+--
+-- * 'ntId'
+--
+-- * 'ntGuestCPUs'
+--
+-- * 'ntMemoryMb'
+--
+-- * 'ntDescription'
+--
+-- * 'ntDeprecated'
+nodeType
+    :: NodeType
+nodeType =
+    NodeType'
+    { _ntKind = "compute#nodeType"
+    , _ntZone = Nothing
+    , _ntCPUPlatform = Nothing
+    , _ntLocalSsdGb = Nothing
+    , _ntSelfLink = Nothing
+    , _ntName = Nothing
+    , _ntCreationTimestamp = Nothing
+    , _ntId = Nothing
+    , _ntGuestCPUs = Nothing
+    , _ntMemoryMb = Nothing
+    , _ntDescription = Nothing
+    , _ntDeprecated = Nothing
+    }
+
+-- | [Output Only] The type of the resource. Always compute#nodeType for node
+-- types.
+ntKind :: Lens' NodeType Text
+ntKind = lens _ntKind (\ s a -> s{_ntKind = a})
+
+-- | [Output Only] The name of the zone where the node type resides, such as
+-- us-central1-a.
+ntZone :: Lens' NodeType (Maybe Text)
+ntZone = lens _ntZone (\ s a -> s{_ntZone = a})
+
+-- | [Output Only] The CPU platform used by this node type.
+ntCPUPlatform :: Lens' NodeType (Maybe Text)
+ntCPUPlatform
+  = lens _ntCPUPlatform
+      (\ s a -> s{_ntCPUPlatform = a})
+
+-- | [Output Only] Local SSD available to the node type, defined in GB.
+ntLocalSsdGb :: Lens' NodeType (Maybe Int32)
+ntLocalSsdGb
+  = lens _ntLocalSsdGb (\ s a -> s{_ntLocalSsdGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+ntSelfLink :: Lens' NodeType (Maybe Text)
+ntSelfLink
+  = lens _ntSelfLink (\ s a -> s{_ntSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+ntName :: Lens' NodeType (Maybe Text)
+ntName = lens _ntName (\ s a -> s{_ntName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+ntCreationTimestamp :: Lens' NodeType (Maybe Text)
+ntCreationTimestamp
+  = lens _ntCreationTimestamp
+      (\ s a -> s{_ntCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+ntId :: Lens' NodeType (Maybe Word64)
+ntId
+  = lens _ntId (\ s a -> s{_ntId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The number of virtual CPUs that are available to the node
+-- type.
+ntGuestCPUs :: Lens' NodeType (Maybe Int32)
+ntGuestCPUs
+  = lens _ntGuestCPUs (\ s a -> s{_ntGuestCPUs = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The amount of physical memory available to the node type,
+-- defined in MB.
+ntMemoryMb :: Lens' NodeType (Maybe Int32)
+ntMemoryMb
+  = lens _ntMemoryMb (\ s a -> s{_ntMemoryMb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] An optional textual description of the resource.
+ntDescription :: Lens' NodeType (Maybe Text)
+ntDescription
+  = lens _ntDescription
+      (\ s a -> s{_ntDescription = a})
+
+-- | [Output Only] The deprecation status associated with this node type.
+ntDeprecated :: Lens' NodeType (Maybe DeprecationStatus)
+ntDeprecated
+  = lens _ntDeprecated (\ s a -> s{_ntDeprecated = a})
+
+instance FromJSON NodeType where
+        parseJSON
+          = withObject "NodeType"
+              (\ o ->
+                 NodeType' <$>
+                   (o .:? "kind" .!= "compute#nodeType") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "cpuPlatform")
+                     <*> (o .:? "localSsdGb")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "guestCpus")
+                     <*> (o .:? "memoryMb")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON NodeType where
+        toJSON NodeType'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _ntKind), ("zone" .=) <$> _ntZone,
+                  ("cpuPlatform" .=) <$> _ntCPUPlatform,
+                  ("localSsdGb" .=) <$> _ntLocalSsdGb,
+                  ("selfLink" .=) <$> _ntSelfLink,
+                  ("name" .=) <$> _ntName,
+                  ("creationTimestamp" .=) <$> _ntCreationTimestamp,
+                  ("id" .=) <$> _ntId,
+                  ("guestCpus" .=) <$> _ntGuestCPUs,
+                  ("memoryMb" .=) <$> _ntMemoryMb,
+                  ("description" .=) <$> _ntDescription,
+                  ("deprecated" .=) <$> _ntDeprecated])
+
+-- | Authorization-related information used by Cloud Audit Logging.
+--
+-- /See:/ 'authorizationLoggingOptions' smart constructor.
+newtype AuthorizationLoggingOptions = AuthorizationLoggingOptions'
+    { _aloPermissionType :: Maybe AuthorizationLoggingOptionsPermissionType
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuthorizationLoggingOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aloPermissionType'
+authorizationLoggingOptions
+    :: AuthorizationLoggingOptions
+authorizationLoggingOptions =
+    AuthorizationLoggingOptions'
+    { _aloPermissionType = Nothing
+    }
+
+-- | The type of the permission that was checked.
+aloPermissionType :: Lens' AuthorizationLoggingOptions (Maybe AuthorizationLoggingOptionsPermissionType)
+aloPermissionType
+  = lens _aloPermissionType
+      (\ s a -> s{_aloPermissionType = a})
+
+instance FromJSON AuthorizationLoggingOptions where
+        parseJSON
+          = withObject "AuthorizationLoggingOptions"
+              (\ o ->
+                 AuthorizationLoggingOptions' <$>
+                   (o .:? "permissionType"))
+
+instance ToJSON AuthorizationLoggingOptions where
+        toJSON AuthorizationLoggingOptions'{..}
+          = object
+              (catMaybes
+                 [("permissionType" .=) <$> _aloPermissionType])
+
+-- | Defines an Identity and Access Management (IAM) policy. It is used to
+-- specify access control policies for Cloud Platform resources. A
+-- \`Policy\` consists of a list of \`bindings\`. A \`binding\` binds a
+-- list of \`members\` to a \`role\`, where the members can be user
+-- accounts, Google groups, Google domains, and service accounts. A
+-- \`role\` is a named list of permissions defined by IAM. **JSON Example**
+-- { \"bindings\": [ { \"role\": \"roles\/owner\", \"members\": [
+-- \"user:mike\'example.com\", \"group:admins\'example.com\",
+-- \"domain:google.com\",
+-- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
+-- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
+-- ] } **YAML Example** bindings: - members: - user:mike\'example.com -
+-- group:admins\'example.com - domain:google.com -
+-- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
+-- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
+-- a description of IAM and its features, see the [IAM developer\'s
+-- guide](https:\/\/cloud.google.com\/iam\/docs).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy = Policy'
+    { _pAuditConfigs :: !(Maybe [AuditConfig])
+    , _pEtag         :: !(Maybe Bytes)
+    , _pRules        :: !(Maybe [Rule])
+    , _pVersion      :: !(Maybe (Textual Int32))
+    , _pBindings     :: !(Maybe [Binding])
+    , _pIAMOwned     :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pAuditConfigs'
+--
+-- * 'pEtag'
+--
+-- * 'pRules'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+--
+-- * 'pIAMOwned'
+policy
+    :: Policy
+policy =
+    Policy'
+    { _pAuditConfigs = Nothing
+    , _pEtag = Nothing
+    , _pRules = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    , _pIAMOwned = Nothing
+    }
+
+-- | Specifies cloud audit logging configuration for this policy.
+pAuditConfigs :: Lens' Policy [AuditConfig]
+pAuditConfigs
+  = lens _pAuditConfigs
+      (\ s a -> s{_pAuditConfigs = a})
+      . _Default
+      . _Coerce
+
+-- | \`etag\` is used for optimistic concurrency control as a way to help
+-- prevent simultaneous updates of a policy from overwriting each other. It
+-- is strongly suggested that systems make use of the \`etag\` in the
+-- read-modify-write cycle to perform policy updates in order to avoid race
+-- conditions: An \`etag\` is returned in the response to \`getIamPolicy\`,
+-- and systems are expected to put that etag in the request to
+-- \`setIamPolicy\` to ensure that their change will be applied to the same
+-- version of the policy. If no \`etag\` is provided in the call to
+-- \`setIamPolicy\`, then the existing policy is overwritten blindly.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | If more than one rule is specified, the rules are applied in the
+-- following manner: - All matching LOG rules are always applied. - If any
+-- DENY\/DENY_WITH_LOG rule matches, permission is denied. Logging will be
+-- applied if one or more matching rule requires logging. - Otherwise, if
+-- any ALLOW\/ALLOW_WITH_LOG rule matches, permission is granted. Logging
+-- will be applied if one or more matching rule requires logging. -
+-- Otherwise, if no rule applies, permission is denied.
+pRules :: Lens' Policy [Rule]
+pRules
+  = lens _pRules (\ s a -> s{_pRules = a}) . _Default .
+      _Coerce
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of \`members\` to a \`role\`. \`bindings\` with no
+-- members will result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+-- |
+pIAMOwned :: Lens' Policy (Maybe Bool)
+pIAMOwned
+  = lens _pIAMOwned (\ s a -> s{_pIAMOwned = a})
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "auditConfigs" .!= mempty) <*> (o .:? "etag")
+                     <*> (o .:? "rules" .!= mempty)
+                     <*> (o .:? "version")
+                     <*> (o .:? "bindings" .!= mempty)
+                     <*> (o .:? "iamOwned"))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("auditConfigs" .=) <$> _pAuditConfigs,
+                  ("etag" .=) <$> _pEtag, ("rules" .=) <$> _pRules,
+                  ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings,
+                  ("iamOwned" .=) <$> _pIAMOwned])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'operationAggregatedListWarning' smart constructor.
+data OperationAggregatedListWarning = OperationAggregatedListWarning'
+    { _oalwData    :: !(Maybe [OperationAggregatedListWarningDataItem])
+    , _oalwCode    :: !(Maybe OperationAggregatedListWarningCode)
+    , _oalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oalwData'
+--
+-- * 'oalwCode'
+--
+-- * 'oalwMessage'
+operationAggregatedListWarning
+    :: OperationAggregatedListWarning
+operationAggregatedListWarning =
+    OperationAggregatedListWarning'
+    { _oalwData = Nothing
+    , _oalwCode = Nothing
+    , _oalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+oalwData :: Lens' OperationAggregatedListWarning [OperationAggregatedListWarningDataItem]
+oalwData
+  = lens _oalwData (\ s a -> s{_oalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+oalwCode :: Lens' OperationAggregatedListWarning (Maybe OperationAggregatedListWarningCode)
+oalwCode = lens _oalwCode (\ s a -> s{_oalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+oalwMessage :: Lens' OperationAggregatedListWarning (Maybe Text)
+oalwMessage
+  = lens _oalwMessage (\ s a -> s{_oalwMessage = a})
+
+instance FromJSON OperationAggregatedListWarning
+         where
+        parseJSON
+          = withObject "OperationAggregatedListWarning"
+              (\ o ->
+                 OperationAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationAggregatedListWarning where
+        toJSON OperationAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _oalwData,
+                  ("code" .=) <$> _oalwCode,
+                  ("message" .=) <$> _oalwMessage])
+
+--
+-- /See:/ 'targetInstanceAggregatedListWarningDataItem' smart constructor.
+data TargetInstanceAggregatedListWarningDataItem = TargetInstanceAggregatedListWarningDataItem'
+    { _tialwdiValue :: !(Maybe Text)
+    , _tialwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialwdiValue'
+--
+-- * 'tialwdiKey'
+targetInstanceAggregatedListWarningDataItem
+    :: TargetInstanceAggregatedListWarningDataItem
+targetInstanceAggregatedListWarningDataItem =
+    TargetInstanceAggregatedListWarningDataItem'
+    { _tialwdiValue = Nothing
+    , _tialwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tialwdiValue :: Lens' TargetInstanceAggregatedListWarningDataItem (Maybe Text)
+tialwdiValue
+  = lens _tialwdiValue (\ s a -> s{_tialwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tialwdiKey :: Lens' TargetInstanceAggregatedListWarningDataItem (Maybe Text)
+tialwdiKey
+  = lens _tialwdiKey (\ s a -> s{_tialwdiKey = a})
+
+instance FromJSON
+         TargetInstanceAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetInstanceAggregatedListWarningDataItem"
+              (\ o ->
+                 TargetInstanceAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetInstanceAggregatedListWarningDataItem where
+        toJSON
+          TargetInstanceAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tialwdiValue,
+                  ("key" .=) <$> _tialwdiKey])
+
+-- | [Output Only] Informational warning which replaces the list of
+-- operations when the list is empty.
+--
+-- /See:/ 'operationsScopedListWarning' smart constructor.
+data OperationsScopedListWarning = OperationsScopedListWarning'
+    { _oslwData    :: !(Maybe [OperationsScopedListWarningDataItem])
+    , _oslwCode    :: !(Maybe OperationsScopedListWarningCode)
+    , _oslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslwData'
+--
+-- * 'oslwCode'
+--
+-- * 'oslwMessage'
+operationsScopedListWarning
+    :: OperationsScopedListWarning
+operationsScopedListWarning =
+    OperationsScopedListWarning'
+    { _oslwData = Nothing
+    , _oslwCode = Nothing
+    , _oslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]
+oslwData
+  = lens _oslwData (\ s a -> s{_oslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)
+oslwCode = lens _oslwCode (\ s a -> s{_oslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)
+oslwMessage
+  = lens _oslwMessage (\ s a -> s{_oslwMessage = a})
+
+instance FromJSON OperationsScopedListWarning where
+        parseJSON
+          = withObject "OperationsScopedListWarning"
+              (\ o ->
+                 OperationsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationsScopedListWarning where
+        toJSON OperationsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _oslwData,
+                  ("code" .=) <$> _oslwCode,
+                  ("message" .=) <$> _oslwMessage])
+
+--
+-- /See:/ 'regionDiskTypeListWarningDataItem' smart constructor.
+data RegionDiskTypeListWarningDataItem = RegionDiskTypeListWarningDataItem'
+    { _rdtlwdiValue :: !(Maybe Text)
+    , _rdtlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDiskTypeListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtlwdiValue'
+--
+-- * 'rdtlwdiKey'
+regionDiskTypeListWarningDataItem
+    :: RegionDiskTypeListWarningDataItem
+regionDiskTypeListWarningDataItem =
+    RegionDiskTypeListWarningDataItem'
+    { _rdtlwdiValue = Nothing
+    , _rdtlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rdtlwdiValue :: Lens' RegionDiskTypeListWarningDataItem (Maybe Text)
+rdtlwdiValue
+  = lens _rdtlwdiValue (\ s a -> s{_rdtlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+rdtlwdiKey :: Lens' RegionDiskTypeListWarningDataItem (Maybe Text)
+rdtlwdiKey
+  = lens _rdtlwdiKey (\ s a -> s{_rdtlwdiKey = a})
+
+instance FromJSON RegionDiskTypeListWarningDataItem
+         where
+        parseJSON
+          = withObject "RegionDiskTypeListWarningDataItem"
+              (\ o ->
+                 RegionDiskTypeListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RegionDiskTypeListWarningDataItem
+         where
+        toJSON RegionDiskTypeListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rdtlwdiValue,
+                  ("key" .=) <$> _rdtlwdiKey])
+
+--
+-- /See:/ 'forwardingRuleListWarningDataItem' smart constructor.
+data ForwardingRuleListWarningDataItem = ForwardingRuleListWarningDataItem'
+    { _frlwdiValue :: !(Maybe Text)
+    , _frlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frlwdiValue'
+--
+-- * 'frlwdiKey'
+forwardingRuleListWarningDataItem
+    :: ForwardingRuleListWarningDataItem
+forwardingRuleListWarningDataItem =
+    ForwardingRuleListWarningDataItem'
+    { _frlwdiValue = Nothing
+    , _frlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+frlwdiValue :: Lens' ForwardingRuleListWarningDataItem (Maybe Text)
+frlwdiValue
+  = lens _frlwdiValue (\ s a -> s{_frlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+frlwdiKey :: Lens' ForwardingRuleListWarningDataItem (Maybe Text)
+frlwdiKey
+  = lens _frlwdiKey (\ s a -> s{_frlwdiKey = a})
+
+instance FromJSON ForwardingRuleListWarningDataItem
+         where
+        parseJSON
+          = withObject "ForwardingRuleListWarningDataItem"
+              (\ o ->
+                 ForwardingRuleListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON ForwardingRuleListWarningDataItem
+         where
+        toJSON ForwardingRuleListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _frlwdiValue,
+                  ("key" .=) <$> _frlwdiKey])
+
+-- | Sets the scheduling options for an Instance.
+--
+-- /See:/ 'scheduling' smart constructor.
+data Scheduling = Scheduling'
+    { _sAutomaticRestart  :: !(Maybe Bool)
+    , _sNodeAffinities    :: !(Maybe [SchedulingNodeAffinity])
+    , _sOnHostMaintenance :: !(Maybe SchedulingOnHostMaintenance)
+    , _sPreemptible       :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Scheduling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sAutomaticRestart'
+--
+-- * 'sNodeAffinities'
+--
+-- * 'sOnHostMaintenance'
+--
+-- * 'sPreemptible'
+scheduling
+    :: Scheduling
+scheduling =
+    Scheduling'
+    { _sAutomaticRestart = Nothing
+    , _sNodeAffinities = Nothing
+    , _sOnHostMaintenance = Nothing
+    , _sPreemptible = Nothing
+    }
+
+-- | Specifies whether the instance should be automatically restarted if it
+-- is terminated by Compute Engine (not terminated by a user). You can only
+-- set the automatic restart option for standard instances. Preemptible
+-- instances cannot be automatically restarted. By default, this is set to
+-- true so an instance is automatically restarted if it is terminated by
+-- Compute Engine.
+sAutomaticRestart :: Lens' Scheduling (Maybe Bool)
+sAutomaticRestart
+  = lens _sAutomaticRestart
+      (\ s a -> s{_sAutomaticRestart = a})
+
+-- | A set of node affinity and anti-affinity.
+sNodeAffinities :: Lens' Scheduling [SchedulingNodeAffinity]
+sNodeAffinities
+  = lens _sNodeAffinities
+      (\ s a -> s{_sNodeAffinities = a})
+      . _Default
+      . _Coerce
+
+-- | Defines the maintenance behavior for this instance. For standard
+-- instances, the default behavior is MIGRATE. For preemptible instances,
+-- the default and only possible behavior is TERMINATE. For more
+-- information, see Setting Instance Scheduling Options.
+sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)
+sOnHostMaintenance
+  = lens _sOnHostMaintenance
+      (\ s a -> s{_sOnHostMaintenance = a})
+
+-- | Defines whether the instance is preemptible. This can only be set during
+-- instance creation, it cannot be set or changed after the instance has
+-- been created.
+sPreemptible :: Lens' Scheduling (Maybe Bool)
+sPreemptible
+  = lens _sPreemptible (\ s a -> s{_sPreemptible = a})
+
+instance FromJSON Scheduling where
+        parseJSON
+          = withObject "Scheduling"
+              (\ o ->
+                 Scheduling' <$>
+                   (o .:? "automaticRestart") <*>
+                     (o .:? "nodeAffinities" .!= mempty)
+                     <*> (o .:? "onHostMaintenance")
+                     <*> (o .:? "preemptible"))
+
+instance ToJSON Scheduling where
+        toJSON Scheduling'{..}
+          = object
+              (catMaybes
+                 [("automaticRestart" .=) <$> _sAutomaticRestart,
+                  ("nodeAffinities" .=) <$> _sNodeAffinities,
+                  ("onHostMaintenance" .=) <$> _sOnHostMaintenance,
+                  ("preemptible" .=) <$> _sPreemptible])
+
+--
+-- /See:/ 'vpnTunnelsScopedListWarningDataItem' smart constructor.
+data VPNTunnelsScopedListWarningDataItem = VPNTunnelsScopedListWarningDataItem'
+    { _vtslwdiValue :: !(Maybe Text)
+    , _vtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslwdiValue'
+--
+-- * 'vtslwdiKey'
+vpnTunnelsScopedListWarningDataItem
+    :: VPNTunnelsScopedListWarningDataItem
+vpnTunnelsScopedListWarningDataItem =
+    VPNTunnelsScopedListWarningDataItem'
+    { _vtslwdiValue = Nothing
+    , _vtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
+vtslwdiValue
+  = lens _vtslwdiValue (\ s a -> s{_vtslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
+vtslwdiKey
+  = lens _vtslwdiKey (\ s a -> s{_vtslwdiKey = a})
+
+instance FromJSON VPNTunnelsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "VPNTunnelsScopedListWarningDataItem"
+              (\ o ->
+                 VPNTunnelsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON VPNTunnelsScopedListWarningDataItem
+         where
+        toJSON VPNTunnelsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _vtslwdiValue,
+                  ("key" .=) <$> _vtslwdiKey])
+
+-- | Response to the list request, and contains a list of interconnects.
+--
+-- /See:/ 'interconnectList' smart constructor.
+data InterconnectList = InterconnectList'
+    { _intnNextPageToken :: !(Maybe Text)
+    , _intnKind          :: !Text
+    , _intnItems         :: !(Maybe [Interconnect])
+    , _intnSelfLink      :: !(Maybe Text)
+    , _intnWarning       :: !(Maybe InterconnectListWarning)
+    , _intnId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'intnNextPageToken'
+--
+-- * 'intnKind'
+--
+-- * 'intnItems'
+--
+-- * 'intnSelfLink'
+--
+-- * 'intnWarning'
+--
+-- * 'intnId'
+interconnectList
+    :: InterconnectList
+interconnectList =
+    InterconnectList'
+    { _intnNextPageToken = Nothing
+    , _intnKind = "compute#interconnectList"
+    , _intnItems = Nothing
+    , _intnSelfLink = Nothing
+    , _intnWarning = Nothing
+    , _intnId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+intnNextPageToken :: Lens' InterconnectList (Maybe Text)
+intnNextPageToken
+  = lens _intnNextPageToken
+      (\ s a -> s{_intnNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#interconnectList for
+-- lists of interconnects.
+intnKind :: Lens' InterconnectList Text
+intnKind = lens _intnKind (\ s a -> s{_intnKind = a})
+
+-- | A list of Interconnect resources.
+intnItems :: Lens' InterconnectList [Interconnect]
+intnItems
+  = lens _intnItems (\ s a -> s{_intnItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+intnSelfLink :: Lens' InterconnectList (Maybe Text)
+intnSelfLink
+  = lens _intnSelfLink (\ s a -> s{_intnSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+intnWarning :: Lens' InterconnectList (Maybe InterconnectListWarning)
+intnWarning
+  = lens _intnWarning (\ s a -> s{_intnWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+intnId :: Lens' InterconnectList (Maybe Text)
+intnId = lens _intnId (\ s a -> s{_intnId = a})
+
+instance FromJSON InterconnectList where
+        parseJSON
+          = withObject "InterconnectList"
+              (\ o ->
+                 InterconnectList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#interconnectList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InterconnectList where
+        toJSON InterconnectList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _intnNextPageToken,
+                  Just ("kind" .= _intnKind),
+                  ("items" .=) <$> _intnItems,
+                  ("selfLink" .=) <$> _intnSelfLink,
+                  ("warning" .=) <$> _intnWarning,
+                  ("id" .=) <$> _intnId])
+
+--
+-- /See:/ 'targetPoolListWarningDataItem' smart constructor.
+data TargetPoolListWarningDataItem = TargetPoolListWarningDataItem'
+    { _tplwdiValue :: !(Maybe Text)
+    , _tplwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplwdiValue'
+--
+-- * 'tplwdiKey'
+targetPoolListWarningDataItem
+    :: TargetPoolListWarningDataItem
+targetPoolListWarningDataItem =
+    TargetPoolListWarningDataItem'
+    { _tplwdiValue = Nothing
+    , _tplwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tplwdiValue :: Lens' TargetPoolListWarningDataItem (Maybe Text)
+tplwdiValue
+  = lens _tplwdiValue (\ s a -> s{_tplwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+tplwdiKey :: Lens' TargetPoolListWarningDataItem (Maybe Text)
+tplwdiKey
+  = lens _tplwdiKey (\ s a -> s{_tplwdiKey = a})
+
+instance FromJSON TargetPoolListWarningDataItem where
+        parseJSON
+          = withObject "TargetPoolListWarningDataItem"
+              (\ o ->
+                 TargetPoolListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetPoolListWarningDataItem where
+        toJSON TargetPoolListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tplwdiValue,
+                  ("key" .=) <$> _tplwdiKey])
+
+-- | A Node Template resource.
+--
+-- /See:/ 'nodeTemplate' smart constructor.
+data NodeTemplate = NodeTemplate'
+    { _nttStatus              :: !(Maybe NodeTemplateStatus)
+    , _nttKind                :: !Text
+    , _nttSelfLink            :: !(Maybe Text)
+    , _nttName                :: !(Maybe Text)
+    , _nttStatusMessage       :: !(Maybe Text)
+    , _nttCreationTimestamp   :: !(Maybe Text)
+    , _nttNodeAffinityLabels  :: !(Maybe NodeTemplateNodeAffinityLabels)
+    , _nttId                  :: !(Maybe (Textual Word64))
+    , _nttNodeTypeFlexibility :: !(Maybe NodeTemplateNodeTypeFlexibility)
+    , _nttNodeType            :: !(Maybe Text)
+    , _nttRegion              :: !(Maybe Text)
+    , _nttDescription         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nttStatus'
+--
+-- * 'nttKind'
+--
+-- * 'nttSelfLink'
+--
+-- * 'nttName'
+--
+-- * 'nttStatusMessage'
+--
+-- * 'nttCreationTimestamp'
+--
+-- * 'nttNodeAffinityLabels'
+--
+-- * 'nttId'
+--
+-- * 'nttNodeTypeFlexibility'
+--
+-- * 'nttNodeType'
+--
+-- * 'nttRegion'
+--
+-- * 'nttDescription'
+nodeTemplate
+    :: NodeTemplate
+nodeTemplate =
+    NodeTemplate'
+    { _nttStatus = Nothing
+    , _nttKind = "compute#nodeTemplate"
+    , _nttSelfLink = Nothing
+    , _nttName = Nothing
+    , _nttStatusMessage = Nothing
+    , _nttCreationTimestamp = Nothing
+    , _nttNodeAffinityLabels = Nothing
+    , _nttId = Nothing
+    , _nttNodeTypeFlexibility = Nothing
+    , _nttNodeType = Nothing
+    , _nttRegion = Nothing
+    , _nttDescription = Nothing
+    }
+
+-- | [Output Only] The status of the node template. One of the following
+-- values: CREATING, READY, and DELETING.
+nttStatus :: Lens' NodeTemplate (Maybe NodeTemplateStatus)
+nttStatus
+  = lens _nttStatus (\ s a -> s{_nttStatus = a})
+
+-- | [Output Only] The type of the resource. Always compute#nodeTemplate for
+-- node templates.
+nttKind :: Lens' NodeTemplate Text
+nttKind = lens _nttKind (\ s a -> s{_nttKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+nttSelfLink :: Lens' NodeTemplate (Maybe Text)
+nttSelfLink
+  = lens _nttSelfLink (\ s a -> s{_nttSelfLink = a})
+
+-- | The name of the resource, provided by the client when initially creating
+-- the resource. The resource name must be 1-63 characters long, and comply
+-- with RFC1035. Specifically, the name must be 1-63 characters long and
+-- match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means
+-- the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash.
+nttName :: Lens' NodeTemplate (Maybe Text)
+nttName = lens _nttName (\ s a -> s{_nttName = a})
+
+-- | [Output Only] An optional, human-readable explanation of the status.
+nttStatusMessage :: Lens' NodeTemplate (Maybe Text)
+nttStatusMessage
+  = lens _nttStatusMessage
+      (\ s a -> s{_nttStatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+nttCreationTimestamp :: Lens' NodeTemplate (Maybe Text)
+nttCreationTimestamp
+  = lens _nttCreationTimestamp
+      (\ s a -> s{_nttCreationTimestamp = a})
+
+-- | Labels to use for node affinity, which will be used in instance
+-- scheduling.
+nttNodeAffinityLabels :: Lens' NodeTemplate (Maybe NodeTemplateNodeAffinityLabels)
+nttNodeAffinityLabels
+  = lens _nttNodeAffinityLabels
+      (\ s a -> s{_nttNodeAffinityLabels = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+nttId :: Lens' NodeTemplate (Maybe Word64)
+nttId
+  = lens _nttId (\ s a -> s{_nttId = a}) .
+      mapping _Coerce
+
+-- | The flexible properties of the desired node type. Node groups that use
+-- this node template will create nodes of a type that matches these
+-- properties. This field is mutually exclusive with the node_type
+-- property; you can only define one or the other, but not both.
+nttNodeTypeFlexibility :: Lens' NodeTemplate (Maybe NodeTemplateNodeTypeFlexibility)
+nttNodeTypeFlexibility
+  = lens _nttNodeTypeFlexibility
+      (\ s a -> s{_nttNodeTypeFlexibility = a})
+
+-- | The node type to use for nodes group that are created from this
+-- template.
+nttNodeType :: Lens' NodeTemplate (Maybe Text)
+nttNodeType
+  = lens _nttNodeType (\ s a -> s{_nttNodeType = a})
+
+-- | [Output Only] The name of the region where the node template resides,
+-- such as us-central1.
+nttRegion :: Lens' NodeTemplate (Maybe Text)
+nttRegion
+  = lens _nttRegion (\ s a -> s{_nttRegion = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+nttDescription :: Lens' NodeTemplate (Maybe Text)
+nttDescription
+  = lens _nttDescription
+      (\ s a -> s{_nttDescription = a})
+
+instance FromJSON NodeTemplate where
+        parseJSON
+          = withObject "NodeTemplate"
+              (\ o ->
+                 NodeTemplate' <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#nodeTemplate")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "nodeAffinityLabels")
+                     <*> (o .:? "id")
+                     <*> (o .:? "nodeTypeFlexibility")
+                     <*> (o .:? "nodeType")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description"))
+
+instance ToJSON NodeTemplate where
+        toJSON NodeTemplate'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _nttStatus,
+                  Just ("kind" .= _nttKind),
+                  ("selfLink" .=) <$> _nttSelfLink,
+                  ("name" .=) <$> _nttName,
+                  ("statusMessage" .=) <$> _nttStatusMessage,
+                  ("creationTimestamp" .=) <$> _nttCreationTimestamp,
+                  ("nodeAffinityLabels" .=) <$> _nttNodeAffinityLabels,
+                  ("id" .=) <$> _nttId,
+                  ("nodeTypeFlexibility" .=) <$>
+                    _nttNodeTypeFlexibility,
+                  ("nodeType" .=) <$> _nttNodeType,
+                  ("region" .=) <$> _nttRegion,
+                  ("description" .=) <$> _nttDescription])
+
+-- | Contains a list of Subnetwork resources.
+--
+-- /See:/ 'subnetworkList' smart constructor.
+data SubnetworkList = SubnetworkList'
+    { _slNextPageToken :: !(Maybe Text)
+    , _slKind          :: !Text
+    , _slItems         :: !(Maybe [Subnetwork])
+    , _slSelfLink      :: !(Maybe Text)
+    , _slWarning       :: !(Maybe SubnetworkListWarning)
+    , _slId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slNextPageToken'
+--
+-- * 'slKind'
+--
+-- * 'slItems'
+--
+-- * 'slSelfLink'
+--
+-- * 'slWarning'
+--
+-- * 'slId'
+subnetworkList
+    :: SubnetworkList
+subnetworkList =
+    SubnetworkList'
+    { _slNextPageToken = Nothing
+    , _slKind = "compute#subnetworkList"
+    , _slItems = Nothing
+    , _slSelfLink = Nothing
+    , _slWarning = Nothing
+    , _slId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+slNextPageToken :: Lens' SubnetworkList (Maybe Text)
+slNextPageToken
+  = lens _slNextPageToken
+      (\ s a -> s{_slNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#subnetworkList for lists
+-- of subnetworks.
+slKind :: Lens' SubnetworkList Text
+slKind = lens _slKind (\ s a -> s{_slKind = a})
+
+-- | A list of Subnetwork resources.
+slItems :: Lens' SubnetworkList [Subnetwork]
+slItems
+  = lens _slItems (\ s a -> s{_slItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+slSelfLink :: Lens' SubnetworkList (Maybe Text)
+slSelfLink
+  = lens _slSelfLink (\ s a -> s{_slSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+slWarning :: Lens' SubnetworkList (Maybe SubnetworkListWarning)
+slWarning
+  = lens _slWarning (\ s a -> s{_slWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+slId :: Lens' SubnetworkList (Maybe Text)
+slId = lens _slId (\ s a -> s{_slId = a})
+
+instance FromJSON SubnetworkList where
+        parseJSON
+          = withObject "SubnetworkList"
+              (\ o ->
+                 SubnetworkList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#subnetworkList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SubnetworkList where
+        toJSON SubnetworkList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _slNextPageToken,
+                  Just ("kind" .= _slKind), ("items" .=) <$> _slItems,
+                  ("selfLink" .=) <$> _slSelfLink,
+                  ("warning" .=) <$> _slWarning, ("id" .=) <$> _slId])
+
+-- | Informational warning which replaces the list of forwarding rules when
+-- the list is empty.
+--
+-- /See:/ 'forwardingRulesScopedListWarning' smart constructor.
+data ForwardingRulesScopedListWarning = ForwardingRulesScopedListWarning'
+    { _frslwData    :: !(Maybe [ForwardingRulesScopedListWarningDataItem])
+    , _frslwCode    :: !(Maybe ForwardingRulesScopedListWarningCode)
+    , _frslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslwData'
+--
+-- * 'frslwCode'
+--
+-- * 'frslwMessage'
+forwardingRulesScopedListWarning
+    :: ForwardingRulesScopedListWarning
+forwardingRulesScopedListWarning =
+    ForwardingRulesScopedListWarning'
+    { _frslwData = Nothing
+    , _frslwCode = Nothing
+    , _frslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]
+frslwData
+  = lens _frslwData (\ s a -> s{_frslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)
+frslwCode
+  = lens _frslwCode (\ s a -> s{_frslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)
+frslwMessage
+  = lens _frslwMessage (\ s a -> s{_frslwMessage = a})
+
+instance FromJSON ForwardingRulesScopedListWarning
+         where
+        parseJSON
+          = withObject "ForwardingRulesScopedListWarning"
+              (\ o ->
+                 ForwardingRulesScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ForwardingRulesScopedListWarning
+         where
+        toJSON ForwardingRulesScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _frslwData,
+                  ("code" .=) <$> _frslwCode,
+                  ("message" .=) <$> _frslwMessage])
+
+-- | Contains a list of HttpHealthCheck resources.
+--
+-- /See:/ 'hTTPHealthCheckList' smart constructor.
+data HTTPHealthCheckList = HTTPHealthCheckList'
+    { _httphclNextPageToken :: !(Maybe Text)
+    , _httphclKind          :: !Text
+    , _httphclItems         :: !(Maybe [HTTPHealthCheck])
+    , _httphclSelfLink      :: !(Maybe Text)
+    , _httphclWarning       :: !(Maybe HTTPHealthCheckListWarning)
+    , _httphclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheckList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphclNextPageToken'
+--
+-- * 'httphclKind'
+--
+-- * 'httphclItems'
+--
+-- * 'httphclSelfLink'
+--
+-- * 'httphclWarning'
+--
+-- * 'httphclId'
+hTTPHealthCheckList
+    :: HTTPHealthCheckList
+hTTPHealthCheckList =
+    HTTPHealthCheckList'
+    { _httphclNextPageToken = Nothing
+    , _httphclKind = "compute#httpHealthCheckList"
+    , _httphclItems = Nothing
+    , _httphclSelfLink = Nothing
+    , _httphclWarning = Nothing
+    , _httphclId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclNextPageToken
+  = lens _httphclNextPageToken
+      (\ s a -> s{_httphclNextPageToken = a})
+
+-- | Type of resource.
+httphclKind :: Lens' HTTPHealthCheckList Text
+httphclKind
+  = lens _httphclKind (\ s a -> s{_httphclKind = a})
+
+-- | A list of HttpHealthCheck resources.
+httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]
+httphclItems
+  = lens _httphclItems (\ s a -> s{_httphclItems = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclSelfLink
+  = lens _httphclSelfLink
+      (\ s a -> s{_httphclSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+httphclWarning :: Lens' HTTPHealthCheckList (Maybe HTTPHealthCheckListWarning)
+httphclWarning
+  = lens _httphclWarning
+      (\ s a -> s{_httphclWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+httphclId :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclId
+  = lens _httphclId (\ s a -> s{_httphclId = a})
+
+instance FromJSON HTTPHealthCheckList where
+        parseJSON
+          = withObject "HTTPHealthCheckList"
+              (\ o ->
+                 HTTPHealthCheckList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#httpHealthCheckList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON HTTPHealthCheckList where
+        toJSON HTTPHealthCheckList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _httphclNextPageToken,
+                  Just ("kind" .= _httphclKind),
+                  ("items" .=) <$> _httphclItems,
+                  ("selfLink" .=) <$> _httphclSelfLink,
+                  ("warning" .=) <$> _httphclWarning,
+                  ("id" .=) <$> _httphclId])
+
+-- | [Output Only] The warning that replaces the list of managed instance
+-- groups when the list is empty.
+--
+-- /See:/ 'instanceGroupManagersScopedListWarning' smart constructor.
+data InstanceGroupManagersScopedListWarning = InstanceGroupManagersScopedListWarning'
+    { _igmslwData    :: !(Maybe [InstanceGroupManagersScopedListWarningDataItem])
+    , _igmslwCode    :: !(Maybe InstanceGroupManagersScopedListWarningCode)
+    , _igmslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslwData'
+--
+-- * 'igmslwCode'
+--
+-- * 'igmslwMessage'
+instanceGroupManagersScopedListWarning
+    :: InstanceGroupManagersScopedListWarning
+instanceGroupManagersScopedListWarning =
+    InstanceGroupManagersScopedListWarning'
+    { _igmslwData = Nothing
+    , _igmslwCode = Nothing
+    , _igmslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]
+igmslwData
+  = lens _igmslwData (\ s a -> s{_igmslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)
+igmslwCode
+  = lens _igmslwCode (\ s a -> s{_igmslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)
+igmslwMessage
+  = lens _igmslwMessage
+      (\ s a -> s{_igmslwMessage = a})
+
+instance FromJSON
+         InstanceGroupManagersScopedListWarning where
+        parseJSON
+          = withObject "InstanceGroupManagersScopedListWarning"
+              (\ o ->
+                 InstanceGroupManagersScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         InstanceGroupManagersScopedListWarning where
+        toJSON InstanceGroupManagersScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igmslwData,
+                  ("code" .=) <$> _igmslwCode,
+                  ("message" .=) <$> _igmslwMessage])
+
+--
+-- /See:/ 'sslPoliciesList' smart constructor.
+data SSLPoliciesList = SSLPoliciesList'
+    { _sslplNextPageToken :: !(Maybe Text)
+    , _sslplKind          :: !Text
+    , _sslplItems         :: !(Maybe [SSLPolicy])
+    , _sslplSelfLink      :: !(Maybe Text)
+    , _sslplWarning       :: !(Maybe SSLPoliciesListWarning)
+    , _sslplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslplNextPageToken'
+--
+-- * 'sslplKind'
+--
+-- * 'sslplItems'
+--
+-- * 'sslplSelfLink'
+--
+-- * 'sslplWarning'
+--
+-- * 'sslplId'
+sslPoliciesList
+    :: SSLPoliciesList
+sslPoliciesList =
+    SSLPoliciesList'
+    { _sslplNextPageToken = Nothing
+    , _sslplKind = "compute#sslPoliciesList"
+    , _sslplItems = Nothing
+    , _sslplSelfLink = Nothing
+    , _sslplWarning = Nothing
+    , _sslplId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+sslplNextPageToken :: Lens' SSLPoliciesList (Maybe Text)
+sslplNextPageToken
+  = lens _sslplNextPageToken
+      (\ s a -> s{_sslplNextPageToken = a})
+
+-- | [Output Only] Type of the resource. Always compute#sslPoliciesList for
+-- lists of sslPolicies.
+sslplKind :: Lens' SSLPoliciesList Text
+sslplKind
+  = lens _sslplKind (\ s a -> s{_sslplKind = a})
+
+-- | A list of SslPolicy resources.
+sslplItems :: Lens' SSLPoliciesList [SSLPolicy]
+sslplItems
+  = lens _sslplItems (\ s a -> s{_sslplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+sslplSelfLink :: Lens' SSLPoliciesList (Maybe Text)
+sslplSelfLink
+  = lens _sslplSelfLink
+      (\ s a -> s{_sslplSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+sslplWarning :: Lens' SSLPoliciesList (Maybe SSLPoliciesListWarning)
+sslplWarning
+  = lens _sslplWarning (\ s a -> s{_sslplWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+sslplId :: Lens' SSLPoliciesList (Maybe Text)
+sslplId = lens _sslplId (\ s a -> s{_sslplId = a})
+
+instance FromJSON SSLPoliciesList where
+        parseJSON
+          = withObject "SSLPoliciesList"
+              (\ o ->
+                 SSLPoliciesList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#sslPoliciesList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SSLPoliciesList where
+        toJSON SSLPoliciesList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _sslplNextPageToken,
+                  Just ("kind" .= _sslplKind),
+                  ("items" .=) <$> _sslplItems,
+                  ("selfLink" .=) <$> _sslplSelfLink,
+                  ("warning" .=) <$> _sslplWarning,
+                  ("id" .=) <$> _sslplId])
+
+--
+-- /See:/ 'urlMapsValidateRequest' smart constructor.
+newtype URLMapsValidateRequest = URLMapsValidateRequest'
+    { _umvrResource :: Maybe URLMap
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsValidateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrResource'
+urlMapsValidateRequest
+    :: URLMapsValidateRequest
+urlMapsValidateRequest =
+    URLMapsValidateRequest'
+    { _umvrResource = Nothing
+    }
+
+-- | Content of the UrlMap to be validated.
+umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)
+umvrResource
+  = lens _umvrResource (\ s a -> s{_umvrResource = a})
+
+instance FromJSON URLMapsValidateRequest where
+        parseJSON
+          = withObject "URLMapsValidateRequest"
+              (\ o ->
+                 URLMapsValidateRequest' <$> (o .:? "resource"))
+
+instance ToJSON URLMapsValidateRequest where
+        toJSON URLMapsValidateRequest'{..}
+          = object
+              (catMaybes [("resource" .=) <$> _umvrResource])
+
+--
+-- /See:/ 'instanceGroupManagersSetTargetPoolsRequest' smart constructor.
+data InstanceGroupManagersSetTargetPoolsRequest = InstanceGroupManagersSetTargetPoolsRequest'
+    { _igmstprFingerprint :: !(Maybe Bytes)
+    , _igmstprTargetPools :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetTargetPoolsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmstprFingerprint'
+--
+-- * 'igmstprTargetPools'
+instanceGroupManagersSetTargetPoolsRequest
+    :: InstanceGroupManagersSetTargetPoolsRequest
+instanceGroupManagersSetTargetPoolsRequest =
+    InstanceGroupManagersSetTargetPoolsRequest'
+    { _igmstprFingerprint = Nothing
+    , _igmstprTargetPools = Nothing
+    }
+
+-- | The fingerprint of the target pools information. Use this optional
+-- property to prevent conflicts when multiple users change the target
+-- pools settings concurrently. Obtain the fingerprint with the
+-- instanceGroupManagers.get method. Then, include the fingerprint in your
+-- request to ensure that you do not overwrite changes that were applied
+-- from another concurrent request.
+igmstprFingerprint :: Lens' InstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)
+igmstprFingerprint
+  = lens _igmstprFingerprint
+      (\ s a -> s{_igmstprFingerprint = a})
+      . mapping _Bytes
+
+-- | The list of target pool URLs that instances in this managed instance
+-- group belong to. The managed instance group applies these target pools
+-- to all of the instances in the group. Existing instances and new
+-- instances in the group all receive these target pool settings.
+igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]
+igmstprTargetPools
+  = lens _igmstprTargetPools
+      (\ s a -> s{_igmstprTargetPools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersSetTargetPoolsRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersSetTargetPoolsRequest"
+              (\ o ->
+                 InstanceGroupManagersSetTargetPoolsRequest' <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "targetPools" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersSetTargetPoolsRequest where
+        toJSON
+          InstanceGroupManagersSetTargetPoolsRequest'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _igmstprFingerprint,
+                  ("targetPools" .=) <$> _igmstprTargetPools])
+
+-- | Represents a Commitment resource. Creating a Commitment resource means
+-- that you are purchasing a committed use contract with an explicit start
+-- and end time. You can create commitments based on vCPUs and memory usage
+-- and receive discounted rates. For full details, read Signing Up for
+-- Committed Use Discounts. Committed use discounts are subject to Google
+-- Cloud Platform\'s Service Specific Terms. By purchasing a committed use
+-- discount, you agree to these terms. Committed use discounts will not
+-- renew, so you must purchase a new commitment to continue receiving
+-- discounts. (== resource_for beta.commitments ==) (== resource_for
+-- v1.commitments ==)
+--
+-- /See:/ 'commitment' smart constructor.
+data Commitment = Commitment'
+    { _cStatus            :: !(Maybe CommitmentStatus)
+    , _cKind              :: !Text
+    , _cPlan              :: !(Maybe CommitmentPlan)
+    , _cResources         :: !(Maybe [ResourceCommitment])
+    , _cEndTimestamp      :: !(Maybe Text)
+    , _cSelfLink          :: !(Maybe Text)
+    , _cName              :: !(Maybe Text)
+    , _cStatusMessage     :: !(Maybe Text)
+    , _cCreationTimestamp :: !(Maybe Text)
+    , _cId                :: !(Maybe (Textual Word64))
+    , _cRegion            :: !(Maybe Text)
+    , _cStartTimestamp    :: !(Maybe Text)
+    , _cDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Commitment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus'
+--
+-- * 'cKind'
+--
+-- * 'cPlan'
+--
+-- * 'cResources'
+--
+-- * 'cEndTimestamp'
+--
+-- * 'cSelfLink'
+--
+-- * 'cName'
+--
+-- * 'cStatusMessage'
+--
+-- * 'cCreationTimestamp'
+--
+-- * 'cId'
+--
+-- * 'cRegion'
+--
+-- * 'cStartTimestamp'
+--
+-- * 'cDescription'
+commitment
+    :: Commitment
+commitment =
+    Commitment'
+    { _cStatus = Nothing
+    , _cKind = "compute#commitment"
+    , _cPlan = Nothing
+    , _cResources = Nothing
+    , _cEndTimestamp = Nothing
+    , _cSelfLink = Nothing
+    , _cName = Nothing
+    , _cStatusMessage = Nothing
+    , _cCreationTimestamp = Nothing
+    , _cId = Nothing
+    , _cRegion = Nothing
+    , _cStartTimestamp = Nothing
+    , _cDescription = Nothing
+    }
+
+-- | [Output Only] Status of the commitment with regards to eventual
+-- expiration (each commitment has an end date defined). One of the
+-- following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+cStatus :: Lens' Commitment (Maybe CommitmentStatus)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
+
+-- | [Output Only] Type of the resource. Always compute#commitment for
+-- commitments.
+cKind :: Lens' Commitment Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | The plan for this commitment, which determines duration and discount
+-- rate. The currently supported plans are TWELVE_MONTH (1 year), and
+-- THIRTY_SIX_MONTH (3 years).
+cPlan :: Lens' Commitment (Maybe CommitmentPlan)
+cPlan = lens _cPlan (\ s a -> s{_cPlan = a})
+
+-- | A list of commitment amounts for particular resources. Note that VCPU
+-- and MEMORY resource commitments must occur together.
+cResources :: Lens' Commitment [ResourceCommitment]
+cResources
+  = lens _cResources (\ s a -> s{_cResources = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Commitment end time in RFC3339 text format.
+cEndTimestamp :: Lens' Commitment (Maybe Text)
+cEndTimestamp
+  = lens _cEndTimestamp
+      (\ s a -> s{_cEndTimestamp = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+cSelfLink :: Lens' Commitment (Maybe Text)
+cSelfLink
+  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+cName :: Lens' Commitment (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | [Output Only] An optional, human-readable explanation of the status.
+cStatusMessage :: Lens' Commitment (Maybe Text)
+cStatusMessage
+  = lens _cStatusMessage
+      (\ s a -> s{_cStatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+cCreationTimestamp :: Lens' Commitment (Maybe Text)
+cCreationTimestamp
+  = lens _cCreationTimestamp
+      (\ s a -> s{_cCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+cId :: Lens' Commitment (Maybe Word64)
+cId
+  = lens _cId (\ s a -> s{_cId = a}) . mapping _Coerce
+
+-- | [Output Only] URL of the region where this commitment may be used.
+cRegion :: Lens' Commitment (Maybe Text)
+cRegion = lens _cRegion (\ s a -> s{_cRegion = a})
+
+-- | [Output Only] Commitment start time in RFC3339 text format.
+cStartTimestamp :: Lens' Commitment (Maybe Text)
+cStartTimestamp
+  = lens _cStartTimestamp
+      (\ s a -> s{_cStartTimestamp = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+cDescription :: Lens' Commitment (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+instance FromJSON Commitment where
+        parseJSON
+          = withObject "Commitment"
+              (\ o ->
+                 Commitment' <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#commitment")
+                     <*> (o .:? "plan")
+                     <*> (o .:? "resources" .!= mempty)
+                     <*> (o .:? "endTimestamp")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "startTimestamp")
+                     <*> (o .:? "description"))
+
+instance ToJSON Commitment where
+        toJSON Commitment'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _cStatus, Just ("kind" .= _cKind),
+                  ("plan" .=) <$> _cPlan,
+                  ("resources" .=) <$> _cResources,
+                  ("endTimestamp" .=) <$> _cEndTimestamp,
+                  ("selfLink" .=) <$> _cSelfLink,
+                  ("name" .=) <$> _cName,
+                  ("statusMessage" .=) <$> _cStatusMessage,
+                  ("creationTimestamp" .=) <$> _cCreationTimestamp,
+                  ("id" .=) <$> _cId, ("region" .=) <$> _cRegion,
+                  ("startTimestamp" .=) <$> _cStartTimestamp,
+                  ("description" .=) <$> _cDescription])
+
+-- | Contains a list of HttpsHealthCheck resources.
+--
+-- /See:/ 'httpsHealthCheckList' smart constructor.
+data HTTPSHealthCheckList = HTTPSHealthCheckList'
+    { _hhclNextPageToken :: !(Maybe Text)
+    , _hhclKind          :: !Text
+    , _hhclItems         :: !(Maybe [HTTPSHealthCheck])
+    , _hhclSelfLink      :: !(Maybe Text)
+    , _hhclWarning       :: !(Maybe HTTPSHealthCheckListWarning)
+    , _hhclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheckList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhclNextPageToken'
+--
+-- * 'hhclKind'
+--
+-- * 'hhclItems'
+--
+-- * 'hhclSelfLink'
+--
+-- * 'hhclWarning'
+--
+-- * 'hhclId'
+httpsHealthCheckList
+    :: HTTPSHealthCheckList
+httpsHealthCheckList =
+    HTTPSHealthCheckList'
+    { _hhclNextPageToken = Nothing
+    , _hhclKind = "compute#httpsHealthCheckList"
+    , _hhclItems = Nothing
+    , _hhclSelfLink = Nothing
+    , _hhclWarning = Nothing
+    , _hhclId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclNextPageToken
+  = lens _hhclNextPageToken
+      (\ s a -> s{_hhclNextPageToken = a})
+
+-- | Type of resource.
+hhclKind :: Lens' HTTPSHealthCheckList Text
+hhclKind = lens _hhclKind (\ s a -> s{_hhclKind = a})
+
+-- | A list of HttpsHealthCheck resources.
+hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]
+hhclItems
+  = lens _hhclItems (\ s a -> s{_hhclItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclSelfLink
+  = lens _hhclSelfLink (\ s a -> s{_hhclSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+hhclWarning :: Lens' HTTPSHealthCheckList (Maybe HTTPSHealthCheckListWarning)
+hhclWarning
+  = lens _hhclWarning (\ s a -> s{_hhclWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclId = lens _hhclId (\ s a -> s{_hhclId = a})
+
+instance FromJSON HTTPSHealthCheckList where
+        parseJSON
+          = withObject "HTTPSHealthCheckList"
+              (\ o ->
+                 HTTPSHealthCheckList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#httpsHealthCheckList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON HTTPSHealthCheckList where
+        toJSON HTTPSHealthCheckList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _hhclNextPageToken,
+                  Just ("kind" .= _hhclKind),
+                  ("items" .=) <$> _hhclItems,
+                  ("selfLink" .=) <$> _hhclSelfLink,
+                  ("warning" .=) <$> _hhclWarning,
+                  ("id" .=) <$> _hhclId])
+
+--
+-- /See:/ 'addressListWarningDataItem' smart constructor.
+data AddressListWarningDataItem = AddressListWarningDataItem'
+    { _addValue :: !(Maybe Text)
+    , _addKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addValue'
+--
+-- * 'addKey'
+addressListWarningDataItem
+    :: AddressListWarningDataItem
+addressListWarningDataItem =
+    AddressListWarningDataItem'
+    { _addValue = Nothing
+    , _addKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+addValue :: Lens' AddressListWarningDataItem (Maybe Text)
+addValue = lens _addValue (\ s a -> s{_addValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+addKey :: Lens' AddressListWarningDataItem (Maybe Text)
+addKey = lens _addKey (\ s a -> s{_addKey = a})
+
+instance FromJSON AddressListWarningDataItem where
+        parseJSON
+          = withObject "AddressListWarningDataItem"
+              (\ o ->
+                 AddressListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AddressListWarningDataItem where
+        toJSON AddressListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _addValue, ("key" .=) <$> _addKey])
+
+--
+-- /See:/ 'operationErrorErrorsItem' smart constructor.
+data OperationErrorErrorsItem = OperationErrorErrorsItem'
+    { _oeeiLocation :: !(Maybe Text)
+    , _oeeiCode     :: !(Maybe Text)
+    , _oeeiMessage  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeeiLocation'
+--
+-- * 'oeeiCode'
+--
+-- * 'oeeiMessage'
+operationErrorErrorsItem
+    :: OperationErrorErrorsItem
+operationErrorErrorsItem =
+    OperationErrorErrorsItem'
+    { _oeeiLocation = Nothing
+    , _oeeiCode = Nothing
+    , _oeeiMessage = Nothing
+    }
+
+-- | [Output Only] Indicates the field in the request that caused the error.
+-- This property is optional.
+oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiLocation
+  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})
+
+-- | [Output Only] The error type identifier for this error.
+oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})
+
+-- | [Output Only] An optional, human-readable error message.
+oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiMessage
+  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})
+
+instance FromJSON OperationErrorErrorsItem where
+        parseJSON
+          = withObject "OperationErrorErrorsItem"
+              (\ o ->
+                 OperationErrorErrorsItem' <$>
+                   (o .:? "location") <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationErrorErrorsItem where
+        toJSON OperationErrorErrorsItem'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _oeeiLocation,
+                  ("code" .=) <$> _oeeiCode,
+                  ("message" .=) <$> _oeeiMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'commitmentListWarning' smart constructor.
+data CommitmentListWarning = CommitmentListWarning'
+    { _clwData    :: !(Maybe [CommitmentListWarningDataItem])
+    , _clwCode    :: !(Maybe CommitmentListWarningCode)
+    , _clwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clwData'
+--
+-- * 'clwCode'
+--
+-- * 'clwMessage'
+commitmentListWarning
+    :: CommitmentListWarning
+commitmentListWarning =
+    CommitmentListWarning'
+    { _clwData = Nothing
+    , _clwCode = Nothing
+    , _clwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+clwData :: Lens' CommitmentListWarning [CommitmentListWarningDataItem]
+clwData
+  = lens _clwData (\ s a -> s{_clwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+clwCode :: Lens' CommitmentListWarning (Maybe CommitmentListWarningCode)
+clwCode = lens _clwCode (\ s a -> s{_clwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+clwMessage :: Lens' CommitmentListWarning (Maybe Text)
+clwMessage
+  = lens _clwMessage (\ s a -> s{_clwMessage = a})
+
+instance FromJSON CommitmentListWarning where
+        parseJSON
+          = withObject "CommitmentListWarning"
+              (\ o ->
+                 CommitmentListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON CommitmentListWarning where
+        toJSON CommitmentListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _clwData, ("code" .=) <$> _clwCode,
+                  ("message" .=) <$> _clwMessage])
+
+-- | A license resource.
+--
+-- /See:/ 'license' smart constructor.
+data License = License'
+    { _lChargesUseFee        :: !(Maybe Bool)
+    , _lKind                 :: !Text
+    , _lResourceRequirements :: !(Maybe LicenseResourceRequirements)
+    , _lTransferable         :: !(Maybe Bool)
+    , _lSelfLink             :: !(Maybe Text)
+    , _lName                 :: !(Maybe Text)
+    , _lCreationTimestamp    :: !(Maybe Text)
+    , _lId                   :: !(Maybe (Textual Word64))
+    , _lDescription          :: !(Maybe Text)
+    , _lLicenseCode          :: !(Maybe (Textual Word64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'License' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lChargesUseFee'
+--
+-- * 'lKind'
+--
+-- * 'lResourceRequirements'
+--
+-- * 'lTransferable'
+--
+-- * 'lSelfLink'
+--
+-- * 'lName'
+--
+-- * 'lCreationTimestamp'
+--
+-- * 'lId'
+--
+-- * 'lDescription'
+--
+-- * 'lLicenseCode'
+license
+    :: License
+license =
+    License'
+    { _lChargesUseFee = Nothing
+    , _lKind = "compute#license"
+    , _lResourceRequirements = Nothing
+    , _lTransferable = Nothing
+    , _lSelfLink = Nothing
+    , _lName = Nothing
+    , _lCreationTimestamp = Nothing
+    , _lId = Nothing
+    , _lDescription = Nothing
+    , _lLicenseCode = Nothing
+    }
+
+-- | [Output Only] Deprecated. This field no longer reflects whether a
+-- license charges a usage fee.
+lChargesUseFee :: Lens' License (Maybe Bool)
+lChargesUseFee
+  = lens _lChargesUseFee
+      (\ s a -> s{_lChargesUseFee = a})
+
+-- | [Output Only] Type of resource. Always compute#license for licenses.
+lKind :: Lens' License Text
+lKind = lens _lKind (\ s a -> s{_lKind = a})
+
+lResourceRequirements :: Lens' License (Maybe LicenseResourceRequirements)
+lResourceRequirements
+  = lens _lResourceRequirements
+      (\ s a -> s{_lResourceRequirements = a})
+
+-- | If false, licenses will not be copied from the source resource when
+-- creating an image from a disk, disk from snapshot, or snapshot from
+-- disk.
+lTransferable :: Lens' License (Maybe Bool)
+lTransferable
+  = lens _lTransferable
+      (\ s a -> s{_lTransferable = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+lSelfLink :: Lens' License (Maybe Text)
+lSelfLink
+  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})
+
+-- | Name of the resource. The name must be 1-63 characters long and comply
+-- with RFC1035.
+lName :: Lens' License (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+lCreationTimestamp :: Lens' License (Maybe Text)
+lCreationTimestamp
+  = lens _lCreationTimestamp
+      (\ s a -> s{_lCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+lId :: Lens' License (Maybe Word64)
+lId
+  = lens _lId (\ s a -> s{_lId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+lDescription :: Lens' License (Maybe Text)
+lDescription
+  = lens _lDescription (\ s a -> s{_lDescription = a})
+
+-- | [Output Only] The unique code used to attach this license to images,
+-- snapshots, and disks.
+lLicenseCode :: Lens' License (Maybe Word64)
+lLicenseCode
+  = lens _lLicenseCode (\ s a -> s{_lLicenseCode = a})
+      . mapping _Coerce
+
+instance FromJSON License where
+        parseJSON
+          = withObject "License"
+              (\ o ->
+                 License' <$>
+                   (o .:? "chargesUseFee") <*>
+                     (o .:? "kind" .!= "compute#license")
+                     <*> (o .:? "resourceRequirements")
+                     <*> (o .:? "transferable")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "licenseCode"))
+
+instance ToJSON License where
+        toJSON License'{..}
+          = object
+              (catMaybes
+                 [("chargesUseFee" .=) <$> _lChargesUseFee,
+                  Just ("kind" .= _lKind),
+                  ("resourceRequirements" .=) <$>
+                    _lResourceRequirements,
+                  ("transferable" .=) <$> _lTransferable,
+                  ("selfLink" .=) <$> _lSelfLink,
+                  ("name" .=) <$> _lName,
+                  ("creationTimestamp" .=) <$> _lCreationTimestamp,
+                  ("id" .=) <$> _lId,
+                  ("description" .=) <$> _lDescription,
+                  ("licenseCode" .=) <$> _lLicenseCode])
+
+-- | A path-matching rule for a URL. If matched, will use the specified
+-- BackendService to handle the traffic arriving at this URL.
+--
+-- /See:/ 'pathRule' smart constructor.
+data PathRule = PathRule'
+    { _prService :: !(Maybe Text)
+    , _prPaths   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PathRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prService'
+--
+-- * 'prPaths'
+pathRule
+    :: PathRule
+pathRule =
+    PathRule'
+    { _prService = Nothing
+    , _prPaths = Nothing
+    }
+
+-- | The URL of the backend service resource if this rule is matched. Use
+-- service instead of routeAction when simple routing to a backend service
+-- is desired and other advanced capabilities like traffic splitting and
+-- rewrites are not required. Only one of service, routeAction or
+-- urlRedirect should must be set.
+prService :: Lens' PathRule (Maybe Text)
+prService
+  = lens _prService (\ s a -> s{_prService = a})
+
+-- | The list of path patterns to match. Each must start with \/ and the only
+-- place a * is allowed is at the end following a \/. The string fed to the
+-- path matcher does not include any text after the first ? or #, and those
+-- chars are not allowed here.
+prPaths :: Lens' PathRule [Text]
+prPaths
+  = lens _prPaths (\ s a -> s{_prPaths = a}) . _Default
+      . _Coerce
+
+instance FromJSON PathRule where
+        parseJSON
+          = withObject "PathRule"
+              (\ o ->
+                 PathRule' <$>
+                   (o .:? "service") <*> (o .:? "paths" .!= mempty))
+
+instance ToJSON PathRule where
+        toJSON PathRule'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _prService,
+                  ("paths" .=) <$> _prPaths])
+
+--
+-- /See:/ 'licenseCodeLicenseAlias' smart constructor.
+data LicenseCodeLicenseAlias = LicenseCodeLicenseAlias'
+    { _lclaSelfLink    :: !(Maybe Text)
+    , _lclaDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicenseCodeLicenseAlias' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lclaSelfLink'
+--
+-- * 'lclaDescription'
+licenseCodeLicenseAlias
+    :: LicenseCodeLicenseAlias
+licenseCodeLicenseAlias =
+    LicenseCodeLicenseAlias'
+    { _lclaSelfLink = Nothing
+    , _lclaDescription = Nothing
+    }
+
+-- | [Output Only] URL of license corresponding to this License Code.
+lclaSelfLink :: Lens' LicenseCodeLicenseAlias (Maybe Text)
+lclaSelfLink
+  = lens _lclaSelfLink (\ s a -> s{_lclaSelfLink = a})
+
+-- | [Output Only] Description of this License Code.
+lclaDescription :: Lens' LicenseCodeLicenseAlias (Maybe Text)
+lclaDescription
+  = lens _lclaDescription
+      (\ s a -> s{_lclaDescription = a})
+
+instance FromJSON LicenseCodeLicenseAlias where
+        parseJSON
+          = withObject "LicenseCodeLicenseAlias"
+              (\ o ->
+                 LicenseCodeLicenseAlias' <$>
+                   (o .:? "selfLink") <*> (o .:? "description"))
+
+instance ToJSON LicenseCodeLicenseAlias where
+        toJSON LicenseCodeLicenseAlias'{..}
+          = object
+              (catMaybes
+                 [("selfLink" .=) <$> _lclaSelfLink,
+                  ("description" .=) <$> _lclaDescription])
+
+--
+-- /See:/ 'interconnectAttachmentsScopedListWarningDataItem' smart constructor.
+data InterconnectAttachmentsScopedListWarningDataItem = InterconnectAttachmentsScopedListWarningDataItem'
+    { _iaslwdiValue :: !(Maybe Text)
+    , _iaslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaslwdiValue'
+--
+-- * 'iaslwdiKey'
+interconnectAttachmentsScopedListWarningDataItem
+    :: InterconnectAttachmentsScopedListWarningDataItem
+interconnectAttachmentsScopedListWarningDataItem =
+    InterconnectAttachmentsScopedListWarningDataItem'
+    { _iaslwdiValue = Nothing
+    , _iaslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+iaslwdiValue :: Lens' InterconnectAttachmentsScopedListWarningDataItem (Maybe Text)
+iaslwdiValue
+  = lens _iaslwdiValue (\ s a -> s{_iaslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+iaslwdiKey :: Lens' InterconnectAttachmentsScopedListWarningDataItem (Maybe Text)
+iaslwdiKey
+  = lens _iaslwdiKey (\ s a -> s{_iaslwdiKey = a})
+
+instance FromJSON
+         InterconnectAttachmentsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentsScopedListWarningDataItem"
+              (\ o ->
+                 InterconnectAttachmentsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InterconnectAttachmentsScopedListWarningDataItem
+         where
+        toJSON
+          InterconnectAttachmentsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _iaslwdiValue,
+                  ("key" .=) <$> _iaslwdiKey])
+
+--
+-- /See:/ 'securityPolicyListWarningDataItem' smart constructor.
+data SecurityPolicyListWarningDataItem = SecurityPolicyListWarningDataItem'
+    { _secValue :: !(Maybe Text)
+    , _secKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secValue'
+--
+-- * 'secKey'
+securityPolicyListWarningDataItem
+    :: SecurityPolicyListWarningDataItem
+securityPolicyListWarningDataItem =
+    SecurityPolicyListWarningDataItem'
+    { _secValue = Nothing
+    , _secKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+secValue :: Lens' SecurityPolicyListWarningDataItem (Maybe Text)
+secValue = lens _secValue (\ s a -> s{_secValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+secKey :: Lens' SecurityPolicyListWarningDataItem (Maybe Text)
+secKey = lens _secKey (\ s a -> s{_secKey = a})
+
+instance FromJSON SecurityPolicyListWarningDataItem
+         where
+        parseJSON
+          = withObject "SecurityPolicyListWarningDataItem"
+              (\ o ->
+                 SecurityPolicyListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON SecurityPolicyListWarningDataItem
+         where
+        toJSON SecurityPolicyListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _secValue, ("key" .=) <$> _secKey])
+
+-- | Provides the configuration for logging a type of permissions. Example: {
+-- \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", } ] } This enables \'DATA_READ\' and \'DATA_WRITE\'
+-- logging, while exempting foo\'gmail.com from DATA_READ logging.
+--
+-- /See:/ 'auditLogConfig' smart constructor.
+data AuditLogConfig = AuditLogConfig'
+    { _alcLogType         :: !(Maybe AuditLogConfigLogType)
+    , _alcExemptedMembers :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditLogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alcLogType'
+--
+-- * 'alcExemptedMembers'
+auditLogConfig
+    :: AuditLogConfig
+auditLogConfig =
+    AuditLogConfig'
+    { _alcLogType = Nothing
+    , _alcExemptedMembers = Nothing
+    }
+
+-- | The log type that this config enables.
+alcLogType :: Lens' AuditLogConfig (Maybe AuditLogConfigLogType)
+alcLogType
+  = lens _alcLogType (\ s a -> s{_alcLogType = a})
+
+-- | Specifies the identities that do not cause logging for this type of
+-- permission. Follows the same format of [Binding.members][].
+alcExemptedMembers :: Lens' AuditLogConfig [Text]
+alcExemptedMembers
+  = lens _alcExemptedMembers
+      (\ s a -> s{_alcExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditLogConfig where
+        parseJSON
+          = withObject "AuditLogConfig"
+              (\ o ->
+                 AuditLogConfig' <$>
+                   (o .:? "logType") <*>
+                     (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditLogConfig where
+        toJSON AuditLogConfig'{..}
+          = object
+              (catMaybes
+                 [("logType" .=) <$> _alcLogType,
+                  ("exemptedMembers" .=) <$> _alcExemptedMembers])
+
+--
+-- /See:/ 'commitmentsScopedListWarningDataItem' smart constructor.
+data CommitmentsScopedListWarningDataItem = CommitmentsScopedListWarningDataItem'
+    { _cslwdiValue :: !(Maybe Text)
+    , _cslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cslwdiValue'
+--
+-- * 'cslwdiKey'
+commitmentsScopedListWarningDataItem
+    :: CommitmentsScopedListWarningDataItem
+commitmentsScopedListWarningDataItem =
+    CommitmentsScopedListWarningDataItem'
+    { _cslwdiValue = Nothing
+    , _cslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+cslwdiValue :: Lens' CommitmentsScopedListWarningDataItem (Maybe Text)
+cslwdiValue
+  = lens _cslwdiValue (\ s a -> s{_cslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+cslwdiKey :: Lens' CommitmentsScopedListWarningDataItem (Maybe Text)
+cslwdiKey
+  = lens _cslwdiKey (\ s a -> s{_cslwdiKey = a})
+
+instance FromJSON
+         CommitmentsScopedListWarningDataItem where
+        parseJSON
+          = withObject "CommitmentsScopedListWarningDataItem"
+              (\ o ->
+                 CommitmentsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON CommitmentsScopedListWarningDataItem
+         where
+        toJSON CommitmentsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _cslwdiValue,
+                  ("key" .=) <$> _cslwdiKey])
+
+-- | Represents an InterconnectAttachment (VLAN attachment) resource. For
+-- more information, see Creating VLAN Attachments. (== resource_for
+-- beta.interconnectAttachments ==) (== resource_for
+-- v1.interconnectAttachments ==)
+--
+-- /See:/ 'interconnectAttachment' smart constructor.
+data InterconnectAttachment = InterconnectAttachment'
+    { _iaState                   :: !(Maybe InterconnectAttachmentState)
+    , _iaPartnerASN              :: !(Maybe (Textual Int64))
+    , _iaPairingKey              :: !(Maybe Text)
+    , _iaKind                    :: !Text
+    , _iaCustomerRouterIPAddress :: !(Maybe Text)
+    , _iaPartnerMetadata         :: !(Maybe InterconnectAttachmentPartnerMetadata)
+    , _iaRouter                  :: !(Maybe Text)
+    , _iaOperationalStatus       :: !(Maybe InterconnectAttachmentOperationalStatus)
+    , _iaSelfLink                :: !(Maybe Text)
+    , _iaName                    :: !(Maybe Text)
+    , _iaBandwidth               :: !(Maybe InterconnectAttachmentBandwidth)
+    , _iaGoogleReferenceId       :: !(Maybe Text)
+    , _iaCreationTimestamp       :: !(Maybe Text)
+    , _iaEdgeAvailabilityDomain  :: !(Maybe InterconnectAttachmentEdgeAvailabilityDomain)
+    , _iaInterconnect            :: !(Maybe Text)
+    , _iaAdminEnabled            :: !(Maybe Bool)
+    , _iaVLANTag8021q            :: !(Maybe (Textual Int32))
+    , _iaCloudRouterIPAddress    :: !(Maybe Text)
+    , _iaId                      :: !(Maybe (Textual Word64))
+    , _iaCandidateSubnets        :: !(Maybe [Text])
+    , _iaRegion                  :: !(Maybe Text)
+    , _iaType                    :: !(Maybe InterconnectAttachmentType)
+    , _iaDescription             :: !(Maybe Text)
+    , _iaPrivateInterconnectInfo :: !(Maybe InterconnectAttachmentPrivateInfo)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaState'
+--
+-- * 'iaPartnerASN'
+--
+-- * 'iaPairingKey'
+--
+-- * 'iaKind'
+--
+-- * 'iaCustomerRouterIPAddress'
+--
+-- * 'iaPartnerMetadata'
+--
+-- * 'iaRouter'
+--
+-- * 'iaOperationalStatus'
+--
+-- * 'iaSelfLink'
+--
+-- * 'iaName'
+--
+-- * 'iaBandwidth'
+--
+-- * 'iaGoogleReferenceId'
+--
+-- * 'iaCreationTimestamp'
+--
+-- * 'iaEdgeAvailabilityDomain'
+--
+-- * 'iaInterconnect'
+--
+-- * 'iaAdminEnabled'
+--
+-- * 'iaVLANTag8021q'
+--
+-- * 'iaCloudRouterIPAddress'
+--
+-- * 'iaId'
+--
+-- * 'iaCandidateSubnets'
+--
+-- * 'iaRegion'
+--
+-- * 'iaType'
+--
+-- * 'iaDescription'
+--
+-- * 'iaPrivateInterconnectInfo'
+interconnectAttachment
+    :: InterconnectAttachment
+interconnectAttachment =
+    InterconnectAttachment'
+    { _iaState = Nothing
+    , _iaPartnerASN = Nothing
+    , _iaPairingKey = Nothing
+    , _iaKind = "compute#interconnectAttachment"
+    , _iaCustomerRouterIPAddress = Nothing
+    , _iaPartnerMetadata = Nothing
+    , _iaRouter = Nothing
+    , _iaOperationalStatus = Nothing
+    , _iaSelfLink = Nothing
+    , _iaName = Nothing
+    , _iaBandwidth = Nothing
+    , _iaGoogleReferenceId = Nothing
+    , _iaCreationTimestamp = Nothing
+    , _iaEdgeAvailabilityDomain = Nothing
+    , _iaInterconnect = Nothing
+    , _iaAdminEnabled = Nothing
+    , _iaVLANTag8021q = Nothing
+    , _iaCloudRouterIPAddress = Nothing
+    , _iaId = Nothing
+    , _iaCandidateSubnets = Nothing
+    , _iaRegion = Nothing
+    , _iaType = Nothing
+    , _iaDescription = Nothing
+    , _iaPrivateInterconnectInfo = Nothing
+    }
+
+-- | [Output Only] The current state of this attachment\'s functionality.
+iaState :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentState)
+iaState = lens _iaState (\ s a -> s{_iaState = a})
+
+-- | Optional BGP ASN for the router that should be supplied by a layer 3
+-- Partner if they configured BGP on behalf of the customer. Output only
+-- for PARTNER type, input only for PARTNER_PROVIDER, not available for
+-- DEDICATED.
+iaPartnerASN :: Lens' InterconnectAttachment (Maybe Int64)
+iaPartnerASN
+  = lens _iaPartnerASN (\ s a -> s{_iaPartnerASN = a})
+      . mapping _Coerce
+
+-- | [Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not
+-- present for DEDICATED]. The opaque identifier of an PARTNER attachment
+-- used to initiate provisioning with a selected partner. Of the form
+-- \"XXXXX\/region\/domain\"
+iaPairingKey :: Lens' InterconnectAttachment (Maybe Text)
+iaPairingKey
+  = lens _iaPairingKey (\ s a -> s{_iaPairingKey = a})
+
+-- | [Output Only] Type of the resource. Always
+-- compute#interconnectAttachment for interconnect attachments.
+iaKind :: Lens' InterconnectAttachment Text
+iaKind = lens _iaKind (\ s a -> s{_iaKind = a})
+
+-- | [Output Only] IPv4 address + prefix length to be configured on the
+-- customer router subinterface for this interconnect attachment.
+iaCustomerRouterIPAddress :: Lens' InterconnectAttachment (Maybe Text)
+iaCustomerRouterIPAddress
+  = lens _iaCustomerRouterIPAddress
+      (\ s a -> s{_iaCustomerRouterIPAddress = a})
+
+-- | Informational metadata about Partner attachments from Partners to
+-- display to customers. Output only for for PARTNER type, mutable for
+-- PARTNER_PROVIDER, not available for DEDICATED.
+iaPartnerMetadata :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentPartnerMetadata)
+iaPartnerMetadata
+  = lens _iaPartnerMetadata
+      (\ s a -> s{_iaPartnerMetadata = a})
+
+-- | URL of the Cloud Router to be used for dynamic routing. This router must
+-- be in the same region as this InterconnectAttachment. The
+-- InterconnectAttachment will automatically connect the Interconnect to
+-- the network & region within which the Cloud Router is configured.
+iaRouter :: Lens' InterconnectAttachment (Maybe Text)
+iaRouter = lens _iaRouter (\ s a -> s{_iaRouter = a})
+
+-- | [Output Only] The current status of whether or not this interconnect
+-- attachment is functional.
+iaOperationalStatus :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentOperationalStatus)
+iaOperationalStatus
+  = lens _iaOperationalStatus
+      (\ s a -> s{_iaOperationalStatus = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+iaSelfLink :: Lens' InterconnectAttachment (Maybe Text)
+iaSelfLink
+  = lens _iaSelfLink (\ s a -> s{_iaSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+iaName :: Lens' InterconnectAttachment (Maybe Text)
+iaName = lens _iaName (\ s a -> s{_iaName = a})
+
+-- | Provisioned bandwidth capacity for the interconnectAttachment. Can be
+-- set by the partner to update the customer\'s provisioned bandwidth.
+-- Output only for PARTNER type, mutable for PARTNER_PROVIDER and
+-- DEDICATED.
+iaBandwidth :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentBandwidth)
+iaBandwidth
+  = lens _iaBandwidth (\ s a -> s{_iaBandwidth = a})
+
+-- | [Output Only] Google reference ID, to be used when raising support
+-- tickets with Google or otherwise to debug backend connectivity issues.
+iaGoogleReferenceId :: Lens' InterconnectAttachment (Maybe Text)
+iaGoogleReferenceId
+  = lens _iaGoogleReferenceId
+      (\ s a -> s{_iaGoogleReferenceId = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+iaCreationTimestamp :: Lens' InterconnectAttachment (Maybe Text)
+iaCreationTimestamp
+  = lens _iaCreationTimestamp
+      (\ s a -> s{_iaCreationTimestamp = a})
+
+-- | Desired availability domain for the attachment. Only available for type
+-- PARTNER, at creation time. For improved reliability, customers should
+-- configure a pair of attachments with one per availability domain. The
+-- selected availability domain will be provided to the Partner via the
+-- pairing key so that the provisioned circuit will lie in the specified
+-- domain. If not specified, the value will default to
+-- AVAILABILITY_DOMAIN_ANY.
+iaEdgeAvailabilityDomain :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentEdgeAvailabilityDomain)
+iaEdgeAvailabilityDomain
+  = lens _iaEdgeAvailabilityDomain
+      (\ s a -> s{_iaEdgeAvailabilityDomain = a})
+
+-- | URL of the underlying Interconnect object that this attachment\'s
+-- traffic will traverse through.
+iaInterconnect :: Lens' InterconnectAttachment (Maybe Text)
+iaInterconnect
+  = lens _iaInterconnect
+      (\ s a -> s{_iaInterconnect = a})
+
+-- | Determines whether this Attachment will carry packets. Not present for
+-- PARTNER_PROVIDER.
+iaAdminEnabled :: Lens' InterconnectAttachment (Maybe Bool)
+iaAdminEnabled
+  = lens _iaAdminEnabled
+      (\ s a -> s{_iaAdminEnabled = a})
+
+-- | The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. Only
+-- specified at creation time.
+iaVLANTag8021q :: Lens' InterconnectAttachment (Maybe Int32)
+iaVLANTag8021q
+  = lens _iaVLANTag8021q
+      (\ s a -> s{_iaVLANTag8021q = a})
+      . mapping _Coerce
+
+-- | [Output Only] IPv4 address + prefix length to be configured on Cloud
+-- Router Interface for this interconnect attachment.
+iaCloudRouterIPAddress :: Lens' InterconnectAttachment (Maybe Text)
+iaCloudRouterIPAddress
+  = lens _iaCloudRouterIPAddress
+      (\ s a -> s{_iaCloudRouterIPAddress = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+iaId :: Lens' InterconnectAttachment (Maybe Word64)
+iaId
+  = lens _iaId (\ s a -> s{_iaId = a}) .
+      mapping _Coerce
+
+-- | Up to 16 candidate prefixes that can be used to restrict the allocation
+-- of cloudRouterIpAddress and customerRouterIpAddress for this attachment.
+-- All prefixes must be within link-local address space (169.254.0.0\/16)
+-- and must be \/29 or shorter (\/28, \/27, etc). Google will attempt to
+-- select an unused \/29 from the supplied candidate prefix(es). The
+-- request will fail if all possible \/29s are in use on Google?s edge. If
+-- not supplied, Google will randomly select an unused \/29 from all of
+-- link-local space.
+iaCandidateSubnets :: Lens' InterconnectAttachment [Text]
+iaCandidateSubnets
+  = lens _iaCandidateSubnets
+      (\ s a -> s{_iaCandidateSubnets = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] URL of the region where the regional interconnect
+-- attachment resides. You must specify this field as part of the HTTP
+-- request URL. It is not settable as a field in the request body.
+iaRegion :: Lens' InterconnectAttachment (Maybe Text)
+iaRegion = lens _iaRegion (\ s a -> s{_iaRegion = a})
+
+iaType :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentType)
+iaType = lens _iaType (\ s a -> s{_iaType = a})
+
+-- | An optional description of this resource.
+iaDescription :: Lens' InterconnectAttachment (Maybe Text)
+iaDescription
+  = lens _iaDescription
+      (\ s a -> s{_iaDescription = a})
+
+-- | [Output Only] Information specific to an InterconnectAttachment. This
+-- property is populated if the interconnect that this is attached to is of
+-- type DEDICATED.
+iaPrivateInterconnectInfo :: Lens' InterconnectAttachment (Maybe InterconnectAttachmentPrivateInfo)
+iaPrivateInterconnectInfo
+  = lens _iaPrivateInterconnectInfo
+      (\ s a -> s{_iaPrivateInterconnectInfo = a})
+
+instance FromJSON InterconnectAttachment where
+        parseJSON
+          = withObject "InterconnectAttachment"
+              (\ o ->
+                 InterconnectAttachment' <$>
+                   (o .:? "state") <*> (o .:? "partnerAsn") <*>
+                     (o .:? "pairingKey")
+                     <*>
+                     (o .:? "kind" .!= "compute#interconnectAttachment")
+                     <*> (o .:? "customerRouterIpAddress")
+                     <*> (o .:? "partnerMetadata")
+                     <*> (o .:? "router")
+                     <*> (o .:? "operationalStatus")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "bandwidth")
+                     <*> (o .:? "googleReferenceId")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "edgeAvailabilityDomain")
+                     <*> (o .:? "interconnect")
+                     <*> (o .:? "adminEnabled")
+                     <*> (o .:? "vlanTag8021q")
+                     <*> (o .:? "cloudRouterIpAddress")
+                     <*> (o .:? "id")
+                     <*> (o .:? "candidateSubnets" .!= mempty)
+                     <*> (o .:? "region")
+                     <*> (o .:? "type")
+                     <*> (o .:? "description")
+                     <*> (o .:? "privateInterconnectInfo"))
+
+instance ToJSON InterconnectAttachment where
+        toJSON InterconnectAttachment'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _iaState,
+                  ("partnerAsn" .=) <$> _iaPartnerASN,
+                  ("pairingKey" .=) <$> _iaPairingKey,
+                  Just ("kind" .= _iaKind),
+                  ("customerRouterIpAddress" .=) <$>
+                    _iaCustomerRouterIPAddress,
+                  ("partnerMetadata" .=) <$> _iaPartnerMetadata,
+                  ("router" .=) <$> _iaRouter,
+                  ("operationalStatus" .=) <$> _iaOperationalStatus,
+                  ("selfLink" .=) <$> _iaSelfLink,
+                  ("name" .=) <$> _iaName,
+                  ("bandwidth" .=) <$> _iaBandwidth,
+                  ("googleReferenceId" .=) <$> _iaGoogleReferenceId,
+                  ("creationTimestamp" .=) <$> _iaCreationTimestamp,
+                  ("edgeAvailabilityDomain" .=) <$>
+                    _iaEdgeAvailabilityDomain,
+                  ("interconnect" .=) <$> _iaInterconnect,
+                  ("adminEnabled" .=) <$> _iaAdminEnabled,
+                  ("vlanTag8021q" .=) <$> _iaVLANTag8021q,
+                  ("cloudRouterIpAddress" .=) <$>
+                    _iaCloudRouterIPAddress,
+                  ("id" .=) <$> _iaId,
+                  ("candidateSubnets" .=) <$> _iaCandidateSubnets,
+                  ("region" .=) <$> _iaRegion, ("type" .=) <$> _iaType,
+                  ("description" .=) <$> _iaDescription,
+                  ("privateInterconnectInfo" .=) <$>
+                    _iaPrivateInterconnectInfo])
+
+-- | Contains a list of instances.
+--
+-- /See:/ 'instanceList' smart constructor.
+data InstanceList = InstanceList'
+    { _insNextPageToken :: !(Maybe Text)
+    , _insKind          :: !Text
+    , _insItems         :: !(Maybe [Instance])
+    , _insSelfLink      :: !(Maybe Text)
+    , _insWarning       :: !(Maybe InstanceListWarning)
+    , _insId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insNextPageToken'
+--
+-- * 'insKind'
+--
+-- * 'insItems'
+--
+-- * 'insSelfLink'
+--
+-- * 'insWarning'
+--
+-- * 'insId'
+instanceList
+    :: InstanceList
+instanceList =
+    InstanceList'
+    { _insNextPageToken = Nothing
+    , _insKind = "compute#instanceList"
+    , _insItems = Nothing
+    , _insSelfLink = Nothing
+    , _insWarning = Nothing
+    , _insId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+insNextPageToken :: Lens' InstanceList (Maybe Text)
+insNextPageToken
+  = lens _insNextPageToken
+      (\ s a -> s{_insNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#instanceList for lists of
+-- Instance resources.
+insKind :: Lens' InstanceList Text
+insKind = lens _insKind (\ s a -> s{_insKind = a})
+
+-- | A list of Instance resources.
+insItems :: Lens' InstanceList [Instance]
+insItems
+  = lens _insItems (\ s a -> s{_insItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+insSelfLink :: Lens' InstanceList (Maybe Text)
+insSelfLink
+  = lens _insSelfLink (\ s a -> s{_insSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+insWarning :: Lens' InstanceList (Maybe InstanceListWarning)
+insWarning
+  = lens _insWarning (\ s a -> s{_insWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+insId :: Lens' InstanceList (Maybe Text)
+insId = lens _insId (\ s a -> s{_insId = a})
+
+instance FromJSON InstanceList where
+        parseJSON
+          = withObject "InstanceList"
+              (\ o ->
+                 InstanceList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceList where
+        toJSON InstanceList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _insNextPageToken,
+                  Just ("kind" .= _insKind),
+                  ("items" .=) <$> _insItems,
+                  ("selfLink" .=) <$> _insSelfLink,
+                  ("warning" .=) <$> _insWarning,
+                  ("id" .=) <$> _insId])
+
+-- | The labels to set for this resource.
+--
+-- /See:/ 'regionSetLabelsRequestLabels' smart constructor.
+newtype RegionSetLabelsRequestLabels = RegionSetLabelsRequestLabels'
+    { _rslrlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionSetLabelsRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslrlAddtional'
+regionSetLabelsRequestLabels
+    :: HashMap Text Text -- ^ 'rslrlAddtional'
+    -> RegionSetLabelsRequestLabels
+regionSetLabelsRequestLabels pRslrlAddtional_ =
+    RegionSetLabelsRequestLabels'
+    { _rslrlAddtional = _Coerce # pRslrlAddtional_
+    }
+
+rslrlAddtional :: Lens' RegionSetLabelsRequestLabels (HashMap Text Text)
+rslrlAddtional
+  = lens _rslrlAddtional
+      (\ s a -> s{_rslrlAddtional = a})
+      . _Coerce
+
+instance FromJSON RegionSetLabelsRequestLabels where
+        parseJSON
+          = withObject "RegionSetLabelsRequestLabels"
+              (\ o ->
+                 RegionSetLabelsRequestLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON RegionSetLabelsRequestLabels where
+        toJSON = toJSON . _rslrlAddtional
+
+--
+-- /See:/ 'networkListWarningDataItem' smart constructor.
+data NetworkListWarningDataItem = NetworkListWarningDataItem'
+    { _nlwdiValue :: !(Maybe Text)
+    , _nlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nlwdiValue'
+--
+-- * 'nlwdiKey'
+networkListWarningDataItem
+    :: NetworkListWarningDataItem
+networkListWarningDataItem =
+    NetworkListWarningDataItem'
+    { _nlwdiValue = Nothing
+    , _nlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+nlwdiValue :: Lens' NetworkListWarningDataItem (Maybe Text)
+nlwdiValue
+  = lens _nlwdiValue (\ s a -> s{_nlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+nlwdiKey :: Lens' NetworkListWarningDataItem (Maybe Text)
+nlwdiKey = lens _nlwdiKey (\ s a -> s{_nlwdiKey = a})
+
+instance FromJSON NetworkListWarningDataItem where
+        parseJSON
+          = withObject "NetworkListWarningDataItem"
+              (\ o ->
+                 NetworkListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON NetworkListWarningDataItem where
+        toJSON NetworkListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _nlwdiValue,
+                  ("key" .=) <$> _nlwdiKey])
+
+-- | Message containing what to include in the cache key for a request for
+-- Cloud CDN.
+--
+-- /See:/ 'cacheKeyPolicy' smart constructor.
+data CacheKeyPolicy = CacheKeyPolicy'
+    { _ckpQueryStringWhiteList :: !(Maybe [Text])
+    , _ckpIncludeHost          :: !(Maybe Bool)
+    , _ckpIncludeProtocol      :: !(Maybe Bool)
+    , _ckpQueryStringBlackList :: !(Maybe [Text])
+    , _ckpIncludeQueryString   :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CacheKeyPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ckpQueryStringWhiteList'
+--
+-- * 'ckpIncludeHost'
+--
+-- * 'ckpIncludeProtocol'
+--
+-- * 'ckpQueryStringBlackList'
+--
+-- * 'ckpIncludeQueryString'
+cacheKeyPolicy
+    :: CacheKeyPolicy
+cacheKeyPolicy =
+    CacheKeyPolicy'
+    { _ckpQueryStringWhiteList = Nothing
+    , _ckpIncludeHost = Nothing
+    , _ckpIncludeProtocol = Nothing
+    , _ckpQueryStringBlackList = Nothing
+    , _ckpIncludeQueryString = Nothing
+    }
+
+-- | Names of query string parameters to include in cache keys. All other
+-- parameters will be excluded. Either specify query_string_whitelist or
+-- query_string_blacklist, not both. \'&\' and \'=\' will be percent
+-- encoded and not treated as delimiters.
+ckpQueryStringWhiteList :: Lens' CacheKeyPolicy [Text]
+ckpQueryStringWhiteList
+  = lens _ckpQueryStringWhiteList
+      (\ s a -> s{_ckpQueryStringWhiteList = a})
+      . _Default
+      . _Coerce
+
+-- | If true, requests to different hosts will be cached separately.
+ckpIncludeHost :: Lens' CacheKeyPolicy (Maybe Bool)
+ckpIncludeHost
+  = lens _ckpIncludeHost
+      (\ s a -> s{_ckpIncludeHost = a})
+
+-- | If true, http and https requests will be cached separately.
+ckpIncludeProtocol :: Lens' CacheKeyPolicy (Maybe Bool)
+ckpIncludeProtocol
+  = lens _ckpIncludeProtocol
+      (\ s a -> s{_ckpIncludeProtocol = a})
+
+-- | Names of query string parameters to exclude in cache keys. All other
+-- parameters will be included. Either specify query_string_whitelist or
+-- query_string_blacklist, not both. \'&\' and \'=\' will be percent
+-- encoded and not treated as delimiters.
+ckpQueryStringBlackList :: Lens' CacheKeyPolicy [Text]
+ckpQueryStringBlackList
+  = lens _ckpQueryStringBlackList
+      (\ s a -> s{_ckpQueryStringBlackList = a})
+      . _Default
+      . _Coerce
+
+-- | If true, include query string parameters in the cache key according to
+-- query_string_whitelist and query_string_blacklist. If neither is set,
+-- the entire query string will be included. If false, the query string
+-- will be excluded from the cache key entirely.
+ckpIncludeQueryString :: Lens' CacheKeyPolicy (Maybe Bool)
+ckpIncludeQueryString
+  = lens _ckpIncludeQueryString
+      (\ s a -> s{_ckpIncludeQueryString = a})
+
+instance FromJSON CacheKeyPolicy where
+        parseJSON
+          = withObject "CacheKeyPolicy"
+              (\ o ->
+                 CacheKeyPolicy' <$>
+                   (o .:? "queryStringWhitelist" .!= mempty) <*>
+                     (o .:? "includeHost")
+                     <*> (o .:? "includeProtocol")
+                     <*> (o .:? "queryStringBlacklist" .!= mempty)
+                     <*> (o .:? "includeQueryString"))
+
+instance ToJSON CacheKeyPolicy where
+        toJSON CacheKeyPolicy'{..}
+          = object
+              (catMaybes
+                 [("queryStringWhitelist" .=) <$>
+                    _ckpQueryStringWhiteList,
+                  ("includeHost" .=) <$> _ckpIncludeHost,
+                  ("includeProtocol" .=) <$> _ckpIncludeProtocol,
+                  ("queryStringBlacklist" .=) <$>
+                    _ckpQueryStringBlackList,
+                  ("includeQueryString" .=) <$>
+                    _ckpIncludeQueryString])
+
+--
+-- /See:/ 'commitmentAggregatedListWarningDataItem' smart constructor.
+data CommitmentAggregatedListWarningDataItem = CommitmentAggregatedListWarningDataItem'
+    { _calwdiValue :: !(Maybe Text)
+    , _calwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'calwdiValue'
+--
+-- * 'calwdiKey'
+commitmentAggregatedListWarningDataItem
+    :: CommitmentAggregatedListWarningDataItem
+commitmentAggregatedListWarningDataItem =
+    CommitmentAggregatedListWarningDataItem'
+    { _calwdiValue = Nothing
+    , _calwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+calwdiValue :: Lens' CommitmentAggregatedListWarningDataItem (Maybe Text)
+calwdiValue
+  = lens _calwdiValue (\ s a -> s{_calwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+calwdiKey :: Lens' CommitmentAggregatedListWarningDataItem (Maybe Text)
+calwdiKey
+  = lens _calwdiKey (\ s a -> s{_calwdiKey = a})
+
+instance FromJSON
+         CommitmentAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "CommitmentAggregatedListWarningDataItem"
+              (\ o ->
+                 CommitmentAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         CommitmentAggregatedListWarningDataItem where
+        toJSON CommitmentAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _calwdiValue,
+                  ("key" .=) <$> _calwdiKey])
+
+--
+-- /See:/ 'regionInstanceGroupListWarningDataItem' smart constructor.
+data RegionInstanceGroupListWarningDataItem = RegionInstanceGroupListWarningDataItem'
+    { _riglwdiValue :: !(Maybe Text)
+    , _riglwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riglwdiValue'
+--
+-- * 'riglwdiKey'
+regionInstanceGroupListWarningDataItem
+    :: RegionInstanceGroupListWarningDataItem
+regionInstanceGroupListWarningDataItem =
+    RegionInstanceGroupListWarningDataItem'
+    { _riglwdiValue = Nothing
+    , _riglwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+riglwdiValue :: Lens' RegionInstanceGroupListWarningDataItem (Maybe Text)
+riglwdiValue
+  = lens _riglwdiValue (\ s a -> s{_riglwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+riglwdiKey :: Lens' RegionInstanceGroupListWarningDataItem (Maybe Text)
+riglwdiKey
+  = lens _riglwdiKey (\ s a -> s{_riglwdiKey = a})
+
+instance FromJSON
+         RegionInstanceGroupListWarningDataItem where
+        parseJSON
+          = withObject "RegionInstanceGroupListWarningDataItem"
+              (\ o ->
+                 RegionInstanceGroupListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         RegionInstanceGroupListWarningDataItem where
+        toJSON RegionInstanceGroupListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _riglwdiValue,
+                  ("key" .=) <$> _riglwdiKey])
+
+-- | A list of SubnetworksScopedList resources.
+--
+-- /See:/ 'subnetworkAggregatedListItems' smart constructor.
+newtype SubnetworkAggregatedListItems = SubnetworkAggregatedListItems'
+    { _saliAddtional :: HashMap Text SubnetworksScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworkAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saliAddtional'
+subnetworkAggregatedListItems
+    :: HashMap Text SubnetworksScopedList -- ^ 'saliAddtional'
+    -> SubnetworkAggregatedListItems
+subnetworkAggregatedListItems pSaliAddtional_ =
+    SubnetworkAggregatedListItems'
+    { _saliAddtional = _Coerce # pSaliAddtional_
+    }
+
+-- | Name of the scope containing this set of Subnetworks.
+saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)
+saliAddtional
+  = lens _saliAddtional
+      (\ s a -> s{_saliAddtional = a})
+      . _Coerce
+
+instance FromJSON SubnetworkAggregatedListItems where
+        parseJSON
+          = withObject "SubnetworkAggregatedListItems"
+              (\ o ->
+                 SubnetworkAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON SubnetworkAggregatedListItems where
+        toJSON = toJSON . _saliAddtional
+
+--
+-- /See:/ 'interconnectAttachmentAggregatedListWarningDataItem' smart constructor.
+data InterconnectAttachmentAggregatedListWarningDataItem = InterconnectAttachmentAggregatedListWarningDataItem'
+    { _iaalwdiValue :: !(Maybe Text)
+    , _iaalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaalwdiValue'
+--
+-- * 'iaalwdiKey'
+interconnectAttachmentAggregatedListWarningDataItem
+    :: InterconnectAttachmentAggregatedListWarningDataItem
+interconnectAttachmentAggregatedListWarningDataItem =
+    InterconnectAttachmentAggregatedListWarningDataItem'
+    { _iaalwdiValue = Nothing
+    , _iaalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+iaalwdiValue :: Lens' InterconnectAttachmentAggregatedListWarningDataItem (Maybe Text)
+iaalwdiValue
+  = lens _iaalwdiValue (\ s a -> s{_iaalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+iaalwdiKey :: Lens' InterconnectAttachmentAggregatedListWarningDataItem (Maybe Text)
+iaalwdiKey
+  = lens _iaalwdiKey (\ s a -> s{_iaalwdiKey = a})
+
+instance FromJSON
+         InterconnectAttachmentAggregatedListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentAggregatedListWarningDataItem"
+              (\ o ->
+                 InterconnectAttachmentAggregatedListWarningDataItem'
+                   <$> (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InterconnectAttachmentAggregatedListWarningDataItem
+         where
+        toJSON
+          InterconnectAttachmentAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _iaalwdiValue,
+                  ("key" .=) <$> _iaalwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'interconnectAttachmentListWarning' smart constructor.
+data InterconnectAttachmentListWarning = InterconnectAttachmentListWarning'
+    { _intData    :: !(Maybe [InterconnectAttachmentListWarningDataItem])
+    , _intCode    :: !(Maybe InterconnectAttachmentListWarningCode)
+    , _intMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'intData'
+--
+-- * 'intCode'
+--
+-- * 'intMessage'
+interconnectAttachmentListWarning
+    :: InterconnectAttachmentListWarning
+interconnectAttachmentListWarning =
+    InterconnectAttachmentListWarning'
+    { _intData = Nothing
+    , _intCode = Nothing
+    , _intMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+intData :: Lens' InterconnectAttachmentListWarning [InterconnectAttachmentListWarningDataItem]
+intData
+  = lens _intData (\ s a -> s{_intData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+intCode :: Lens' InterconnectAttachmentListWarning (Maybe InterconnectAttachmentListWarningCode)
+intCode = lens _intCode (\ s a -> s{_intCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+intMessage :: Lens' InterconnectAttachmentListWarning (Maybe Text)
+intMessage
+  = lens _intMessage (\ s a -> s{_intMessage = a})
+
+instance FromJSON InterconnectAttachmentListWarning
+         where
+        parseJSON
+          = withObject "InterconnectAttachmentListWarning"
+              (\ o ->
+                 InterconnectAttachmentListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InterconnectAttachmentListWarning
+         where
+        toJSON InterconnectAttachmentListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _intData, ("code" .=) <$> _intCode,
+                  ("message" .=) <$> _intMessage])
+
+-- | A condition to be met.
+--
+-- /See:/ 'condition' smart constructor.
+data Condition = Condition'
+    { _cOp     :: !(Maybe ConditionOp)
+    , _cIAM    :: !(Maybe ConditionIAM)
+    , _cValues :: !(Maybe [Text])
+    , _cValue  :: !(Maybe Text)
+    , _cSys    :: !(Maybe ConditionSys)
+    , _cSvc    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Condition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cOp'
+--
+-- * 'cIAM'
+--
+-- * 'cValues'
+--
+-- * 'cValue'
+--
+-- * 'cSys'
+--
+-- * 'cSvc'
+condition
+    :: Condition
+condition =
+    Condition'
+    { _cOp = Nothing
+    , _cIAM = Nothing
+    , _cValues = Nothing
+    , _cValue = Nothing
+    , _cSys = Nothing
+    , _cSvc = Nothing
+    }
+
+-- | An operator to apply the subject with.
+cOp :: Lens' Condition (Maybe ConditionOp)
+cOp = lens _cOp (\ s a -> s{_cOp = a})
+
+-- | Trusted attributes supplied by the IAM system.
+cIAM :: Lens' Condition (Maybe ConditionIAM)
+cIAM = lens _cIAM (\ s a -> s{_cIAM = a})
+
+-- | The objects of the condition. This is mutually exclusive with \'value\'.
+cValues :: Lens' Condition [Text]
+cValues
+  = lens _cValues (\ s a -> s{_cValues = a}) . _Default
+      . _Coerce
+
+-- | DEPRECATED. Use \'values\' instead.
+cValue :: Lens' Condition (Maybe Text)
+cValue = lens _cValue (\ s a -> s{_cValue = a})
+
+-- | Trusted attributes supplied by any service that owns resources and uses
+-- the IAM system for access control.
+cSys :: Lens' Condition (Maybe ConditionSys)
+cSys = lens _cSys (\ s a -> s{_cSys = a})
+
+-- | Trusted attributes discharged by the service.
+cSvc :: Lens' Condition (Maybe Text)
+cSvc = lens _cSvc (\ s a -> s{_cSvc = a})
+
+instance FromJSON Condition where
+        parseJSON
+          = withObject "Condition"
+              (\ o ->
+                 Condition' <$>
+                   (o .:? "op") <*> (o .:? "iam") <*>
+                     (o .:? "values" .!= mempty)
+                     <*> (o .:? "value")
+                     <*> (o .:? "sys")
+                     <*> (o .:? "svc"))
+
+instance ToJSON Condition where
+        toJSON Condition'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _cOp, ("iam" .=) <$> _cIAM,
+                  ("values" .=) <$> _cValues, ("value" .=) <$> _cValue,
+                  ("sys" .=) <$> _cSys, ("svc" .=) <$> _cSvc])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'addressAggregatedListWarning' smart constructor.
+data AddressAggregatedListWarning = AddressAggregatedListWarning'
+    { _addData    :: !(Maybe [AddressAggregatedListWarningDataItem])
+    , _addCode    :: !(Maybe AddressAggregatedListWarningCode)
+    , _addMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addData'
+--
+-- * 'addCode'
+--
+-- * 'addMessage'
+addressAggregatedListWarning
+    :: AddressAggregatedListWarning
+addressAggregatedListWarning =
+    AddressAggregatedListWarning'
+    { _addData = Nothing
+    , _addCode = Nothing
+    , _addMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+addData :: Lens' AddressAggregatedListWarning [AddressAggregatedListWarningDataItem]
+addData
+  = lens _addData (\ s a -> s{_addData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+addCode :: Lens' AddressAggregatedListWarning (Maybe AddressAggregatedListWarningCode)
+addCode = lens _addCode (\ s a -> s{_addCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+addMessage :: Lens' AddressAggregatedListWarning (Maybe Text)
+addMessage
+  = lens _addMessage (\ s a -> s{_addMessage = a})
+
+instance FromJSON AddressAggregatedListWarning where
+        parseJSON
+          = withObject "AddressAggregatedListWarning"
+              (\ o ->
+                 AddressAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AddressAggregatedListWarning where
+        toJSON AddressAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _addData, ("code" .=) <$> _addCode,
+                  ("message" .=) <$> _addMessage])
+
+--
+-- /See:/ 'managedInstanceLastAttempt' smart constructor.
+newtype ManagedInstanceLastAttempt = ManagedInstanceLastAttempt'
+    { _milaErrors :: Maybe ManagedInstanceLastAttemptErrors
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttempt' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaErrors'
+managedInstanceLastAttempt
+    :: ManagedInstanceLastAttempt
+managedInstanceLastAttempt =
+    ManagedInstanceLastAttempt'
+    { _milaErrors = Nothing
+    }
+
+-- | [Output Only] Encountered errors during the last attempt to create or
+-- delete the instance.
+milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)
+milaErrors
+  = lens _milaErrors (\ s a -> s{_milaErrors = a})
+
+instance FromJSON ManagedInstanceLastAttempt where
+        parseJSON
+          = withObject "ManagedInstanceLastAttempt"
+              (\ o ->
+                 ManagedInstanceLastAttempt' <$> (o .:? "errors"))
+
+instance ToJSON ManagedInstanceLastAttempt where
+        toJSON ManagedInstanceLastAttempt'{..}
+          = object (catMaybes [("errors" .=) <$> _milaErrors])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'licensesListResponseWarning' smart constructor.
+data LicensesListResponseWarning = LicensesListResponseWarning'
+    { _llrwData    :: !(Maybe [LicensesListResponseWarningDataItem])
+    , _llrwCode    :: !(Maybe LicensesListResponseWarningCode)
+    , _llrwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesListResponseWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrwData'
+--
+-- * 'llrwCode'
+--
+-- * 'llrwMessage'
+licensesListResponseWarning
+    :: LicensesListResponseWarning
+licensesListResponseWarning =
+    LicensesListResponseWarning'
+    { _llrwData = Nothing
+    , _llrwCode = Nothing
+    , _llrwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+llrwData :: Lens' LicensesListResponseWarning [LicensesListResponseWarningDataItem]
+llrwData
+  = lens _llrwData (\ s a -> s{_llrwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+llrwCode :: Lens' LicensesListResponseWarning (Maybe LicensesListResponseWarningCode)
+llrwCode = lens _llrwCode (\ s a -> s{_llrwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+llrwMessage :: Lens' LicensesListResponseWarning (Maybe Text)
+llrwMessage
+  = lens _llrwMessage (\ s a -> s{_llrwMessage = a})
+
+instance FromJSON LicensesListResponseWarning where
+        parseJSON
+          = withObject "LicensesListResponseWarning"
+              (\ o ->
+                 LicensesListResponseWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON LicensesListResponseWarning where
+        toJSON LicensesListResponseWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _llrwData,
+                  ("code" .=) <$> _llrwCode,
+                  ("message" .=) <$> _llrwMessage])
+
+--
+-- /See:/ 'autoscalerStatusDetails' smart constructor.
+data AutoscalerStatusDetails = AutoscalerStatusDetails'
+    { _asdType    :: !(Maybe AutoscalerStatusDetailsType)
+    , _asdMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerStatusDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asdType'
+--
+-- * 'asdMessage'
+autoscalerStatusDetails
+    :: AutoscalerStatusDetails
+autoscalerStatusDetails =
+    AutoscalerStatusDetails'
+    { _asdType = Nothing
+    , _asdMessage = Nothing
+    }
+
+-- | The type of error returned.
+asdType :: Lens' AutoscalerStatusDetails (Maybe AutoscalerStatusDetailsType)
+asdType = lens _asdType (\ s a -> s{_asdType = a})
+
+-- | The status message.
+asdMessage :: Lens' AutoscalerStatusDetails (Maybe Text)
+asdMessage
+  = lens _asdMessage (\ s a -> s{_asdMessage = a})
+
+instance FromJSON AutoscalerStatusDetails where
+        parseJSON
+          = withObject "AutoscalerStatusDetails"
+              (\ o ->
+                 AutoscalerStatusDetails' <$>
+                   (o .:? "type") <*> (o .:? "message"))
+
+instance ToJSON AutoscalerStatusDetails where
+        toJSON AutoscalerStatusDetails'{..}
+          = object
+              (catMaybes
+                 [("type" .=) <$> _asdType,
+                  ("message" .=) <$> _asdMessage])
+
+-- | Contains a list of BackendService resources.
+--
+-- /See:/ 'backendServiceList' smart constructor.
+data BackendServiceList = BackendServiceList'
+    { _bslNextPageToken :: !(Maybe Text)
+    , _bslKind          :: !Text
+    , _bslItems         :: !(Maybe [BackendService])
+    , _bslSelfLink      :: !(Maybe Text)
+    , _bslWarning       :: !(Maybe BackendServiceListWarning)
+    , _bslId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bslNextPageToken'
+--
+-- * 'bslKind'
+--
+-- * 'bslItems'
+--
+-- * 'bslSelfLink'
+--
+-- * 'bslWarning'
+--
+-- * 'bslId'
+backendServiceList
+    :: BackendServiceList
+backendServiceList =
+    BackendServiceList'
+    { _bslNextPageToken = Nothing
+    , _bslKind = "compute#backendServiceList"
+    , _bslItems = Nothing
+    , _bslSelfLink = Nothing
+    , _bslWarning = Nothing
+    , _bslId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+bslNextPageToken :: Lens' BackendServiceList (Maybe Text)
+bslNextPageToken
+  = lens _bslNextPageToken
+      (\ s a -> s{_bslNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#backendServiceList for
+-- lists of backend services.
+bslKind :: Lens' BackendServiceList Text
+bslKind = lens _bslKind (\ s a -> s{_bslKind = a})
+
+-- | A list of BackendService resources.
+bslItems :: Lens' BackendServiceList [BackendService]
+bslItems
+  = lens _bslItems (\ s a -> s{_bslItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+bslSelfLink :: Lens' BackendServiceList (Maybe Text)
+bslSelfLink
+  = lens _bslSelfLink (\ s a -> s{_bslSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+bslWarning :: Lens' BackendServiceList (Maybe BackendServiceListWarning)
+bslWarning
+  = lens _bslWarning (\ s a -> s{_bslWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bslId :: Lens' BackendServiceList (Maybe Text)
+bslId = lens _bslId (\ s a -> s{_bslId = a})
+
+instance FromJSON BackendServiceList where
+        parseJSON
+          = withObject "BackendServiceList"
+              (\ o ->
+                 BackendServiceList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#backendServiceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON BackendServiceList where
+        toJSON BackendServiceList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _bslNextPageToken,
+                  Just ("kind" .= _bslKind),
+                  ("items" .=) <$> _bslItems,
+                  ("selfLink" .=) <$> _bslSelfLink,
+                  ("warning" .=) <$> _bslWarning,
+                  ("id" .=) <$> _bslId])
+
+--
+-- /See:/ 'xpnHostListWarningDataItem' smart constructor.
+data XpnHostListWarningDataItem = XpnHostListWarningDataItem'
+    { _xhlwdiValue :: !(Maybe Text)
+    , _xhlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'XpnHostListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'xhlwdiValue'
+--
+-- * 'xhlwdiKey'
+xpnHostListWarningDataItem
+    :: XpnHostListWarningDataItem
+xpnHostListWarningDataItem =
+    XpnHostListWarningDataItem'
+    { _xhlwdiValue = Nothing
+    , _xhlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+xhlwdiValue :: Lens' XpnHostListWarningDataItem (Maybe Text)
+xhlwdiValue
+  = lens _xhlwdiValue (\ s a -> s{_xhlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+xhlwdiKey :: Lens' XpnHostListWarningDataItem (Maybe Text)
+xhlwdiKey
+  = lens _xhlwdiKey (\ s a -> s{_xhlwdiKey = a})
+
+instance FromJSON XpnHostListWarningDataItem where
+        parseJSON
+          = withObject "XpnHostListWarningDataItem"
+              (\ o ->
+                 XpnHostListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON XpnHostListWarningDataItem where
+        toJSON XpnHostListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _xhlwdiValue,
+                  ("key" .=) <$> _xhlwdiKey])
+
+--
+-- /See:/ 'zoneListWarningDataItem' smart constructor.
+data ZoneListWarningDataItem = ZoneListWarningDataItem'
+    { _zlwdiValue :: !(Maybe Text)
+    , _zlwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlwdiValue'
+--
+-- * 'zlwdiKey'
+zoneListWarningDataItem
+    :: ZoneListWarningDataItem
+zoneListWarningDataItem =
+    ZoneListWarningDataItem'
+    { _zlwdiValue = Nothing
+    , _zlwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+zlwdiValue :: Lens' ZoneListWarningDataItem (Maybe Text)
+zlwdiValue
+  = lens _zlwdiValue (\ s a -> s{_zlwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+zlwdiKey :: Lens' ZoneListWarningDataItem (Maybe Text)
+zlwdiKey = lens _zlwdiKey (\ s a -> s{_zlwdiKey = a})
+
+instance FromJSON ZoneListWarningDataItem where
+        parseJSON
+          = withObject "ZoneListWarningDataItem"
+              (\ o ->
+                 ZoneListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON ZoneListWarningDataItem where
+        toJSON ZoneListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _zlwdiValue,
+                  ("key" .=) <$> _zlwdiKey])
+
+--
+-- /See:/ 'regionSetPolicyRequest' smart constructor.
+data RegionSetPolicyRequest = RegionSetPolicyRequest'
+    { _rsprEtag     :: !(Maybe Bytes)
+    , _rsprBindings :: !(Maybe [Binding])
+    , _rsprPolicy   :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionSetPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rsprEtag'
+--
+-- * 'rsprBindings'
+--
+-- * 'rsprPolicy'
+regionSetPolicyRequest
+    :: RegionSetPolicyRequest
+regionSetPolicyRequest =
+    RegionSetPolicyRequest'
+    { _rsprEtag = Nothing
+    , _rsprBindings = Nothing
+    , _rsprPolicy = Nothing
+    }
+
+-- | Flatten Policy to create a backward compatible wire-format. Deprecated.
+-- Use \'policy\' to specify the etag.
+rsprEtag :: Lens' RegionSetPolicyRequest (Maybe ByteString)
+rsprEtag
+  = lens _rsprEtag (\ s a -> s{_rsprEtag = a}) .
+      mapping _Bytes
+
+-- | Flatten Policy to create a backwacd compatible wire-format. Deprecated.
+-- Use \'policy\' to specify bindings.
+rsprBindings :: Lens' RegionSetPolicyRequest [Binding]
+rsprBindings
+  = lens _rsprBindings (\ s a -> s{_rsprBindings = a})
+      . _Default
+      . _Coerce
+
+-- | REQUIRED: The complete policy to be applied to the \'resource\'. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is in
+-- general a valid policy but certain services (like Projects) might reject
+-- them.
+rsprPolicy :: Lens' RegionSetPolicyRequest (Maybe Policy)
+rsprPolicy
+  = lens _rsprPolicy (\ s a -> s{_rsprPolicy = a})
+
+instance FromJSON RegionSetPolicyRequest where
+        parseJSON
+          = withObject "RegionSetPolicyRequest"
+              (\ o ->
+                 RegionSetPolicyRequest' <$>
+                   (o .:? "etag") <*> (o .:? "bindings" .!= mempty) <*>
+                     (o .:? "policy"))
+
+instance ToJSON RegionSetPolicyRequest where
+        toJSON RegionSetPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _rsprEtag,
+                  ("bindings" .=) <$> _rsprBindings,
+                  ("policy" .=) <$> _rsprPolicy])
+
+-- | [Output Only] An informational warning that replaces the list of
+-- instance groups when the list is empty.
+--
+-- /See:/ 'instanceGroupsScopedListWarning' smart constructor.
+data InstanceGroupsScopedListWarning = InstanceGroupsScopedListWarning'
+    { _igslwData    :: !(Maybe [InstanceGroupsScopedListWarningDataItem])
+    , _igslwCode    :: !(Maybe InstanceGroupsScopedListWarningCode)
+    , _igslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslwData'
+--
+-- * 'igslwCode'
+--
+-- * 'igslwMessage'
+instanceGroupsScopedListWarning
+    :: InstanceGroupsScopedListWarning
+instanceGroupsScopedListWarning =
+    InstanceGroupsScopedListWarning'
+    { _igslwData = Nothing
+    , _igslwCode = Nothing
+    , _igslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]
+igslwData
+  = lens _igslwData (\ s a -> s{_igslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)
+igslwCode
+  = lens _igslwCode (\ s a -> s{_igslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)
+igslwMessage
+  = lens _igslwMessage (\ s a -> s{_igslwMessage = a})
+
+instance FromJSON InstanceGroupsScopedListWarning
+         where
+        parseJSON
+          = withObject "InstanceGroupsScopedListWarning"
+              (\ o ->
+                 InstanceGroupsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupsScopedListWarning where
+        toJSON InstanceGroupsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igslwData,
+                  ("code" .=) <$> _igslwCode,
+                  ("message" .=) <$> _igslwMessage])
+
+-- | CPU utilization policy.
+--
+-- /See:/ 'autoscalingPolicyCPUUtilization' smart constructor.
+newtype AutoscalingPolicyCPUUtilization = AutoscalingPolicyCPUUtilization'
+    { _apcuUtilizationTarget :: Maybe (Textual Double)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyCPUUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apcuUtilizationTarget'
+autoscalingPolicyCPUUtilization
+    :: AutoscalingPolicyCPUUtilization
+autoscalingPolicyCPUUtilization =
+    AutoscalingPolicyCPUUtilization'
+    { _apcuUtilizationTarget = Nothing
+    }
+
+-- | The target CPU utilization that the autoscaler should maintain. Must be
+-- a float value in the range (0, 1]. If not specified, the default is 0.6.
+-- If the CPU level is below the target utilization, the autoscaler scales
+-- down the number of instances until it reaches the minimum number of
+-- instances you specified or until the average CPU of your instances
+-- reaches the target utilization. If the average CPU is above the target
+-- utilization, the autoscaler scales up until it reaches the maximum
+-- number of instances you specified or until the average utilization
+-- reaches the target utilization.
+apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)
+apcuUtilizationTarget
+  = lens _apcuUtilizationTarget
+      (\ s a -> s{_apcuUtilizationTarget = a})
+      . mapping _Coerce
+
+instance FromJSON AutoscalingPolicyCPUUtilization
+         where
+        parseJSON
+          = withObject "AutoscalingPolicyCPUUtilization"
+              (\ o ->
+                 AutoscalingPolicyCPUUtilization' <$>
+                   (o .:? "utilizationTarget"))
+
+instance ToJSON AutoscalingPolicyCPUUtilization where
+        toJSON AutoscalingPolicyCPUUtilization'{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _apcuUtilizationTarget])
+
+--
+-- /See:/ 'instanceGroupsScopedListWarningDataItem' smart constructor.
+data InstanceGroupsScopedListWarningDataItem = InstanceGroupsScopedListWarningDataItem'
+    { _igslwdiValue :: !(Maybe Text)
+    , _igslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslwdiValue'
+--
+-- * 'igslwdiKey'
+instanceGroupsScopedListWarningDataItem
+    :: InstanceGroupsScopedListWarningDataItem
+instanceGroupsScopedListWarningDataItem =
+    InstanceGroupsScopedListWarningDataItem'
+    { _igslwdiValue = Nothing
+    , _igslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
+igslwdiValue
+  = lens _igslwdiValue (\ s a -> s{_igslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
+igslwdiKey
+  = lens _igslwdiKey (\ s a -> s{_igslwdiKey = a})
+
+instance FromJSON
+         InstanceGroupsScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupsScopedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupsScopedListWarningDataItem where
+        toJSON InstanceGroupsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igslwdiValue,
+                  ("key" .=) <$> _igslwdiKey])
+
+--
+-- /See:/ 'securityPolicyRuleMatcherConfig' smart constructor.
+newtype SecurityPolicyRuleMatcherConfig = SecurityPolicyRuleMatcherConfig'
+    { _sprmcSrcIPRanges :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyRuleMatcherConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprmcSrcIPRanges'
+securityPolicyRuleMatcherConfig
+    :: SecurityPolicyRuleMatcherConfig
+securityPolicyRuleMatcherConfig =
+    SecurityPolicyRuleMatcherConfig'
+    { _sprmcSrcIPRanges = Nothing
+    }
+
+-- | CIDR IP address range.
+sprmcSrcIPRanges :: Lens' SecurityPolicyRuleMatcherConfig [Text]
+sprmcSrcIPRanges
+  = lens _sprmcSrcIPRanges
+      (\ s a -> s{_sprmcSrcIPRanges = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON SecurityPolicyRuleMatcherConfig
+         where
+        parseJSON
+          = withObject "SecurityPolicyRuleMatcherConfig"
+              (\ o ->
+                 SecurityPolicyRuleMatcherConfig' <$>
+                   (o .:? "srcIpRanges" .!= mempty))
+
+instance ToJSON SecurityPolicyRuleMatcherConfig where
+        toJSON SecurityPolicyRuleMatcherConfig'{..}
+          = object
+              (catMaybes
+                 [("srcIpRanges" .=) <$> _sprmcSrcIPRanges])
+
+--
+-- /See:/ 'licensesListResponseWarningDataItem' smart constructor.
+data LicensesListResponseWarningDataItem = LicensesListResponseWarningDataItem'
+    { _llrwdiValue :: !(Maybe Text)
+    , _llrwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesListResponseWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrwdiValue'
+--
+-- * 'llrwdiKey'
+licensesListResponseWarningDataItem
+    :: LicensesListResponseWarningDataItem
+licensesListResponseWarningDataItem =
+    LicensesListResponseWarningDataItem'
+    { _llrwdiValue = Nothing
+    , _llrwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+llrwdiValue :: Lens' LicensesListResponseWarningDataItem (Maybe Text)
+llrwdiValue
+  = lens _llrwdiValue (\ s a -> s{_llrwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+llrwdiKey :: Lens' LicensesListResponseWarningDataItem (Maybe Text)
+llrwdiKey
+  = lens _llrwdiKey (\ s a -> s{_llrwdiKey = a})
+
+instance FromJSON LicensesListResponseWarningDataItem
+         where
+        parseJSON
+          = withObject "LicensesListResponseWarningDataItem"
+              (\ o ->
+                 LicensesListResponseWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON LicensesListResponseWarningDataItem
+         where
+        toJSON LicensesListResponseWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _llrwdiValue,
+                  ("key" .=) <$> _llrwdiKey])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'xpnHostListWarning' smart constructor.
+data XpnHostListWarning = XpnHostListWarning'
+    { _xhlwData    :: !(Maybe [XpnHostListWarningDataItem])
+    , _xhlwCode    :: !(Maybe XpnHostListWarningCode)
+    , _xhlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'XpnHostListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'xhlwData'
+--
+-- * 'xhlwCode'
+--
+-- * 'xhlwMessage'
+xpnHostListWarning
+    :: XpnHostListWarning
+xpnHostListWarning =
+    XpnHostListWarning'
+    { _xhlwData = Nothing
+    , _xhlwCode = Nothing
+    , _xhlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+xhlwData :: Lens' XpnHostListWarning [XpnHostListWarningDataItem]
+xhlwData
+  = lens _xhlwData (\ s a -> s{_xhlwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+xhlwCode :: Lens' XpnHostListWarning (Maybe XpnHostListWarningCode)
+xhlwCode = lens _xhlwCode (\ s a -> s{_xhlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+xhlwMessage :: Lens' XpnHostListWarning (Maybe Text)
+xhlwMessage
+  = lens _xhlwMessage (\ s a -> s{_xhlwMessage = a})
+
+instance FromJSON XpnHostListWarning where
+        parseJSON
+          = withObject "XpnHostListWarning"
+              (\ o ->
+                 XpnHostListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON XpnHostListWarning where
+        toJSON XpnHostListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _xhlwData,
+                  ("code" .=) <$> _xhlwCode,
+                  ("message" .=) <$> _xhlwMessage])
+
+--
+-- /See:/ 'resourceGroupReference' smart constructor.
+newtype ResourceGroupReference = ResourceGroupReference'
+    { _rgrGroup :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceGroupReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgrGroup'
+resourceGroupReference
+    :: ResourceGroupReference
+resourceGroupReference =
+    ResourceGroupReference'
+    { _rgrGroup = Nothing
+    }
+
+-- | A URI referencing one of the instance groups or network endpoint groups
+-- listed in the backend service.
+rgrGroup :: Lens' ResourceGroupReference (Maybe Text)
+rgrGroup = lens _rgrGroup (\ s a -> s{_rgrGroup = a})
+
+instance FromJSON ResourceGroupReference where
+        parseJSON
+          = withObject "ResourceGroupReference"
+              (\ o -> ResourceGroupReference' <$> (o .:? "group"))
+
+instance ToJSON ResourceGroupReference where
+        toJSON ResourceGroupReference'{..}
+          = object (catMaybes [("group" .=) <$> _rgrGroup])
+
+-- | Contains a list of VmEndpointNatMappings.
+--
+-- /See:/ 'vMEndpointNATMAppingsList' smart constructor.
+data VMEndpointNATMAppingsList = VMEndpointNATMAppingsList'
+    { _vmenatmalNextPageToken :: !(Maybe Text)
+    , _vmenatmalKind          :: !Text
+    , _vmenatmalResult        :: !(Maybe [VMEndpointNATMAppings])
+    , _vmenatmalSelfLink      :: !(Maybe Text)
+    , _vmenatmalWarning       :: !(Maybe VMEndpointNATMAppingsListWarning)
+    , _vmenatmalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VMEndpointNATMAppingsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vmenatmalNextPageToken'
+--
+-- * 'vmenatmalKind'
+--
+-- * 'vmenatmalResult'
+--
+-- * 'vmenatmalSelfLink'
+--
+-- * 'vmenatmalWarning'
+--
+-- * 'vmenatmalId'
+vMEndpointNATMAppingsList
+    :: VMEndpointNATMAppingsList
+vMEndpointNATMAppingsList =
+    VMEndpointNATMAppingsList'
+    { _vmenatmalNextPageToken = Nothing
+    , _vmenatmalKind = "compute#vmEndpointNatMappingsList"
+    , _vmenatmalResult = Nothing
+    , _vmenatmalSelfLink = Nothing
+    , _vmenatmalWarning = Nothing
+    , _vmenatmalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+vmenatmalNextPageToken :: Lens' VMEndpointNATMAppingsList (Maybe Text)
+vmenatmalNextPageToken
+  = lens _vmenatmalNextPageToken
+      (\ s a -> s{_vmenatmalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#vmEndpointNatMappingsList
+-- for lists of Nat mappings of VM endpoints.
+vmenatmalKind :: Lens' VMEndpointNATMAppingsList Text
+vmenatmalKind
+  = lens _vmenatmalKind
+      (\ s a -> s{_vmenatmalKind = a})
+
+-- | [Output Only] A list of Nat mapping information of VM endpoints.
+vmenatmalResult :: Lens' VMEndpointNATMAppingsList [VMEndpointNATMAppings]
+vmenatmalResult
+  = lens _vmenatmalResult
+      (\ s a -> s{_vmenatmalResult = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+vmenatmalSelfLink :: Lens' VMEndpointNATMAppingsList (Maybe Text)
+vmenatmalSelfLink
+  = lens _vmenatmalSelfLink
+      (\ s a -> s{_vmenatmalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+vmenatmalWarning :: Lens' VMEndpointNATMAppingsList (Maybe VMEndpointNATMAppingsListWarning)
+vmenatmalWarning
+  = lens _vmenatmalWarning
+      (\ s a -> s{_vmenatmalWarning = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+vmenatmalId :: Lens' VMEndpointNATMAppingsList (Maybe Text)
+vmenatmalId
+  = lens _vmenatmalId (\ s a -> s{_vmenatmalId = a})
+
+instance FromJSON VMEndpointNATMAppingsList where
+        parseJSON
+          = withObject "VMEndpointNATMAppingsList"
+              (\ o ->
+                 VMEndpointNATMAppingsList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#vmEndpointNatMappingsList")
+                     <*> (o .:? "result" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON VMEndpointNATMAppingsList where
+        toJSON VMEndpointNATMAppingsList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _vmenatmalNextPageToken,
+                  Just ("kind" .= _vmenatmalKind),
+                  ("result" .=) <$> _vmenatmalResult,
+                  ("selfLink" .=) <$> _vmenatmalSelfLink,
+                  ("warning" .=) <$> _vmenatmalWarning,
+                  ("id" .=) <$> _vmenatmalId])
+
+-- | Represents a Firewall resource.
+--
+-- /See:/ 'firewall' smart constructor.
+data Firewall = Firewall'
+    { _fSourceTags            :: !(Maybe [Text])
+    , _fSourceServiceAccounts :: !(Maybe [Text])
+    , _fPriority              :: !(Maybe (Textual Int32))
+    , _fDirection             :: !(Maybe FirewallDirection)
+    , _fKind                  :: !Text
+    , _fDisabled              :: !(Maybe Bool)
+    , _fTargetTags            :: !(Maybe [Text])
+    , _fNetwork               :: !(Maybe Text)
+    , _fSourceRanges          :: !(Maybe [Text])
+    , _fSelfLink              :: !(Maybe Text)
+    , _fName                  :: !(Maybe Text)
+    , _fDenied                :: !(Maybe [FirewallDeniedItem])
+    , _fCreationTimestamp     :: !(Maybe Text)
+    , _fId                    :: !(Maybe (Textual Word64))
+    , _fAllowed               :: !(Maybe [FirewallAllowedItem])
+    , _fDestinationRanges     :: !(Maybe [Text])
+    , _fLogConfig             :: !(Maybe FirewallLogConfig)
+    , _fTargetServiceAccounts :: !(Maybe [Text])
+    , _fDescription           :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Firewall' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fSourceTags'
+--
+-- * 'fSourceServiceAccounts'
+--
+-- * 'fPriority'
+--
+-- * 'fDirection'
+--
+-- * 'fKind'
+--
+-- * 'fDisabled'
+--
+-- * 'fTargetTags'
+--
+-- * 'fNetwork'
+--
+-- * 'fSourceRanges'
+--
+-- * 'fSelfLink'
+--
+-- * 'fName'
+--
+-- * 'fDenied'
+--
+-- * 'fCreationTimestamp'
+--
+-- * 'fId'
+--
+-- * 'fAllowed'
+--
+-- * 'fDestinationRanges'
+--
+-- * 'fLogConfig'
+--
+-- * 'fTargetServiceAccounts'
+--
+-- * 'fDescription'
+firewall
+    :: Firewall
+firewall =
+    Firewall'
+    { _fSourceTags = Nothing
+    , _fSourceServiceAccounts = Nothing
+    , _fPriority = Nothing
+    , _fDirection = Nothing
+    , _fKind = "compute#firewall"
+    , _fDisabled = Nothing
+    , _fTargetTags = Nothing
+    , _fNetwork = Nothing
+    , _fSourceRanges = Nothing
+    , _fSelfLink = Nothing
+    , _fName = Nothing
+    , _fDenied = Nothing
+    , _fCreationTimestamp = Nothing
+    , _fId = Nothing
+    , _fAllowed = Nothing
+    , _fDestinationRanges = Nothing
+    , _fLogConfig = Nothing
+    , _fTargetServiceAccounts = Nothing
+    , _fDescription = Nothing
+    }
+
+-- | If source tags are specified, the firewall rule applies only to traffic
+-- with source IPs that match the primary network interfaces of VM
+-- instances that have the tag and are in the same VPC network. Source tags
+-- cannot be used to control traffic to an instance\'s external IP address,
+-- it only applies to traffic between instances in the same virtual
+-- network. Because tags are associated with instances, not IP addresses.
+-- One or both of sourceRanges and sourceTags may be set. If both
+-- properties are set, the firewall will apply to traffic that has source
+-- IP address within sourceRanges OR the source IP that belongs to a tag
+-- listed in the sourceTags property. The connection does not need to match
+-- both properties for the firewall to apply.
+fSourceTags :: Lens' Firewall [Text]
+fSourceTags
+  = lens _fSourceTags (\ s a -> s{_fSourceTags = a}) .
+      _Default
+      . _Coerce
+
+-- | If source service accounts are specified, the firewall will apply only
+-- to traffic originating from an instance with a service account in this
+-- list. Source service accounts cannot be used to control traffic to an
+-- instance\'s external IP address because service accounts are associated
+-- with an instance, not an IP address. sourceRanges can be set at the same
+-- time as sourceServiceAccounts. If both are set, the firewall will apply
+-- to traffic that has source IP address within sourceRanges OR the source
+-- IP belongs to an instance with service account listed in
+-- sourceServiceAccount. The connection does not need to match both
+-- properties for the firewall to apply. sourceServiceAccounts cannot be
+-- used at the same time as sourceTags or targetTags.
+fSourceServiceAccounts :: Lens' Firewall [Text]
+fSourceServiceAccounts
+  = lens _fSourceServiceAccounts
+      (\ s a -> s{_fSourceServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | Priority for this rule. This is an integer between 0 and 65535, both
+-- inclusive. When not specified, the value assumed is 1000. Relative
+-- priorities determine precedence of conflicting rules. Lower value of
+-- priority implies higher precedence (eg, a rule with priority 0 has
+-- higher precedence than a rule with priority 1). DENY rules take
+-- precedence over ALLOW rules having equal priority.
+fPriority :: Lens' Firewall (Maybe Int32)
+fPriority
+  = lens _fPriority (\ s a -> s{_fPriority = a}) .
+      mapping _Coerce
+
+-- | Direction of traffic to which this firewall applies; default is INGRESS.
+-- Note: For INGRESS traffic, it is NOT supported to specify
+-- destinationRanges; For EGRESS traffic, it is NOT supported to specify
+-- sourceRanges OR sourceTags.
+fDirection :: Lens' Firewall (Maybe FirewallDirection)
+fDirection
+  = lens _fDirection (\ s a -> s{_fDirection = a})
+
+-- | [Output Only] Type of the resource. Always compute#firewall for firewall
+-- rules.
+fKind :: Lens' Firewall Text
+fKind = lens _fKind (\ s a -> s{_fKind = a})
+
+-- | Denotes whether the firewall rule is disabled, i.e not applied to the
+-- network it is associated with. When set to true, the firewall rule is
+-- not enforced and the network behaves as if it did not exist. If this is
+-- unspecified, the firewall rule will be enabled.
+fDisabled :: Lens' Firewall (Maybe Bool)
+fDisabled
+  = lens _fDisabled (\ s a -> s{_fDisabled = a})
+
+-- | A list of tags that controls which instances the firewall rule applies
+-- to. If targetTags are specified, then the firewall rule applies only to
+-- instances in the VPC network that have one of those tags. If no
+-- targetTags are specified, the firewall rule applies to all instances on
+-- the specified network.
+fTargetTags :: Lens' Firewall [Text]
+fTargetTags
+  = lens _fTargetTags (\ s a -> s{_fTargetTags = a}) .
+      _Default
+      . _Coerce
+
+-- | URL of the network resource for this firewall rule. If not specified
+-- when creating a firewall rule, the default network is used:
+-- global\/networks\/default If you choose to specify this property, you
+-- can specify the network as a full or partial URL. For example, the
+-- following are all valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/myproject\/global\/networks\/my-network
+-- - projects\/myproject\/global\/networks\/my-network -
+-- global\/networks\/default
+fNetwork :: Lens' Firewall (Maybe Text)
+fNetwork = lens _fNetwork (\ s a -> s{_fNetwork = a})
+
+-- | If source ranges are specified, the firewall will apply only to traffic
+-- that has source IP address in these ranges. These ranges must be
+-- expressed in CIDR format. One or both of sourceRanges and sourceTags may
+-- be set. If both properties are set, the firewall will apply to traffic
+-- that has source IP address within sourceRanges OR the source IP that
+-- belongs to a tag listed in the sourceTags property. The connection does
+-- not need to match both properties for the firewall to apply. Only IPv4
+-- is supported.
+fSourceRanges :: Lens' Firewall [Text]
+fSourceRanges
+  = lens _fSourceRanges
+      (\ s a -> s{_fSourceRanges = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+fSelfLink :: Lens' Firewall (Maybe Text)
+fSelfLink
+  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+fName :: Lens' Firewall (Maybe Text)
+fName = lens _fName (\ s a -> s{_fName = a})
+
+-- | The list of DENY rules specified by this firewall. Each rule specifies a
+-- protocol and port-range tuple that describes a denied connection.
+fDenied :: Lens' Firewall [FirewallDeniedItem]
+fDenied
+  = lens _fDenied (\ s a -> s{_fDenied = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+fCreationTimestamp :: Lens' Firewall (Maybe Text)
+fCreationTimestamp
+  = lens _fCreationTimestamp
+      (\ s a -> s{_fCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+fId :: Lens' Firewall (Maybe Word64)
+fId
+  = lens _fId (\ s a -> s{_fId = a}) . mapping _Coerce
+
+-- | The list of ALLOW rules specified by this firewall. Each rule specifies
+-- a protocol and port-range tuple that describes a permitted connection.
+fAllowed :: Lens' Firewall [FirewallAllowedItem]
+fAllowed
+  = lens _fAllowed (\ s a -> s{_fAllowed = a}) .
+      _Default
+      . _Coerce
+
+-- | If destination ranges are specified, the firewall will apply only to
+-- traffic that has destination IP address in these ranges. These ranges
+-- must be expressed in CIDR format. Only IPv4 is supported.
+fDestinationRanges :: Lens' Firewall [Text]
+fDestinationRanges
+  = lens _fDestinationRanges
+      (\ s a -> s{_fDestinationRanges = a})
+      . _Default
+      . _Coerce
+
+-- | This field denotes the logging options for a particular firewall rule.
+-- If logging is enabled, logs will be exported to Stackdriver.
+fLogConfig :: Lens' Firewall (Maybe FirewallLogConfig)
+fLogConfig
+  = lens _fLogConfig (\ s a -> s{_fLogConfig = a})
+
+-- | A list of service accounts indicating sets of instances located in the
+-- network that may make network connections as specified in allowed[].
+-- targetServiceAccounts cannot be used at the same time as targetTags or
+-- sourceTags. If neither targetServiceAccounts nor targetTags are
+-- specified, the firewall rule applies to all instances on the specified
+-- network.
+fTargetServiceAccounts :: Lens' Firewall [Text]
+fTargetServiceAccounts
+  = lens _fTargetServiceAccounts
+      (\ s a -> s{_fTargetServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+fDescription :: Lens' Firewall (Maybe Text)
+fDescription
+  = lens _fDescription (\ s a -> s{_fDescription = a})
+
+instance FromJSON Firewall where
+        parseJSON
+          = withObject "Firewall"
+              (\ o ->
+                 Firewall' <$>
+                   (o .:? "sourceTags" .!= mempty) <*>
+                     (o .:? "sourceServiceAccounts" .!= mempty)
+                     <*> (o .:? "priority")
+                     <*> (o .:? "direction")
+                     <*> (o .:? "kind" .!= "compute#firewall")
+                     <*> (o .:? "disabled")
+                     <*> (o .:? "targetTags" .!= mempty)
+                     <*> (o .:? "network")
+                     <*> (o .:? "sourceRanges" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "denied" .!= mempty)
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "allowed" .!= mempty)
+                     <*> (o .:? "destinationRanges" .!= mempty)
+                     <*> (o .:? "logConfig")
+                     <*> (o .:? "targetServiceAccounts" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Firewall where
+        toJSON Firewall'{..}
+          = object
+              (catMaybes
+                 [("sourceTags" .=) <$> _fSourceTags,
+                  ("sourceServiceAccounts" .=) <$>
+                    _fSourceServiceAccounts,
+                  ("priority" .=) <$> _fPriority,
+                  ("direction" .=) <$> _fDirection,
+                  Just ("kind" .= _fKind),
+                  ("disabled" .=) <$> _fDisabled,
+                  ("targetTags" .=) <$> _fTargetTags,
+                  ("network" .=) <$> _fNetwork,
+                  ("sourceRanges" .=) <$> _fSourceRanges,
+                  ("selfLink" .=) <$> _fSelfLink,
+                  ("name" .=) <$> _fName, ("denied" .=) <$> _fDenied,
+                  ("creationTimestamp" .=) <$> _fCreationTimestamp,
+                  ("id" .=) <$> _fId, ("allowed" .=) <$> _fAllowed,
+                  ("destinationRanges" .=) <$> _fDestinationRanges,
+                  ("logConfig" .=) <$> _fLogConfig,
+                  ("targetServiceAccounts" .=) <$>
+                    _fTargetServiceAccounts,
+                  ("description" .=) <$> _fDescription])
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'interconnectAttachmentsScopedListWarning' smart constructor.
+data InterconnectAttachmentsScopedListWarning = InterconnectAttachmentsScopedListWarning'
+    { _iaslwData    :: !(Maybe [InterconnectAttachmentsScopedListWarningDataItem])
+    , _iaslwCode    :: !(Maybe InterconnectAttachmentsScopedListWarningCode)
+    , _iaslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaslwData'
+--
+-- * 'iaslwCode'
+--
+-- * 'iaslwMessage'
+interconnectAttachmentsScopedListWarning
+    :: InterconnectAttachmentsScopedListWarning
+interconnectAttachmentsScopedListWarning =
+    InterconnectAttachmentsScopedListWarning'
+    { _iaslwData = Nothing
+    , _iaslwCode = Nothing
+    , _iaslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+iaslwData :: Lens' InterconnectAttachmentsScopedListWarning [InterconnectAttachmentsScopedListWarningDataItem]
+iaslwData
+  = lens _iaslwData (\ s a -> s{_iaslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+iaslwCode :: Lens' InterconnectAttachmentsScopedListWarning (Maybe InterconnectAttachmentsScopedListWarningCode)
+iaslwCode
+  = lens _iaslwCode (\ s a -> s{_iaslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+iaslwMessage :: Lens' InterconnectAttachmentsScopedListWarning (Maybe Text)
+iaslwMessage
+  = lens _iaslwMessage (\ s a -> s{_iaslwMessage = a})
+
+instance FromJSON
+         InterconnectAttachmentsScopedListWarning where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentsScopedListWarning"
+              (\ o ->
+                 InterconnectAttachmentsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         InterconnectAttachmentsScopedListWarning where
+        toJSON InterconnectAttachmentsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _iaslwData,
+                  ("code" .=) <$> _iaslwCode,
+                  ("message" .=) <$> _iaslwMessage])
+
+-- | UrlMaps A host-matching rule for a URL. If matched, will use the named
+-- PathMatcher to select the BackendService.
+--
+-- /See:/ 'hostRule' smart constructor.
+data HostRule = HostRule'
+    { _hrHosts       :: !(Maybe [Text])
+    , _hrDescription :: !(Maybe Text)
+    , _hrPathMatcher :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HostRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hrHosts'
+--
+-- * 'hrDescription'
+--
+-- * 'hrPathMatcher'
+hostRule
+    :: HostRule
+hostRule =
+    HostRule'
+    { _hrHosts = Nothing
+    , _hrDescription = Nothing
+    , _hrPathMatcher = Nothing
+    }
+
+-- | The list of host patterns to match. They must be valid hostnames, except
+-- * will match any string of ([a-z0-9-.]*). In that case, * must be the
+-- first character and must be followed in the pattern by either - or ..
+hrHosts :: Lens' HostRule [Text]
+hrHosts
+  = lens _hrHosts (\ s a -> s{_hrHosts = a}) . _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+hrDescription :: Lens' HostRule (Maybe Text)
+hrDescription
+  = lens _hrDescription
+      (\ s a -> s{_hrDescription = a})
+
+-- | The name of the PathMatcher to use to match the path portion of the URL
+-- if the hostRule matches the URL\'s host portion.
+hrPathMatcher :: Lens' HostRule (Maybe Text)
+hrPathMatcher
+  = lens _hrPathMatcher
+      (\ s a -> s{_hrPathMatcher = a})
+
+instance FromJSON HostRule where
+        parseJSON
+          = withObject "HostRule"
+              (\ o ->
+                 HostRule' <$>
+                   (o .:? "hosts" .!= mempty) <*> (o .:? "description")
+                     <*> (o .:? "pathMatcher"))
+
+instance ToJSON HostRule where
+        toJSON HostRule'{..}
+          = object
+              (catMaybes
+                 [("hosts" .=) <$> _hrHosts,
+                  ("description" .=) <$> _hrDescription,
+                  ("pathMatcher" .=) <$> _hrPathMatcher])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'securityPolicyListWarning' smart constructor.
+data SecurityPolicyListWarning = SecurityPolicyListWarning'
+    { _secData    :: !(Maybe [SecurityPolicyListWarningDataItem])
+    , _secCode    :: !(Maybe SecurityPolicyListWarningCode)
+    , _secMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPolicyListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secData'
+--
+-- * 'secCode'
+--
+-- * 'secMessage'
+securityPolicyListWarning
+    :: SecurityPolicyListWarning
+securityPolicyListWarning =
+    SecurityPolicyListWarning'
+    { _secData = Nothing
+    , _secCode = Nothing
+    , _secMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+secData :: Lens' SecurityPolicyListWarning [SecurityPolicyListWarningDataItem]
+secData
+  = lens _secData (\ s a -> s{_secData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+secCode :: Lens' SecurityPolicyListWarning (Maybe SecurityPolicyListWarningCode)
+secCode = lens _secCode (\ s a -> s{_secCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+secMessage :: Lens' SecurityPolicyListWarning (Maybe Text)
+secMessage
+  = lens _secMessage (\ s a -> s{_secMessage = a})
+
+instance FromJSON SecurityPolicyListWarning where
+        parseJSON
+          = withObject "SecurityPolicyListWarning"
+              (\ o ->
+                 SecurityPolicyListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON SecurityPolicyListWarning where
+        toJSON SecurityPolicyListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _secData, ("code" .=) <$> _secCode,
+                  ("message" .=) <$> _secMessage])
+
+-- | A quotas entry.
+--
+-- /See:/ 'quota' smart constructor.
+data Quota = Quota'
+    { _qMetric :: !(Maybe QuotaMetric)
+    , _qLimit  :: !(Maybe (Textual Double))
+    , _qUsage  :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Quota' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qMetric'
+--
+-- * 'qLimit'
+--
+-- * 'qUsage'
+quota
+    :: Quota
+quota =
+    Quota'
+    { _qMetric = Nothing
+    , _qLimit = Nothing
+    , _qUsage = Nothing
+    }
+
+-- | [Output Only] Name of the quota metric.
+qMetric :: Lens' Quota (Maybe QuotaMetric)
+qMetric = lens _qMetric (\ s a -> s{_qMetric = a})
+
+-- | [Output Only] Quota limit for this metric.
+qLimit :: Lens' Quota (Maybe Double)
+qLimit
+  = lens _qLimit (\ s a -> s{_qLimit = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Current usage of this metric.
+qUsage :: Lens' Quota (Maybe Double)
+qUsage
+  = lens _qUsage (\ s a -> s{_qUsage = a}) .
+      mapping _Coerce
+
+instance FromJSON Quota where
+        parseJSON
+          = withObject "Quota"
+              (\ o ->
+                 Quota' <$>
+                   (o .:? "metric") <*> (o .:? "limit") <*>
+                     (o .:? "usage"))
+
+instance ToJSON Quota where
+        toJSON Quota'{..}
+          = object
+              (catMaybes
+                 [("metric" .=) <$> _qMetric,
+                  ("limit" .=) <$> _qLimit, ("usage" .=) <$> _qUsage])
+
+-- | InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for
+-- v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (==
+-- resource_for v1.regionInstanceGroups ==)
+--
+-- /See:/ 'instanceGroup' smart constructor.
+data InstanceGroup = InstanceGroup'
+    { _ig1Size              :: !(Maybe (Textual Int32))
+    , _ig1Kind              :: !Text
+    , _ig1Fingerprint       :: !(Maybe Bytes)
+    , _ig1Network           :: !(Maybe Text)
+    , _ig1Zone              :: !(Maybe Text)
+    , _ig1SelfLink          :: !(Maybe Text)
+    , _ig1Name              :: !(Maybe Text)
+    , _ig1CreationTimestamp :: !(Maybe Text)
+    , _ig1Subnetwork        :: !(Maybe Text)
+    , _ig1Id                :: !(Maybe (Textual Word64))
+    , _ig1Region            :: !(Maybe Text)
+    , _ig1Description       :: !(Maybe Text)
+    , _ig1NamedPorts        :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ig1Size'
+--
+-- * 'ig1Kind'
+--
+-- * 'ig1Fingerprint'
+--
+-- * 'ig1Network'
+--
+-- * 'ig1Zone'
+--
+-- * 'ig1SelfLink'
+--
+-- * 'ig1Name'
+--
+-- * 'ig1CreationTimestamp'
+--
+-- * 'ig1Subnetwork'
+--
+-- * 'ig1Id'
+--
+-- * 'ig1Region'
+--
+-- * 'ig1Description'
+--
+-- * 'ig1NamedPorts'
+instanceGroup
+    :: InstanceGroup
+instanceGroup =
+    InstanceGroup'
+    { _ig1Size = Nothing
+    , _ig1Kind = "compute#instanceGroup"
+    , _ig1Fingerprint = Nothing
+    , _ig1Network = Nothing
+    , _ig1Zone = Nothing
+    , _ig1SelfLink = Nothing
+    , _ig1Name = Nothing
+    , _ig1CreationTimestamp = Nothing
+    , _ig1Subnetwork = Nothing
+    , _ig1Id = Nothing
+    , _ig1Region = Nothing
+    , _ig1Description = Nothing
+    , _ig1NamedPorts = Nothing
+    }
+
+-- | [Output Only] The total number of instances in the instance group.
+ig1Size :: Lens' InstanceGroup (Maybe Int32)
+ig1Size
+  = lens _ig1Size (\ s a -> s{_ig1Size = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The resource type, which is always compute#instanceGroup
+-- for instance groups.
+ig1Kind :: Lens' InstanceGroup Text
+ig1Kind = lens _ig1Kind (\ s a -> s{_ig1Kind = a})
+
+-- | [Output Only] The fingerprint of the named ports. The system uses this
+-- fingerprint to detect conflicts when multiple users change the named
+-- ports concurrently.
+ig1Fingerprint :: Lens' InstanceGroup (Maybe ByteString)
+ig1Fingerprint
+  = lens _ig1Fingerprint
+      (\ s a -> s{_ig1Fingerprint = a})
+      . mapping _Bytes
+
+-- | The URL of the network to which all instances in the instance group
+-- belong.
+ig1Network :: Lens' InstanceGroup (Maybe Text)
+ig1Network
+  = lens _ig1Network (\ s a -> s{_ig1Network = a})
+
+-- | [Output Only] The URL of the zone where the instance group is located
+-- (for zonal resources).
+ig1Zone :: Lens' InstanceGroup (Maybe Text)
+ig1Zone = lens _ig1Zone (\ s a -> s{_ig1Zone = a})
+
+-- | [Output Only] The URL for this instance group. The server generates this
+-- URL.
+ig1SelfLink :: Lens' InstanceGroup (Maybe Text)
+ig1SelfLink
+  = lens _ig1SelfLink (\ s a -> s{_ig1SelfLink = a})
+
+-- | The name of the instance group. The name must be 1-63 characters long,
+-- and comply with RFC1035.
+ig1Name :: Lens' InstanceGroup (Maybe Text)
+ig1Name = lens _ig1Name (\ s a -> s{_ig1Name = a})
+
+-- | [Output Only] The creation timestamp for this instance group in RFC3339
+-- text format.
+ig1CreationTimestamp :: Lens' InstanceGroup (Maybe Text)
+ig1CreationTimestamp
+  = lens _ig1CreationTimestamp
+      (\ s a -> s{_ig1CreationTimestamp = a})
+
+-- | [Output Only] The URL of the subnetwork to which all instances in the
+-- instance group belong.
+ig1Subnetwork :: Lens' InstanceGroup (Maybe Text)
+ig1Subnetwork
+  = lens _ig1Subnetwork
+      (\ s a -> s{_ig1Subnetwork = a})
+
+-- | [Output Only] A unique identifier for this instance group, generated by
+-- the server.
+ig1Id :: Lens' InstanceGroup (Maybe Word64)
+ig1Id
+  = lens _ig1Id (\ s a -> s{_ig1Id = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The URL of the region where the instance group is located
+-- (for regional resources).
+ig1Region :: Lens' InstanceGroup (Maybe Text)
+ig1Region
+  = lens _ig1Region (\ s a -> s{_ig1Region = a})
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+ig1Description :: Lens' InstanceGroup (Maybe Text)
+ig1Description
+  = lens _ig1Description
+      (\ s a -> s{_ig1Description = a})
+
+-- | Assigns a name to a port number. For example: {name: \"http\", port: 80}
+-- This allows the system to reference ports by the assigned name instead
+-- of a port number. Named ports can also contain multiple ports. For
+-- example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] Named
+-- ports apply to all instances in this instance group.
+ig1NamedPorts :: Lens' InstanceGroup [NamedPort]
+ig1NamedPorts
+  = lens _ig1NamedPorts
+      (\ s a -> s{_ig1NamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroup where
+        parseJSON
+          = withObject "InstanceGroup"
+              (\ o ->
+                 InstanceGroup' <$>
+                   (o .:? "size") <*>
+                     (o .:? "kind" .!= "compute#instanceGroup")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "network")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON InstanceGroup where
+        toJSON InstanceGroup'{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _ig1Size, Just ("kind" .= _ig1Kind),
+                  ("fingerprint" .=) <$> _ig1Fingerprint,
+                  ("network" .=) <$> _ig1Network,
+                  ("zone" .=) <$> _ig1Zone,
+                  ("selfLink" .=) <$> _ig1SelfLink,
+                  ("name" .=) <$> _ig1Name,
+                  ("creationTimestamp" .=) <$> _ig1CreationTimestamp,
+                  ("subnetwork" .=) <$> _ig1Subnetwork,
+                  ("id" .=) <$> _ig1Id, ("region" .=) <$> _ig1Region,
+                  ("description" .=) <$> _ig1Description,
+                  ("namedPorts" .=) <$> _ig1NamedPorts])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'addressListWarning' smart constructor.
+data AddressListWarning = AddressListWarning'
+    { _alwlData    :: !(Maybe [AddressListWarningDataItem])
+    , _alwlCode    :: !(Maybe AddressListWarningCode)
+    , _alwlMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alwlData'
+--
+-- * 'alwlCode'
+--
+-- * 'alwlMessage'
+addressListWarning
+    :: AddressListWarning
+addressListWarning =
+    AddressListWarning'
+    { _alwlData = Nothing
+    , _alwlCode = Nothing
+    , _alwlMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+alwlData :: Lens' AddressListWarning [AddressListWarningDataItem]
+alwlData
+  = lens _alwlData (\ s a -> s{_alwlData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+alwlCode :: Lens' AddressListWarning (Maybe AddressListWarningCode)
+alwlCode = lens _alwlCode (\ s a -> s{_alwlCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+alwlMessage :: Lens' AddressListWarning (Maybe Text)
+alwlMessage
+  = lens _alwlMessage (\ s a -> s{_alwlMessage = a})
+
+instance FromJSON AddressListWarning where
+        parseJSON
+          = withObject "AddressListWarning"
+              (\ o ->
+                 AddressListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AddressListWarning where
+        toJSON AddressListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _alwlData,
+                  ("code" .=) <$> _alwlCode,
+                  ("message" .=) <$> _alwlMessage])
+
+--
+-- /See:/ 'regionSetLabelsRequest' smart constructor.
+data RegionSetLabelsRequest = RegionSetLabelsRequest'
+    { _rslrLabels           :: !(Maybe RegionSetLabelsRequestLabels)
+    , _rslrLabelFingerprint :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionSetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rslrLabels'
+--
+-- * 'rslrLabelFingerprint'
+regionSetLabelsRequest
+    :: RegionSetLabelsRequest
+regionSetLabelsRequest =
+    RegionSetLabelsRequest'
+    { _rslrLabels = Nothing
+    , _rslrLabelFingerprint = Nothing
+    }
+
+-- | The labels to set for this resource.
+rslrLabels :: Lens' RegionSetLabelsRequest (Maybe RegionSetLabelsRequestLabels)
+rslrLabels
+  = lens _rslrLabels (\ s a -> s{_rslrLabels = a})
+
+-- | The fingerprint of the previous set of labels for this resource, used to
+-- detect conflicts. The fingerprint is initially generated by Compute
+-- Engine and changes after every request to modify or update labels. You
+-- must always provide an up-to-date fingerprint hash in order to update or
+-- change labels. Make a get() request to the resource to get the latest
+-- fingerprint.
+rslrLabelFingerprint :: Lens' RegionSetLabelsRequest (Maybe ByteString)
+rslrLabelFingerprint
+  = lens _rslrLabelFingerprint
+      (\ s a -> s{_rslrLabelFingerprint = a})
+      . mapping _Bytes
+
+instance FromJSON RegionSetLabelsRequest where
+        parseJSON
+          = withObject "RegionSetLabelsRequest"
+              (\ o ->
+                 RegionSetLabelsRequest' <$>
+                   (o .:? "labels") <*> (o .:? "labelFingerprint"))
+
+instance ToJSON RegionSetLabelsRequest where
+        toJSON RegionSetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("labels" .=) <$> _rslrLabels,
+                  ("labelFingerprint" .=) <$> _rslrLabelFingerprint])
+
+--
+-- /See:/ 'routerInterface' smart constructor.
+data RouterInterface = RouterInterface'
+    { _riLinkedInterconnectAttachment :: !(Maybe Text)
+    , _riName                         :: !(Maybe Text)
+    , _riManagementType               :: !(Maybe RouterInterfaceManagementType)
+    , _riIPRange                      :: !(Maybe Text)
+    , _riLinkedVPNTunnel              :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouterInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riLinkedInterconnectAttachment'
+--
+-- * 'riName'
+--
+-- * 'riManagementType'
+--
+-- * 'riIPRange'
+--
+-- * 'riLinkedVPNTunnel'
+routerInterface
+    :: RouterInterface
+routerInterface =
+    RouterInterface'
+    { _riLinkedInterconnectAttachment = Nothing
+    , _riName = Nothing
+    , _riManagementType = Nothing
+    , _riIPRange = Nothing
+    , _riLinkedVPNTunnel = Nothing
+    }
+
+-- | URI of the linked interconnect attachment. It must be in the same region
+-- as the router. Each interface can have at most one linked resource and
+-- it could either be a VPN Tunnel or an interconnect attachment.
+riLinkedInterconnectAttachment :: Lens' RouterInterface (Maybe Text)
+riLinkedInterconnectAttachment
+  = lens _riLinkedInterconnectAttachment
+      (\ s a -> s{_riLinkedInterconnectAttachment = a})
+
+-- | Name of this interface entry. The name must be 1-63 characters long and
+-- comply with RFC1035.
+riName :: Lens' RouterInterface (Maybe Text)
+riName = lens _riName (\ s a -> s{_riName = a})
+
+-- | [Output Only] The resource that configures and manages this interface.
+-- MANAGED_BY_USER is the default value and can be managed by you or other
+-- users; MANAGED_BY_ATTACHMENT is an interface that is configured and
+-- managed by Cloud Interconnect, specifically by an InterconnectAttachment
+-- of type PARTNER. Google will automatically create, update, and delete
+-- this type of interface when the PARTNER InterconnectAttachment is
+-- created, updated, or deleted.
+riManagementType :: Lens' RouterInterface (Maybe RouterInterfaceManagementType)
+riManagementType
+  = lens _riManagementType
+      (\ s a -> s{_riManagementType = a})
+
+-- | IP address and range of the interface. The IP range must be in the
+-- RFC3927 link-local IP space. The value must be a CIDR-formatted string,
+-- for example: 169.254.0.1\/30. NOTE: Do not truncate the address as it
+-- represents the IP address of the interface.
+riIPRange :: Lens' RouterInterface (Maybe Text)
+riIPRange
+  = lens _riIPRange (\ s a -> s{_riIPRange = a})
+
+-- | URI of the linked VPN tunnel. It must be in the same region as the
+-- router. Each interface can have at most one linked resource and it could
+-- either be a VPN Tunnel or an interconnect attachment.
+riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)
+riLinkedVPNTunnel
+  = lens _riLinkedVPNTunnel
+      (\ s a -> s{_riLinkedVPNTunnel = a})
+
+instance FromJSON RouterInterface where
+        parseJSON
+          = withObject "RouterInterface"
+              (\ o ->
+                 RouterInterface' <$>
+                   (o .:? "linkedInterconnectAttachment") <*>
+                     (o .:? "name")
+                     <*> (o .:? "managementType")
+                     <*> (o .:? "ipRange")
+                     <*> (o .:? "linkedVpnTunnel"))
+
+instance ToJSON RouterInterface where
+        toJSON RouterInterface'{..}
+          = object
+              (catMaybes
+                 [("linkedInterconnectAttachment" .=) <$>
+                    _riLinkedInterconnectAttachment,
+                  ("name" .=) <$> _riName,
+                  ("managementType" .=) <$> _riManagementType,
+                  ("ipRange" .=) <$> _riIPRange,
+                  ("linkedVpnTunnel" .=) <$> _riLinkedVPNTunnel])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'networkListWarning' smart constructor.
+data NetworkListWarning = NetworkListWarning'
+    { _nlwData    :: !(Maybe [NetworkListWarningDataItem])
+    , _nlwCode    :: !(Maybe NetworkListWarningCode)
+    , _nlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nlwData'
+--
+-- * 'nlwCode'
+--
+-- * 'nlwMessage'
+networkListWarning
+    :: NetworkListWarning
+networkListWarning =
+    NetworkListWarning'
+    { _nlwData = Nothing
+    , _nlwCode = Nothing
+    , _nlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+nlwData :: Lens' NetworkListWarning [NetworkListWarningDataItem]
+nlwData
+  = lens _nlwData (\ s a -> s{_nlwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+nlwCode :: Lens' NetworkListWarning (Maybe NetworkListWarningCode)
+nlwCode = lens _nlwCode (\ s a -> s{_nlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+nlwMessage :: Lens' NetworkListWarning (Maybe Text)
+nlwMessage
+  = lens _nlwMessage (\ s a -> s{_nlwMessage = a})
+
+instance FromJSON NetworkListWarning where
+        parseJSON
+          = withObject "NetworkListWarning"
+              (\ o ->
+                 NetworkListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NetworkListWarning where
+        toJSON NetworkListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _nlwData, ("code" .=) <$> _nlwCode,
+                  ("message" .=) <$> _nlwMessage])
+
+-- | Contains a list of Snapshot resources.
+--
+-- /See:/ 'snapshotList' smart constructor.
+data SnapshotList = SnapshotList'
+    { _snaNextPageToken :: !(Maybe Text)
+    , _snaKind          :: !Text
+    , _snaItems         :: !(Maybe [Snapshot])
+    , _snaSelfLink      :: !(Maybe Text)
+    , _snaWarning       :: !(Maybe SnapshotListWarning)
+    , _snaId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snaNextPageToken'
+--
+-- * 'snaKind'
+--
+-- * 'snaItems'
+--
+-- * 'snaSelfLink'
+--
+-- * 'snaWarning'
+--
+-- * 'snaId'
+snapshotList
+    :: SnapshotList
+snapshotList =
+    SnapshotList'
+    { _snaNextPageToken = Nothing
+    , _snaKind = "compute#snapshotList"
+    , _snaItems = Nothing
+    , _snaSelfLink = Nothing
+    , _snaWarning = Nothing
+    , _snaId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+snaNextPageToken :: Lens' SnapshotList (Maybe Text)
+snaNextPageToken
+  = lens _snaNextPageToken
+      (\ s a -> s{_snaNextPageToken = a})
+
+-- | Type of resource.
+snaKind :: Lens' SnapshotList Text
+snaKind = lens _snaKind (\ s a -> s{_snaKind = a})
+
+-- | A list of Snapshot resources.
+snaItems :: Lens' SnapshotList [Snapshot]
+snaItems
+  = lens _snaItems (\ s a -> s{_snaItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+snaSelfLink :: Lens' SnapshotList (Maybe Text)
+snaSelfLink
+  = lens _snaSelfLink (\ s a -> s{_snaSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+snaWarning :: Lens' SnapshotList (Maybe SnapshotListWarning)
+snaWarning
+  = lens _snaWarning (\ s a -> s{_snaWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+snaId :: Lens' SnapshotList (Maybe Text)
+snaId = lens _snaId (\ s a -> s{_snaId = a})
+
+instance FromJSON SnapshotList where
+        parseJSON
+          = withObject "SnapshotList"
+              (\ o ->
+                 SnapshotList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#snapshotList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON SnapshotList where
+        toJSON SnapshotList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _snaNextPageToken,
+                  Just ("kind" .= _snaKind),
+                  ("items" .=) <$> _snaItems,
+                  ("selfLink" .=) <$> _snaSelfLink,
+                  ("warning" .=) <$> _snaWarning,
+                  ("id" .=) <$> _snaId])
+
+-- | Diagnostics information about interconnect, contains detailed and
+-- current technical information about Google?s side of the connection.
+--
+-- /See:/ 'interconnectDiagnostics' smart constructor.
+data InterconnectDiagnostics = InterconnectDiagnostics'
+    { _idMACAddress :: !(Maybe Text)
+    , _idArpCaches  :: !(Maybe [InterconnectDiagnosticsARPEntry])
+    , _idLinks      :: !(Maybe [InterconnectDiagnosticsLinkStatus])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectDiagnostics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idMACAddress'
+--
+-- * 'idArpCaches'
+--
+-- * 'idLinks'
+interconnectDiagnostics
+    :: InterconnectDiagnostics
+interconnectDiagnostics =
+    InterconnectDiagnostics'
+    { _idMACAddress = Nothing
+    , _idArpCaches = Nothing
+    , _idLinks = Nothing
+    }
+
+-- | The MAC address of the Interconnect\'s bundle interface.
+idMACAddress :: Lens' InterconnectDiagnostics (Maybe Text)
+idMACAddress
+  = lens _idMACAddress (\ s a -> s{_idMACAddress = a})
+
+-- | A list of InterconnectDiagnostics.ARPEntry objects, describing
+-- individual neighbors currently seen by the Google router in the ARP
+-- cache for the Interconnect. This will be empty when the Interconnect is
+-- not bundled.
+idArpCaches :: Lens' InterconnectDiagnostics [InterconnectDiagnosticsARPEntry]
+idArpCaches
+  = lens _idArpCaches (\ s a -> s{_idArpCaches = a}) .
+      _Default
+      . _Coerce
+
+-- | A list of InterconnectDiagnostics.LinkStatus objects, describing the
+-- status for each link on the Interconnect.
+idLinks :: Lens' InterconnectDiagnostics [InterconnectDiagnosticsLinkStatus]
+idLinks
+  = lens _idLinks (\ s a -> s{_idLinks = a}) . _Default
+      . _Coerce
+
+instance FromJSON InterconnectDiagnostics where
+        parseJSON
+          = withObject "InterconnectDiagnostics"
+              (\ o ->
+                 InterconnectDiagnostics' <$>
+                   (o .:? "macAddress") <*>
+                     (o .:? "arpCaches" .!= mempty)
+                     <*> (o .:? "links" .!= mempty))
+
+instance ToJSON InterconnectDiagnostics where
+        toJSON InterconnectDiagnostics'{..}
+          = object
+              (catMaybes
+                 [("macAddress" .=) <$> _idMACAddress,
+                  ("arpCaches" .=) <$> _idArpCaches,
+                  ("links" .=) <$> _idLinks])
+
+--
+-- /See:/ 'licenseCode' smart constructor.
+data LicenseCode = LicenseCode'
+    { _lcState             :: !(Maybe LicenseCodeState)
+    , _lcKind              :: !Text
+    , _lcTransferable      :: !(Maybe Bool)
+    , _lcSelfLink          :: !(Maybe Text)
+    , _lcName              :: !(Maybe Text)
+    , _lcCreationTimestamp :: !(Maybe Text)
+    , _lcId                :: !(Maybe (Textual Word64))
+    , _lcLicenseAlias      :: !(Maybe [LicenseCodeLicenseAlias])
+    , _lcDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicenseCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcState'
+--
+-- * 'lcKind'
+--
+-- * 'lcTransferable'
+--
+-- * 'lcSelfLink'
+--
+-- * 'lcName'
+--
+-- * 'lcCreationTimestamp'
+--
+-- * 'lcId'
+--
+-- * 'lcLicenseAlias'
+--
+-- * 'lcDescription'
+licenseCode
+    :: LicenseCode
+licenseCode =
+    LicenseCode'
+    { _lcState = Nothing
+    , _lcKind = "compute#licenseCode"
+    , _lcTransferable = Nothing
+    , _lcSelfLink = Nothing
+    , _lcName = Nothing
+    , _lcCreationTimestamp = Nothing
+    , _lcId = Nothing
+    , _lcLicenseAlias = Nothing
+    , _lcDescription = Nothing
+    }
+
+-- | [Output Only] Current state of this License Code.
+lcState :: Lens' LicenseCode (Maybe LicenseCodeState)
+lcState = lens _lcState (\ s a -> s{_lcState = a})
+
+-- | [Output Only] Type of resource. Always compute#licenseCode for licenses.
+lcKind :: Lens' LicenseCode Text
+lcKind = lens _lcKind (\ s a -> s{_lcKind = a})
+
+-- | [Output Only] If true, the license will remain attached when creating
+-- images or snapshots from disks. Otherwise, the license is not
+-- transferred.
+lcTransferable :: Lens' LicenseCode (Maybe Bool)
+lcTransferable
+  = lens _lcTransferable
+      (\ s a -> s{_lcTransferable = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+lcSelfLink :: Lens' LicenseCode (Maybe Text)
+lcSelfLink
+  = lens _lcSelfLink (\ s a -> s{_lcSelfLink = a})
+
+-- | [Output Only] Name of the resource. The name is 1-20 characters long and
+-- must be a valid 64 bit integer.
+lcName :: Lens' LicenseCode (Maybe Text)
+lcName = lens _lcName (\ s a -> s{_lcName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+lcCreationTimestamp :: Lens' LicenseCode (Maybe Text)
+lcCreationTimestamp
+  = lens _lcCreationTimestamp
+      (\ s a -> s{_lcCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+lcId :: Lens' LicenseCode (Maybe Word64)
+lcId
+  = lens _lcId (\ s a -> s{_lcId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL and description aliases of Licenses with the same
+-- License Code.
+lcLicenseAlias :: Lens' LicenseCode [LicenseCodeLicenseAlias]
+lcLicenseAlias
+  = lens _lcLicenseAlias
+      (\ s a -> s{_lcLicenseAlias = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Description of this License Code.
+lcDescription :: Lens' LicenseCode (Maybe Text)
+lcDescription
+  = lens _lcDescription
+      (\ s a -> s{_lcDescription = a})
+
+instance FromJSON LicenseCode where
+        parseJSON
+          = withObject "LicenseCode"
+              (\ o ->
+                 LicenseCode' <$>
+                   (o .:? "state") <*>
+                     (o .:? "kind" .!= "compute#licenseCode")
+                     <*> (o .:? "transferable")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "licenseAlias" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON LicenseCode where
+        toJSON LicenseCode'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _lcState, Just ("kind" .= _lcKind),
+                  ("transferable" .=) <$> _lcTransferable,
+                  ("selfLink" .=) <$> _lcSelfLink,
+                  ("name" .=) <$> _lcName,
+                  ("creationTimestamp" .=) <$> _lcCreationTimestamp,
+                  ("id" .=) <$> _lcId,
+                  ("licenseAlias" .=) <$> _lcLicenseAlias,
+                  ("description" .=) <$> _lcDescription])
+
+--
+-- /See:/ 'testFailure' smart constructor.
+data TestFailure = TestFailure'
+    { _tfPath            :: !(Maybe Text)
+    , _tfExpectedService :: !(Maybe Text)
+    , _tfHost            :: !(Maybe Text)
+    , _tfActualService   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestFailure' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfPath'
+--
+-- * 'tfExpectedService'
+--
+-- * 'tfHost'
+--
+-- * 'tfActualService'
+testFailure
+    :: TestFailure
+testFailure =
+    TestFailure'
+    { _tfPath = Nothing
+    , _tfExpectedService = Nothing
+    , _tfHost = Nothing
+    , _tfActualService = Nothing
+    }
+
+tfPath :: Lens' TestFailure (Maybe Text)
+tfPath = lens _tfPath (\ s a -> s{_tfPath = a})
+
+tfExpectedService :: Lens' TestFailure (Maybe Text)
+tfExpectedService
+  = lens _tfExpectedService
+      (\ s a -> s{_tfExpectedService = a})
+
+tfHost :: Lens' TestFailure (Maybe Text)
+tfHost = lens _tfHost (\ s a -> s{_tfHost = a})
+
+tfActualService :: Lens' TestFailure (Maybe Text)
+tfActualService
+  = lens _tfActualService
+      (\ s a -> s{_tfActualService = a})
+
+instance FromJSON TestFailure where
+        parseJSON
+          = withObject "TestFailure"
+              (\ o ->
+                 TestFailure' <$>
+                   (o .:? "path") <*> (o .:? "expectedService") <*>
+                     (o .:? "host")
+                     <*> (o .:? "actualService"))
+
+instance ToJSON TestFailure where
+        toJSON TestFailure'{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _tfPath,
+                  ("expectedService" .=) <$> _tfExpectedService,
+                  ("host" .=) <$> _tfHost,
+                  ("actualService" .=) <$> _tfActualService])
+
+--
+-- /See:/ 'commitmentListWarningDataItem' smart constructor.
+data CommitmentListWarningDataItem = CommitmentListWarningDataItem'
+    { _clwdiValue :: !(Maybe Text)
+    , _clwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clwdiValue'
+--
+-- * 'clwdiKey'
+commitmentListWarningDataItem
+    :: CommitmentListWarningDataItem
+commitmentListWarningDataItem =
+    CommitmentListWarningDataItem'
+    { _clwdiValue = Nothing
+    , _clwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+clwdiValue :: Lens' CommitmentListWarningDataItem (Maybe Text)
+clwdiValue
+  = lens _clwdiValue (\ s a -> s{_clwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+clwdiKey :: Lens' CommitmentListWarningDataItem (Maybe Text)
+clwdiKey = lens _clwdiKey (\ s a -> s{_clwdiKey = a})
+
+instance FromJSON CommitmentListWarningDataItem where
+        parseJSON
+          = withObject "CommitmentListWarningDataItem"
+              (\ o ->
+                 CommitmentListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON CommitmentListWarningDataItem where
+        toJSON CommitmentListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _clwdiValue,
+                  ("key" .=) <$> _clwdiKey])
+
+-- | [Output Only] Informational warning which replaces the list of
+-- commitments when the list is empty.
+--
+-- /See:/ 'commitmentsScopedListWarning' smart constructor.
+data CommitmentsScopedListWarning = CommitmentsScopedListWarning'
+    { _cslwData    :: !(Maybe [CommitmentsScopedListWarningDataItem])
+    , _cslwCode    :: !(Maybe CommitmentsScopedListWarningCode)
+    , _cslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cslwData'
+--
+-- * 'cslwCode'
+--
+-- * 'cslwMessage'
+commitmentsScopedListWarning
+    :: CommitmentsScopedListWarning
+commitmentsScopedListWarning =
+    CommitmentsScopedListWarning'
+    { _cslwData = Nothing
+    , _cslwCode = Nothing
+    , _cslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+cslwData :: Lens' CommitmentsScopedListWarning [CommitmentsScopedListWarningDataItem]
+cslwData
+  = lens _cslwData (\ s a -> s{_cslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+cslwCode :: Lens' CommitmentsScopedListWarning (Maybe CommitmentsScopedListWarningCode)
+cslwCode = lens _cslwCode (\ s a -> s{_cslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+cslwMessage :: Lens' CommitmentsScopedListWarning (Maybe Text)
+cslwMessage
+  = lens _cslwMessage (\ s a -> s{_cslwMessage = a})
+
+instance FromJSON CommitmentsScopedListWarning where
+        parseJSON
+          = withObject "CommitmentsScopedListWarning"
+              (\ o ->
+                 CommitmentsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON CommitmentsScopedListWarning where
+        toJSON CommitmentsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _cslwData,
+                  ("code" .=) <$> _cslwCode,
+                  ("message" .=) <$> _cslwMessage])
+
+-- | An instance\'s serial console output.
+--
+-- /See:/ 'serialPortOutput' smart constructor.
+data SerialPortOutput = SerialPortOutput'
+    { _spoNext     :: !(Maybe (Textual Int64))
+    , _spoContents :: !(Maybe Text)
+    , _spoKind     :: !Text
+    , _spoStart    :: !(Maybe (Textual Int64))
+    , _spoSelfLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SerialPortOutput' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spoNext'
+--
+-- * 'spoContents'
+--
+-- * 'spoKind'
+--
+-- * 'spoStart'
+--
+-- * 'spoSelfLink'
+serialPortOutput
+    :: SerialPortOutput
+serialPortOutput =
+    SerialPortOutput'
+    { _spoNext = Nothing
+    , _spoContents = Nothing
+    , _spoKind = "compute#serialPortOutput"
+    , _spoStart = Nothing
+    , _spoSelfLink = Nothing
+    }
+
+-- | [Output Only] The position of the next byte of content from the serial
+-- console output. Use this value in the next request as the start
+-- parameter.
+spoNext :: Lens' SerialPortOutput (Maybe Int64)
+spoNext
+  = lens _spoNext (\ s a -> s{_spoNext = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The contents of the console output.
+spoContents :: Lens' SerialPortOutput (Maybe Text)
+spoContents
+  = lens _spoContents (\ s a -> s{_spoContents = a})
+
+-- | [Output Only] Type of the resource. Always compute#serialPortOutput for
+-- serial port output.
+spoKind :: Lens' SerialPortOutput Text
+spoKind = lens _spoKind (\ s a -> s{_spoKind = a})
+
+-- | The starting byte position of the output that was returned. This should
+-- match the start parameter sent with the request. If the serial console
+-- output exceeds the size of the buffer, older output will be overwritten
+-- by newer content and the start values will be mismatched.
+spoStart :: Lens' SerialPortOutput (Maybe Int64)
+spoStart
+  = lens _spoStart (\ s a -> s{_spoStart = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+spoSelfLink :: Lens' SerialPortOutput (Maybe Text)
+spoSelfLink
+  = lens _spoSelfLink (\ s a -> s{_spoSelfLink = a})
+
+instance FromJSON SerialPortOutput where
+        parseJSON
+          = withObject "SerialPortOutput"
+              (\ o ->
+                 SerialPortOutput' <$>
+                   (o .:? "next") <*> (o .:? "contents") <*>
+                     (o .:? "kind" .!= "compute#serialPortOutput")
+                     <*> (o .:? "start")
+                     <*> (o .:? "selfLink"))
+
+instance ToJSON SerialPortOutput where
+        toJSON SerialPortOutput'{..}
+          = object
+              (catMaybes
+                 [("next" .=) <$> _spoNext,
+                  ("contents" .=) <$> _spoContents,
+                  Just ("kind" .= _spoKind),
+                  ("start" .=) <$> _spoStart,
+                  ("selfLink" .=) <$> _spoSelfLink])
+
+--
+-- /See:/ 'targetVPNGatewayAggregatedList' smart constructor.
+data TargetVPNGatewayAggregatedList = TargetVPNGatewayAggregatedList'
+    { _tvgalNextPageToken :: !(Maybe Text)
+    , _tvgalKind          :: !Text
+    , _tvgalItems         :: !(Maybe TargetVPNGatewayAggregatedListItems)
+    , _tvgalSelfLink      :: !(Maybe Text)
+    , _tvgalWarning       :: !(Maybe TargetVPNGatewayAggregatedListWarning)
+    , _tvgalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgalNextPageToken'
+--
+-- * 'tvgalKind'
+--
+-- * 'tvgalItems'
+--
+-- * 'tvgalSelfLink'
+--
+-- * 'tvgalWarning'
+--
+-- * 'tvgalId'
+targetVPNGatewayAggregatedList
+    :: TargetVPNGatewayAggregatedList
+targetVPNGatewayAggregatedList =
+    TargetVPNGatewayAggregatedList'
+    { _tvgalNextPageToken = Nothing
+    , _tvgalKind = "compute#targetVpnGatewayAggregatedList"
+    , _tvgalItems = Nothing
+    , _tvgalSelfLink = Nothing
+    , _tvgalWarning = Nothing
+    , _tvgalId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalNextPageToken
+  = lens _tvgalNextPageToken
+      (\ s a -> s{_tvgalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text
+tvgalKind
+  = lens _tvgalKind (\ s a -> s{_tvgalKind = a})
+
+-- | A list of TargetVpnGateway resources.
+tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)
+tvgalItems
+  = lens _tvgalItems (\ s a -> s{_tvgalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalSelfLink
+  = lens _tvgalSelfLink
+      (\ s a -> s{_tvgalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+tvgalWarning :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListWarning)
+tvgalWarning
+  = lens _tvgalWarning (\ s a -> s{_tvgalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalId = lens _tvgalId (\ s a -> s{_tvgalId = a})
+
+instance FromJSON TargetVPNGatewayAggregatedList
+         where
+        parseJSON
+          = withObject "TargetVPNGatewayAggregatedList"
+              (\ o ->
+                 TargetVPNGatewayAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#targetVpnGatewayAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetVPNGatewayAggregatedList where
+        toJSON TargetVPNGatewayAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tvgalNextPageToken,
+                  Just ("kind" .= _tvgalKind),
+                  ("items" .=) <$> _tvgalItems,
+                  ("selfLink" .=) <$> _tvgalSelfLink,
+                  ("warning" .=) <$> _tvgalWarning,
+                  ("id" .=) <$> _tvgalId])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'interconnectAttachmentAggregatedListWarning' smart constructor.
+data InterconnectAttachmentAggregatedListWarning = InterconnectAttachmentAggregatedListWarning'
+    { _iaalwData    :: !(Maybe [InterconnectAttachmentAggregatedListWarningDataItem])
+    , _iaalwCode    :: !(Maybe InterconnectAttachmentAggregatedListWarningCode)
+    , _iaalwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaalwData'
+--
+-- * 'iaalwCode'
+--
+-- * 'iaalwMessage'
+interconnectAttachmentAggregatedListWarning
+    :: InterconnectAttachmentAggregatedListWarning
+interconnectAttachmentAggregatedListWarning =
+    InterconnectAttachmentAggregatedListWarning'
+    { _iaalwData = Nothing
+    , _iaalwCode = Nothing
+    , _iaalwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+iaalwData :: Lens' InterconnectAttachmentAggregatedListWarning [InterconnectAttachmentAggregatedListWarningDataItem]
+iaalwData
+  = lens _iaalwData (\ s a -> s{_iaalwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+iaalwCode :: Lens' InterconnectAttachmentAggregatedListWarning (Maybe InterconnectAttachmentAggregatedListWarningCode)
+iaalwCode
+  = lens _iaalwCode (\ s a -> s{_iaalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+iaalwMessage :: Lens' InterconnectAttachmentAggregatedListWarning (Maybe Text)
+iaalwMessage
+  = lens _iaalwMessage (\ s a -> s{_iaalwMessage = a})
+
+instance FromJSON
+         InterconnectAttachmentAggregatedListWarning where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentAggregatedListWarning"
+              (\ o ->
+                 InterconnectAttachmentAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         InterconnectAttachmentAggregatedListWarning where
+        toJSON
+          InterconnectAttachmentAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _iaalwData,
+                  ("code" .=) <$> _iaalwCode,
+                  ("message" .=) <$> _iaalwMessage])
+
+--
+-- /See:/ 'metadataItemsItem' smart constructor.
+data MetadataItemsItem = MetadataItemsItem'
+    { _miiValue :: !(Maybe Text)
+    , _miiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'miiValue'
+--
+-- * 'miiKey'
+metadataItemsItem
+    :: MetadataItemsItem
+metadataItemsItem =
+    MetadataItemsItem'
+    { _miiValue = Nothing
+    , _miiKey = Nothing
+    }
+
+-- | Value for the metadata entry. These are free-form strings, and only have
+-- meaning as interpreted by the image running in the instance. The only
+-- restriction placed on values is that their size must be less than or
+-- equal to 262144 bytes (256 KiB).
+miiValue :: Lens' MetadataItemsItem (Maybe Text)
+miiValue = lens _miiValue (\ s a -> s{_miiValue = a})
+
+-- | Key for the metadata entry. Keys must conform to the following regexp:
+-- [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected
+-- as part of a URL in the metadata server. Additionally, to avoid
+-- ambiguity, keys must not conflict with any other metadata keys for the
+-- project.
+miiKey :: Lens' MetadataItemsItem (Maybe Text)
+miiKey = lens _miiKey (\ s a -> s{_miiKey = a})
+
+instance FromJSON MetadataItemsItem where
+        parseJSON
+          = withObject "MetadataItemsItem"
+              (\ o ->
+                 MetadataItemsItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON MetadataItemsItem where
+        toJSON MetadataItemsItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _miiValue, ("key" .=) <$> _miiKey])
+
+-- | Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs
+--
+-- /See:/ 'signedURLKey' smart constructor.
+data SignedURLKey = SignedURLKey'
+    { _sukKeyValue :: !(Maybe Text)
+    , _sukKeyName  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SignedURLKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sukKeyValue'
+--
+-- * 'sukKeyName'
+signedURLKey
+    :: SignedURLKey
+signedURLKey =
+    SignedURLKey'
+    { _sukKeyValue = Nothing
+    , _sukKeyName = Nothing
+    }
+
+-- | 128-bit key value used for signing the URL. The key value must be a
+-- valid RFC 4648 Section 5 base64url encoded string.
+sukKeyValue :: Lens' SignedURLKey (Maybe Text)
+sukKeyValue
+  = lens _sukKeyValue (\ s a -> s{_sukKeyValue = a})
+
+-- | Name of the key. The name must be 1-63 characters long, and comply with
+-- RFC1035. Specifically, the name must be 1-63 characters long and match
+-- the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the
+-- first character must be a lowercase letter, and all following characters
+-- must be a dash, lowercase letter, or digit, except the last character,
+-- which cannot be a dash.
+sukKeyName :: Lens' SignedURLKey (Maybe Text)
+sukKeyName
+  = lens _sukKeyName (\ s a -> s{_sukKeyName = a})
+
+instance FromJSON SignedURLKey where
+        parseJSON
+          = withObject "SignedURLKey"
+              (\ o ->
+                 SignedURLKey' <$>
+                   (o .:? "keyValue") <*> (o .:? "keyName"))
+
+instance ToJSON SignedURLKey where
+        toJSON SignedURLKey'{..}
+          = object
+              (catMaybes
+                 [("keyValue" .=) <$> _sukKeyValue,
+                  ("keyName" .=) <$> _sukKeyName])
+
+-- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (==
+-- resource_for beta.targetHttpsProxies ==) (== resource_for
+-- v1.targetHttpsProxies ==)
+--
+-- /See:/ 'targetHTTPSProxy' smart constructor.
+data TargetHTTPSProxy = TargetHTTPSProxy'
+    { _thpSSLPolicy         :: !(Maybe Text)
+    , _thpURLMap            :: !(Maybe Text)
+    , _thpSSLCertificates   :: !(Maybe [Text])
+    , _thpQuicOverride      :: !(Maybe TargetHTTPSProxyQuicOverride)
+    , _thpKind              :: !Text
+    , _thpSelfLink          :: !(Maybe Text)
+    , _thpName              :: !(Maybe Text)
+    , _thpCreationTimestamp :: !(Maybe Text)
+    , _thpId                :: !(Maybe (Textual Word64))
+    , _thpDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpSSLPolicy'
+--
+-- * 'thpURLMap'
+--
+-- * 'thpSSLCertificates'
+--
+-- * 'thpQuicOverride'
+--
+-- * 'thpKind'
+--
+-- * 'thpSelfLink'
+--
+-- * 'thpName'
+--
+-- * 'thpCreationTimestamp'
+--
+-- * 'thpId'
+--
+-- * 'thpDescription'
+targetHTTPSProxy
+    :: TargetHTTPSProxy
+targetHTTPSProxy =
+    TargetHTTPSProxy'
+    { _thpSSLPolicy = Nothing
+    , _thpURLMap = Nothing
+    , _thpSSLCertificates = Nothing
+    , _thpQuicOverride = Nothing
+    , _thpKind = "compute#targetHttpsProxy"
+    , _thpSelfLink = Nothing
+    , _thpName = Nothing
+    , _thpCreationTimestamp = Nothing
+    , _thpId = Nothing
+    , _thpDescription = Nothing
+    }
+
+-- | URL of SslPolicy resource that will be associated with the
+-- TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource
+-- will not have any SSL policy configured.
+thpSSLPolicy :: Lens' TargetHTTPSProxy (Maybe Text)
+thpSSLPolicy
+  = lens _thpSSLPolicy (\ s a -> s{_thpSSLPolicy = a})
+
+-- | A fully-qualified or valid partial URL to the UrlMap resource that
+-- defines the mapping from URL to the BackendService. For example, the
+-- following are all valid URLs for specifying a URL map: -
+-- https:\/\/www.googleapis.compute\/v1\/projects\/project\/global\/urlMaps\/url-map
+-- - projects\/project\/global\/urlMaps\/url-map - global\/urlMaps\/url-map
+thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)
+thpURLMap
+  = lens _thpURLMap (\ s a -> s{_thpURLMap = a})
+
+-- | URLs to SslCertificate resources that are used to authenticate
+-- connections between users and the load balancer. At least one SSL
+-- certificate must be specified. Currently, you may specify up to 15 SSL
+-- certificates.
+thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]
+thpSSLCertificates
+  = lens _thpSSLCertificates
+      (\ s a -> s{_thpSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+-- | Specifies the QUIC override policy for this TargetHttpsProxy resource.
+-- This determines whether the load balancer will attempt to negotiate QUIC
+-- with clients or not. Can specify one of NONE, ENABLE, or DISABLE.
+-- Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE,
+-- and disables QUIC when set to DISABLE. If NONE is specified, uses the
+-- QUIC policy with no user overrides, which is equivalent to DISABLE. Not
+-- specifying this field is equivalent to specifying NONE.
+thpQuicOverride :: Lens' TargetHTTPSProxy (Maybe TargetHTTPSProxyQuicOverride)
+thpQuicOverride
+  = lens _thpQuicOverride
+      (\ s a -> s{_thpQuicOverride = a})
+
+-- | [Output Only] Type of resource. Always compute#targetHttpsProxy for
+-- target HTTPS proxies.
+thpKind :: Lens' TargetHTTPSProxy Text
+thpKind = lens _thpKind (\ s a -> s{_thpKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)
+thpSelfLink
+  = lens _thpSelfLink (\ s a -> s{_thpSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+thpName :: Lens' TargetHTTPSProxy (Maybe Text)
+thpName = lens _thpName (\ s a -> s{_thpName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)
+thpCreationTimestamp
+  = lens _thpCreationTimestamp
+      (\ s a -> s{_thpCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+thpId :: Lens' TargetHTTPSProxy (Maybe Word64)
+thpId
+  = lens _thpId (\ s a -> s{_thpId = a}) .
+      mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)
+thpDescription
+  = lens _thpDescription
+      (\ s a -> s{_thpDescription = a})
+
+instance FromJSON TargetHTTPSProxy where
+        parseJSON
+          = withObject "TargetHTTPSProxy"
+              (\ o ->
+                 TargetHTTPSProxy' <$>
+                   (o .:? "sslPolicy") <*> (o .:? "urlMap") <*>
+                     (o .:? "sslCertificates" .!= mempty)
+                     <*> (o .:? "quicOverride")
+                     <*> (o .:? "kind" .!= "compute#targetHttpsProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetHTTPSProxy where
+        toJSON TargetHTTPSProxy'{..}
+          = object
+              (catMaybes
+                 [("sslPolicy" .=) <$> _thpSSLPolicy,
+                  ("urlMap" .=) <$> _thpURLMap,
+                  ("sslCertificates" .=) <$> _thpSSLCertificates,
+                  ("quicOverride" .=) <$> _thpQuicOverride,
+                  Just ("kind" .= _thpKind),
+                  ("selfLink" .=) <$> _thpSelfLink,
+                  ("name" .=) <$> _thpName,
+                  ("creationTimestamp" .=) <$> _thpCreationTimestamp,
+                  ("id" .=) <$> _thpId,
+                  ("description" .=) <$> _thpDescription])
+
+-- | Message containing connection draining configuration.
+--
+-- /See:/ 'connectionDraining' smart constructor.
+newtype ConnectionDraining = ConnectionDraining'
+    { _cdDrainingTimeoutSec :: Maybe (Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ConnectionDraining' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdDrainingTimeoutSec'
+connectionDraining
+    :: ConnectionDraining
+connectionDraining =
+    ConnectionDraining'
+    { _cdDrainingTimeoutSec = Nothing
+    }
+
+-- | Time for which instance will be drained (not accept new connections, but
+-- still work to finish started).
+cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
+cdDrainingTimeoutSec
+  = lens _cdDrainingTimeoutSec
+      (\ s a -> s{_cdDrainingTimeoutSec = a})
+      . mapping _Coerce
+
+instance FromJSON ConnectionDraining where
+        parseJSON
+          = withObject "ConnectionDraining"
+              (\ o ->
+                 ConnectionDraining' <$> (o .:? "drainingTimeoutSec"))
+
+instance ToJSON ConnectionDraining where
+        toJSON ConnectionDraining'{..}
+          = object
+              (catMaybes
+                 [("drainingTimeoutSec" .=) <$>
+                    _cdDrainingTimeoutSec])
+
+--
+-- /See:/ 'interconnectAttachmentListWarningDataItem' smart constructor.
+data InterconnectAttachmentListWarningDataItem = InterconnectAttachmentListWarningDataItem'
+    { _ialwdiValue :: !(Maybe Text)
+    , _ialwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialwdiValue'
+--
+-- * 'ialwdiKey'
+interconnectAttachmentListWarningDataItem
+    :: InterconnectAttachmentListWarningDataItem
+interconnectAttachmentListWarningDataItem =
+    InterconnectAttachmentListWarningDataItem'
+    { _ialwdiValue = Nothing
+    , _ialwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+ialwdiValue :: Lens' InterconnectAttachmentListWarningDataItem (Maybe Text)
+ialwdiValue
+  = lens _ialwdiValue (\ s a -> s{_ialwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+ialwdiKey :: Lens' InterconnectAttachmentListWarningDataItem (Maybe Text)
+ialwdiKey
+  = lens _ialwdiKey (\ s a -> s{_ialwdiKey = a})
+
+instance FromJSON
+         InterconnectAttachmentListWarningDataItem where
+        parseJSON
+          = withObject
+              "InterconnectAttachmentListWarningDataItem"
+              (\ o ->
+                 InterconnectAttachmentListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InterconnectAttachmentListWarningDataItem where
+        toJSON InterconnectAttachmentListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ialwdiValue,
+                  ("key" .=) <$> _ialwdiKey])
+
+--
+-- /See:/ 'cacheInvalidationRule' smart constructor.
+data CacheInvalidationRule = CacheInvalidationRule'
+    { _cirPath :: !(Maybe Text)
+    , _cirHost :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CacheInvalidationRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirPath'
+--
+-- * 'cirHost'
+cacheInvalidationRule
+    :: CacheInvalidationRule
+cacheInvalidationRule =
+    CacheInvalidationRule'
+    { _cirPath = Nothing
+    , _cirHost = Nothing
+    }
+
+cirPath :: Lens' CacheInvalidationRule (Maybe Text)
+cirPath = lens _cirPath (\ s a -> s{_cirPath = a})
+
+-- | If set, this invalidation rule will only apply to requests with a Host
+-- header matching host.
+cirHost :: Lens' CacheInvalidationRule (Maybe Text)
+cirHost = lens _cirHost (\ s a -> s{_cirHost = a})
+
+instance FromJSON CacheInvalidationRule where
+        parseJSON
+          = withObject "CacheInvalidationRule"
+              (\ o ->
+                 CacheInvalidationRule' <$>
+                   (o .:? "path") <*> (o .:? "host"))
+
+instance ToJSON CacheInvalidationRule where
+        toJSON CacheInvalidationRule'{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _cirPath, ("host" .=) <$> _cirHost])
+
+--
+-- /See:/ 'addressAggregatedListWarningDataItem' smart constructor.
+data AddressAggregatedListWarningDataItem = AddressAggregatedListWarningDataItem'
+    { _aalwdiaValue :: !(Maybe Text)
+    , _aalwdiaKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalwdiaValue'
+--
+-- * 'aalwdiaKey'
+addressAggregatedListWarningDataItem
+    :: AddressAggregatedListWarningDataItem
+addressAggregatedListWarningDataItem =
+    AddressAggregatedListWarningDataItem'
+    { _aalwdiaValue = Nothing
+    , _aalwdiaKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aalwdiaValue :: Lens' AddressAggregatedListWarningDataItem (Maybe Text)
+aalwdiaValue
+  = lens _aalwdiaValue (\ s a -> s{_aalwdiaValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+aalwdiaKey :: Lens' AddressAggregatedListWarningDataItem (Maybe Text)
+aalwdiaKey
+  = lens _aalwdiaKey (\ s a -> s{_aalwdiaKey = a})
+
+instance FromJSON
+         AddressAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "AddressAggregatedListWarningDataItem"
+              (\ o ->
+                 AddressAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AddressAggregatedListWarningDataItem
+         where
+        toJSON AddressAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aalwdiaValue,
+                  ("key" .=) <$> _aalwdiaKey])
+
+--
+-- /See:/ 'targetVPNGatewaysScopedList' smart constructor.
+data TargetVPNGatewaysScopedList = TargetVPNGatewaysScopedList'
+    { _tvgslTargetVPNGateways :: !(Maybe [TargetVPNGateway])
+    , _tvgslWarning           :: !(Maybe TargetVPNGatewaysScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslTargetVPNGateways'
+--
+-- * 'tvgslWarning'
+targetVPNGatewaysScopedList
+    :: TargetVPNGatewaysScopedList
+targetVPNGatewaysScopedList =
+    TargetVPNGatewaysScopedList'
+    { _tvgslTargetVPNGateways = Nothing
+    , _tvgslWarning = Nothing
+    }
+
+-- | [Output Only] A list of target vpn gateways contained in this scope.
+tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]
+tvgslTargetVPNGateways
+  = lens _tvgslTargetVPNGateways
+      (\ s a -> s{_tvgslTargetVPNGateways = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)
+tvgslWarning
+  = lens _tvgslWarning (\ s a -> s{_tvgslWarning = a})
+
+instance FromJSON TargetVPNGatewaysScopedList where
+        parseJSON
+          = withObject "TargetVPNGatewaysScopedList"
+              (\ o ->
+                 TargetVPNGatewaysScopedList' <$>
+                   (o .:? "targetVpnGateways" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON TargetVPNGatewaysScopedList where
+        toJSON TargetVPNGatewaysScopedList'{..}
+          = object
+              (catMaybes
+                 [("targetVpnGateways" .=) <$>
+                    _tvgslTargetVPNGateways,
+                  ("warning" .=) <$> _tvgslWarning])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'commitmentAggregatedListWarning' smart constructor.
+data CommitmentAggregatedListWarning = CommitmentAggregatedListWarning'
+    { _calwData    :: !(Maybe [CommitmentAggregatedListWarningDataItem])
+    , _calwCode    :: !(Maybe CommitmentAggregatedListWarningCode)
+    , _calwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'calwData'
+--
+-- * 'calwCode'
+--
+-- * 'calwMessage'
+commitmentAggregatedListWarning
+    :: CommitmentAggregatedListWarning
+commitmentAggregatedListWarning =
+    CommitmentAggregatedListWarning'
+    { _calwData = Nothing
+    , _calwCode = Nothing
+    , _calwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+calwData :: Lens' CommitmentAggregatedListWarning [CommitmentAggregatedListWarningDataItem]
+calwData
+  = lens _calwData (\ s a -> s{_calwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+calwCode :: Lens' CommitmentAggregatedListWarning (Maybe CommitmentAggregatedListWarningCode)
+calwCode = lens _calwCode (\ s a -> s{_calwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+calwMessage :: Lens' CommitmentAggregatedListWarning (Maybe Text)
+calwMessage
+  = lens _calwMessage (\ s a -> s{_calwMessage = a})
+
+instance FromJSON CommitmentAggregatedListWarning
+         where
+        parseJSON
+          = withObject "CommitmentAggregatedListWarning"
+              (\ o ->
+                 CommitmentAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON CommitmentAggregatedListWarning where
+        toJSON CommitmentAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _calwData,
+                  ("code" .=) <$> _calwCode,
+                  ("message" .=) <$> _calwMessage])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'regionInstanceGroupListWarning' smart constructor.
+data RegionInstanceGroupListWarning = RegionInstanceGroupListWarning'
+    { _riglwData    :: !(Maybe [RegionInstanceGroupListWarningDataItem])
+    , _riglwCode    :: !(Maybe RegionInstanceGroupListWarningCode)
+    , _riglwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riglwData'
+--
+-- * 'riglwCode'
+--
+-- * 'riglwMessage'
+regionInstanceGroupListWarning
+    :: RegionInstanceGroupListWarning
+regionInstanceGroupListWarning =
+    RegionInstanceGroupListWarning'
+    { _riglwData = Nothing
+    , _riglwCode = Nothing
+    , _riglwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+riglwData :: Lens' RegionInstanceGroupListWarning [RegionInstanceGroupListWarningDataItem]
+riglwData
+  = lens _riglwData (\ s a -> s{_riglwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+riglwCode :: Lens' RegionInstanceGroupListWarning (Maybe RegionInstanceGroupListWarningCode)
+riglwCode
+  = lens _riglwCode (\ s a -> s{_riglwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+riglwMessage :: Lens' RegionInstanceGroupListWarning (Maybe Text)
+riglwMessage
+  = lens _riglwMessage (\ s a -> s{_riglwMessage = a})
+
+instance FromJSON RegionInstanceGroupListWarning
+         where
+        parseJSON
+          = withObject "RegionInstanceGroupListWarning"
+              (\ o ->
+                 RegionInstanceGroupListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RegionInstanceGroupListWarning where
+        toJSON RegionInstanceGroupListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _riglwData,
+                  ("code" .=) <$> _riglwCode,
+                  ("message" .=) <$> _riglwMessage])
+
+-- | An access configuration attached to an instance\'s network interface.
+-- Only one access config per instance is supported.
+--
+-- /See:/ 'accessConfig' smart constructor.
+data AccessConfig = AccessConfig'
+    { _acNetworkTier         :: !(Maybe AccessConfigNetworkTier)
+    , _acSetPublicPtr        :: !(Maybe Bool)
+    , _acKind                :: !Text
+    , _acName                :: !(Maybe Text)
+    , _acNATIP               :: !(Maybe Text)
+    , _acPublicPtrDomainName :: !(Maybe Text)
+    , _acType                :: !AccessConfigType
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccessConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acNetworkTier'
+--
+-- * 'acSetPublicPtr'
+--
+-- * 'acKind'
+--
+-- * 'acName'
+--
+-- * 'acNATIP'
+--
+-- * 'acPublicPtrDomainName'
+--
+-- * 'acType'
+accessConfig
+    :: AccessConfig
+accessConfig =
+    AccessConfig'
+    { _acNetworkTier = Nothing
+    , _acSetPublicPtr = Nothing
+    , _acKind = "compute#accessConfig"
+    , _acName = Nothing
+    , _acNATIP = Nothing
+    , _acPublicPtrDomainName = Nothing
+    , _acType = OneToOneNAT
+    }
+
+-- | This signifies the networking tier used for configuring this access
+-- configuration and can only take the following values: PREMIUM, STANDARD.
+-- If an AccessConfig is specified without a valid external IP address, an
+-- ephemeral IP will be created with this networkTier. If an AccessConfig
+-- with a valid external IP address is specified, it must match that of the
+-- networkTier associated with the Address resource owning that IP.
+acNetworkTier :: Lens' AccessConfig (Maybe AccessConfigNetworkTier)
+acNetworkTier
+  = lens _acNetworkTier
+      (\ s a -> s{_acNetworkTier = a})
+
+-- | Specifies whether a public DNS ?PTR? record should be created to map the
+-- external IP address of the instance to a DNS domain name.
+acSetPublicPtr :: Lens' AccessConfig (Maybe Bool)
+acSetPublicPtr
+  = lens _acSetPublicPtr
+      (\ s a -> s{_acSetPublicPtr = a})
+
+-- | [Output Only] Type of the resource. Always compute#accessConfig for
+-- access configs.
+acKind :: Lens' AccessConfig Text
+acKind = lens _acKind (\ s a -> s{_acKind = a})
+
+-- | The name of this access configuration. The default and recommended name
+-- is External NAT but you can use any arbitrary string you would like. For
+-- example, My external IP or Network Access.
+acName :: Lens' AccessConfig (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a})
+
+-- | An external IP address associated with this instance. Specify an unused
+-- static external IP address available to the project or leave this field
+-- undefined to use an IP from a shared ephemeral IP address pool. If you
+-- specify a static external IP address, it must live in the same region as
+-- the zone of the instance.
+acNATIP :: Lens' AccessConfig (Maybe Text)
+acNATIP = lens _acNATIP (\ s a -> s{_acNATIP = a})
+
+-- | The DNS domain name for the public PTR record. This field can only be
+-- set when the set_public_ptr field is enabled.
+acPublicPtrDomainName :: Lens' AccessConfig (Maybe Text)
+acPublicPtrDomainName
+  = lens _acPublicPtrDomainName
+      (\ s a -> s{_acPublicPtrDomainName = a})
+
+-- | The type of configuration. The default and only option is
+-- ONE_TO_ONE_NAT.
+acType :: Lens' AccessConfig AccessConfigType
+acType = lens _acType (\ s a -> s{_acType = a})
+
+instance FromJSON AccessConfig where
+        parseJSON
+          = withObject "AccessConfig"
+              (\ o ->
+                 AccessConfig' <$>
+                   (o .:? "networkTier") <*> (o .:? "setPublicPtr") <*>
+                     (o .:? "kind" .!= "compute#accessConfig")
+                     <*> (o .:? "name")
+                     <*> (o .:? "natIP")
+                     <*> (o .:? "publicPtrDomainName")
+                     <*> (o .:? "type" .!= OneToOneNAT))
+
+instance ToJSON AccessConfig where
+        toJSON AccessConfig'{..}
+          = object
+              (catMaybes
+                 [("networkTier" .=) <$> _acNetworkTier,
+                  ("setPublicPtr" .=) <$> _acSetPublicPtr,
+                  Just ("kind" .= _acKind), ("name" .=) <$> _acName,
+                  ("natIP" .=) <$> _acNATIP,
+                  ("publicPtrDomainName" .=) <$>
+                    _acPublicPtrDomainName,
+                  Just ("type" .= _acType)])
+
+-- | Specifies what kind of log the caller must write
+--
+-- /See:/ 'logConfig' smart constructor.
+data LogConfig = LogConfig'
+    { _lcCloudAudit :: !(Maybe LogConfigCloudAuditOptions)
+    , _lcDataAccess :: !(Maybe LogConfigDataAccessOptions)
+    , _lcCounter    :: !(Maybe LogConfigCounterOptions)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcCloudAudit'
+--
+-- * 'lcDataAccess'
+--
+-- * 'lcCounter'
+logConfig
+    :: LogConfig
+logConfig =
+    LogConfig'
+    { _lcCloudAudit = Nothing
+    , _lcDataAccess = Nothing
+    , _lcCounter = Nothing
+    }
+
+-- | Cloud audit options.
+lcCloudAudit :: Lens' LogConfig (Maybe LogConfigCloudAuditOptions)
+lcCloudAudit
+  = lens _lcCloudAudit (\ s a -> s{_lcCloudAudit = a})
+
+-- | Data access options.
+lcDataAccess :: Lens' LogConfig (Maybe LogConfigDataAccessOptions)
+lcDataAccess
+  = lens _lcDataAccess (\ s a -> s{_lcDataAccess = a})
+
+-- | Counter options.
+lcCounter :: Lens' LogConfig (Maybe LogConfigCounterOptions)
+lcCounter
+  = lens _lcCounter (\ s a -> s{_lcCounter = a})
+
+instance FromJSON LogConfig where
+        parseJSON
+          = withObject "LogConfig"
+              (\ o ->
+                 LogConfig' <$>
+                   (o .:? "cloudAudit") <*> (o .:? "dataAccess") <*>
+                     (o .:? "counter"))
+
+instance ToJSON LogConfig where
+        toJSON LogConfig'{..}
+          = object
+              (catMaybes
+                 [("cloudAudit" .=) <$> _lcCloudAudit,
+                  ("dataAccess" .=) <$> _lcDataAccess,
+                  ("counter" .=) <$> _lcCounter])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'zoneListWarning' smart constructor.
+data ZoneListWarning = ZoneListWarning'
+    { _zlwData    :: !(Maybe [ZoneListWarningDataItem])
+    , _zlwCode    :: !(Maybe ZoneListWarningCode)
+    , _zlwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlwData'
+--
+-- * 'zlwCode'
+--
+-- * 'zlwMessage'
+zoneListWarning
+    :: ZoneListWarning
+zoneListWarning =
+    ZoneListWarning'
+    { _zlwData = Nothing
+    , _zlwCode = Nothing
+    , _zlwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+zlwData :: Lens' ZoneListWarning [ZoneListWarningDataItem]
+zlwData
+  = lens _zlwData (\ s a -> s{_zlwData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+zlwCode :: Lens' ZoneListWarning (Maybe ZoneListWarningCode)
+zlwCode = lens _zlwCode (\ s a -> s{_zlwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+zlwMessage :: Lens' ZoneListWarning (Maybe Text)
+zlwMessage
+  = lens _zlwMessage (\ s a -> s{_zlwMessage = a})
+
+instance FromJSON ZoneListWarning where
+        parseJSON
+          = withObject "ZoneListWarning"
+              (\ o ->
+                 ZoneListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ZoneListWarning where
+        toJSON ZoneListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _zlwData, ("code" .=) <$> _zlwCode,
+                  ("message" .=) <$> _zlwMessage])
+
+--
+-- /See:/ 'managedInstanceLastAttemptErrorsErrorsItem' smart constructor.
+data ManagedInstanceLastAttemptErrorsErrorsItem = ManagedInstanceLastAttemptErrorsErrorsItem'
+    { _milaeeiLocation :: !(Maybe Text)
+    , _milaeeiCode     :: !(Maybe Text)
+    , _milaeeiMessage  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttemptErrorsErrorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaeeiLocation'
+--
+-- * 'milaeeiCode'
+--
+-- * 'milaeeiMessage'
+managedInstanceLastAttemptErrorsErrorsItem
+    :: ManagedInstanceLastAttemptErrorsErrorsItem
+managedInstanceLastAttemptErrorsErrorsItem =
+    ManagedInstanceLastAttemptErrorsErrorsItem'
+    { _milaeeiLocation = Nothing
+    , _milaeeiCode = Nothing
+    , _milaeeiMessage = Nothing
+    }
+
+-- | [Output Only] Indicates the field in the request that caused the error.
+-- This property is optional.
+milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiLocation
+  = lens _milaeeiLocation
+      (\ s a -> s{_milaeeiLocation = a})
+
+-- | [Output Only] The error type identifier for this error.
+milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiCode
+  = lens _milaeeiCode (\ s a -> s{_milaeeiCode = a})
+
+-- | [Output Only] An optional, human-readable error message.
+milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiMessage
+  = lens _milaeeiMessage
+      (\ s a -> s{_milaeeiMessage = a})
+
+instance FromJSON
+         ManagedInstanceLastAttemptErrorsErrorsItem where
+        parseJSON
+          = withObject
+              "ManagedInstanceLastAttemptErrorsErrorsItem"
+              (\ o ->
+                 ManagedInstanceLastAttemptErrorsErrorsItem' <$>
+                   (o .:? "location") <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         ManagedInstanceLastAttemptErrorsErrorsItem where
+        toJSON
+          ManagedInstanceLastAttemptErrorsErrorsItem'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _milaeeiLocation,
+                  ("code" .=) <$> _milaeeiCode,
+                  ("message" .=) <$> _milaeeiMessage])
+
+--
+-- /See:/ 'instancesScopedListWarningDataItem' smart constructor.
+data InstancesScopedListWarningDataItem = InstancesScopedListWarningDataItem'
+    { _islwdiValue :: !(Maybe Text)
+    , _islwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islwdiValue'
+--
+-- * 'islwdiKey'
+instancesScopedListWarningDataItem
+    :: InstancesScopedListWarningDataItem
+instancesScopedListWarningDataItem =
+    InstancesScopedListWarningDataItem'
+    { _islwdiValue = Nothing
+    , _islwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
+islwdiValue
+  = lens _islwdiValue (\ s a -> s{_islwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
+islwdiKey
+  = lens _islwdiKey (\ s a -> s{_islwdiKey = a})
+
+instance FromJSON InstancesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "InstancesScopedListWarningDataItem"
+              (\ o ->
+                 InstancesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstancesScopedListWarningDataItem
+         where
+        toJSON InstancesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _islwdiValue,
+                  ("key" .=) <$> _islwdiKey])
+
+-- | Labels to apply to this snapshot. These can be later modified by the
+-- setLabels method. Label values may be empty.
+--
+-- /See:/ 'snapshotLabels' smart constructor.
+newtype SnapshotLabels = SnapshotLabels'
+    { _slAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slAddtional'
+snapshotLabels
+    :: HashMap Text Text -- ^ 'slAddtional'
+    -> SnapshotLabels
+snapshotLabels pSlAddtional_ =
+    SnapshotLabels'
+    { _slAddtional = _Coerce # pSlAddtional_
+    }
+
+slAddtional :: Lens' SnapshotLabels (HashMap Text Text)
+slAddtional
+  = lens _slAddtional (\ s a -> s{_slAddtional = a}) .
+      _Coerce
+
+instance FromJSON SnapshotLabels where
+        parseJSON
+          = withObject "SnapshotLabels"
+              (\ o -> SnapshotLabels' <$> (parseJSONObject o))
+
+instance ToJSON SnapshotLabels where
+        toJSON = toJSON . _slAddtional
+
+--
+-- /See:/ 'backendServicesScopedListWarningDataItem' smart constructor.
+data BackendServicesScopedListWarningDataItem = BackendServicesScopedListWarningDataItem'
+    { _bsslwdiValue :: !(Maybe Text)
+    , _bsslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsslwdiValue'
+--
+-- * 'bsslwdiKey'
+backendServicesScopedListWarningDataItem
+    :: BackendServicesScopedListWarningDataItem
+backendServicesScopedListWarningDataItem =
+    BackendServicesScopedListWarningDataItem'
+    { _bsslwdiValue = Nothing
+    , _bsslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+bsslwdiValue :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)
+bsslwdiValue
+  = lens _bsslwdiValue (\ s a -> s{_bsslwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+bsslwdiKey :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)
+bsslwdiKey
+  = lens _bsslwdiKey (\ s a -> s{_bsslwdiKey = a})
+
+instance FromJSON
+         BackendServicesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "BackendServicesScopedListWarningDataItem"
+              (\ o ->
+                 BackendServicesScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         BackendServicesScopedListWarningDataItem where
+        toJSON BackendServicesScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _bsslwdiValue,
+                  ("key" .=) <$> _bsslwdiKey])
+
+-- | A list of NodeTemplatesScopedList resources.
+--
+-- /See:/ 'nodeTemplateAggregatedListItems' smart constructor.
+newtype NodeTemplateAggregatedListItems = NodeTemplateAggregatedListItems'
+    { _ntaliAddtional :: HashMap Text NodeTemplatesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplateAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntaliAddtional'
+nodeTemplateAggregatedListItems
+    :: HashMap Text NodeTemplatesScopedList -- ^ 'ntaliAddtional'
+    -> NodeTemplateAggregatedListItems
+nodeTemplateAggregatedListItems pNtaliAddtional_ =
+    NodeTemplateAggregatedListItems'
+    { _ntaliAddtional = _Coerce # pNtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of node templates.
+ntaliAddtional :: Lens' NodeTemplateAggregatedListItems (HashMap Text NodeTemplatesScopedList)
+ntaliAddtional
+  = lens _ntaliAddtional
+      (\ s a -> s{_ntaliAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeTemplateAggregatedListItems
+         where
+        parseJSON
+          = withObject "NodeTemplateAggregatedListItems"
+              (\ o ->
+                 NodeTemplateAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON NodeTemplateAggregatedListItems where
+        toJSON = toJSON . _ntaliAddtional
+
+-- | A BackendService resource. This resource defines a group of backend
+-- virtual machines and their serving capacity. (== resource_for
+-- v1.backendService ==) (== resource_for beta.backendService ==)
+--
+-- /See:/ 'backendService' smart constructor.
+data BackendService = BackendService'
+    { _bsSessionAffinity      :: !(Maybe BackendServiceSessionAffinity)
+    , _bsBackends             :: !(Maybe [Backend])
+    , _bsAffinityCookieTtlSec :: !(Maybe (Textual Int32))
+    , _bsIap                  :: !(Maybe BackendServiceIAP)
+    , _bsLoadBalancingScheme  :: !(Maybe BackendServiceLoadBalancingScheme)
+    , _bsKind                 :: !Text
+    , _bsEnableCDN            :: !(Maybe Bool)
+    , _bsFingerprint          :: !(Maybe Bytes)
+    , _bsProtocol             :: !(Maybe BackendServiceProtocol)
+    , _bsSecurityPolicy       :: !(Maybe Text)
+    , _bsCdnPolicy            :: !(Maybe BackendServiceCdnPolicy)
+    , _bsSelfLink             :: !(Maybe Text)
+    , _bsName                 :: !(Maybe Text)
+    , _bsCreationTimestamp    :: !(Maybe Text)
+    , _bsId                   :: !(Maybe (Textual Word64))
+    , _bsRegion               :: !(Maybe Text)
+    , _bsConnectionDraining   :: !(Maybe ConnectionDraining)
+    , _bsTimeoutSec           :: !(Maybe (Textual Int32))
+    , _bsDescription          :: !(Maybe Text)
+    , _bsPortName             :: !(Maybe Text)
+    , _bsHealthChecks         :: !(Maybe [Text])
+    , _bsPort                 :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendService' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsSessionAffinity'
+--
+-- * 'bsBackends'
+--
+-- * 'bsAffinityCookieTtlSec'
+--
+-- * 'bsIap'
+--
+-- * 'bsLoadBalancingScheme'
+--
+-- * 'bsKind'
+--
+-- * 'bsEnableCDN'
+--
+-- * 'bsFingerprint'
+--
+-- * 'bsProtocol'
+--
+-- * 'bsSecurityPolicy'
+--
+-- * 'bsCdnPolicy'
+--
+-- * 'bsSelfLink'
+--
+-- * 'bsName'
+--
+-- * 'bsCreationTimestamp'
+--
+-- * 'bsId'
+--
+-- * 'bsRegion'
+--
+-- * 'bsConnectionDraining'
+--
+-- * 'bsTimeoutSec'
+--
+-- * 'bsDescription'
+--
+-- * 'bsPortName'
+--
+-- * 'bsHealthChecks'
+--
+-- * 'bsPort'
+backendService
+    :: BackendService
+backendService =
+    BackendService'
+    { _bsSessionAffinity = Nothing
+    , _bsBackends = Nothing
+    , _bsAffinityCookieTtlSec = Nothing
+    , _bsIap = Nothing
+    , _bsLoadBalancingScheme = Nothing
+    , _bsKind = "compute#backendService"
+    , _bsEnableCDN = Nothing
+    , _bsFingerprint = Nothing
+    , _bsProtocol = Nothing
+    , _bsSecurityPolicy = Nothing
+    , _bsCdnPolicy = Nothing
+    , _bsSelfLink = Nothing
+    , _bsName = Nothing
+    , _bsCreationTimestamp = Nothing
+    , _bsId = Nothing
+    , _bsRegion = Nothing
+    , _bsConnectionDraining = Nothing
+    , _bsTimeoutSec = Nothing
+    , _bsDescription = Nothing
+    , _bsPortName = Nothing
+    , _bsHealthChecks = Nothing
+    , _bsPort = Nothing
+    }
+
+-- | Type of session affinity to use. The default is NONE. When the load
+-- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
+-- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
+-- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
+-- protocol is UDP, this field is not used.
+bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)
+bsSessionAffinity
+  = lens _bsSessionAffinity
+      (\ s a -> s{_bsSessionAffinity = a})
+
+-- | The list of backends that serve this BackendService.
+bsBackends :: Lens' BackendService [Backend]
+bsBackends
+  = lens _bsBackends (\ s a -> s{_bsBackends = a}) .
+      _Default
+      . _Coerce
+
+-- | Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE.
+-- If set to 0, the cookie is non-persistent and lasts only until the end
+-- of the browser session (or equivalent). The maximum allowed value for
+-- TTL is one day. When the load balancing scheme is INTERNAL, this field
+-- is not used.
+bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
+bsAffinityCookieTtlSec
+  = lens _bsAffinityCookieTtlSec
+      (\ s a -> s{_bsAffinityCookieTtlSec = a})
+      . mapping _Coerce
+
+bsIap :: Lens' BackendService (Maybe BackendServiceIAP)
+bsIap = lens _bsIap (\ s a -> s{_bsIap = a})
+
+-- | Indicates whether the backend service will be used with internal or
+-- external load balancing. A backend service created for one type of load
+-- balancing cannot be used with the other. Possible values are INTERNAL
+-- and EXTERNAL.
+bsLoadBalancingScheme :: Lens' BackendService (Maybe BackendServiceLoadBalancingScheme)
+bsLoadBalancingScheme
+  = lens _bsLoadBalancingScheme
+      (\ s a -> s{_bsLoadBalancingScheme = a})
+
+-- | [Output Only] Type of resource. Always compute#backendService for
+-- backend services.
+bsKind :: Lens' BackendService Text
+bsKind = lens _bsKind (\ s a -> s{_bsKind = a})
+
+-- | If true, enable Cloud CDN for this BackendService. When the load
+-- balancing scheme is INTERNAL, this field is not used.
+bsEnableCDN :: Lens' BackendService (Maybe Bool)
+bsEnableCDN
+  = lens _bsEnableCDN (\ s a -> s{_bsEnableCDN = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a BackendService. An up-to-date fingerprint must
+-- be provided in order to update the BackendService, otherwise the request
+-- will fail with error 412 conditionNotMet. To see the latest fingerprint,
+-- make a get() request to retrieve a BackendService.
+bsFingerprint :: Lens' BackendService (Maybe ByteString)
+bsFingerprint
+  = lens _bsFingerprint
+      (\ s a -> s{_bsFingerprint = a})
+      . mapping _Bytes
+
+-- | The protocol this BackendService uses to communicate with backends.
+-- Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP. For
+-- internal load balancing, the possible values are TCP and UDP, and the
+-- default is TCP.
+bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)
+bsProtocol
+  = lens _bsProtocol (\ s a -> s{_bsProtocol = a})
+
+-- | [Output Only] The resource URL for the security policy associated with
+-- this backend service.
+bsSecurityPolicy :: Lens' BackendService (Maybe Text)
+bsSecurityPolicy
+  = lens _bsSecurityPolicy
+      (\ s a -> s{_bsSecurityPolicy = a})
+
+-- | Cloud CDN configuration for this BackendService.
+bsCdnPolicy :: Lens' BackendService (Maybe BackendServiceCdnPolicy)
+bsCdnPolicy
+  = lens _bsCdnPolicy (\ s a -> s{_bsCdnPolicy = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+bsSelfLink :: Lens' BackendService (Maybe Text)
+bsSelfLink
+  = lens _bsSelfLink (\ s a -> s{_bsSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+bsName :: Lens' BackendService (Maybe Text)
+bsName = lens _bsName (\ s a -> s{_bsName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+bsCreationTimestamp :: Lens' BackendService (Maybe Text)
+bsCreationTimestamp
+  = lens _bsCreationTimestamp
+      (\ s a -> s{_bsCreationTimestamp = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+bsId :: Lens' BackendService (Maybe Word64)
+bsId
+  = lens _bsId (\ s a -> s{_bsId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the regional backend service
+-- resides. This field is not applicable to global backend services. You
+-- must specify this field as part of the HTTP request URL. It is not
+-- settable as a field in the request body.
+bsRegion :: Lens' BackendService (Maybe Text)
+bsRegion = lens _bsRegion (\ s a -> s{_bsRegion = a})
+
+bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)
+bsConnectionDraining
+  = lens _bsConnectionDraining
+      (\ s a -> s{_bsConnectionDraining = a})
+
+-- | How many seconds to wait for the backend before considering it a failed
+-- request. Default is 30 seconds.
+bsTimeoutSec :: Lens' BackendService (Maybe Int32)
+bsTimeoutSec
+  = lens _bsTimeoutSec (\ s a -> s{_bsTimeoutSec = a})
+      . mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+bsDescription :: Lens' BackendService (Maybe Text)
+bsDescription
+  = lens _bsDescription
+      (\ s a -> s{_bsDescription = a})
+
+-- | Name of backend port. The same name should appear in the instance groups
+-- referenced by this service. Required when the load balancing scheme is
+-- EXTERNAL. When the load balancing scheme is INTERNAL, this field is not
+-- used.
+bsPortName :: Lens' BackendService (Maybe Text)
+bsPortName
+  = lens _bsPortName (\ s a -> s{_bsPortName = a})
+
+-- | The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for
+-- health checking this BackendService. Currently at most one health check
+-- can be specified, and a health check is required for Compute Engine
+-- backend services. A health check must not be specified for App Engine
+-- backend and Cloud Function backend. For internal load balancing, a URL
+-- to a HealthCheck resource must be specified instead.
+bsHealthChecks :: Lens' BackendService [Text]
+bsHealthChecks
+  = lens _bsHealthChecks
+      (\ s a -> s{_bsHealthChecks = a})
+      . _Default
+      . _Coerce
+
+-- | Deprecated in favor of portName. The TCP port to connect on the backend.
+-- The default value is 80. This cannot be used for internal load
+-- balancing.
+bsPort :: Lens' BackendService (Maybe Int32)
+bsPort
+  = lens _bsPort (\ s a -> s{_bsPort = a}) .
+      mapping _Coerce
+
+instance FromJSON BackendService where
+        parseJSON
+          = withObject "BackendService"
+              (\ o ->
+                 BackendService' <$>
+                   (o .:? "sessionAffinity") <*>
+                     (o .:? "backends" .!= mempty)
+                     <*> (o .:? "affinityCookieTtlSec")
+                     <*> (o .:? "iap")
+                     <*> (o .:? "loadBalancingScheme")
+                     <*> (o .:? "kind" .!= "compute#backendService")
+                     <*> (o .:? "enableCDN")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "protocol")
+                     <*> (o .:? "securityPolicy")
+                     <*> (o .:? "cdnPolicy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "connectionDraining")
+                     <*> (o .:? "timeoutSec")
+                     <*> (o .:? "description")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "healthChecks" .!= mempty)
+                     <*> (o .:? "port"))
+
+instance ToJSON BackendService where
+        toJSON BackendService'{..}
+          = object
+              (catMaybes
+                 [("sessionAffinity" .=) <$> _bsSessionAffinity,
+                  ("backends" .=) <$> _bsBackends,
+                  ("affinityCookieTtlSec" .=) <$>
+                    _bsAffinityCookieTtlSec,
+                  ("iap" .=) <$> _bsIap,
+                  ("loadBalancingScheme" .=) <$>
+                    _bsLoadBalancingScheme,
+                  Just ("kind" .= _bsKind),
+                  ("enableCDN" .=) <$> _bsEnableCDN,
+                  ("fingerprint" .=) <$> _bsFingerprint,
+                  ("protocol" .=) <$> _bsProtocol,
+                  ("securityPolicy" .=) <$> _bsSecurityPolicy,
+                  ("cdnPolicy" .=) <$> _bsCdnPolicy,
+                  ("selfLink" .=) <$> _bsSelfLink,
+                  ("name" .=) <$> _bsName,
+                  ("creationTimestamp" .=) <$> _bsCreationTimestamp,
+                  ("id" .=) <$> _bsId, ("region" .=) <$> _bsRegion,
+                  ("connectionDraining" .=) <$> _bsConnectionDraining,
+                  ("timeoutSec" .=) <$> _bsTimeoutSec,
+                  ("description" .=) <$> _bsDescription,
+                  ("portName" .=) <$> _bsPortName,
+                  ("healthChecks" .=) <$> _bsHealthChecks,
+                  ("port" .=) <$> _bsPort])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'instanceListWarning' smart constructor.
+data InstanceListWarning = InstanceListWarning'
+    { _insData    :: !(Maybe [InstanceListWarningDataItem])
+    , _insCode    :: !(Maybe InstanceListWarningCode)
+    , _insMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insData'
+--
+-- * 'insCode'
+--
+-- * 'insMessage'
+instanceListWarning
+    :: InstanceListWarning
+instanceListWarning =
+    InstanceListWarning'
+    { _insData = Nothing
+    , _insCode = Nothing
+    , _insMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+insData :: Lens' InstanceListWarning [InstanceListWarningDataItem]
+insData
+  = lens _insData (\ s a -> s{_insData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+insCode :: Lens' InstanceListWarning (Maybe InstanceListWarningCode)
+insCode = lens _insCode (\ s a -> s{_insCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+insMessage :: Lens' InstanceListWarning (Maybe Text)
+insMessage
+  = lens _insMessage (\ s a -> s{_insMessage = a})
+
+instance FromJSON InstanceListWarning where
+        parseJSON
+          = withObject "InstanceListWarning"
+              (\ o ->
+                 InstanceListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceListWarning where
+        toJSON InstanceListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _insData, ("code" .=) <$> _insCode,
+                  ("message" .=) <$> _insMessage])
+
+--
+-- /See:/ 'instanceMoveRequest' smart constructor.
+data InstanceMoveRequest = InstanceMoveRequest'
+    { _imrTargetInstance  :: !(Maybe Text)
+    , _imrDestinationZone :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceMoveRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imrTargetInstance'
+--
+-- * 'imrDestinationZone'
+instanceMoveRequest
+    :: InstanceMoveRequest
+instanceMoveRequest =
+    InstanceMoveRequest'
+    { _imrTargetInstance = Nothing
+    , _imrDestinationZone = Nothing
+    }
+
+-- | The URL of the target instance to move. This can be a full or partial
+-- URL. For example, the following are all valid URLs to an instance: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
+-- - projects\/project\/zones\/zone\/instances\/instance -
+-- zones\/zone\/instances\/instance
+imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)
+imrTargetInstance
+  = lens _imrTargetInstance
+      (\ s a -> s{_imrTargetInstance = a})
+
+-- | The URL of the destination zone to move the instance. This can be a full
+-- or partial URL. For example, the following are all valid URLs to a zone:
+-- -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
+-- - projects\/project\/zones\/zone - zones\/zone
+imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)
+imrDestinationZone
+  = lens _imrDestinationZone
+      (\ s a -> s{_imrDestinationZone = a})
+
+instance FromJSON InstanceMoveRequest where
+        parseJSON
+          = withObject "InstanceMoveRequest"
+              (\ o ->
+                 InstanceMoveRequest' <$>
+                   (o .:? "targetInstance") <*>
+                     (o .:? "destinationZone"))
+
+instance ToJSON InstanceMoveRequest where
+        toJSON InstanceMoveRequest'{..}
+          = object
+              (catMaybes
+                 [("targetInstance" .=) <$> _imrTargetInstance,
+                  ("destinationZone" .=) <$> _imrDestinationZone])
+
+-- | Describing the ARP neighbor entries seen on this link
+--
+-- /See:/ 'interconnectDiagnosticsARPEntry' smart constructor.
+data InterconnectDiagnosticsARPEntry = InterconnectDiagnosticsARPEntry'
+    { _idarpeIPAddress  :: !(Maybe Text)
+    , _idarpeMACAddress :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectDiagnosticsARPEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idarpeIPAddress'
+--
+-- * 'idarpeMACAddress'
+interconnectDiagnosticsARPEntry
+    :: InterconnectDiagnosticsARPEntry
+interconnectDiagnosticsARPEntry =
+    InterconnectDiagnosticsARPEntry'
+    { _idarpeIPAddress = Nothing
+    , _idarpeMACAddress = Nothing
+    }
+
+-- | The IP address of this ARP neighbor.
+idarpeIPAddress :: Lens' InterconnectDiagnosticsARPEntry (Maybe Text)
+idarpeIPAddress
+  = lens _idarpeIPAddress
+      (\ s a -> s{_idarpeIPAddress = a})
+
+-- | The MAC address of this ARP neighbor.
+idarpeMACAddress :: Lens' InterconnectDiagnosticsARPEntry (Maybe Text)
+idarpeMACAddress
+  = lens _idarpeMACAddress
+      (\ s a -> s{_idarpeMACAddress = a})
+
+instance FromJSON InterconnectDiagnosticsARPEntry
+         where
+        parseJSON
+          = withObject "InterconnectDiagnosticsARPEntry"
+              (\ o ->
+                 InterconnectDiagnosticsARPEntry' <$>
+                   (o .:? "ipAddress") <*> (o .:? "macAddress"))
+
+instance ToJSON InterconnectDiagnosticsARPEntry where
+        toJSON InterconnectDiagnosticsARPEntry'{..}
+          = object
+              (catMaybes
+                 [("ipAddress" .=) <$> _idarpeIPAddress,
+                  ("macAddress" .=) <$> _idarpeMACAddress])
+
+-- | Contains a list of Commitment resources.
+--
+-- /See:/ 'commitmentList' smart constructor.
+data CommitmentList = CommitmentList'
+    { _clNextPageToken :: !(Maybe Text)
+    , _clKind          :: !Text
+    , _clItems         :: !(Maybe [Commitment])
+    , _clSelfLink      :: !(Maybe Text)
+    , _clWarning       :: !(Maybe CommitmentListWarning)
+    , _clId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CommitmentList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clNextPageToken'
+--
+-- * 'clKind'
+--
+-- * 'clItems'
+--
+-- * 'clSelfLink'
+--
+-- * 'clWarning'
+--
+-- * 'clId'
+commitmentList
+    :: CommitmentList
+commitmentList =
+    CommitmentList'
+    { _clNextPageToken = Nothing
+    , _clKind = "compute#commitmentList"
+    , _clItems = Nothing
+    , _clSelfLink = Nothing
+    , _clWarning = Nothing
+    , _clId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+clNextPageToken :: Lens' CommitmentList (Maybe Text)
+clNextPageToken
+  = lens _clNextPageToken
+      (\ s a -> s{_clNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#commitmentList for lists
+-- of commitments.
+clKind :: Lens' CommitmentList Text
+clKind = lens _clKind (\ s a -> s{_clKind = a})
+
+-- | A list of Commitment resources.
+clItems :: Lens' CommitmentList [Commitment]
+clItems
+  = lens _clItems (\ s a -> s{_clItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+clSelfLink :: Lens' CommitmentList (Maybe Text)
+clSelfLink
+  = lens _clSelfLink (\ s a -> s{_clSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+clWarning :: Lens' CommitmentList (Maybe CommitmentListWarning)
+clWarning
+  = lens _clWarning (\ s a -> s{_clWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+clId :: Lens' CommitmentList (Maybe Text)
+clId = lens _clId (\ s a -> s{_clId = a})
+
+instance FromJSON CommitmentList where
+        parseJSON
+          = withObject "CommitmentList"
+              (\ o ->
+                 CommitmentList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#commitmentList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON CommitmentList where
+        toJSON CommitmentList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _clNextPageToken,
+                  Just ("kind" .= _clKind), ("items" .=) <$> _clItems,
+                  ("selfLink" .=) <$> _clSelfLink,
+                  ("warning" .=) <$> _clWarning, ("id" .=) <$> _clId])
+
+--
+-- /See:/ 'instancesSetLabelsRequestLabels' smart constructor.
+newtype InstancesSetLabelsRequestLabels = InstancesSetLabelsRequestLabels'
+    { _islrlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetLabelsRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islrlAddtional'
+instancesSetLabelsRequestLabels
+    :: HashMap Text Text -- ^ 'islrlAddtional'
+    -> InstancesSetLabelsRequestLabels
+instancesSetLabelsRequestLabels pIslrlAddtional_ =
+    InstancesSetLabelsRequestLabels'
+    { _islrlAddtional = _Coerce # pIslrlAddtional_
+    }
+
+islrlAddtional :: Lens' InstancesSetLabelsRequestLabels (HashMap Text Text)
+islrlAddtional
+  = lens _islrlAddtional
+      (\ s a -> s{_islrlAddtional = a})
+      . _Coerce
+
+instance FromJSON InstancesSetLabelsRequestLabels
+         where
+        parseJSON
+          = withObject "InstancesSetLabelsRequestLabels"
+              (\ o ->
+                 InstancesSetLabelsRequestLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON InstancesSetLabelsRequestLabels where
+        toJSON = toJSON . _islrlAddtional
+
+--
+-- /See:/ 'instanceGroupsScopedList' smart constructor.
+data InstanceGroupsScopedList = InstanceGroupsScopedList'
+    { _igslWarning        :: !(Maybe InstanceGroupsScopedListWarning)
+    , _igslInstanceGroups :: !(Maybe [InstanceGroup])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslWarning'
+--
+-- * 'igslInstanceGroups'
+instanceGroupsScopedList
+    :: InstanceGroupsScopedList
+instanceGroupsScopedList =
+    InstanceGroupsScopedList'
+    { _igslWarning = Nothing
+    , _igslInstanceGroups = Nothing
+    }
+
+-- | [Output Only] An informational warning that replaces the list of
+-- instance groups when the list is empty.
+igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)
+igslWarning
+  = lens _igslWarning (\ s a -> s{_igslWarning = a})
+
+-- | [Output Only] The list of instance groups that are contained in this
+-- scope.
+igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]
+igslInstanceGroups
+  = lens _igslInstanceGroups
+      (\ s a -> s{_igslInstanceGroups = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsScopedList where
+        parseJSON
+          = withObject "InstanceGroupsScopedList"
+              (\ o ->
+                 InstanceGroupsScopedList' <$>
+                   (o .:? "warning") <*>
+                     (o .:? "instanceGroups" .!= mempty))
+
+instance ToJSON InstanceGroupsScopedList where
+        toJSON InstanceGroupsScopedList'{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _igslWarning,
+                  ("instanceGroups" .=) <$> _igslInstanceGroups])
+
+--
+-- /See:/ 'instancesStartWithEncryptionKeyRequest' smart constructor.
+newtype InstancesStartWithEncryptionKeyRequest = InstancesStartWithEncryptionKeyRequest'
+    { _iswekrDisks :: Maybe [CustomerEncryptionKeyProtectedDisk]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesStartWithEncryptionKeyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iswekrDisks'
+instancesStartWithEncryptionKeyRequest
+    :: InstancesStartWithEncryptionKeyRequest
+instancesStartWithEncryptionKeyRequest =
+    InstancesStartWithEncryptionKeyRequest'
+    { _iswekrDisks = Nothing
+    }
+
+-- | Array of disks associated with this instance that are protected with a
+-- customer-supplied encryption key. In order to start the instance, the
+-- disk url and its corresponding key must be provided. If the disk is not
+-- protected with a customer-supplied encryption key it should not be
+-- specified.
+iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
+iswekrDisks
+  = lens _iswekrDisks (\ s a -> s{_iswekrDisks = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON
+         InstancesStartWithEncryptionKeyRequest where
+        parseJSON
+          = withObject "InstancesStartWithEncryptionKeyRequest"
+              (\ o ->
+                 InstancesStartWithEncryptionKeyRequest' <$>
+                   (o .:? "disks" .!= mempty))
+
+instance ToJSON
+         InstancesStartWithEncryptionKeyRequest where
+        toJSON InstancesStartWithEncryptionKeyRequest'{..}
+          = object (catMaybes [("disks" .=) <$> _iswekrDisks])
+
+--
+-- /See:/ 'httpsHealthCheck' smart constructor.
+data HTTPSHealthCheck = HTTPSHealthCheck'
+    { _hhcResponse    :: !(Maybe Text)
+    , _hhcRequestPath :: !(Maybe Text)
+    , _hhcHost        :: !(Maybe Text)
+    , _hhcProxyHeader :: !(Maybe HTTPSHealthCheckProxyHeader)
+    , _hhcPortName    :: !(Maybe Text)
+    , _hhcPort        :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcResponse'
+--
+-- * 'hhcRequestPath'
+--
+-- * 'hhcHost'
+--
+-- * 'hhcProxyHeader'
+--
+-- * 'hhcPortName'
+--
+-- * 'hhcPort'
+httpsHealthCheck
+    :: HTTPSHealthCheck
+httpsHealthCheck =
+    HTTPSHealthCheck'
+    { _hhcResponse = Nothing
+    , _hhcRequestPath = Nothing
+    , _hhcHost = Nothing
+    , _hhcProxyHeader = Nothing
+    , _hhcPortName = Nothing
+    , _hhcPort = Nothing
+    }
+
+-- | The string to match anywhere in the first 1024 bytes of the response
+-- body. If left empty (the default value), the status code determines
+-- health. The response data can only be ASCII.
+hhcResponse :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcResponse
+  = lens _hhcResponse (\ s a -> s{_hhcResponse = a})
+
+-- | The request path of the HTTPS health check request. The default value is
+-- \/.
+hhcRequestPath :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcRequestPath
+  = lens _hhcRequestPath
+      (\ s a -> s{_hhcRequestPath = a})
+
+-- | The value of the host header in the HTTPS health check request. If left
+-- empty (default value), the IP on behalf of which this health check is
+-- performed will be used.
+hhcHost :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcHost = lens _hhcHost (\ s a -> s{_hhcHost = a})
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+hhcProxyHeader :: Lens' HTTPSHealthCheck (Maybe HTTPSHealthCheckProxyHeader)
+hhcProxyHeader
+  = lens _hhcProxyHeader
+      (\ s a -> s{_hhcProxyHeader = a})
+
+-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
+-- port_name are defined, port takes precedence.
+hhcPortName :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcPortName
+  = lens _hhcPortName (\ s a -> s{_hhcPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 443. Valid values are 1 through 65535.
+hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcPort
+  = lens _hhcPort (\ s a -> s{_hhcPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTPSHealthCheck where
+        parseJSON
+          = withObject "HTTPSHealthCheck"
+              (\ o ->
+                 HTTPSHealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "requestPath") <*>
+                     (o .:? "host")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPSHealthCheck where
+        toJSON HTTPSHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _hhcResponse,
+                  ("requestPath" .=) <$> _hhcRequestPath,
+                  ("host" .=) <$> _hhcHost,
+                  ("proxyHeader" .=) <$> _hhcProxyHeader,
+                  ("portName" .=) <$> _hhcPortName,
+                  ("port" .=) <$> _hhcPort])
+
+-- | A list of VpnTunnelsScopedList resources.
+--
+-- /See:/ 'vpnTunnelAggregatedListItems' smart constructor.
+newtype VPNTunnelAggregatedListItems = VPNTunnelAggregatedListItems'
+    { _vtaliAddtional :: HashMap Text VPNTunnelsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtaliAddtional'
+vpnTunnelAggregatedListItems
+    :: HashMap Text VPNTunnelsScopedList -- ^ 'vtaliAddtional'
+    -> VPNTunnelAggregatedListItems
+vpnTunnelAggregatedListItems pVtaliAddtional_ =
+    VPNTunnelAggregatedListItems'
+    { _vtaliAddtional = _Coerce # pVtaliAddtional_
+    }
+
+-- | Name of the scope containing this set of vpn tunnels.
+vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)
+vtaliAddtional
+  = lens _vtaliAddtional
+      (\ s a -> s{_vtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON VPNTunnelAggregatedListItems where
+        parseJSON
+          = withObject "VPNTunnelAggregatedListItems"
+              (\ o ->
+                 VPNTunnelAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON VPNTunnelAggregatedListItems where
+        toJSON = toJSON . _vtaliAddtional
+
+--
+-- /See:/ 'instanceAggregatedListWarningDataItem' smart constructor.
+data InstanceAggregatedListWarningDataItem = InstanceAggregatedListWarningDataItem'
+    { _insValue :: !(Maybe Text)
+    , _insKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insValue'
+--
+-- * 'insKey'
+instanceAggregatedListWarningDataItem
+    :: InstanceAggregatedListWarningDataItem
+instanceAggregatedListWarningDataItem =
+    InstanceAggregatedListWarningDataItem'
+    { _insValue = Nothing
+    , _insKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+insValue :: Lens' InstanceAggregatedListWarningDataItem (Maybe Text)
+insValue = lens _insValue (\ s a -> s{_insValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+insKey :: Lens' InstanceAggregatedListWarningDataItem (Maybe Text)
+insKey = lens _insKey (\ s a -> s{_insKey = a})
+
+instance FromJSON
+         InstanceAggregatedListWarningDataItem where
+        parseJSON
+          = withObject "InstanceAggregatedListWarningDataItem"
+              (\ o ->
+                 InstanceAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstanceAggregatedListWarningDataItem
+         where
+        toJSON InstanceAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _insValue, ("key" .=) <$> _insKey])
+
+-- | A set of instance tags.
+--
+-- /See:/ 'tags' smart constructor.
+data Tags = Tags'
+    { _tFingerprint :: !(Maybe Bytes)
+    , _tItems       :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tFingerprint'
+--
+-- * 'tItems'
+tags
+    :: Tags
+tags =
+    Tags'
+    { _tFingerprint = Nothing
+    , _tItems = Nothing
+    }
+
+-- | Specifies a fingerprint for this request, which is essentially a hash of
+-- the tags\' contents and used for optimistic locking. The fingerprint is
+-- initially generated by Compute Engine and changes after every request to
+-- modify or update tags. You must always provide an up-to-date fingerprint
+-- hash in order to update or change tags. To see the latest fingerprint,
+-- make get() request to the instance.
+tFingerprint :: Lens' Tags (Maybe ByteString)
+tFingerprint
+  = lens _tFingerprint (\ s a -> s{_tFingerprint = a})
+      . mapping _Bytes
+
+-- | An array of tags. Each tag must be 1-63 characters long, and comply with
+-- RFC1035.
+tItems :: Lens' Tags [Text]
+tItems
+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Tags where
+        parseJSON
+          = withObject "Tags"
+              (\ o ->
+                 Tags' <$>
+                   (o .:? "fingerprint") <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Tags where
+        toJSON Tags'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _tFingerprint,
+                  ("items" .=) <$> _tItems])
+
+--
+-- /See:/ 'addressAggregatedList' smart constructor.
+data AddressAggregatedList = AddressAggregatedList'
+    { _addNextPageToken :: !(Maybe Text)
+    , _addKind          :: !Text
+    , _addItems         :: !(Maybe AddressAggregatedListItems)
+    , _addSelfLink      :: !(Maybe Text)
+    , _addWarning       :: !(Maybe AddressAggregatedListWarning)
+    , _addId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addNextPageToken'
+--
+-- * 'addKind'
+--
+-- * 'addItems'
+--
+-- * 'addSelfLink'
+--
+-- * 'addWarning'
+--
+-- * 'addId'
+addressAggregatedList
+    :: AddressAggregatedList
+addressAggregatedList =
+    AddressAggregatedList'
+    { _addNextPageToken = Nothing
+    , _addKind = "compute#addressAggregatedList"
+    , _addItems = Nothing
+    , _addSelfLink = Nothing
+    , _addWarning = Nothing
+    , _addId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)
+addNextPageToken
+  = lens _addNextPageToken
+      (\ s a -> s{_addNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#addressAggregatedList for
+-- aggregated lists of addresses.
+addKind :: Lens' AddressAggregatedList Text
+addKind = lens _addKind (\ s a -> s{_addKind = a})
+
+-- | A list of AddressesScopedList resources.
+addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)
+addItems = lens _addItems (\ s a -> s{_addItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+addSelfLink :: Lens' AddressAggregatedList (Maybe Text)
+addSelfLink
+  = lens _addSelfLink (\ s a -> s{_addSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+addWarning :: Lens' AddressAggregatedList (Maybe AddressAggregatedListWarning)
+addWarning
+  = lens _addWarning (\ s a -> s{_addWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+addId :: Lens' AddressAggregatedList (Maybe Text)
+addId = lens _addId (\ s a -> s{_addId = a})
+
+instance FromJSON AddressAggregatedList where
+        parseJSON
+          = withObject "AddressAggregatedList"
+              (\ o ->
+                 AddressAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#addressAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON AddressAggregatedList where
+        toJSON AddressAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _addNextPageToken,
+                  Just ("kind" .= _addKind),
+                  ("items" .=) <$> _addItems,
+                  ("selfLink" .=) <$> _addSelfLink,
+                  ("warning" .=) <$> _addWarning,
+                  ("id" .=) <$> _addId])
+
+-- | Response to the list request, and contains a list of interconnect
+-- attachments.
+--
+-- /See:/ 'interconnectAttachmentList' smart constructor.
+data InterconnectAttachmentList = InterconnectAttachmentList'
+    { _ialaNextPageToken :: !(Maybe Text)
+    , _ialaKind          :: !Text
+    , _ialaItems         :: !(Maybe [InterconnectAttachment])
+    , _ialaSelfLink      :: !(Maybe Text)
+    , _ialaWarning       :: !(Maybe InterconnectAttachmentListWarning)
+    , _ialaId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialaNextPageToken'
+--
+-- * 'ialaKind'
+--
+-- * 'ialaItems'
+--
+-- * 'ialaSelfLink'
+--
+-- * 'ialaWarning'
+--
+-- * 'ialaId'
+interconnectAttachmentList
+    :: InterconnectAttachmentList
+interconnectAttachmentList =
+    InterconnectAttachmentList'
+    { _ialaNextPageToken = Nothing
+    , _ialaKind = "compute#interconnectAttachmentList"
+    , _ialaItems = Nothing
+    , _ialaSelfLink = Nothing
+    , _ialaWarning = Nothing
+    , _ialaId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+ialaNextPageToken :: Lens' InterconnectAttachmentList (Maybe Text)
+ialaNextPageToken
+  = lens _ialaNextPageToken
+      (\ s a -> s{_ialaNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always
+-- compute#interconnectAttachmentList for lists of interconnect
+-- attachments.
+ialaKind :: Lens' InterconnectAttachmentList Text
+ialaKind = lens _ialaKind (\ s a -> s{_ialaKind = a})
+
+-- | A list of InterconnectAttachment resources.
+ialaItems :: Lens' InterconnectAttachmentList [InterconnectAttachment]
+ialaItems
+  = lens _ialaItems (\ s a -> s{_ialaItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ialaSelfLink :: Lens' InterconnectAttachmentList (Maybe Text)
+ialaSelfLink
+  = lens _ialaSelfLink (\ s a -> s{_ialaSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+ialaWarning :: Lens' InterconnectAttachmentList (Maybe InterconnectAttachmentListWarning)
+ialaWarning
+  = lens _ialaWarning (\ s a -> s{_ialaWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ialaId :: Lens' InterconnectAttachmentList (Maybe Text)
+ialaId = lens _ialaId (\ s a -> s{_ialaId = a})
+
+instance FromJSON InterconnectAttachmentList where
+        parseJSON
+          = withObject "InterconnectAttachmentList"
+              (\ o ->
+                 InterconnectAttachmentList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#interconnectAttachmentList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON InterconnectAttachmentList where
+        toJSON InterconnectAttachmentList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ialaNextPageToken,
+                  Just ("kind" .= _ialaKind),
+                  ("items" .=) <$> _ialaItems,
+                  ("selfLink" .=) <$> _ialaSelfLink,
+                  ("warning" .=) <$> _ialaWarning,
+                  ("id" .=) <$> _ialaId])
+
+--
+-- /See:/ 'operationWarningsItem' smart constructor.
+data OperationWarningsItem = OperationWarningsItem'
+    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])
+    , _owiCode    :: !(Maybe OperationWarningsItemCode)
+    , _owiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owiData'
+--
+-- * 'owiCode'
+--
+-- * 'owiMessage'
+operationWarningsItem
+    :: OperationWarningsItem
+operationWarningsItem =
+    OperationWarningsItem'
+    { _owiData = Nothing
+    , _owiCode = Nothing
+    , _owiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]
+owiData
+  = lens _owiData (\ s a -> s{_owiData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)
+owiCode = lens _owiCode (\ s a -> s{_owiCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+owiMessage :: Lens' OperationWarningsItem (Maybe Text)
+owiMessage
+  = lens _owiMessage (\ s a -> s{_owiMessage = a})
+
+instance FromJSON OperationWarningsItem where
+        parseJSON
+          = withObject "OperationWarningsItem"
+              (\ o ->
+                 OperationWarningsItem' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationWarningsItem where
+        toJSON OperationWarningsItem'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,
+                  ("message" .=) <$> _owiMessage])
+
+-- | Associates \`members\` with a \`role\`.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding = Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+    Binding'
+    { _bMembers = Nothing
+    , _bRole = Nothing
+    , _bCondition = Nothing
+    }
+
+-- | Specifies the identities requesting access for a Cloud Platform
+-- resource. \`members\` can have the following values: * \`allUsers\`: A
+-- special identifier that represents anyone who is on the internet; with
+-- or without a Google account. * \`allAuthenticatedUsers\`: A special
+-- identifier that represents anyone who is authenticated with a Google
+-- account or a service account. * \`user:{emailid}\`: An email address
+-- that represents a specific Google account. For example,
+-- \`alice\'gmail.com\` . * \`serviceAccount:{emailid}\`: An email address
+-- that represents a service account. For example,
+-- \`my-other-app\'appspot.gserviceaccount.com\`. * \`group:{emailid}\`: An
+-- email address that represents a Google group. For example,
+-- \`admins\'example.com\`. * \`domain:{domain}\`: A Google Apps domain
+-- name that represents all the users of that domain. For example,
+-- \`google.com\` or \`example.com\`.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to \`members\`. For example, \`roles\/viewer\`,
+-- \`roles\/editor\`, or \`roles\/owner\`.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | Unimplemented. The condition that is associated with this binding. NOTE:
+-- an unsatisfied condition will not allow user access via current binding.
+-- Different bindings, including their conditions, are examined
+-- independently.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
+
+-- | Message for the expected URL mappings.
+--
+-- /See:/ 'urlMapTest' smart constructor.
+data URLMapTest = URLMapTest'
+    { _umtPath        :: !(Maybe Text)
+    , _umtService     :: !(Maybe Text)
+    , _umtHost        :: !(Maybe Text)
+    , _umtDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapTest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umtPath'
+--
+-- * 'umtService'
+--
+-- * 'umtHost'
+--
+-- * 'umtDescription'
+urlMapTest
+    :: URLMapTest
+urlMapTest =
+    URLMapTest'
+    { _umtPath = Nothing
+    , _umtService = Nothing
+    , _umtHost = Nothing
+    , _umtDescription = Nothing
+    }
+
+-- | Path portion of the URL.
+umtPath :: Lens' URLMapTest (Maybe Text)
+umtPath = lens _umtPath (\ s a -> s{_umtPath = a})
+
+-- | Expected BackendService resource the given URL should be mapped to.
+umtService :: Lens' URLMapTest (Maybe Text)
+umtService
+  = lens _umtService (\ s a -> s{_umtService = a})
+
+-- | Host portion of the URL.
+umtHost :: Lens' URLMapTest (Maybe Text)
+umtHost = lens _umtHost (\ s a -> s{_umtHost = a})
+
+-- | Description of this test case.
+umtDescription :: Lens' URLMapTest (Maybe Text)
+umtDescription
+  = lens _umtDescription
+      (\ s a -> s{_umtDescription = a})
+
+instance FromJSON URLMapTest where
+        parseJSON
+          = withObject "URLMapTest"
+              (\ o ->
+                 URLMapTest' <$>
+                   (o .:? "path") <*> (o .:? "service") <*>
+                     (o .:? "host")
+                     <*> (o .:? "description"))
+
+instance ToJSON URLMapTest where
+        toJSON URLMapTest'{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _umtPath,
+                  ("service" .=) <$> _umtService,
+                  ("host" .=) <$> _umtHost,
+                  ("description" .=) <$> _umtDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'httpsHealthCheckListWarning' smart constructor.
+data HTTPSHealthCheckListWarning = HTTPSHealthCheckListWarning'
+    { _hhclwData    :: !(Maybe [HTTPSHealthCheckListWarningDataItem])
+    , _hhclwCode    :: !(Maybe HTTPSHealthCheckListWarningCode)
+    , _hhclwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheckListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhclwData'
+--
+-- * 'hhclwCode'
+--
+-- * 'hhclwMessage'
+httpsHealthCheckListWarning
+    :: HTTPSHealthCheckListWarning
+httpsHealthCheckListWarning =
+    HTTPSHealthCheckListWarning'
+    { _hhclwData = Nothing
+    , _hhclwCode = Nothing
+    , _hhclwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+hhclwData :: Lens' HTTPSHealthCheckListWarning [HTTPSHealthCheckListWarningDataItem]
+hhclwData
+  = lens _hhclwData (\ s a -> s{_hhclwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+hhclwCode :: Lens' HTTPSHealthCheckListWarning (Maybe HTTPSHealthCheckListWarningCode)
+hhclwCode
+  = lens _hhclwCode (\ s a -> s{_hhclwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+hhclwMessage :: Lens' HTTPSHealthCheckListWarning (Maybe Text)
+hhclwMessage
+  = lens _hhclwMessage (\ s a -> s{_hhclwMessage = a})
+
+instance FromJSON HTTPSHealthCheckListWarning where
+        parseJSON
+          = withObject "HTTPSHealthCheckListWarning"
+              (\ o ->
+                 HTTPSHealthCheckListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON HTTPSHealthCheckListWarning where
+        toJSON HTTPSHealthCheckListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _hhclwData,
+                  ("code" .=) <$> _hhclwCode,
+                  ("message" .=) <$> _hhclwMessage])
+
+-- | A list of NodeTypesScopedList resources.
+--
+-- /See:/ 'nodeTypeAggregatedListItems' smart constructor.
+newtype NodeTypeAggregatedListItems = NodeTypeAggregatedListItems'
+    { _nAddtional :: HashMap Text NodeTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nAddtional'
+nodeTypeAggregatedListItems
+    :: HashMap Text NodeTypesScopedList -- ^ 'nAddtional'
+    -> NodeTypeAggregatedListItems
+nodeTypeAggregatedListItems pNAddtional_ =
+    NodeTypeAggregatedListItems'
+    { _nAddtional = _Coerce # pNAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of node types.
+nAddtional :: Lens' NodeTypeAggregatedListItems (HashMap Text NodeTypesScopedList)
+nAddtional
+  = lens _nAddtional (\ s a -> s{_nAddtional = a}) .
+      _Coerce
+
+instance FromJSON NodeTypeAggregatedListItems where
+        parseJSON
+          = withObject "NodeTypeAggregatedListItems"
+              (\ o ->
+                 NodeTypeAggregatedListItems' <$> (parseJSONObject o))
+
+instance ToJSON NodeTypeAggregatedListItems where
+        toJSON = toJSON . _nAddtional
+
+--
+-- /See:/ 'routersPreviewResponse' smart constructor.
+newtype RoutersPreviewResponse = RoutersPreviewResponse'
+    { _rprResource :: Maybe Router
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutersPreviewResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rprResource'
+routersPreviewResponse
+    :: RoutersPreviewResponse
+routersPreviewResponse =
+    RoutersPreviewResponse'
+    { _rprResource = Nothing
+    }
+
+-- | Preview of given router.
+rprResource :: Lens' RoutersPreviewResponse (Maybe Router)
+rprResource
+  = lens _rprResource (\ s a -> s{_rprResource = a})
+
+instance FromJSON RoutersPreviewResponse where
+        parseJSON
+          = withObject "RoutersPreviewResponse"
+              (\ o ->
+                 RoutersPreviewResponse' <$> (o .:? "resource"))
+
+instance ToJSON RoutersPreviewResponse where
+        toJSON RoutersPreviewResponse'{..}
+          = object
+              (catMaybes [("resource" .=) <$> _rprResource])
+
+--
+-- /See:/ 'licensesListResponse' smart constructor.
+data LicensesListResponse = LicensesListResponse'
+    { _llrNextPageToken :: !(Maybe Text)
+    , _llrItems         :: !(Maybe [License])
+    , _llrSelfLink      :: !(Maybe Text)
+    , _llrWarning       :: !(Maybe LicensesListResponseWarning)
+    , _llrId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrItems'
+--
+-- * 'llrSelfLink'
+--
+-- * 'llrWarning'
+--
+-- * 'llrId'
+licensesListResponse
+    :: LicensesListResponse
+licensesListResponse =
+    LicensesListResponse'
+    { _llrNextPageToken = Nothing
+    , _llrItems = Nothing
+    , _llrSelfLink = Nothing
+    , _llrWarning = Nothing
+    , _llrId = Nothing
+    }
+
+-- | [Output Only] This token allows you to get the next page of results for
+-- list requests. If the number of results is larger than maxResults, use
+-- the nextPageToken as a value for the query parameter pageToken in the
+-- next list request. Subsequent list requests will have their own
+-- nextPageToken to continue paging through the results.
+llrNextPageToken :: Lens' LicensesListResponse (Maybe Text)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+
+-- | A list of License resources.
+llrItems :: Lens' LicensesListResponse [License]
+llrItems
+  = lens _llrItems (\ s a -> s{_llrItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+llrSelfLink :: Lens' LicensesListResponse (Maybe Text)
+llrSelfLink
+  = lens _llrSelfLink (\ s a -> s{_llrSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+llrWarning :: Lens' LicensesListResponse (Maybe LicensesListResponseWarning)
+llrWarning
+  = lens _llrWarning (\ s a -> s{_llrWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+llrId :: Lens' LicensesListResponse (Maybe Text)
+llrId = lens _llrId (\ s a -> s{_llrId = a})
+
+instance FromJSON LicensesListResponse where
+        parseJSON
+          = withObject "LicensesListResponse"
+              (\ o ->
+                 LicensesListResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON LicensesListResponse where
+        toJSON LicensesListResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("items" .=) <$> _llrItems,
+                  ("selfLink" .=) <$> _llrSelfLink,
+                  ("warning" .=) <$> _llrWarning,
+                  ("id" .=) <$> _llrId])
+
+--
+-- /See:/ 'backendServiceAggregatedListWarningDataItem' smart constructor.
+data BackendServiceAggregatedListWarningDataItem = BackendServiceAggregatedListWarningDataItem'
+    { _bsalwdiValue :: !(Maybe Text)
+    , _bsalwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsalwdiValue'
+--
+-- * 'bsalwdiKey'
+backendServiceAggregatedListWarningDataItem
+    :: BackendServiceAggregatedListWarningDataItem
+backendServiceAggregatedListWarningDataItem =
+    BackendServiceAggregatedListWarningDataItem'
+    { _bsalwdiValue = Nothing
+    , _bsalwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+bsalwdiValue :: Lens' BackendServiceAggregatedListWarningDataItem (Maybe Text)
+bsalwdiValue
+  = lens _bsalwdiValue (\ s a -> s{_bsalwdiValue = a})
+
+-- | [Output Only] A key that provides more detail on the warning being
+-- returned. For example, for warnings where there are no results in a list
+-- request for a particular zone, this key might be scope and the key value
+-- might be the zone name. Other examples might be a key indicating a
+-- deprecated resource and a suggested replacement, or a warning about
+-- invalid network settings (for example, if an instance attempts to
+-- perform IP forwarding but is not enabled for IP forwarding).
+bsalwdiKey :: Lens' BackendServiceAggregatedListWarningDataItem (Maybe Text)
+bsalwdiKey
+  = lens _bsalwdiKey (\ s a -> s{_bsalwdiKey = a})
+
+instance FromJSON
+         BackendServiceAggregatedListWarningDataItem where
+        parseJSON
+          = withObject
+              "BackendServiceAggregatedListWarningDataItem"
+              (\ o ->
+                 BackendServiceAggregatedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         BackendServiceAggregatedListWarningDataItem where
+        toJSON
+          BackendServiceAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _bsalwdiValue,
+                  ("key" .=) <$> _bsalwdiKey])
+
+-- | An Instance resource. (== resource_for beta.instances ==) (==
+-- resource_for v1.instances ==)
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+    { _i1Status             :: !(Maybe InstanceStatus)
+    , _i1ServiceAccounts    :: !(Maybe [ServiceAccount])
+    , _i1DeletionProtection :: !(Maybe Bool)
+    , _i1NetworkInterfaces  :: !(Maybe [NetworkInterface])
+    , _i1Kind               :: !Text
+    , _i1Zone               :: !(Maybe Text)
+    , _i1CPUPlatform        :: !(Maybe Text)
+    , _i1SelfLink           :: !(Maybe Text)
+    , _i1GuestAccelerators  :: !(Maybe [AcceleratorConfig])
+    , _i1Name               :: !(Maybe Text)
+    , _i1StatusMessage      :: !(Maybe Text)
+    , _i1CreationTimestamp  :: !(Maybe Text)
+    , _i1MachineType        :: !(Maybe Text)
+    , _i1Metadata           :: !(Maybe Metadata)
+    , _i1Id                 :: !(Maybe (Textual Word64))
+    , _i1Labels             :: !(Maybe InstanceLabels)
+    , _i1StartRestricted    :: !(Maybe Bool)
+    , _i1Scheduling         :: !(Maybe Scheduling)
+    , _i1MinCPUPlatform     :: !(Maybe Text)
+    , _i1Disks              :: !(Maybe [AttachedDisk])
+    , _i1CanIPForward       :: !(Maybe Bool)
+    , _i1LabelFingerprint   :: !(Maybe Bytes)
+    , _i1Description        :: !(Maybe Text)
+    , _i1Tags               :: !(Maybe Tags)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Instance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'i1Status'
+--
+-- * 'i1ServiceAccounts'
+--
+-- * 'i1DeletionProtection'
+--
+-- * 'i1NetworkInterfaces'
+--
+-- * 'i1Kind'
+--
+-- * 'i1Zone'
+--
+-- * 'i1CPUPlatform'
+--
+-- * 'i1SelfLink'
+--
+-- * 'i1GuestAccelerators'
+--
+-- * 'i1Name'
+--
+-- * 'i1StatusMessage'
+--
+-- * 'i1CreationTimestamp'
+--
+-- * 'i1MachineType'
+--
+-- * 'i1Metadata'
+--
+-- * 'i1Id'
+--
+-- * 'i1Labels'
+--
+-- * 'i1StartRestricted'
+--
+-- * 'i1Scheduling'
+--
+-- * 'i1MinCPUPlatform'
+--
+-- * 'i1Disks'
+--
+-- * 'i1CanIPForward'
+--
+-- * 'i1LabelFingerprint'
+--
+-- * 'i1Description'
+--
+-- * 'i1Tags'
+instance'
+    :: Instance
+instance' =
+    Instance'
+    { _i1Status = Nothing
+    , _i1ServiceAccounts = Nothing
+    , _i1DeletionProtection = Nothing
+    , _i1NetworkInterfaces = Nothing
+    , _i1Kind = "compute#instance"
+    , _i1Zone = Nothing
+    , _i1CPUPlatform = Nothing
+    , _i1SelfLink = Nothing
+    , _i1GuestAccelerators = Nothing
+    , _i1Name = Nothing
+    , _i1StatusMessage = Nothing
+    , _i1CreationTimestamp = Nothing
+    , _i1MachineType = Nothing
+    , _i1Metadata = Nothing
+    , _i1Id = Nothing
+    , _i1Labels = Nothing
+    , _i1StartRestricted = Nothing
+    , _i1Scheduling = Nothing
+    , _i1MinCPUPlatform = Nothing
+    , _i1Disks = Nothing
+    , _i1CanIPForward = Nothing
+    , _i1LabelFingerprint = Nothing
+    , _i1Description = Nothing
+    , _i1Tags = Nothing
+    }
+
+-- | [Output Only] The status of the instance. One of the following values:
+-- PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING,
+-- SUSPENDED, and TERMINATED.
+i1Status :: Lens' Instance (Maybe InstanceStatus)
+i1Status = lens _i1Status (\ s a -> s{_i1Status = a})
+
+-- | A list of service accounts, with their specified scopes, authorized for
+-- this instance. Only one service account per VM instance is supported.
+-- Service accounts generate access tokens that can be accessed through the
+-- metadata server and used to authenticate applications on the instance.
+-- See Service Accounts for more information.
+i1ServiceAccounts :: Lens' Instance [ServiceAccount]
+i1ServiceAccounts
+  = lens _i1ServiceAccounts
+      (\ s a -> s{_i1ServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | Whether the resource should be protected against deletion.
+i1DeletionProtection :: Lens' Instance (Maybe Bool)
+i1DeletionProtection
+  = lens _i1DeletionProtection
+      (\ s a -> s{_i1DeletionProtection = a})
+
+-- | An array of network configurations for this instance. These specify how
+-- interfaces are configured to interact with other network services, such
+-- as connecting to the internet. Multiple interfaces are supported per
+-- instance.
+i1NetworkInterfaces :: Lens' Instance [NetworkInterface]
+i1NetworkInterfaces
+  = lens _i1NetworkInterfaces
+      (\ s a -> s{_i1NetworkInterfaces = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#instance for
+-- instances.
+i1Kind :: Lens' Instance Text
+i1Kind = lens _i1Kind (\ s a -> s{_i1Kind = a})
+
+-- | [Output Only] URL of the zone where the instance resides. You must
+-- specify this field as part of the HTTP request URL. It is not settable
+-- as a field in the request body.
+i1Zone :: Lens' Instance (Maybe Text)
+i1Zone = lens _i1Zone (\ s a -> s{_i1Zone = a})
+
+-- | [Output Only] The CPU platform used by this instance.
+i1CPUPlatform :: Lens' Instance (Maybe Text)
+i1CPUPlatform
+  = lens _i1CPUPlatform
+      (\ s a -> s{_i1CPUPlatform = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+i1SelfLink :: Lens' Instance (Maybe Text)
+i1SelfLink
+  = lens _i1SelfLink (\ s a -> s{_i1SelfLink = a})
+
+-- | A list of the type and count of accelerator cards attached to the
+-- instance.
+i1GuestAccelerators :: Lens' Instance [AcceleratorConfig]
+i1GuestAccelerators
+  = lens _i1GuestAccelerators
+      (\ s a -> s{_i1GuestAccelerators = a})
+      . _Default
+      . _Coerce
+
+-- | The name of the resource, provided by the client when initially creating
+-- the resource. The resource name must be 1-63 characters long, and comply
+-- with RFC1035. Specifically, the name must be 1-63 characters long and
+-- match the regular expression \`[a-z]([-a-z0-9]*[a-z0-9])?\` which means
+-- the first character must be a lowercase letter, and all following
+-- characters must be a dash, lowercase letter, or digit, except the last
+-- character, which cannot be a dash.
+i1Name :: Lens' Instance (Maybe Text)
+i1Name = lens _i1Name (\ s a -> s{_i1Name = a})
+
+-- | [Output Only] An optional, human-readable explanation of the status.
+i1StatusMessage :: Lens' Instance (Maybe Text)
+i1StatusMessage
+  = lens _i1StatusMessage
+      (\ s a -> s{_i1StatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+i1CreationTimestamp :: Lens' Instance (Maybe Text)
+i1CreationTimestamp
+  = lens _i1CreationTimestamp
+      (\ s a -> s{_i1CreationTimestamp = a})
+
+-- | Full or partial URL of the machine type resource to use for this
+-- instance, in the format: zones\/zone\/machineTypes\/machine-type. This
+-- is provided by the client when the instance is created. For example, the
+-- following is a valid partial url to a predefined machine type:
+-- zones\/us-central1-f\/machineTypes\/n1-standard-1 To create a custom
+-- machine type, provide a URL to a machine type in the following format,
+-- where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and
+-- MEMORY is the total memory for this instance. Memory must be a multiple
+-- of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):
+-- zones\/zone\/machineTypes\/custom-CPUS-MEMORY For example:
+-- zones\/us-central1-f\/machineTypes\/custom-4-5120 For a full list of
+-- restrictions, read the Specifications for custom machine types.
+i1MachineType :: Lens' Instance (Maybe Text)
+i1MachineType
+  = lens _i1MachineType
+      (\ s a -> s{_i1MachineType = a})
+
+-- | The metadata key\/value pairs assigned to this instance. This includes
+-- custom metadata and predefined keys.
+i1Metadata :: Lens' Instance (Maybe Metadata)
+i1Metadata
+  = lens _i1Metadata (\ s a -> s{_i1Metadata = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+i1Id :: Lens' Instance (Maybe Word64)
+i1Id
+  = lens _i1Id (\ s a -> s{_i1Id = a}) .
+      mapping _Coerce
+
+-- | Labels to apply to this instance. These can be later modified by the
+-- setLabels method.
+i1Labels :: Lens' Instance (Maybe InstanceLabels)
+i1Labels = lens _i1Labels (\ s a -> s{_i1Labels = a})
+
+-- | [Output Only] Whether a VM has been restricted for start because Compute
+-- Engine has detected suspicious activity.
+i1StartRestricted :: Lens' Instance (Maybe Bool)
+i1StartRestricted
+  = lens _i1StartRestricted
+      (\ s a -> s{_i1StartRestricted = a})
+
+-- | Sets the scheduling options for this instance.
+i1Scheduling :: Lens' Instance (Maybe Scheduling)
+i1Scheduling
+  = lens _i1Scheduling (\ s a -> s{_i1Scheduling = a})
+
+-- | Specifies a minimum CPU platform for the VM instance. Applicable values
+-- are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel
+-- Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".
+i1MinCPUPlatform :: Lens' Instance (Maybe Text)
+i1MinCPUPlatform
+  = lens _i1MinCPUPlatform
+      (\ s a -> s{_i1MinCPUPlatform = a})
+
+-- | Array of disks associated with this instance. Persistent disks must be
+-- created before you can assign them.
+i1Disks :: Lens' Instance [AttachedDisk]
+i1Disks
+  = lens _i1Disks (\ s a -> s{_i1Disks = a}) . _Default
+      . _Coerce
+
+-- | Allows this instance to send and receive packets with non-matching
+-- destination or source IPs. This is required if you plan to use this
+-- instance to forward routes. For more information, see Enabling IP
+-- Forwarding.
+i1CanIPForward :: Lens' Instance (Maybe Bool)
+i1CanIPForward
+  = lens _i1CanIPForward
+      (\ s a -> s{_i1CanIPForward = a})
+
+-- | A fingerprint for this request, which is essentially a hash of the
+-- label\'s contents and used for optimistic locking. The fingerprint is
+-- initially generated by Compute Engine and changes after every request to
+-- modify or update labels. You must always provide an up-to-date
+-- fingerprint hash in order to update or change labels. To see the latest
+-- fingerprint, make get() request to the instance.
+i1LabelFingerprint :: Lens' Instance (Maybe ByteString)
+i1LabelFingerprint
+  = lens _i1LabelFingerprint
+      (\ s a -> s{_i1LabelFingerprint = a})
+      . mapping _Bytes
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+i1Description :: Lens' Instance (Maybe Text)
+i1Description
+  = lens _i1Description
+      (\ s a -> s{_i1Description = a})
+
+-- | Tags to apply to this instance. Tags are used to identify valid sources
+-- or targets for network firewalls and are specified by the client during
+-- instance creation. The tags can be later modified by the setTags method.
+-- Each tag within the list must comply with RFC1035. Multiple tags can be
+-- specified via the \'tags.items\' field.
+i1Tags :: Lens' Instance (Maybe Tags)
+i1Tags = lens _i1Tags (\ s a -> s{_i1Tags = a})
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ o ->
+                 Instance' <$>
+                   (o .:? "status") <*>
+                     (o .:? "serviceAccounts" .!= mempty)
+                     <*> (o .:? "deletionProtection")
+                     <*> (o .:? "networkInterfaces" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#instance")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "cpuPlatform")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "guestAccelerators" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "id")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "startRestricted")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "minCpuPlatform")
+                     <*> (o .:? "disks" .!= mempty)
+                     <*> (o .:? "canIpForward")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Instance where
+        toJSON Instance'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _i1Status,
+                  ("serviceAccounts" .=) <$> _i1ServiceAccounts,
+                  ("deletionProtection" .=) <$> _i1DeletionProtection,
+                  ("networkInterfaces" .=) <$> _i1NetworkInterfaces,
+                  Just ("kind" .= _i1Kind), ("zone" .=) <$> _i1Zone,
+                  ("cpuPlatform" .=) <$> _i1CPUPlatform,
+                  ("selfLink" .=) <$> _i1SelfLink,
+                  ("guestAccelerators" .=) <$> _i1GuestAccelerators,
+                  ("name" .=) <$> _i1Name,
+                  ("statusMessage" .=) <$> _i1StatusMessage,
+                  ("creationTimestamp" .=) <$> _i1CreationTimestamp,
+                  ("machineType" .=) <$> _i1MachineType,
+                  ("metadata" .=) <$> _i1Metadata, ("id" .=) <$> _i1Id,
+                  ("labels" .=) <$> _i1Labels,
+                  ("startRestricted" .=) <$> _i1StartRestricted,
+                  ("scheduling" .=) <$> _i1Scheduling,
+                  ("minCpuPlatform" .=) <$> _i1MinCPUPlatform,
+                  ("disks" .=) <$> _i1Disks,
+                  ("canIpForward" .=) <$> _i1CanIPForward,
+                  ("labelFingerprint" .=) <$> _i1LabelFingerprint,
+                  ("description" .=) <$> _i1Description,
+                  ("tags" .=) <$> _i1Tags])
+
+-- | A matcher for the path portion of the URL. The BackendService from the
+-- longest-matched rule will serve the URL. If no rule was matched, the
+-- default service will be used.
+--
+-- /See:/ 'pathMatcher' smart constructor.
+data PathMatcher = PathMatcher'
+    { _pmDefaultService :: !(Maybe Text)
+    , _pmName           :: !(Maybe Text)
+    , _pmPathRules      :: !(Maybe [PathRule])
+    , _pmDescription    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PathMatcher' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmDefaultService'
+--
+-- * 'pmName'
+--
+-- * 'pmPathRules'
+--
+-- * 'pmDescription'
+pathMatcher
+    :: PathMatcher
+pathMatcher =
+    PathMatcher'
+    { _pmDefaultService = Nothing
+    , _pmName = Nothing
+    , _pmPathRules = Nothing
+    , _pmDescription = Nothing
+    }
+
+-- | The full or partial URL to the BackendService resource. This will be
+-- used if none of the pathRules or routeRules defined by this PathMatcher
+-- are matched. For example, the following are all valid URLs to a
+-- BackendService resource: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/backendServices\/backendService
+-- -
+-- compute\/v1\/projects\/project\/global\/backendServices\/backendService
+-- - global\/backendServices\/backendService Use defaultService instead of
+-- defaultRouteAction when simple routing to a backend service is desired
+-- and other advanced capabilities like traffic splitting and URL rewrites
+-- are not required. Only one of defaultService, defaultRouteAction or
+-- defaultUrlRedirect must be set. Authorization requires one or more of
+-- the following Google IAM permissions on the specified resource
+-- default_service: - compute.backendBuckets.use -
+-- compute.backendServices.use
+pmDefaultService :: Lens' PathMatcher (Maybe Text)
+pmDefaultService
+  = lens _pmDefaultService
+      (\ s a -> s{_pmDefaultService = a})
+
+-- | The name to which this PathMatcher is referred by the HostRule.
+pmName :: Lens' PathMatcher (Maybe Text)
+pmName = lens _pmName (\ s a -> s{_pmName = a})
+
+-- | The list of path rules. Use this list instead of routeRules when routing
+-- based on simple path matching is all that\'s required. The order by
+-- which path rules are specified does not matter. Matches are always done
+-- on the longest-path-first basis. For example: a pathRule with a path
+-- \/a\/b\/c\/* will match before \/a\/b\/* irrespective of the order in
+-- which those paths appear in this list. Only one of pathRules or
+-- routeRules must be set.
+pmPathRules :: Lens' PathMatcher [PathRule]
+pmPathRules
+  = lens _pmPathRules (\ s a -> s{_pmPathRules = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+pmDescription :: Lens' PathMatcher (Maybe Text)
+pmDescription
+  = lens _pmDescription
+      (\ s a -> s{_pmDescription = a})
+
+instance FromJSON PathMatcher where
+        parseJSON
+          = withObject "PathMatcher"
+              (\ o ->
+                 PathMatcher' <$>
+                   (o .:? "defaultService") <*> (o .:? "name") <*>
+                     (o .:? "pathRules" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON PathMatcher where
+        toJSON PathMatcher'{..}
+          = object
+              (catMaybes
+                 [("defaultService" .=) <$> _pmDefaultService,
+                  ("name" .=) <$> _pmName,
+                  ("pathRules" .=) <$> _pmPathRules,
+                  ("description" .=) <$> _pmDescription])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'backendServiceListWarning' smart constructor.
+data BackendServiceListWarning = BackendServiceListWarning'
+    { _bslwData    :: !(Maybe [BackendServiceListWarningDataItem])
+    , _bslwCode    :: !(Maybe BackendServiceListWarningCode)
+    , _bslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bslwData'
+--
+-- * 'bslwCode'
+--
+-- * 'bslwMessage'
+backendServiceListWarning
+    :: BackendServiceListWarning
+backendServiceListWarning =
+    BackendServiceListWarning'
+    { _bslwData = Nothing
+    , _bslwCode = Nothing
+    , _bslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+bslwData :: Lens' BackendServiceListWarning [BackendServiceListWarningDataItem]
+bslwData
+  = lens _bslwData (\ s a -> s{_bslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+bslwCode :: Lens' BackendServiceListWarning (Maybe BackendServiceListWarningCode)
+bslwCode = lens _bslwCode (\ s a -> s{_bslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+bslwMessage :: Lens' BackendServiceListWarning (Maybe Text)
+bslwMessage
+  = lens _bslwMessage (\ s a -> s{_bslwMessage = a})
+
+instance FromJSON BackendServiceListWarning where
+        parseJSON
+          = withObject "BackendServiceListWarning"
+              (\ o ->
+                 BackendServiceListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON BackendServiceListWarning where
+        toJSON BackendServiceListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _bslwData,
+                  ("code" .=) <$> _bslwCode,
+                  ("message" .=) <$> _bslwMessage])
diff --git a/gen/Network/Google/Compute/Types/Sum.hs b/gen/Network/Google/Compute/Types/Sum.hs
--- a/gen/Network/Google/Compute/Types/Sum.hs
+++ b/gen/Network/Google/Compute/Types/Sum.hs
@@ -16,3249 +16,15919 @@
 --
 module Network.Google.Compute.Types.Sum where
 
-import           Network.Google.Prelude
-
--- | Defines the maintenance behavior for this instance. For standard
--- instances, the default behavior is MIGRATE. For preemptible instances,
--- the default and only possible behavior is TERMINATE. For more
--- information, see Setting Instance Scheduling Options.
-data SchedulingOnHostMaintenance
-    = Migrate
-      -- ^ @MIGRATE@
-    | Terminate
-      -- ^ @TERMINATE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable SchedulingOnHostMaintenance
-
-instance FromHttpApiData SchedulingOnHostMaintenance where
-    parseQueryParam = \case
-        "MIGRATE" -> Right Migrate
-        "TERMINATE" -> Right Terminate
-        x -> Left ("Unable to parse SchedulingOnHostMaintenance from: " <> x)
-
-instance ToHttpApiData SchedulingOnHostMaintenance where
-    toQueryParam = \case
-        Migrate -> "MIGRATE"
-        Terminate -> "TERMINATE"
-
-instance FromJSON SchedulingOnHostMaintenance where
-    parseJSON = parseJSONText "SchedulingOnHostMaintenance"
-
-instance ToJSON SchedulingOnHostMaintenance where
-    toJSON = toJSONText
-
--- | Defines how target utilization value is expressed for a Stackdriver
--- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.
--- If not specified, the default is GAUGE.
-data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
-    = DeltaPerMinute
-      -- ^ @DELTA_PER_MINUTE@
-    | DeltaPerSecond
-      -- ^ @DELTA_PER_SECOND@
-    | Gauge
-      -- ^ @GAUGE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
-
-instance FromHttpApiData AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
-    parseQueryParam = \case
-        "DELTA_PER_MINUTE" -> Right DeltaPerMinute
-        "DELTA_PER_SECOND" -> Right DeltaPerSecond
-        "GAUGE" -> Right Gauge
-        x -> Left ("Unable to parse AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType from: " <> x)
-
-instance ToHttpApiData AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
-    toQueryParam = \case
-        DeltaPerMinute -> "DELTA_PER_MINUTE"
-        DeltaPerSecond -> "DELTA_PER_SECOND"
-        Gauge -> "GAUGE"
-
-instance FromJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
-    parseJSON = parseJSONText "AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType"
-
-instance ToJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data OperationWarningsItemCode
-    = CleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | DeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | DiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | FieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | InjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | NextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | NextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | NextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | NextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | NextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | NotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | NoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | RequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | ResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | SingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | Unreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable OperationWarningsItemCode
-
-instance FromHttpApiData OperationWarningsItemCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right CleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right DeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right FieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right InjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right NextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right NotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right NoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right RequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right ResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right Unreachable
-        x -> Left ("Unable to parse OperationWarningsItemCode from: " <> x)
-
-instance ToHttpApiData OperationWarningsItemCode where
-    toQueryParam = \case
-        CleanupFailed -> "CLEANUP_FAILED"
-        DeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        DiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        FieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        InjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        NextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        NextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        NextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        NextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        NextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        NotCriticalError -> "NOT_CRITICAL_ERROR"
-        NoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        RequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        ResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        SingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        Unreachable -> "UNREACHABLE"
-
-instance FromJSON OperationWarningsItemCode where
-    parseJSON = parseJSONText "OperationWarningsItemCode"
-
-instance ToJSON OperationWarningsItemCode where
-    toJSON = toJSONText
-
--- | The protocol this BackendService uses to communicate with backends.
--- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--- HTTP. For internal load balancing, the possible values are TCP and UDP,
--- and the default is TCP.
-data BackendServiceProtocol
-    = HTTP
-      -- ^ @HTTP@
-    | HTTPS
-      -- ^ @HTTPS@
-    | SSL
-      -- ^ @SSL@
-    | TCP
-      -- ^ @TCP@
-    | Udp
-      -- ^ @UDP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BackendServiceProtocol
-
-instance FromHttpApiData BackendServiceProtocol where
-    parseQueryParam = \case
-        "HTTP" -> Right HTTP
-        "HTTPS" -> Right HTTPS
-        "SSL" -> Right SSL
-        "TCP" -> Right TCP
-        "UDP" -> Right Udp
-        x -> Left ("Unable to parse BackendServiceProtocol from: " <> x)
-
-instance ToHttpApiData BackendServiceProtocol where
-    toQueryParam = \case
-        HTTP -> "HTTP"
-        HTTPS -> "HTTPS"
-        SSL -> "SSL"
-        TCP -> "TCP"
-        Udp -> "UDP"
-
-instance FromJSON BackendServiceProtocol where
-    parseJSON = parseJSONText "BackendServiceProtocol"
-
-instance ToJSON BackendServiceProtocol where
-    toJSON = toJSONText
-
--- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--- specified, the default is PERSISTENT.
-data AttachedDiskType
-    = Persistent
-      -- ^ @PERSISTENT@
-    | Scratch
-      -- ^ @SCRATCH@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AttachedDiskType
-
-instance FromHttpApiData AttachedDiskType where
-    parseQueryParam = \case
-        "PERSISTENT" -> Right Persistent
-        "SCRATCH" -> Right Scratch
-        x -> Left ("Unable to parse AttachedDiskType from: " <> x)
-
-instance ToHttpApiData AttachedDiskType where
-    toQueryParam = \case
-        Persistent -> "PERSISTENT"
-        Scratch -> "SCRATCH"
-
-instance FromJSON AttachedDiskType where
-    parseJSON = parseJSONText "AttachedDiskType"
-
-instance ToJSON AttachedDiskType where
-    toJSON = toJSONText
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-data TargetSSLProxyProxyHeader
-    = None
-      -- ^ @NONE@
-    | ProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetSSLProxyProxyHeader
-
-instance FromHttpApiData TargetSSLProxyProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right None
-        "PROXY_V1" -> Right ProxyV1
-        x -> Left ("Unable to parse TargetSSLProxyProxyHeader from: " <> x)
-
-instance ToHttpApiData TargetSSLProxyProxyHeader where
-    toQueryParam = \case
-        None -> "NONE"
-        ProxyV1 -> "PROXY_V1"
-
-instance FromJSON TargetSSLProxyProxyHeader where
-    parseJSON = parseJSONText "TargetSSLProxyProxyHeader"
-
-instance ToJSON TargetSSLProxyProxyHeader where
-    toJSON = toJSONText
-
--- | Instances in which state should be returned. Valid options are: \'ALL\',
--- \'RUNNING\'. By default, it lists all instances.
-data RegionInstanceGroupsListInstancesRequestInstanceState
-    = All
-      -- ^ @ALL@
-    | Running
-      -- ^ @RUNNING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RegionInstanceGroupsListInstancesRequestInstanceState
-
-instance FromHttpApiData RegionInstanceGroupsListInstancesRequestInstanceState where
-    parseQueryParam = \case
-        "ALL" -> Right All
-        "RUNNING" -> Right Running
-        x -> Left ("Unable to parse RegionInstanceGroupsListInstancesRequestInstanceState from: " <> x)
-
-instance ToHttpApiData RegionInstanceGroupsListInstancesRequestInstanceState where
-    toQueryParam = \case
-        All -> "ALL"
-        Running -> "RUNNING"
-
-instance FromJSON RegionInstanceGroupsListInstancesRequestInstanceState where
-    parseJSON = parseJSONText "RegionInstanceGroupsListInstancesRequestInstanceState"
-
-instance ToJSON RegionInstanceGroupsListInstancesRequestInstanceState where
-    toJSON = toJSONText
-
--- | The type of the image used to create this disk. The default and only
--- value is RAW
-data ImageSourceType
-    = Raw
-      -- ^ @RAW@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ImageSourceType
-
-instance FromHttpApiData ImageSourceType where
-    parseQueryParam = \case
-        "RAW" -> Right Raw
-        x -> Left ("Unable to parse ImageSourceType from: " <> x)
-
-instance ToHttpApiData ImageSourceType where
-    toQueryParam = \case
-        Raw -> "RAW"
-
-instance FromJSON ImageSourceType where
-    parseJSON = parseJSONText "ImageSourceType"
-
-instance ToJSON ImageSourceType where
-    toJSON = toJSONText
-
--- | Type of session affinity to use. The default is NONE. When the load
--- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--- protocol is UDP, this field is not used.
-data BackendServiceSessionAffinity
-    = BSSAClientIP
-      -- ^ @CLIENT_IP@
-    | BSSAClientIPPortProto
-      -- ^ @CLIENT_IP_PORT_PROTO@
-    | BSSAClientIPProto
-      -- ^ @CLIENT_IP_PROTO@
-    | BSSAGeneratedCookie
-      -- ^ @GENERATED_COOKIE@
-    | BSSANone
-      -- ^ @NONE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BackendServiceSessionAffinity
-
-instance FromHttpApiData BackendServiceSessionAffinity where
-    parseQueryParam = \case
-        "CLIENT_IP" -> Right BSSAClientIP
-        "CLIENT_IP_PORT_PROTO" -> Right BSSAClientIPPortProto
-        "CLIENT_IP_PROTO" -> Right BSSAClientIPProto
-        "GENERATED_COOKIE" -> Right BSSAGeneratedCookie
-        "NONE" -> Right BSSANone
-        x -> Left ("Unable to parse BackendServiceSessionAffinity from: " <> x)
-
-instance ToHttpApiData BackendServiceSessionAffinity where
-    toQueryParam = \case
-        BSSAClientIP -> "CLIENT_IP"
-        BSSAClientIPPortProto -> "CLIENT_IP_PORT_PROTO"
-        BSSAClientIPProto -> "CLIENT_IP_PROTO"
-        BSSAGeneratedCookie -> "GENERATED_COOKIE"
-        BSSANone -> "NONE"
-
-instance FromJSON BackendServiceSessionAffinity where
-    parseJSON = parseJSONText "BackendServiceSessionAffinity"
-
-instance ToJSON BackendServiceSessionAffinity where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data ForwardingRulesScopedListWarningCode
-    = FRSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | FRSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | FRSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | FRSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | FRSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | FRSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | FRSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | FRSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | FRSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | FRSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | FRSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | FRSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | FRSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | FRSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | FRSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | FRSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ForwardingRulesScopedListWarningCode
-
-instance FromHttpApiData ForwardingRulesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right FRSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right FRSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FRSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right FRSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right FRSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FRSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FRSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right FRSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right FRSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right FRSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right FRSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right FRSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right FRSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right FRSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right FRSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right FRSLWCUnreachable
-        x -> Left ("Unable to parse ForwardingRulesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData ForwardingRulesScopedListWarningCode where
-    toQueryParam = \case
-        FRSLWCCleanupFailed -> "CLEANUP_FAILED"
-        FRSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        FRSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        FRSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        FRSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        FRSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        FRSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        FRSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        FRSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        FRSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        FRSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        FRSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        FRSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        FRSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        FRSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        FRSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON ForwardingRulesScopedListWarningCode where
-    parseJSON = parseJSONText "ForwardingRulesScopedListWarningCode"
-
-instance ToJSON ForwardingRulesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data OperationsScopedListWarningCode
-    = OSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | OSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | OSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | OSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | OSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | OSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | OSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | OSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | OSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | OSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | OSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | OSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | OSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | OSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | OSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | OSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable OperationsScopedListWarningCode
-
-instance FromHttpApiData OperationsScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right OSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right OSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right OSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right OSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right OSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right OSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right OSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right OSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right OSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right OSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right OSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right OSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right OSLWCUnreachable
-        x -> Left ("Unable to parse OperationsScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData OperationsScopedListWarningCode where
-    toQueryParam = \case
-        OSLWCCleanupFailed -> "CLEANUP_FAILED"
-        OSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        OSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        OSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        OSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        OSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        OSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        OSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        OSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        OSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        OSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        OSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        OSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        OSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        OSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        OSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON OperationsScopedListWarningCode where
-    parseJSON = parseJSONText "OperationsScopedListWarningCode"
-
-instance ToJSON OperationsScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data DisksScopedListWarningCode
-    = DSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | DSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | DSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | DSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | DSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | DSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | DSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | DSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | DSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | DSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | DSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | DSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | DSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | DSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | DSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | DSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DisksScopedListWarningCode
-
-instance FromHttpApiData DisksScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right DSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right DSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right DSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right DSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right DSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right DSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right DSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right DSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right DSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right DSLWCUnreachable
-        x -> Left ("Unable to parse DisksScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData DisksScopedListWarningCode where
-    toQueryParam = \case
-        DSLWCCleanupFailed -> "CLEANUP_FAILED"
-        DSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        DSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        DSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        DSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        DSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        DSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        DSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        DSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        DSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        DSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        DSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        DSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        DSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        DSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        DSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON DisksScopedListWarningCode where
-    parseJSON = parseJSONText "DisksScopedListWarningCode"
-
-instance ToJSON DisksScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data InstanceGroupManagersScopedListWarningCode
-    = IGMSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | IGMSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | IGMSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | IGMSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | IGMSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | IGMSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | IGMSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | IGMSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | IGMSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | IGMSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | IGMSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | IGMSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | IGMSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | IGMSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | IGMSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | IGMSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstanceGroupManagersScopedListWarningCode
-
-instance FromHttpApiData InstanceGroupManagersScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right IGMSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right IGMSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGMSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right IGMSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right IGMSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGMSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGMSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGMSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGMSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right IGMSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right IGMSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right IGMSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right IGMSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right IGMSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGMSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right IGMSLWCUnreachable
-        x -> Left ("Unable to parse InstanceGroupManagersScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData InstanceGroupManagersScopedListWarningCode where
-    toQueryParam = \case
-        IGMSLWCCleanupFailed -> "CLEANUP_FAILED"
-        IGMSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        IGMSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        IGMSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        IGMSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        IGMSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        IGMSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        IGMSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        IGMSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        IGMSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        IGMSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        IGMSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        IGMSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        IGMSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        IGMSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        IGMSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON InstanceGroupManagersScopedListWarningCode where
-    parseJSON = parseJSONText "InstanceGroupManagersScopedListWarningCode"
-
-instance ToJSON InstanceGroupManagersScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data TargetPoolsScopedListWarningCode
-    = TPSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | TPSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | TPSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | TPSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | TPSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | TPSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | TPSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | TPSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | TPSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | TPSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | TPSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | TPSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | TPSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | TPSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | TPSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | TPSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetPoolsScopedListWarningCode
-
-instance FromHttpApiData TargetPoolsScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right TPSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right TPSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TPSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right TPSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right TPSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TPSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TPSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TPSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TPSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right TPSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right TPSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right TPSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right TPSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right TPSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TPSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right TPSLWCUnreachable
-        x -> Left ("Unable to parse TargetPoolsScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData TargetPoolsScopedListWarningCode where
-    toQueryParam = \case
-        TPSLWCCleanupFailed -> "CLEANUP_FAILED"
-        TPSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        TPSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        TPSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        TPSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        TPSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        TPSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        TPSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        TPSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        TPSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        TPSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        TPSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        TPSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        TPSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        TPSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        TPSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON TargetPoolsScopedListWarningCode where
-    parseJSON = parseJSONText "TargetPoolsScopedListWarningCode"
-
-instance ToJSON TargetPoolsScopedListWarningCode where
-    toJSON = toJSONText
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-data SSLHealthCheckProxyHeader
-    = SHCPHNone
-      -- ^ @NONE@
-    | SHCPHProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable SSLHealthCheckProxyHeader
-
-instance FromHttpApiData SSLHealthCheckProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right SHCPHNone
-        "PROXY_V1" -> Right SHCPHProxyV1
-        x -> Left ("Unable to parse SSLHealthCheckProxyHeader from: " <> x)
-
-instance ToHttpApiData SSLHealthCheckProxyHeader where
-    toQueryParam = \case
-        SHCPHNone -> "NONE"
-        SHCPHProxyV1 -> "PROXY_V1"
-
-instance FromJSON SSLHealthCheckProxyHeader where
-    parseJSON = parseJSONText "SSLHealthCheckProxyHeader"
-
-instance ToJSON SSLHealthCheckProxyHeader where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the VPN gateway.
-data TargetVPNGatewayStatus
-    = Creating
-      -- ^ @CREATING@
-    | Deleting
-      -- ^ @DELETING@
-    | Failed
-      -- ^ @FAILED@
-    | Ready
-      -- ^ @READY@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetVPNGatewayStatus
-
-instance FromHttpApiData TargetVPNGatewayStatus where
-    parseQueryParam = \case
-        "CREATING" -> Right Creating
-        "DELETING" -> Right Deleting
-        "FAILED" -> Right Failed
-        "READY" -> Right Ready
-        x -> Left ("Unable to parse TargetVPNGatewayStatus from: " <> x)
-
-instance ToHttpApiData TargetVPNGatewayStatus where
-    toQueryParam = \case
-        Creating -> "CREATING"
-        Deleting -> "DELETING"
-        Failed -> "FAILED"
-        Ready -> "READY"
-
-instance FromJSON TargetVPNGatewayStatus where
-    parseJSON = parseJSONText "TargetVPNGatewayStatus"
-
-instance ToJSON TargetVPNGatewayStatus where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the snapshot. This can be CREATING,
--- DELETING, FAILED, READY, or UPLOADING.
-data SnapshotStatus
-    = SSCreating
-      -- ^ @CREATING@
-    | SSDeleting
-      -- ^ @DELETING@
-    | SSFailed
-      -- ^ @FAILED@
-    | SSReady
-      -- ^ @READY@
-    | SSUploading
-      -- ^ @UPLOADING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable SnapshotStatus
-
-instance FromHttpApiData SnapshotStatus where
-    parseQueryParam = \case
-        "CREATING" -> Right SSCreating
-        "DELETING" -> Right SSDeleting
-        "FAILED" -> Right SSFailed
-        "READY" -> Right SSReady
-        "UPLOADING" -> Right SSUploading
-        x -> Left ("Unable to parse SnapshotStatus from: " <> x)
-
-instance ToHttpApiData SnapshotStatus where
-    toQueryParam = \case
-        SSCreating -> "CREATING"
-        SSDeleting -> "DELETING"
-        SSFailed -> "FAILED"
-        SSReady -> "READY"
-        SSUploading -> "UPLOADING"
-
-instance FromJSON SnapshotStatus where
-    parseJSON = parseJSONText "SnapshotStatus"
-
-instance ToJSON SnapshotStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data TargetInstancesScopedListWarningCode
-    = TISLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | TISLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | TISLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | TISLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | TISLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | TISLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | TISLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | TISLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | TISLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | TISLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | TISLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | TISLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | TISLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | TISLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | TISLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | TISLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetInstancesScopedListWarningCode
-
-instance FromHttpApiData TargetInstancesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right TISLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right TISLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TISLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right TISLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right TISLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TISLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TISLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TISLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TISLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right TISLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right TISLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right TISLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right TISLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right TISLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TISLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right TISLWCUnreachable
-        x -> Left ("Unable to parse TargetInstancesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData TargetInstancesScopedListWarningCode where
-    toQueryParam = \case
-        TISLWCCleanupFailed -> "CLEANUP_FAILED"
-        TISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        TISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        TISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        TISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        TISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        TISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        TISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        TISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        TISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        TISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        TISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        TISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        TISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        TISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        TISLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON TargetInstancesScopedListWarningCode where
-    parseJSON = parseJSONText "TargetInstancesScopedListWarningCode"
-
-instance ToJSON TargetInstancesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--- supported. For newer Windows images, the server might also populate this
--- property with the value WINDOWS to indicate that this is a Windows
--- image. This value is purely informational and does not enable or disable
--- any features.
-data GuestOSFeatureType
-    = FeatureTypeUnspecified
-      -- ^ @FEATURE_TYPE_UNSPECIFIED@
-    | VirtioScsiMultiQueue
-      -- ^ @VIRTIO_SCSI_MULTIQUEUE@
-    | Windows
-      -- ^ @WINDOWS@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable GuestOSFeatureType
-
-instance FromHttpApiData GuestOSFeatureType where
-    parseQueryParam = \case
-        "FEATURE_TYPE_UNSPECIFIED" -> Right FeatureTypeUnspecified
-        "VIRTIO_SCSI_MULTIQUEUE" -> Right VirtioScsiMultiQueue
-        "WINDOWS" -> Right Windows
-        x -> Left ("Unable to parse GuestOSFeatureType from: " <> x)
-
-instance ToHttpApiData GuestOSFeatureType where
-    toQueryParam = \case
-        FeatureTypeUnspecified -> "FEATURE_TYPE_UNSPECIFIED"
-        VirtioScsiMultiQueue -> "VIRTIO_SCSI_MULTIQUEUE"
-        Windows -> "WINDOWS"
-
-instance FromJSON GuestOSFeatureType where
-    parseJSON = parseJSONText "GuestOSFeatureType"
-
-instance ToJSON GuestOSFeatureType where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data RouteWarningsItemCode
-    = RWICCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | RWICDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | RWICDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | RWICFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | RWICInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | RWICNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | RWICNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | RWICNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | RWICNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | RWICNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | RWICNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | RWICNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | RWICRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | RWICResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | RWICSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | RWICUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RouteWarningsItemCode
-
-instance FromHttpApiData RouteWarningsItemCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right RWICCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right RWICDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RWICDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right RWICFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right RWICInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RWICNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RWICNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RWICNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RWICNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right RWICNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right RWICNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right RWICNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right RWICRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right RWICResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RWICSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right RWICUnreachable
-        x -> Left ("Unable to parse RouteWarningsItemCode from: " <> x)
-
-instance ToHttpApiData RouteWarningsItemCode where
-    toQueryParam = \case
-        RWICCleanupFailed -> "CLEANUP_FAILED"
-        RWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        RWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        RWICFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        RWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        RWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        RWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        RWICNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        RWICNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        RWICNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        RWICNotCriticalError -> "NOT_CRITICAL_ERROR"
-        RWICNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        RWICRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        RWICResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        RWICSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        RWICUnreachable -> "UNREACHABLE"
-
-instance FromJSON RouteWarningsItemCode where
-    parseJSON = parseJSONText "RouteWarningsItemCode"
-
-instance ToJSON RouteWarningsItemCode where
-    toJSON = toJSONText
-
--- | [Output Only] An indicator whether storageBytes is in a stable state or
--- it is being adjusted as a result of shared storage reallocation. This
--- status can either be UPDATING, meaning the size of the snapshot is being
--- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.
-data SnapshotStorageBytesStatus
-    = Updating
-      -- ^ @UPDATING@
-    | UpToDate
-      -- ^ @UP_TO_DATE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable SnapshotStorageBytesStatus
-
-instance FromHttpApiData SnapshotStorageBytesStatus where
-    parseQueryParam = \case
-        "UPDATING" -> Right Updating
-        "UP_TO_DATE" -> Right UpToDate
-        x -> Left ("Unable to parse SnapshotStorageBytesStatus from: " <> x)
-
-instance ToHttpApiData SnapshotStorageBytesStatus where
-    toQueryParam = \case
-        Updating -> "UPDATING"
-        UpToDate -> "UP_TO_DATE"
-
-instance FromJSON SnapshotStorageBytesStatus where
-    parseJSON = parseJSONText "SnapshotStorageBytesStatus"
-
-instance ToJSON SnapshotStorageBytesStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data AddressesScopedListWarningCode
-    = ASLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | ASLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | ASLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | ASLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | ASLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | ASLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | ASLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | ASLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | ASLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | ASLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | ASLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | ASLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | ASLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | ASLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | ASLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | ASLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AddressesScopedListWarningCode
-
-instance FromHttpApiData AddressesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right ASLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right ASLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ASLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right ASLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right ASLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ASLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ASLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ASLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ASLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right ASLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right ASLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right ASLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right ASLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right ASLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ASLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right ASLWCUnreachable
-        x -> Left ("Unable to parse AddressesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData AddressesScopedListWarningCode where
-    toQueryParam = \case
-        ASLWCCleanupFailed -> "CLEANUP_FAILED"
-        ASLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        ASLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        ASLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        ASLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        ASLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        ASLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        ASLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        ASLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        ASLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        ASLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        ASLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        ASLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        ASLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        ASLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        ASLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON AddressesScopedListWarningCode where
-    parseJSON = parseJSONText "AddressesScopedListWarningCode"
-
-instance ToJSON AddressesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the image. An image can be used to create
--- other resources, such as instances, only after the image has been
--- successfully created and the status is set to READY. Possible values are
--- FAILED, PENDING, or READY.
-data ImageStatus
-    = ISFailed
-      -- ^ @FAILED@
-    | ISPending
-      -- ^ @PENDING@
-    | ISReady
-      -- ^ @READY@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ImageStatus
-
-instance FromHttpApiData ImageStatus where
-    parseQueryParam = \case
-        "FAILED" -> Right ISFailed
-        "PENDING" -> Right ISPending
-        "READY" -> Right ISReady
-        x -> Left ("Unable to parse ImageStatus from: " <> x)
-
-instance ToHttpApiData ImageStatus where
-    toQueryParam = \case
-        ISFailed -> "FAILED"
-        ISPending -> "PENDING"
-        ISReady -> "READY"
-
-instance FromJSON ImageStatus where
-    parseJSON = parseJSONText "ImageStatus"
-
-instance ToJSON ImageStatus where
-    toJSON = toJSONText
-
--- | Health state of the instance.
-data HealthStatusHealthState
-    = Healthy
-      -- ^ @HEALTHY@
-    | Unhealthy
-      -- ^ @UNHEALTHY@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable HealthStatusHealthState
-
-instance FromHttpApiData HealthStatusHealthState where
-    parseQueryParam = \case
-        "HEALTHY" -> Right Healthy
-        "UNHEALTHY" -> Right Unhealthy
-        x -> Left ("Unable to parse HealthStatusHealthState from: " <> x)
-
-instance ToHttpApiData HealthStatusHealthState where
-    toQueryParam = \case
-        Healthy -> "HEALTHY"
-        Unhealthy -> "UNHEALTHY"
-
-instance FromJSON HealthStatusHealthState where
-    parseJSON = parseJSONText "HealthStatusHealthState"
-
-instance ToJSON HealthStatusHealthState where
-    toJSON = toJSONText
-
--- | The deprecation state of this resource. This can be DEPRECATED,
--- OBSOLETE, or DELETED. Operations which create a new resource using a
--- DEPRECATED resource will return successfully, but with a warning
--- indicating the deprecated resource and recommending its replacement.
--- Operations which use OBSOLETE or DELETED resources will be rejected and
--- result in an error.
-data DeprecationStatusState
-    = Deleted
-      -- ^ @DELETED@
-    | Deprecated
-      -- ^ @DEPRECATED@
-    | Obsolete
-      -- ^ @OBSOLETE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DeprecationStatusState
-
-instance FromHttpApiData DeprecationStatusState where
-    parseQueryParam = \case
-        "DELETED" -> Right Deleted
-        "DEPRECATED" -> Right Deprecated
-        "OBSOLETE" -> Right Obsolete
-        x -> Left ("Unable to parse DeprecationStatusState from: " <> x)
-
-instance ToHttpApiData DeprecationStatusState where
-    toQueryParam = \case
-        Deleted -> "DELETED"
-        Deprecated -> "DEPRECATED"
-        Obsolete -> "OBSOLETE"
-
-instance FromJSON DeprecationStatusState where
-    parseJSON = parseJSONText "DeprecationStatusState"
-
-instance ToJSON DeprecationStatusState where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data RoutersScopedListWarningCode
-    = RSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | RSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | RSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | RSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | RSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | RSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | RSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | RSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | RSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | RSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | RSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | RSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | RSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | RSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | RSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | RSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RoutersScopedListWarningCode
-
-instance FromHttpApiData RoutersScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right RSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right RSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right RSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right RSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right RSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right RSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right RSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right RSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right RSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right RSLWCUnreachable
-        x -> Left ("Unable to parse RoutersScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData RoutersScopedListWarningCode where
-    toQueryParam = \case
-        RSLWCCleanupFailed -> "CLEANUP_FAILED"
-        RSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        RSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        RSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        RSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        RSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        RSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        RSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        RSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        RSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        RSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        RSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        RSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        RSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        RSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        RSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON RoutersScopedListWarningCode where
-    parseJSON = parseJSONText "RoutersScopedListWarningCode"
-
-instance ToJSON RoutersScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] The current action that the managed instance group has
--- scheduled for the instance. Possible values: - NONE The instance is
--- running, and the managed instance group does not have any scheduled
--- actions for this instance. - CREATING The managed instance group is
--- creating this instance. If the group fails to create this instance, it
--- will try again until it is successful. - CREATING_WITHOUT_RETRIES The
--- managed instance group is attempting to create this instance only once.
--- If the group fails to create this instance, it does not try again and
--- the group\'s targetSize value is decreased instead. - RECREATING The
--- managed instance group is recreating this instance. - DELETING The
--- managed instance group is permanently deleting this instance. -
--- ABANDONING The managed instance group is abandoning this instance. The
--- instance will be removed from the instance group and from any target
--- pools that are associated with this group. - RESTARTING The managed
--- instance group is restarting the instance. - REFRESHING The managed
--- instance group is applying configuration changes to the instance without
--- stopping it. For example, the group can update the target pool list for
--- an instance without stopping that instance.
-data ManagedInstanceCurrentAction
-    = MICAAbandoning
-      -- ^ @ABANDONING@
-    | MICACreating
-      -- ^ @CREATING@
-    | MICACreatingWithoutRetries
-      -- ^ @CREATING_WITHOUT_RETRIES@
-    | MICADeleting
-      -- ^ @DELETING@
-    | MICANone
-      -- ^ @NONE@
-    | MICARecreating
-      -- ^ @RECREATING@
-    | MICARefreshing
-      -- ^ @REFRESHING@
-    | MICARestarting
-      -- ^ @RESTARTING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ManagedInstanceCurrentAction
-
-instance FromHttpApiData ManagedInstanceCurrentAction where
-    parseQueryParam = \case
-        "ABANDONING" -> Right MICAAbandoning
-        "CREATING" -> Right MICACreating
-        "CREATING_WITHOUT_RETRIES" -> Right MICACreatingWithoutRetries
-        "DELETING" -> Right MICADeleting
-        "NONE" -> Right MICANone
-        "RECREATING" -> Right MICARecreating
-        "REFRESHING" -> Right MICARefreshing
-        "RESTARTING" -> Right MICARestarting
-        x -> Left ("Unable to parse ManagedInstanceCurrentAction from: " <> x)
-
-instance ToHttpApiData ManagedInstanceCurrentAction where
-    toQueryParam = \case
-        MICAAbandoning -> "ABANDONING"
-        MICACreating -> "CREATING"
-        MICACreatingWithoutRetries -> "CREATING_WITHOUT_RETRIES"
-        MICADeleting -> "DELETING"
-        MICANone -> "NONE"
-        MICARecreating -> "RECREATING"
-        MICARefreshing -> "REFRESHING"
-        MICARestarting -> "RESTARTING"
-
-instance FromJSON ManagedInstanceCurrentAction where
-    parseJSON = parseJSONText "ManagedInstanceCurrentAction"
-
-instance ToJSON ManagedInstanceCurrentAction where
-    toJSON = toJSONText
-
--- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
--- only NO_NAT (default value) is supported.
-data TargetInstanceNATPolicy
-    = NoNAT
-      -- ^ @NO_NAT@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetInstanceNATPolicy
-
-instance FromHttpApiData TargetInstanceNATPolicy where
-    parseQueryParam = \case
-        "NO_NAT" -> Right NoNAT
-        x -> Left ("Unable to parse TargetInstanceNATPolicy from: " <> x)
-
-instance ToHttpApiData TargetInstanceNATPolicy where
-    toQueryParam = \case
-        NoNAT -> "NO_NAT"
-
-instance FromJSON TargetInstanceNATPolicy where
-    parseJSON = parseJSONText "TargetInstanceNATPolicy"
-
-instance ToJSON TargetInstanceNATPolicy where
-    toJSON = toJSONText
-
--- | The type of configuration. The default and only option is
--- ONE_TO_ONE_NAT.
-data AccessConfigType
-    = OneToOneNAT
-      -- ^ @ONE_TO_ONE_NAT@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AccessConfigType
-
-instance FromHttpApiData AccessConfigType where
-    parseQueryParam = \case
-        "ONE_TO_ONE_NAT" -> Right OneToOneNAT
-        x -> Left ("Unable to parse AccessConfigType from: " <> x)
-
-instance ToHttpApiData AccessConfigType where
-    toQueryParam = \case
-        OneToOneNAT -> "ONE_TO_ONE_NAT"
-
-instance FromJSON AccessConfigType where
-    parseJSON = parseJSONText "AccessConfigType"
-
-instance ToJSON AccessConfigType where
-    toJSON = toJSONText
-
-data BackendServiceLoadBalancingScheme
-    = External
-      -- ^ @EXTERNAL@
-    | Internal
-      -- ^ @INTERNAL@
-    | InvalidLoadBalancingScheme
-      -- ^ @INVALID_LOAD_BALANCING_SCHEME@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BackendServiceLoadBalancingScheme
-
-instance FromHttpApiData BackendServiceLoadBalancingScheme where
-    parseQueryParam = \case
-        "EXTERNAL" -> Right External
-        "INTERNAL" -> Right Internal
-        "INVALID_LOAD_BALANCING_SCHEME" -> Right InvalidLoadBalancingScheme
-        x -> Left ("Unable to parse BackendServiceLoadBalancingScheme from: " <> x)
-
-instance ToHttpApiData BackendServiceLoadBalancingScheme where
-    toQueryParam = \case
-        External -> "EXTERNAL"
-        Internal -> "INTERNAL"
-        InvalidLoadBalancingScheme -> "INVALID_LOAD_BALANCING_SCHEME"
-
-instance FromJSON BackendServiceLoadBalancingScheme where
-    parseJSON = parseJSONText "BackendServiceLoadBalancingScheme"
-
-instance ToJSON BackendServiceLoadBalancingScheme where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the operation, which can be one of the
--- following: PENDING, RUNNING, or DONE.
-data OperationStatus
-    = OSDone
-      -- ^ @DONE@
-    | OSPending
-      -- ^ @PENDING@
-    | OSRunning
-      -- ^ @RUNNING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable OperationStatus
-
-instance FromHttpApiData OperationStatus where
-    parseQueryParam = \case
-        "DONE" -> Right OSDone
-        "PENDING" -> Right OSPending
-        "RUNNING" -> Right OSRunning
-        x -> Left ("Unable to parse OperationStatus from: " <> x)
-
-instance ToHttpApiData OperationStatus where
-    toQueryParam = \case
-        OSDone -> "DONE"
-        OSPending -> "PENDING"
-        OSRunning -> "RUNNING"
-
-instance FromJSON OperationStatus where
-    parseJSON = parseJSONText "OperationStatus"
-
-instance ToJSON OperationStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data TargetVPNGatewaysScopedListWarningCode
-    = TVGSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | TVGSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | TVGSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | TVGSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | TVGSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | TVGSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | TVGSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | TVGSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | TVGSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | TVGSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | TVGSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | TVGSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | TVGSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | TVGSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | TVGSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | TVGSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetVPNGatewaysScopedListWarningCode
-
-instance FromHttpApiData TargetVPNGatewaysScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right TVGSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right TVGSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TVGSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right TVGSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right TVGSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TVGSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TVGSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TVGSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TVGSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right TVGSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right TVGSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right TVGSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right TVGSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right TVGSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TVGSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right TVGSLWCUnreachable
-        x -> Left ("Unable to parse TargetVPNGatewaysScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData TargetVPNGatewaysScopedListWarningCode where
-    toQueryParam = \case
-        TVGSLWCCleanupFailed -> "CLEANUP_FAILED"
-        TVGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        TVGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        TVGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        TVGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        TVGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        TVGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        TVGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        TVGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        TVGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        TVGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        TVGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        TVGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        TVGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        TVGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        TVGSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON TargetVPNGatewaysScopedListWarningCode where
-    parseJSON = parseJSONText "TargetVPNGatewaysScopedListWarningCode"
-
-instance ToJSON TargetVPNGatewaysScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] The status of disk creation.
-data DiskStatus
-    = DSCreating
-      -- ^ @CREATING@
-    | DSFailed
-      -- ^ @FAILED@
-    | DSReady
-      -- ^ @READY@
-    | DSRestoring
-      -- ^ @RESTORING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DiskStatus
-
-instance FromHttpApiData DiskStatus where
-    parseQueryParam = \case
-        "CREATING" -> Right DSCreating
-        "FAILED" -> Right DSFailed
-        "READY" -> Right DSReady
-        "RESTORING" -> Right DSRestoring
-        x -> Left ("Unable to parse DiskStatus from: " <> x)
-
-instance ToHttpApiData DiskStatus where
-    toQueryParam = \case
-        DSCreating -> "CREATING"
-        DSFailed -> "FAILED"
-        DSReady -> "READY"
-        DSRestoring -> "RESTORING"
-
-instance FromJSON DiskStatus where
-    parseJSON = parseJSONText "DiskStatus"
-
-instance ToJSON DiskStatus where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the instance. This field is empty when the
--- instance does not exist.
-data ManagedInstanceInstanceStatus
-    = MIISProvisioning
-      -- ^ @PROVISIONING@
-    | MIISRunning
-      -- ^ @RUNNING@
-    | MIISStaging
-      -- ^ @STAGING@
-    | MIISStopped
-      -- ^ @STOPPED@
-    | MIISStopping
-      -- ^ @STOPPING@
-    | MIISSuspended
-      -- ^ @SUSPENDED@
-    | MIISSuspending
-      -- ^ @SUSPENDING@
-    | MIISTerminated
-      -- ^ @TERMINATED@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ManagedInstanceInstanceStatus
-
-instance FromHttpApiData ManagedInstanceInstanceStatus where
-    parseQueryParam = \case
-        "PROVISIONING" -> Right MIISProvisioning
-        "RUNNING" -> Right MIISRunning
-        "STAGING" -> Right MIISStaging
-        "STOPPED" -> Right MIISStopped
-        "STOPPING" -> Right MIISStopping
-        "SUSPENDED" -> Right MIISSuspended
-        "SUSPENDING" -> Right MIISSuspending
-        "TERMINATED" -> Right MIISTerminated
-        x -> Left ("Unable to parse ManagedInstanceInstanceStatus from: " <> x)
-
-instance ToHttpApiData ManagedInstanceInstanceStatus where
-    toQueryParam = \case
-        MIISProvisioning -> "PROVISIONING"
-        MIISRunning -> "RUNNING"
-        MIISStaging -> "STAGING"
-        MIISStopped -> "STOPPED"
-        MIISStopping -> "STOPPING"
-        MIISSuspended -> "SUSPENDED"
-        MIISSuspending -> "SUSPENDING"
-        MIISTerminated -> "TERMINATED"
-
-instance FromJSON ManagedInstanceInstanceStatus where
-    parseJSON = parseJSONText "ManagedInstanceInstanceStatus"
-
-instance ToJSON ManagedInstanceInstanceStatus where
-    toJSON = toJSONText
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-data HTTPHealthCheckProxyHeader
-    = HTTPHCPHNone
-      -- ^ @NONE@
-    | HTTPHCPHProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable HTTPHealthCheckProxyHeader
-
-instance FromHttpApiData HTTPHealthCheckProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right HTTPHCPHNone
-        "PROXY_V1" -> Right HTTPHCPHProxyV1
-        x -> Left ("Unable to parse HTTPHealthCheckProxyHeader from: " <> x)
-
-instance ToHttpApiData HTTPHealthCheckProxyHeader where
-    toQueryParam = \case
-        HTTPHCPHNone -> "NONE"
-        HTTPHCPHProxyV1 -> "PROXY_V1"
-
-instance FromJSON HTTPHealthCheckProxyHeader where
-    parseJSON = parseJSONText "HTTPHealthCheckProxyHeader"
-
-instance ToJSON HTTPHealthCheckProxyHeader where
-    toJSON = toJSONText
-
--- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--- If not specified, the default is to attach the disk in READ_WRITE mode.
-data AttachedDiskMode
-    = ReadOnly
-      -- ^ @READ_ONLY@
-    | ReadWrite
-      -- ^ @READ_WRITE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AttachedDiskMode
-
-instance FromHttpApiData AttachedDiskMode where
-    parseQueryParam = \case
-        "READ_ONLY" -> Right ReadOnly
-        "READ_WRITE" -> Right ReadWrite
-        x -> Left ("Unable to parse AttachedDiskMode from: " <> x)
-
-instance ToHttpApiData AttachedDiskMode where
-    toQueryParam = \case
-        ReadOnly -> "READ_ONLY"
-        ReadWrite -> "READ_WRITE"
-
-instance FromJSON AttachedDiskMode where
-    parseJSON = parseJSONText "AttachedDiskMode"
-
-instance ToJSON AttachedDiskMode where
-    toJSON = toJSONText
-
--- | [Output Only] Status of the region, either UP or DOWN.
-data RegionStatus
-    = Down
-      -- ^ @DOWN@
-    | UP
-      -- ^ @UP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RegionStatus
-
-instance FromHttpApiData RegionStatus where
-    parseQueryParam = \case
-        "DOWN" -> Right Down
-        "UP" -> Right UP
-        x -> Left ("Unable to parse RegionStatus from: " <> x)
-
-instance ToHttpApiData RegionStatus where
-    toQueryParam = \case
-        Down -> "DOWN"
-        UP -> "UP"
-
-instance FromJSON RegionStatus where
-    parseJSON = parseJSONText "RegionStatus"
-
-instance ToJSON RegionStatus where
-    toJSON = toJSONText
-
--- | The new type of proxy header to append before sending data to the
--- backend. NONE or PROXY_V1 are allowed.
-data TargetSSLProxiesSetProxyHeaderRequestProxyHeader
-    = TSPSPHRPHNone
-      -- ^ @NONE@
-    | TSPSPHRPHProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetSSLProxiesSetProxyHeaderRequestProxyHeader
-
-instance FromHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right TSPSPHRPHNone
-        "PROXY_V1" -> Right TSPSPHRPHProxyV1
-        x -> Left ("Unable to parse TargetSSLProxiesSetProxyHeaderRequestProxyHeader from: " <> x)
-
-instance ToHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
-    toQueryParam = \case
-        TSPSPHRPHNone -> "NONE"
-        TSPSPHRPHProxyV1 -> "PROXY_V1"
-
-instance FromJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
-    parseJSON = parseJSONText "TargetSSLProxiesSetProxyHeaderRequestProxyHeader"
-
-instance ToJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the VPN tunnel.
-data VPNTunnelStatus
-    = VTSAllocatingResources
-      -- ^ @ALLOCATING_RESOURCES@
-    | VTSAuthorizationError
-      -- ^ @AUTHORIZATION_ERROR@
-    | VTSDeprovisioning
-      -- ^ @DEPROVISIONING@
-    | VTSEstablished
-      -- ^ @ESTABLISHED@
-    | VTSFailed
-      -- ^ @FAILED@
-    | VTSFirstHandshake
-      -- ^ @FIRST_HANDSHAKE@
-    | VTSNegotiationFailure
-      -- ^ @NEGOTIATION_FAILURE@
-    | VTSNetworkError
-      -- ^ @NETWORK_ERROR@
-    | VTSNoIncomingPackets
-      -- ^ @NO_INCOMING_PACKETS@
-    | VTSProvisioning
-      -- ^ @PROVISIONING@
-    | VTSRejected
-      -- ^ @REJECTED@
-    | VTSWaitingForFullConfig
-      -- ^ @WAITING_FOR_FULL_CONFIG@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable VPNTunnelStatus
-
-instance FromHttpApiData VPNTunnelStatus where
-    parseQueryParam = \case
-        "ALLOCATING_RESOURCES" -> Right VTSAllocatingResources
-        "AUTHORIZATION_ERROR" -> Right VTSAuthorizationError
-        "DEPROVISIONING" -> Right VTSDeprovisioning
-        "ESTABLISHED" -> Right VTSEstablished
-        "FAILED" -> Right VTSFailed
-        "FIRST_HANDSHAKE" -> Right VTSFirstHandshake
-        "NEGOTIATION_FAILURE" -> Right VTSNegotiationFailure
-        "NETWORK_ERROR" -> Right VTSNetworkError
-        "NO_INCOMING_PACKETS" -> Right VTSNoIncomingPackets
-        "PROVISIONING" -> Right VTSProvisioning
-        "REJECTED" -> Right VTSRejected
-        "WAITING_FOR_FULL_CONFIG" -> Right VTSWaitingForFullConfig
-        x -> Left ("Unable to parse VPNTunnelStatus from: " <> x)
-
-instance ToHttpApiData VPNTunnelStatus where
-    toQueryParam = \case
-        VTSAllocatingResources -> "ALLOCATING_RESOURCES"
-        VTSAuthorizationError -> "AUTHORIZATION_ERROR"
-        VTSDeprovisioning -> "DEPROVISIONING"
-        VTSEstablished -> "ESTABLISHED"
-        VTSFailed -> "FAILED"
-        VTSFirstHandshake -> "FIRST_HANDSHAKE"
-        VTSNegotiationFailure -> "NEGOTIATION_FAILURE"
-        VTSNetworkError -> "NETWORK_ERROR"
-        VTSNoIncomingPackets -> "NO_INCOMING_PACKETS"
-        VTSProvisioning -> "PROVISIONING"
-        VTSRejected -> "REJECTED"
-        VTSWaitingForFullConfig -> "WAITING_FOR_FULL_CONFIG"
-
-instance FromJSON VPNTunnelStatus where
-    parseJSON = parseJSONText "VPNTunnelStatus"
-
-instance ToJSON VPNTunnelStatus where
-    toJSON = toJSONText
-
--- | Specifies the balancing mode for this backend. For global HTTP(S) or
--- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are
--- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). This
--- cannot be used for internal load balancing.
-data BackendBalancingMode
-    = Connection
-      -- ^ @CONNECTION@
-    | Rate
-      -- ^ @RATE@
-    | Utilization
-      -- ^ @UTILIZATION@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BackendBalancingMode
-
-instance FromHttpApiData BackendBalancingMode where
-    parseQueryParam = \case
-        "CONNECTION" -> Right Connection
-        "RATE" -> Right Rate
-        "UTILIZATION" -> Right Utilization
-        x -> Left ("Unable to parse BackendBalancingMode from: " <> x)
-
-instance ToHttpApiData BackendBalancingMode where
-    toQueryParam = \case
-        Connection -> "CONNECTION"
-        Rate -> "RATE"
-        Utilization -> "UTILIZATION"
-
-instance FromJSON BackendBalancingMode where
-    parseJSON = parseJSONText "BackendBalancingMode"
-
-instance ToJSON BackendBalancingMode where
-    toJSON = toJSONText
-
--- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
--- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
-data ForwardingRuleIPProtocol
-    = FRIPAH
-      -- ^ @AH@
-    | FRIPEsp
-      -- ^ @ESP@
-    | FRIPSctp
-      -- ^ @SCTP@
-    | FRIPTCP
-      -- ^ @TCP@
-    | FRIPUdp
-      -- ^ @UDP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ForwardingRuleIPProtocol
-
-instance FromHttpApiData ForwardingRuleIPProtocol where
-    parseQueryParam = \case
-        "AH" -> Right FRIPAH
-        "ESP" -> Right FRIPEsp
-        "SCTP" -> Right FRIPSctp
-        "TCP" -> Right FRIPTCP
-        "UDP" -> Right FRIPUdp
-        x -> Left ("Unable to parse ForwardingRuleIPProtocol from: " <> x)
-
-instance ToHttpApiData ForwardingRuleIPProtocol where
-    toQueryParam = \case
-        FRIPAH -> "AH"
-        FRIPEsp -> "ESP"
-        FRIPSctp -> "SCTP"
-        FRIPTCP -> "TCP"
-        FRIPUdp -> "UDP"
-
-instance FromJSON ForwardingRuleIPProtocol where
-    parseJSON = parseJSONText "ForwardingRuleIPProtocol"
-
-instance ToJSON ForwardingRuleIPProtocol where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the address, which can be either IN_USE or
--- RESERVED. An address that is RESERVED is currently reserved and
--- available to use. An IN_USE address is currently being used by another
--- resource and is not available.
-data AddressStatus
-    = InUse
-      -- ^ @IN_USE@
-    | Reserved
-      -- ^ @RESERVED@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AddressStatus
-
-instance FromHttpApiData AddressStatus where
-    parseQueryParam = \case
-        "IN_USE" -> Right InUse
-        "RESERVED" -> Right Reserved
-        x -> Left ("Unable to parse AddressStatus from: " <> x)
-
-instance ToHttpApiData AddressStatus where
-    toQueryParam = \case
-        InUse -> "IN_USE"
-        Reserved -> "RESERVED"
-
-instance FromJSON AddressStatus where
-    parseJSON = parseJSONText "AddressStatus"
-
-instance ToJSON AddressStatus where
-    toJSON = toJSONText
-
--- | A filter for the state of the instances in the instance group. Valid
--- options are ALL or RUNNING. If you do not specify this parameter the
--- list includes all instances regardless of their state.
-data InstanceGroupsListInstancesRequestInstanceState
-    = IGLIRISAll
-      -- ^ @ALL@
-    | IGLIRISRunning
-      -- ^ @RUNNING@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstanceGroupsListInstancesRequestInstanceState
-
-instance FromHttpApiData InstanceGroupsListInstancesRequestInstanceState where
-    parseQueryParam = \case
-        "ALL" -> Right IGLIRISAll
-        "RUNNING" -> Right IGLIRISRunning
-        x -> Left ("Unable to parse InstanceGroupsListInstancesRequestInstanceState from: " <> x)
-
-instance ToHttpApiData InstanceGroupsListInstancesRequestInstanceState where
-    toQueryParam = \case
-        IGLIRISAll -> "ALL"
-        IGLIRISRunning -> "RUNNING"
-
-instance FromJSON InstanceGroupsListInstancesRequestInstanceState where
-    parseJSON = parseJSONText "InstanceGroupsListInstancesRequestInstanceState"
-
-instance ToJSON InstanceGroupsListInstancesRequestInstanceState where
-    toJSON = toJSONText
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-data HTTPSHealthCheckProxyHeader
-    = HHCPHNone
-      -- ^ @NONE@
-    | HHCPHProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable HTTPSHealthCheckProxyHeader
-
-instance FromHttpApiData HTTPSHealthCheckProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right HHCPHNone
-        "PROXY_V1" -> Right HHCPHProxyV1
-        x -> Left ("Unable to parse HTTPSHealthCheckProxyHeader from: " <> x)
-
-instance ToHttpApiData HTTPSHealthCheckProxyHeader where
-    toQueryParam = \case
-        HHCPHNone -> "NONE"
-        HHCPHProxyV1 -> "PROXY_V1"
-
-instance FromJSON HTTPSHealthCheckProxyHeader where
-    parseJSON = parseJSONText "HTTPSHealthCheckProxyHeader"
-
-instance ToJSON HTTPSHealthCheckProxyHeader where
-    toJSON = toJSONText
-
--- | Specifies the disk interface to use for attaching this disk, which is
--- either SCSI or NVME. The default is SCSI. Persistent disks must always
--- use SCSI and the request will fail if you attempt to attach a persistent
--- disk in any other format than SCSI. Local SSDs can use either NVME or
--- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD
--- performance.
-data AttachedDiskInterface
-    = Nvme
-      -- ^ @NVME@
-    | Scsi
-      -- ^ @SCSI@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AttachedDiskInterface
-
-instance FromHttpApiData AttachedDiskInterface where
-    parseQueryParam = \case
-        "NVME" -> Right Nvme
-        "SCSI" -> Right Scsi
-        x -> Left ("Unable to parse AttachedDiskInterface from: " <> x)
-
-instance ToHttpApiData AttachedDiskInterface where
-    toQueryParam = \case
-        Nvme -> "NVME"
-        Scsi -> "SCSI"
-
-instance FromJSON AttachedDiskInterface where
-    parseJSON = parseJSONText "AttachedDiskInterface"
-
-instance ToJSON AttachedDiskInterface where
-    toJSON = toJSONText
-
--- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--- If not specified, the default is TCP. Exactly one of the
--- protocol-specific health check field must be specified, which must match
--- type field.
-data HealthCheckType
-    = HCTHTTP
-      -- ^ @HTTP@
-    | HCTHTTPS
-      -- ^ @HTTPS@
-    | HCTInvalid
-      -- ^ @INVALID@
-    | HCTSSL
-      -- ^ @SSL@
-    | HCTTCP
-      -- ^ @TCP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable HealthCheckType
-
-instance FromHttpApiData HealthCheckType where
-    parseQueryParam = \case
-        "HTTP" -> Right HCTHTTP
-        "HTTPS" -> Right HCTHTTPS
-        "INVALID" -> Right HCTInvalid
-        "SSL" -> Right HCTSSL
-        "TCP" -> Right HCTTCP
-        x -> Left ("Unable to parse HealthCheckType from: " <> x)
-
-instance ToHttpApiData HealthCheckType where
-    toQueryParam = \case
-        HCTHTTP -> "HTTP"
-        HCTHTTPS -> "HTTPS"
-        HCTInvalid -> "INVALID"
-        HCTSSL -> "SSL"
-        HCTTCP -> "TCP"
-
-instance FromJSON HealthCheckType where
-    parseJSON = parseJSONText "HealthCheckType"
-
-instance ToJSON HealthCheckType where
-    toJSON = toJSONText
-
--- | [Output Only] Status of the zone, either UP or DOWN.
-data ZoneStatus
-    = ZSDown
-      -- ^ @DOWN@
-    | ZSUP
-      -- ^ @UP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ZoneStatus
-
-instance FromHttpApiData ZoneStatus where
-    parseQueryParam = \case
-        "DOWN" -> Right ZSDown
-        "UP" -> Right ZSUP
-        x -> Left ("Unable to parse ZoneStatus from: " <> x)
-
-instance ToHttpApiData ZoneStatus where
-    toQueryParam = \case
-        ZSDown -> "DOWN"
-        ZSUP -> "UP"
-
-instance FromJSON ZoneStatus where
-    parseJSON = parseJSONText "ZoneStatus"
-
-instance ToJSON ZoneStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data SubnetworksScopedListWarningCode
-    = SSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | SSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | SSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | SSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | SSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | SSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | SSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | SSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | SSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | SSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | SSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | SSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | SSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | SSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | SSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | SSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable SubnetworksScopedListWarningCode
-
-instance FromHttpApiData SubnetworksScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right SSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right SSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right SSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right SSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right SSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right SSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right SSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right SSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right SSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right SSLWCUnreachable
-        x -> Left ("Unable to parse SubnetworksScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData SubnetworksScopedListWarningCode where
-    toQueryParam = \case
-        SSLWCCleanupFailed -> "CLEANUP_FAILED"
-        SSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        SSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        SSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        SSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        SSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        SSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        SSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        SSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        SSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        SSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        SSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        SSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        SSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        SSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        SSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON SubnetworksScopedListWarningCode where
-    parseJSON = parseJSONText "SubnetworksScopedListWarningCode"
-
-instance ToJSON SubnetworksScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] Name of the quota metric.
-data QuotaMetric
-    = Autoscalers
-      -- ^ @AUTOSCALERS@
-    | BackendServices
-      -- ^ @BACKEND_SERVICES@
-    | CPUs
-      -- ^ @CPUS@
-    | DisksTotalGb
-      -- ^ @DISKS_TOTAL_GB@
-    | Firewalls
-      -- ^ @FIREWALLS@
-    | ForwardingRules
-      -- ^ @FORWARDING_RULES@
-    | HealthChecks
-      -- ^ @HEALTH_CHECKS@
-    | Images
-      -- ^ @IMAGES@
-    | Instances
-      -- ^ @INSTANCES@
-    | InstanceGroups
-      -- ^ @INSTANCE_GROUPS@
-    | InstanceGroupManagers
-      -- ^ @INSTANCE_GROUP_MANAGERS@
-    | InstanceTemplates
-      -- ^ @INSTANCE_TEMPLATES@
-    | InUseAddresses
-      -- ^ @IN_USE_ADDRESSES@
-    | LocalSsdTotalGb
-      -- ^ @LOCAL_SSD_TOTAL_GB@
-    | Networks
-      -- ^ @NETWORKS@
-    | PreemptibleCPUs
-      -- ^ @PREEMPTIBLE_CPUS@
-    | RegionalAutoscalers
-      -- ^ @REGIONAL_AUTOSCALERS@
-    | RegionalInstanceGroupManagers
-      -- ^ @REGIONAL_INSTANCE_GROUP_MANAGERS@
-    | Routers
-      -- ^ @ROUTERS@
-    | Routes
-      -- ^ @ROUTES@
-    | Snapshots
-      -- ^ @SNAPSHOTS@
-    | SsdTotalGb
-      -- ^ @SSD_TOTAL_GB@
-    | SSLCertificates
-      -- ^ @SSL_CERTIFICATES@
-    | StaticAddresses
-      -- ^ @STATIC_ADDRESSES@
-    | Subnetworks
-      -- ^ @SUBNETWORKS@
-    | TargetHTTPSProxies
-      -- ^ @TARGET_HTTPS_PROXIES@
-    | TargetHTTPProxies
-      -- ^ @TARGET_HTTP_PROXIES@
-    | TargetInstances
-      -- ^ @TARGET_INSTANCES@
-    | TargetPools
-      -- ^ @TARGET_POOLS@
-    | TargetSSLProxies
-      -- ^ @TARGET_SSL_PROXIES@
-    | TargetVPNGateways
-      -- ^ @TARGET_VPN_GATEWAYS@
-    | TotalCPUs
-      -- ^ @TOTAL_CPUS@
-    | URLMaps
-      -- ^ @URL_MAPS@
-    | VPNTunnels
-      -- ^ @VPN_TUNNELS@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable QuotaMetric
-
-instance FromHttpApiData QuotaMetric where
-    parseQueryParam = \case
-        "AUTOSCALERS" -> Right Autoscalers
-        "BACKEND_SERVICES" -> Right BackendServices
-        "CPUS" -> Right CPUs
-        "DISKS_TOTAL_GB" -> Right DisksTotalGb
-        "FIREWALLS" -> Right Firewalls
-        "FORWARDING_RULES" -> Right ForwardingRules
-        "HEALTH_CHECKS" -> Right HealthChecks
-        "IMAGES" -> Right Images
-        "INSTANCES" -> Right Instances
-        "INSTANCE_GROUPS" -> Right InstanceGroups
-        "INSTANCE_GROUP_MANAGERS" -> Right InstanceGroupManagers
-        "INSTANCE_TEMPLATES" -> Right InstanceTemplates
-        "IN_USE_ADDRESSES" -> Right InUseAddresses
-        "LOCAL_SSD_TOTAL_GB" -> Right LocalSsdTotalGb
-        "NETWORKS" -> Right Networks
-        "PREEMPTIBLE_CPUS" -> Right PreemptibleCPUs
-        "REGIONAL_AUTOSCALERS" -> Right RegionalAutoscalers
-        "REGIONAL_INSTANCE_GROUP_MANAGERS" -> Right RegionalInstanceGroupManagers
-        "ROUTERS" -> Right Routers
-        "ROUTES" -> Right Routes
-        "SNAPSHOTS" -> Right Snapshots
-        "SSD_TOTAL_GB" -> Right SsdTotalGb
-        "SSL_CERTIFICATES" -> Right SSLCertificates
-        "STATIC_ADDRESSES" -> Right StaticAddresses
-        "SUBNETWORKS" -> Right Subnetworks
-        "TARGET_HTTPS_PROXIES" -> Right TargetHTTPSProxies
-        "TARGET_HTTP_PROXIES" -> Right TargetHTTPProxies
-        "TARGET_INSTANCES" -> Right TargetInstances
-        "TARGET_POOLS" -> Right TargetPools
-        "TARGET_SSL_PROXIES" -> Right TargetSSLProxies
-        "TARGET_VPN_GATEWAYS" -> Right TargetVPNGateways
-        "TOTAL_CPUS" -> Right TotalCPUs
-        "URL_MAPS" -> Right URLMaps
-        "VPN_TUNNELS" -> Right VPNTunnels
-        x -> Left ("Unable to parse QuotaMetric from: " <> x)
-
-instance ToHttpApiData QuotaMetric where
-    toQueryParam = \case
-        Autoscalers -> "AUTOSCALERS"
-        BackendServices -> "BACKEND_SERVICES"
-        CPUs -> "CPUS"
-        DisksTotalGb -> "DISKS_TOTAL_GB"
-        Firewalls -> "FIREWALLS"
-        ForwardingRules -> "FORWARDING_RULES"
-        HealthChecks -> "HEALTH_CHECKS"
-        Images -> "IMAGES"
-        Instances -> "INSTANCES"
-        InstanceGroups -> "INSTANCE_GROUPS"
-        InstanceGroupManagers -> "INSTANCE_GROUP_MANAGERS"
-        InstanceTemplates -> "INSTANCE_TEMPLATES"
-        InUseAddresses -> "IN_USE_ADDRESSES"
-        LocalSsdTotalGb -> "LOCAL_SSD_TOTAL_GB"
-        Networks -> "NETWORKS"
-        PreemptibleCPUs -> "PREEMPTIBLE_CPUS"
-        RegionalAutoscalers -> "REGIONAL_AUTOSCALERS"
-        RegionalInstanceGroupManagers -> "REGIONAL_INSTANCE_GROUP_MANAGERS"
-        Routers -> "ROUTERS"
-        Routes -> "ROUTES"
-        Snapshots -> "SNAPSHOTS"
-        SsdTotalGb -> "SSD_TOTAL_GB"
-        SSLCertificates -> "SSL_CERTIFICATES"
-        StaticAddresses -> "STATIC_ADDRESSES"
-        Subnetworks -> "SUBNETWORKS"
-        TargetHTTPSProxies -> "TARGET_HTTPS_PROXIES"
-        TargetHTTPProxies -> "TARGET_HTTP_PROXIES"
-        TargetInstances -> "TARGET_INSTANCES"
-        TargetPools -> "TARGET_POOLS"
-        TargetSSLProxies -> "TARGET_SSL_PROXIES"
-        TargetVPNGateways -> "TARGET_VPN_GATEWAYS"
-        TotalCPUs -> "TOTAL_CPUS"
-        URLMaps -> "URL_MAPS"
-        VPNTunnels -> "VPN_TUNNELS"
-
-instance FromJSON QuotaMetric where
-    parseJSON = parseJSONText "QuotaMetric"
-
-instance ToJSON QuotaMetric where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the instance. One of the following values:
--- PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, and
--- TERMINATED.
-data InstanceStatus
-    = ISProvisioning
-      -- ^ @PROVISIONING@
-    | ISRunning
-      -- ^ @RUNNING@
-    | ISStaging
-      -- ^ @STAGING@
-    | ISStopped
-      -- ^ @STOPPED@
-    | ISStopping
-      -- ^ @STOPPING@
-    | ISSuspended
-      -- ^ @SUSPENDED@
-    | ISSuspending
-      -- ^ @SUSPENDING@
-    | ISTerminated
-      -- ^ @TERMINATED@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstanceStatus
-
-instance FromHttpApiData InstanceStatus where
-    parseQueryParam = \case
-        "PROVISIONING" -> Right ISProvisioning
-        "RUNNING" -> Right ISRunning
-        "STAGING" -> Right ISStaging
-        "STOPPED" -> Right ISStopped
-        "STOPPING" -> Right ISStopping
-        "SUSPENDED" -> Right ISSuspended
-        "SUSPENDING" -> Right ISSuspending
-        "TERMINATED" -> Right ISTerminated
-        x -> Left ("Unable to parse InstanceStatus from: " <> x)
-
-instance ToHttpApiData InstanceStatus where
-    toQueryParam = \case
-        ISProvisioning -> "PROVISIONING"
-        ISRunning -> "RUNNING"
-        ISStaging -> "STAGING"
-        ISStopped -> "STOPPED"
-        ISStopping -> "STOPPING"
-        ISSuspended -> "SUSPENDED"
-        ISSuspending -> "SUSPENDING"
-        ISTerminated -> "TERMINATED"
-
-instance FromJSON InstanceStatus where
-    parseJSON = parseJSONText "InstanceStatus"
-
-instance ToJSON InstanceStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data MachineTypesScopedListWarningCode
-    = MTSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | MTSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | MTSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | MTSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | MTSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | MTSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | MTSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | MTSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | MTSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | MTSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | MTSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | MTSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | MTSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | MTSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | MTSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | MTSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable MachineTypesScopedListWarningCode
-
-instance FromHttpApiData MachineTypesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right MTSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right MTSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right MTSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right MTSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right MTSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right MTSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right MTSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right MTSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right MTSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right MTSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right MTSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right MTSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right MTSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right MTSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right MTSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right MTSLWCUnreachable
-        x -> Left ("Unable to parse MachineTypesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData MachineTypesScopedListWarningCode where
-    toQueryParam = \case
-        MTSLWCCleanupFailed -> "CLEANUP_FAILED"
-        MTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        MTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        MTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        MTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        MTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        MTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        MTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        MTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        MTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        MTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        MTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        MTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        MTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        MTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        MTSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON MachineTypesScopedListWarningCode where
-    parseJSON = parseJSONText "MachineTypesScopedListWarningCode"
-
-instance ToJSON MachineTypesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data DiskTypesScopedListWarningCode
-    = DTSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | DTSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | DTSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | DTSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | DTSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | DTSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | DTSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | DTSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | DTSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | DTSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | DTSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | DTSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | DTSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | DTSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | DTSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | DTSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DiskTypesScopedListWarningCode
-
-instance FromHttpApiData DiskTypesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right DTSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right DTSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DTSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right DTSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right DTSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DTSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DTSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DTSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DTSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right DTSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right DTSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right DTSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right DTSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right DTSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DTSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right DTSLWCUnreachable
-        x -> Left ("Unable to parse DiskTypesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData DiskTypesScopedListWarningCode where
-    toQueryParam = \case
-        DTSLWCCleanupFailed -> "CLEANUP_FAILED"
-        DTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        DTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        DTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        DTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        DTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        DTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        DTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        DTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        DTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        DTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        DTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        DTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        DTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        DTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        DTSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON DiskTypesScopedListWarningCode where
-    parseJSON = parseJSONText "DiskTypesScopedListWarningCode"
-
-instance ToJSON DiskTypesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data AutoscalersScopedListWarningCode
-    = ACleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | ADeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | ADiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | AFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | AInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | ANextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | ANextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | ANextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | ANextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | ANextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | ANotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | ANoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | ARequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | AResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | ASingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | AUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AutoscalersScopedListWarningCode
-
-instance FromHttpApiData AutoscalersScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right ACleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right ADeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ADiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right AFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right AInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ANextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ANextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ANextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ANextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right ANextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right ANotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right ANoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right ARequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right AResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ASingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right AUnreachable
-        x -> Left ("Unable to parse AutoscalersScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData AutoscalersScopedListWarningCode where
-    toQueryParam = \case
-        ACleanupFailed -> "CLEANUP_FAILED"
-        ADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        ADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        AFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        AInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        ANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        ANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        ANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        ANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        ANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        ANotCriticalError -> "NOT_CRITICAL_ERROR"
-        ANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        ARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        AResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        ASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        AUnreachable -> "UNREACHABLE"
-
-instance FromJSON AutoscalersScopedListWarningCode where
-    parseJSON = parseJSONText "AutoscalersScopedListWarningCode"
-
-instance ToJSON AutoscalersScopedListWarningCode where
-    toJSON = toJSONText
-
--- | This signifies what the ForwardingRule will be used for and can only
--- take the following values: INTERNAL EXTERNAL The value of INTERNAL means
--- that this will be used for Internal Network Load Balancing (TCP, UDP).
--- The value of EXTERNAL means that this will be used for External Load
--- Balancing (HTTP(S) LB, External TCP\/UDP LB, SSL Proxy)
-data ForwardingRuleLoadBalancingScheme
-    = FRLBSExternal
-      -- ^ @EXTERNAL@
-    | FRLBSInternal
-      -- ^ @INTERNAL@
-    | FRLBSInvalid
-      -- ^ @INVALID@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ForwardingRuleLoadBalancingScheme
-
-instance FromHttpApiData ForwardingRuleLoadBalancingScheme where
-    parseQueryParam = \case
-        "EXTERNAL" -> Right FRLBSExternal
-        "INTERNAL" -> Right FRLBSInternal
-        "INVALID" -> Right FRLBSInvalid
-        x -> Left ("Unable to parse ForwardingRuleLoadBalancingScheme from: " <> x)
-
-instance ToHttpApiData ForwardingRuleLoadBalancingScheme where
-    toQueryParam = \case
-        FRLBSExternal -> "EXTERNAL"
-        FRLBSInternal -> "INTERNAL"
-        FRLBSInvalid -> "INVALID"
-
-instance FromJSON ForwardingRuleLoadBalancingScheme where
-    parseJSON = parseJSONText "ForwardingRuleLoadBalancingScheme"
-
-instance ToJSON ForwardingRuleLoadBalancingScheme where
-    toJSON = toJSONText
-
--- | Status of the BGP peer: {UP, DOWN}
-data RouterStatusBGPPeerStatusStatus
-    = RSBPSSDown
-      -- ^ @DOWN@
-    | RSBPSSUnknown
-      -- ^ @UNKNOWN@
-    | RSBPSSUP
-      -- ^ @UP@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable RouterStatusBGPPeerStatusStatus
-
-instance FromHttpApiData RouterStatusBGPPeerStatusStatus where
-    parseQueryParam = \case
-        "DOWN" -> Right RSBPSSDown
-        "UNKNOWN" -> Right RSBPSSUnknown
-        "UP" -> Right RSBPSSUP
-        x -> Left ("Unable to parse RouterStatusBGPPeerStatusStatus from: " <> x)
-
-instance ToHttpApiData RouterStatusBGPPeerStatusStatus where
-    toQueryParam = \case
-        RSBPSSDown -> "DOWN"
-        RSBPSSUnknown -> "UNKNOWN"
-        RSBPSSUP -> "UP"
-
-instance FromJSON RouterStatusBGPPeerStatusStatus where
-    parseJSON = parseJSONText "RouterStatusBGPPeerStatusStatus"
-
-instance ToJSON RouterStatusBGPPeerStatusStatus where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data VPNTunnelsScopedListWarningCode
-    = VTSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | VTSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | VTSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | VTSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | VTSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | VTSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | VTSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | VTSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | VTSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | VTSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | VTSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | VTSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | VTSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | VTSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | VTSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | VTSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable VPNTunnelsScopedListWarningCode
-
-instance FromHttpApiData VPNTunnelsScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right VTSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right VTSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VTSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right VTSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right VTSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VTSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VTSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right VTSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right VTSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right VTSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right VTSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right VTSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right VTSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right VTSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right VTSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right VTSLWCUnreachable
-        x -> Left ("Unable to parse VPNTunnelsScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData VPNTunnelsScopedListWarningCode where
-    toQueryParam = \case
-        VTSLWCCleanupFailed -> "CLEANUP_FAILED"
-        VTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        VTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        VTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        VTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        VTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        VTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        VTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        VTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        VTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        VTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        VTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        VTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        VTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        VTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        VTSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON VPNTunnelsScopedListWarningCode where
-    parseJSON = parseJSONText "VPNTunnelsScopedListWarningCode"
-
-instance ToJSON VPNTunnelsScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data InstanceGroupsScopedListWarningCode
-    = IGSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | IGSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | IGSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | IGSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | IGSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | IGSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | IGSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | IGSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | IGSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | IGSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | IGSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | IGSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | IGSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | IGSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | IGSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | IGSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstanceGroupsScopedListWarningCode
-
-instance FromHttpApiData InstanceGroupsScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right IGSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right IGSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right IGSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right IGSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right IGSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right IGSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right IGSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right IGSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right IGSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right IGSLWCUnreachable
-        x -> Left ("Unable to parse InstanceGroupsScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData InstanceGroupsScopedListWarningCode where
-    toQueryParam = \case
-        IGSLWCCleanupFailed -> "CLEANUP_FAILED"
-        IGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        IGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        IGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        IGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        IGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        IGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        IGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        IGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        IGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        IGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        IGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        IGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        IGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        IGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        IGSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON InstanceGroupsScopedListWarningCode where
-    parseJSON = parseJSONText "InstanceGroupsScopedListWarningCode"
-
-instance ToJSON InstanceGroupsScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] The status of the instance.
-data InstanceWithNamedPortsStatus
-    = IWNPSProvisioning
-      -- ^ @PROVISIONING@
-    | IWNPSRunning
-      -- ^ @RUNNING@
-    | IWNPSStaging
-      -- ^ @STAGING@
-    | IWNPSStopped
-      -- ^ @STOPPED@
-    | IWNPSStopping
-      -- ^ @STOPPING@
-    | IWNPSSuspended
-      -- ^ @SUSPENDED@
-    | IWNPSSuspending
-      -- ^ @SUSPENDING@
-    | IWNPSTerminated
-      -- ^ @TERMINATED@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstanceWithNamedPortsStatus
-
-instance FromHttpApiData InstanceWithNamedPortsStatus where
-    parseQueryParam = \case
-        "PROVISIONING" -> Right IWNPSProvisioning
-        "RUNNING" -> Right IWNPSRunning
-        "STAGING" -> Right IWNPSStaging
-        "STOPPED" -> Right IWNPSStopped
-        "STOPPING" -> Right IWNPSStopping
-        "SUSPENDED" -> Right IWNPSSuspended
-        "SUSPENDING" -> Right IWNPSSuspending
-        "TERMINATED" -> Right IWNPSTerminated
-        x -> Left ("Unable to parse InstanceWithNamedPortsStatus from: " <> x)
-
-instance ToHttpApiData InstanceWithNamedPortsStatus where
-    toQueryParam = \case
-        IWNPSProvisioning -> "PROVISIONING"
-        IWNPSRunning -> "RUNNING"
-        IWNPSStaging -> "STAGING"
-        IWNPSStopped -> "STOPPED"
-        IWNPSStopping -> "STOPPING"
-        IWNPSSuspended -> "SUSPENDED"
-        IWNPSSuspending -> "SUSPENDING"
-        IWNPSTerminated -> "TERMINATED"
-
-instance FromJSON InstanceWithNamedPortsStatus where
-    parseJSON = parseJSONText "InstanceWithNamedPortsStatus"
-
-instance ToJSON InstanceWithNamedPortsStatus where
-    toJSON = toJSONText
-
--- | Specifies the type of proxy header to append before sending data to the
--- backend, either NONE or PROXY_V1. The default is NONE.
-data TCPHealthCheckProxyHeader
-    = THCPHNone
-      -- ^ @NONE@
-    | THCPHProxyV1
-      -- ^ @PROXY_V1@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TCPHealthCheckProxyHeader
-
-instance FromHttpApiData TCPHealthCheckProxyHeader where
-    parseQueryParam = \case
-        "NONE" -> Right THCPHNone
-        "PROXY_V1" -> Right THCPHProxyV1
-        x -> Left ("Unable to parse TCPHealthCheckProxyHeader from: " <> x)
-
-instance ToHttpApiData TCPHealthCheckProxyHeader where
-    toQueryParam = \case
-        THCPHNone -> "NONE"
-        THCPHProxyV1 -> "PROXY_V1"
-
-instance FromJSON TCPHealthCheckProxyHeader where
-    parseJSON = parseJSONText "TCPHealthCheckProxyHeader"
-
-instance ToJSON TCPHealthCheckProxyHeader where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data InstancesScopedListWarningCode
-    = ISLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | ISLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | ISLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | ISLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | ISLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | ISLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | ISLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | ISLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | ISLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | ISLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | ISLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | ISLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | ISLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | ISLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | ISLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | ISLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable InstancesScopedListWarningCode
-
-instance FromHttpApiData InstancesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right ISLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right ISLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ISLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right ISLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right ISLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ISLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ISLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ISLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ISLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right ISLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right ISLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right ISLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right ISLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right ISLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ISLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right ISLWCUnreachable
-        x -> Left ("Unable to parse InstancesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData InstancesScopedListWarningCode where
-    toQueryParam = \case
-        ISLWCCleanupFailed -> "CLEANUP_FAILED"
-        ISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        ISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        ISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        ISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        ISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        ISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        ISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        ISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        ISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        ISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        ISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        ISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        ISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        ISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        ISLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON InstancesScopedListWarningCode where
-    parseJSON = parseJSONText "InstancesScopedListWarningCode"
-
-instance ToJSON InstancesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | [Output Only] A warning code, if applicable. For example, Compute Engine
--- returns NO_RESULTS_ON_PAGE if there are no results in the response.
-data BackendServicesScopedListWarningCode
-    = BSSLWCCleanupFailed
-      -- ^ @CLEANUP_FAILED@
-    | BSSLWCDeprecatedResourceUsed
-      -- ^ @DEPRECATED_RESOURCE_USED@
-    | BSSLWCDiskSizeLargerThanImageSize
-      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
-    | BSSLWCFieldValueOverriden
-      -- ^ @FIELD_VALUE_OVERRIDEN@
-    | BSSLWCInjectedKernelsDeprecated
-      -- ^ @INJECTED_KERNELS_DEPRECATED@
-    | BSSLWCNextHopAddressNotAssigned
-      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
-    | BSSLWCNextHopCannotIPForward
-      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
-    | BSSLWCNextHopInstanceNotFound
-      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
-    | BSSLWCNextHopInstanceNotOnNetwork
-      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
-    | BSSLWCNextHopNotRunning
-      -- ^ @NEXT_HOP_NOT_RUNNING@
-    | BSSLWCNotCriticalError
-      -- ^ @NOT_CRITICAL_ERROR@
-    | BSSLWCNoResultsOnPage
-      -- ^ @NO_RESULTS_ON_PAGE@
-    | BSSLWCRequiredTosAgreement
-      -- ^ @REQUIRED_TOS_AGREEMENT@
-    | BSSLWCResourceNotDeleted
-      -- ^ @RESOURCE_NOT_DELETED@
-    | BSSLWCSingleInstancePropertyTemplate
-      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
-    | BSSLWCUnreachable
-      -- ^ @UNREACHABLE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BackendServicesScopedListWarningCode
-
-instance FromHttpApiData BackendServicesScopedListWarningCode where
-    parseQueryParam = \case
-        "CLEANUP_FAILED" -> Right BSSLWCCleanupFailed
-        "DEPRECATED_RESOURCE_USED" -> Right BSSLWCDeprecatedResourceUsed
-        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right BSSLWCDiskSizeLargerThanImageSize
-        "FIELD_VALUE_OVERRIDEN" -> Right BSSLWCFieldValueOverriden
-        "INJECTED_KERNELS_DEPRECATED" -> Right BSSLWCInjectedKernelsDeprecated
-        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right BSSLWCNextHopAddressNotAssigned
-        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right BSSLWCNextHopCannotIPForward
-        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right BSSLWCNextHopInstanceNotFound
-        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right BSSLWCNextHopInstanceNotOnNetwork
-        "NEXT_HOP_NOT_RUNNING" -> Right BSSLWCNextHopNotRunning
-        "NOT_CRITICAL_ERROR" -> Right BSSLWCNotCriticalError
-        "NO_RESULTS_ON_PAGE" -> Right BSSLWCNoResultsOnPage
-        "REQUIRED_TOS_AGREEMENT" -> Right BSSLWCRequiredTosAgreement
-        "RESOURCE_NOT_DELETED" -> Right BSSLWCResourceNotDeleted
-        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right BSSLWCSingleInstancePropertyTemplate
-        "UNREACHABLE" -> Right BSSLWCUnreachable
-        x -> Left ("Unable to parse BackendServicesScopedListWarningCode from: " <> x)
-
-instance ToHttpApiData BackendServicesScopedListWarningCode where
-    toQueryParam = \case
-        BSSLWCCleanupFailed -> "CLEANUP_FAILED"
-        BSSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
-        BSSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
-        BSSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
-        BSSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
-        BSSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
-        BSSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
-        BSSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
-        BSSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
-        BSSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
-        BSSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
-        BSSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
-        BSSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
-        BSSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
-        BSSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
-        BSSLWCUnreachable -> "UNREACHABLE"
-
-instance FromJSON BackendServicesScopedListWarningCode where
-    parseJSON = parseJSONText "BackendServicesScopedListWarningCode"
-
-instance ToJSON BackendServicesScopedListWarningCode where
-    toJSON = toJSONText
-
--- | Sesssion affinity option, must be one of the following values: NONE:
--- Connections from the same client IP may go to any instance in the pool.
--- CLIENT_IP: Connections from the same client IP will go to the same
--- instance in the pool while that instance remains healthy.
--- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--- protocol will go to the same instance in the pool while that instance
--- remains healthy.
-data TargetPoolSessionAffinity
-    = TPSAClientIP
-      -- ^ @CLIENT_IP@
-    | TPSAClientIPPortProto
-      -- ^ @CLIENT_IP_PORT_PROTO@
-    | TPSAClientIPProto
-      -- ^ @CLIENT_IP_PROTO@
-    | TPSAGeneratedCookie
-      -- ^ @GENERATED_COOKIE@
-    | TPSANone
-      -- ^ @NONE@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable TargetPoolSessionAffinity
-
-instance FromHttpApiData TargetPoolSessionAffinity where
-    parseQueryParam = \case
-        "CLIENT_IP" -> Right TPSAClientIP
-        "CLIENT_IP_PORT_PROTO" -> Right TPSAClientIPPortProto
-        "CLIENT_IP_PROTO" -> Right TPSAClientIPProto
-        "GENERATED_COOKIE" -> Right TPSAGeneratedCookie
-        "NONE" -> Right TPSANone
-        x -> Left ("Unable to parse TargetPoolSessionAffinity from: " <> x)
-
-instance ToHttpApiData TargetPoolSessionAffinity where
-    toQueryParam = \case
-        TPSAClientIP -> "CLIENT_IP"
-        TPSAClientIPPortProto -> "CLIENT_IP_PORT_PROTO"
-        TPSAClientIPProto -> "CLIENT_IP_PROTO"
-        TPSAGeneratedCookie -> "GENERATED_COOKIE"
-        TPSANone -> "NONE"
-
-instance FromJSON TargetPoolSessionAffinity where
-    parseJSON = parseJSONText "TargetPoolSessionAffinity"
-
-instance ToJSON TargetPoolSessionAffinity where
-    toJSON = toJSONText
-
--- | The format used to encode and transmit the block device, which should be
--- TAR. This is just a container and transmission format and not a runtime
--- format. Provided by the client when the disk image is created.
-data ImageRawDiskContainerType
-    = TAR
-      -- ^ @TAR@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable ImageRawDiskContainerType
-
-instance FromHttpApiData ImageRawDiskContainerType where
-    parseQueryParam = \case
-        "TAR" -> Right TAR
-        x -> Left ("Unable to parse ImageRawDiskContainerType from: " <> x)
-
-instance ToHttpApiData ImageRawDiskContainerType where
-    toQueryParam = \case
-        TAR -> "TAR"
-
-instance FromJSON ImageRawDiskContainerType where
-    parseJSON = parseJSONText "ImageRawDiskContainerType"
-
-instance ToJSON ImageRawDiskContainerType where
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data HTTPSHealthCheckListWarningCode
+    = CleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | FieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | InjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | MissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | UndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | Unreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPSHealthCheckListWarningCode
+
+instance FromHttpApiData HTTPSHealthCheckListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right CleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right FieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right InjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right MissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right UndeclaredProperties
+        "UNREACHABLE" -> Right Unreachable
+        x -> Left ("Unable to parse HTTPSHealthCheckListWarningCode from: " <> x)
+
+instance ToHttpApiData HTTPSHealthCheckListWarningCode where
+    toQueryParam = \case
+        CleanupFailed -> "CLEANUP_FAILED"
+        DeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        FieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        InjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        MissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NotCriticalError -> "NOT_CRITICAL_ERROR"
+        NoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        UndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        Unreachable -> "UNREACHABLE"
+
+instance FromJSON HTTPSHealthCheckListWarningCode where
+    parseJSON = parseJSONText "HTTPSHealthCheckListWarningCode"
+
+instance ToJSON HTTPSHealthCheckListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The current state of this attachment\'s functionality.
+data InterconnectAttachmentState
+    = Active
+      -- ^ @ACTIVE@
+    | Defunct
+      -- ^ @DEFUNCT@
+    | PartnerRequestReceived
+      -- ^ @PARTNER_REQUEST_RECEIVED@
+    | PendingCustomer
+      -- ^ @PENDING_CUSTOMER@
+    | PendingPartner
+      -- ^ @PENDING_PARTNER@
+    | StateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+    | Unprovisioned
+      -- ^ @UNPROVISIONED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentState
+
+instance FromHttpApiData InterconnectAttachmentState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right Active
+        "DEFUNCT" -> Right Defunct
+        "PARTNER_REQUEST_RECEIVED" -> Right PartnerRequestReceived
+        "PENDING_CUSTOMER" -> Right PendingCustomer
+        "PENDING_PARTNER" -> Right PendingPartner
+        "STATE_UNSPECIFIED" -> Right StateUnspecified
+        "UNPROVISIONED" -> Right Unprovisioned
+        x -> Left ("Unable to parse InterconnectAttachmentState from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentState where
+    toQueryParam = \case
+        Active -> "ACTIVE"
+        Defunct -> "DEFUNCT"
+        PartnerRequestReceived -> "PARTNER_REQUEST_RECEIVED"
+        PendingCustomer -> "PENDING_CUSTOMER"
+        PendingPartner -> "PENDING_PARTNER"
+        StateUnspecified -> "STATE_UNSPECIFIED"
+        Unprovisioned -> "UNPROVISIONED"
+
+instance FromJSON InterconnectAttachmentState where
+    parseJSON = parseJSONText "InterconnectAttachmentState"
+
+instance ToJSON InterconnectAttachmentState where
+    toJSON = toJSONText
+
+-- | Defines the maintenance behavior for this instance. For standard
+-- instances, the default behavior is MIGRATE. For preemptible instances,
+-- the default and only possible behavior is TERMINATE. For more
+-- information, see Setting Instance Scheduling Options.
+data SchedulingOnHostMaintenance
+    = Migrate
+      -- ^ @MIGRATE@
+    | Terminate
+      -- ^ @TERMINATE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SchedulingOnHostMaintenance
+
+instance FromHttpApiData SchedulingOnHostMaintenance where
+    parseQueryParam = \case
+        "MIGRATE" -> Right Migrate
+        "TERMINATE" -> Right Terminate
+        x -> Left ("Unable to parse SchedulingOnHostMaintenance from: " <> x)
+
+instance ToHttpApiData SchedulingOnHostMaintenance where
+    toQueryParam = \case
+        Migrate -> "MIGRATE"
+        Terminate -> "TERMINATE"
+
+instance FromJSON SchedulingOnHostMaintenance where
+    parseJSON = parseJSONText "SchedulingOnHostMaintenance"
+
+instance ToJSON SchedulingOnHostMaintenance where
+    toJSON = toJSONText
+
+-- | Defines how target utilization value is expressed for a Stackdriver
+-- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.
+data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    = DeltaPerMinute
+      -- ^ @DELTA_PER_MINUTE@
+    | DeltaPerSecond
+      -- ^ @DELTA_PER_SECOND@
+    | Gauge
+      -- ^ @GAUGE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+
+instance FromHttpApiData AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    parseQueryParam = \case
+        "DELTA_PER_MINUTE" -> Right DeltaPerMinute
+        "DELTA_PER_SECOND" -> Right DeltaPerSecond
+        "GAUGE" -> Right Gauge
+        x -> Left ("Unable to parse AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType from: " <> x)
+
+instance ToHttpApiData AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    toQueryParam = \case
+        DeltaPerMinute -> "DELTA_PER_MINUTE"
+        DeltaPerSecond -> "DELTA_PER_SECOND"
+        Gauge -> "GAUGE"
+
+instance FromJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    parseJSON = parseJSONText "AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType"
+
+instance ToJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data BackendServiceListWarningCode
+    = BSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | BSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | BSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | BSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | BSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | BSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | BSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | BSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | BSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | BSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | BSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | BSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | BSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | BSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | BSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | BSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | BSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | BSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | BSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | BSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | BSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | BSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | BSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServiceListWarningCode
+
+instance FromHttpApiData BackendServiceListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right BSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right BSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right BSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right BSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right BSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right BSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right BSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right BSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right BSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right BSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right BSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right BSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right BSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right BSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right BSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right BSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right BSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right BSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right BSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right BSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right BSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right BSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right BSLWCUnreachable
+        x -> Left ("Unable to parse BackendServiceListWarningCode from: " <> x)
+
+instance ToHttpApiData BackendServiceListWarningCode where
+    toQueryParam = \case
+        BSLWCCleanupFailed -> "CLEANUP_FAILED"
+        BSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        BSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        BSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        BSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        BSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        BSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        BSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        BSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        BSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        BSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        BSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        BSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        BSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        BSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        BSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        BSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        BSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        BSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        BSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        BSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        BSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        BSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON BackendServiceListWarningCode where
+    parseJSON = parseJSONText "BackendServiceListWarningCode"
+
+instance ToJSON BackendServiceListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceListWarningCode
+    = ILWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ILWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ILWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ILWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ILWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ILWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ILWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ILWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ILWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ILWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ILWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ILWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ILWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ILWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ILWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ILWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ILWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ILWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ILWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ILWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ILWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ILWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ILWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceListWarningCode
+
+instance FromHttpApiData InstanceListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ILWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ILWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ILWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ILWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ILWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ILWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ILWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ILWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ILWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ILWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ILWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ILWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ILWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ILWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ILWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ILWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ILWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ILWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ILWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ILWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ILWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ILWCUndeclaredProperties
+        "UNREACHABLE" -> Right ILWCUnreachable
+        x -> Left ("Unable to parse InstanceListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceListWarningCode where
+    toQueryParam = \case
+        ILWCCleanupFailed -> "CLEANUP_FAILED"
+        ILWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ILWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ILWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ILWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ILWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ILWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ILWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ILWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ILWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ILWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ILWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ILWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ILWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ILWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ILWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ILWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ILWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ILWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ILWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ILWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ILWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ILWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceListWarningCode where
+    parseJSON = parseJSONText "InstanceListWarningCode"
+
+instance ToJSON InstanceListWarningCode where
+    toJSON = toJSONText
+
+-- | Specifies the QUIC override policy for this TargetHttpsProxy resource.
+-- This determines whether the load balancer will attempt to negotiate QUIC
+-- with clients or not. Can specify one of NONE, ENABLE, or DISABLE.
+-- Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE,
+-- and disables QUIC when set to DISABLE. If NONE is specified, uses the
+-- QUIC policy with no user overrides, which is equivalent to DISABLE. Not
+-- specifying this field is equivalent to specifying NONE.
+data TargetHTTPSProxyQuicOverride
+    = Disable
+      -- ^ @DISABLE@
+    | Enable
+      -- ^ @ENABLE@
+    | None
+      -- ^ @NONE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetHTTPSProxyQuicOverride
+
+instance FromHttpApiData TargetHTTPSProxyQuicOverride where
+    parseQueryParam = \case
+        "DISABLE" -> Right Disable
+        "ENABLE" -> Right Enable
+        "NONE" -> Right None
+        x -> Left ("Unable to parse TargetHTTPSProxyQuicOverride from: " <> x)
+
+instance ToHttpApiData TargetHTTPSProxyQuicOverride where
+    toQueryParam = \case
+        Disable -> "DISABLE"
+        Enable -> "ENABLE"
+        None -> "NONE"
+
+instance FromJSON TargetHTTPSProxyQuicOverride where
+    parseJSON = parseJSONText "TargetHTTPSProxyQuicOverride"
+
+instance ToJSON TargetHTTPSProxyQuicOverride where
+    toJSON = toJSONText
+
+-- | Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should
+-- be empty.
+data RouterNATNATIPAllocateOption
+    = AutoOnly
+      -- ^ @AUTO_ONLY@
+    | ManualOnly
+      -- ^ @MANUAL_ONLY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterNATNATIPAllocateOption
+
+instance FromHttpApiData RouterNATNATIPAllocateOption where
+    parseQueryParam = \case
+        "AUTO_ONLY" -> Right AutoOnly
+        "MANUAL_ONLY" -> Right ManualOnly
+        x -> Left ("Unable to parse RouterNATNATIPAllocateOption from: " <> x)
+
+instance ToHttpApiData RouterNATNATIPAllocateOption where
+    toQueryParam = \case
+        AutoOnly -> "AUTO_ONLY"
+        ManualOnly -> "MANUAL_ONLY"
+
+instance FromJSON RouterNATNATIPAllocateOption where
+    parseJSON = parseJSONText "RouterNATNATIPAllocateOption"
+
+instance ToJSON RouterNATNATIPAllocateOption where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data OperationWarningsItemCode
+    = OWICCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | OWICDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | OWICDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | OWICDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | OWICExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | OWICExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | OWICFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | OWICInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | OWICMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | OWICNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | OWICNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | OWICNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | OWICNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | OWICNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | OWICNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | OWICNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | OWICRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | OWICResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | OWICResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | OWICSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | OWICSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | OWICUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | OWICUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationWarningsItemCode
+
+instance FromHttpApiData OperationWarningsItemCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right OWICCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right OWICDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right OWICDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OWICDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right OWICExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right OWICExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right OWICFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right OWICInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right OWICMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OWICNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OWICNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right OWICNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right OWICNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right OWICNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right OWICNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right OWICNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right OWICRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right OWICResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right OWICResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right OWICSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right OWICSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right OWICUndeclaredProperties
+        "UNREACHABLE" -> Right OWICUnreachable
+        x -> Left ("Unable to parse OperationWarningsItemCode from: " <> x)
+
+instance ToHttpApiData OperationWarningsItemCode where
+    toQueryParam = \case
+        OWICCleanupFailed -> "CLEANUP_FAILED"
+        OWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        OWICDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        OWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        OWICExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        OWICExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        OWICFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        OWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        OWICMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        OWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        OWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        OWICNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        OWICNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        OWICNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        OWICNotCriticalError -> "NOT_CRITICAL_ERROR"
+        OWICNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        OWICRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        OWICResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        OWICResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        OWICSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        OWICSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        OWICUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        OWICUnreachable -> "UNREACHABLE"
+
+instance FromJSON OperationWarningsItemCode where
+    parseJSON = parseJSONText "OperationWarningsItemCode"
+
+instance ToJSON OperationWarningsItemCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeGroupAggregatedListWarningCode
+    = NGALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NGALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NGALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NGALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NGALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NGALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NGALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NGALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NGALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NGALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NGALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NGALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NGALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NGALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NGALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NGALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NGALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NGALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NGALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NGALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NGALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NGALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NGALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupAggregatedListWarningCode
+
+instance FromHttpApiData NodeGroupAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NGALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NGALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NGALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NGALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NGALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NGALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NGALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NGALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NGALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NGALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NGALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NGALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NGALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NGALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NGALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NGALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NGALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NGALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NGALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NGALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NGALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NGALWCUndeclaredProperties
+        "UNREACHABLE" -> Right NGALWCUnreachable
+        x -> Left ("Unable to parse NodeGroupAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeGroupAggregatedListWarningCode where
+    toQueryParam = \case
+        NGALWCCleanupFailed -> "CLEANUP_FAILED"
+        NGALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NGALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NGALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NGALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NGALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NGALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NGALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NGALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NGALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NGALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NGALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NGALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NGALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NGALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NGALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NGALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NGALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NGALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NGALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NGALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NGALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NGALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeGroupAggregatedListWarningCode where
+    parseJSON = parseJSONText "NodeGroupAggregatedListWarningCode"
+
+instance ToJSON NodeGroupAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | The protocol this BackendService uses to communicate with backends.
+-- Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP. For
+-- internal load balancing, the possible values are TCP and UDP, and the
+-- default is TCP.
+data BackendServiceProtocol
+    = HTTP
+      -- ^ @HTTP@
+    | HTTPS
+      -- ^ @HTTPS@
+    | SSL
+      -- ^ @SSL@
+    | TCP
+      -- ^ @TCP@
+    | Udp
+      -- ^ @UDP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServiceProtocol
+
+instance FromHttpApiData BackendServiceProtocol where
+    parseQueryParam = \case
+        "HTTP" -> Right HTTP
+        "HTTPS" -> Right HTTPS
+        "SSL" -> Right SSL
+        "TCP" -> Right TCP
+        "UDP" -> Right Udp
+        x -> Left ("Unable to parse BackendServiceProtocol from: " <> x)
+
+instance ToHttpApiData BackendServiceProtocol where
+    toQueryParam = \case
+        HTTP -> "HTTP"
+        HTTPS -> "HTTPS"
+        SSL -> "SSL"
+        TCP -> "TCP"
+        Udp -> "UDP"
+
+instance FromJSON BackendServiceProtocol where
+    parseJSON = parseJSONText "BackendServiceProtocol"
+
+instance ToJSON BackendServiceProtocol where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data BackendBucketListWarningCode
+    = BBLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | BBLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | BBLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | BBLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | BBLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | BBLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | BBLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | BBLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | BBLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | BBLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | BBLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | BBLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | BBLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | BBLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | BBLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | BBLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | BBLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | BBLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | BBLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | BBLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | BBLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | BBLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | BBLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendBucketListWarningCode
+
+instance FromHttpApiData BackendBucketListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right BBLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right BBLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right BBLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right BBLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right BBLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right BBLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right BBLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right BBLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right BBLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right BBLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right BBLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right BBLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right BBLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right BBLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right BBLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right BBLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right BBLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right BBLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right BBLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right BBLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right BBLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right BBLWCUndeclaredProperties
+        "UNREACHABLE" -> Right BBLWCUnreachable
+        x -> Left ("Unable to parse BackendBucketListWarningCode from: " <> x)
+
+instance ToHttpApiData BackendBucketListWarningCode where
+    toQueryParam = \case
+        BBLWCCleanupFailed -> "CLEANUP_FAILED"
+        BBLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        BBLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        BBLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        BBLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        BBLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        BBLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        BBLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        BBLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        BBLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        BBLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        BBLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        BBLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        BBLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        BBLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        BBLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        BBLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        BBLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        BBLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        BBLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        BBLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        BBLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        BBLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON BackendBucketListWarningCode where
+    parseJSON = parseJSONText "BackendBucketListWarningCode"
+
+instance ToJSON BackendBucketListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AcceleratorTypesScopedListWarningCode
+    = ATSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ATSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ATSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ATSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ATSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ATSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ATSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ATSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ATSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ATSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ATSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ATSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ATSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ATSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ATSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ATSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ATSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ATSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ATSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ATSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ATSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ATSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ATSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AcceleratorTypesScopedListWarningCode
+
+instance FromHttpApiData AcceleratorTypesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ATSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ATSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ATSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ATSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ATSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ATSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ATSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ATSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ATSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ATSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ATSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ATSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ATSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ATSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ATSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ATSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ATSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ATSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ATSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ATSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ATSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ATSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ATSLWCUnreachable
+        x -> Left ("Unable to parse AcceleratorTypesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData AcceleratorTypesScopedListWarningCode where
+    toQueryParam = \case
+        ATSLWCCleanupFailed -> "CLEANUP_FAILED"
+        ATSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ATSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ATSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ATSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ATSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ATSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ATSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ATSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ATSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ATSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ATSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ATSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ATSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ATSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ATSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ATSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ATSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ATSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ATSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ATSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ATSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ATSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AcceleratorTypesScopedListWarningCode where
+    parseJSON = parseJSONText "AcceleratorTypesScopedListWarningCode"
+
+instance ToJSON AcceleratorTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeGroupsScopedListWarningCode
+    = NGSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NGSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NGSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NGSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NGSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NGSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NGSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NGSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NGSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupsScopedListWarningCode
+
+instance FromHttpApiData NodeGroupsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NGSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NGSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NGSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NGSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NGSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NGSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NGSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NGSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NGSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NGSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NGSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NGSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NGSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NGSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NGSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NGSLWCUnreachable
+        x -> Left ("Unable to parse NodeGroupsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeGroupsScopedListWarningCode where
+    toQueryParam = \case
+        NGSLWCCleanupFailed -> "CLEANUP_FAILED"
+        NGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NGSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NGSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NGSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NGSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NGSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NGSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NGSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeGroupsScopedListWarningCode where
+    parseJSON = parseJSONText "NodeGroupsScopedListWarningCode"
+
+instance ToJSON NodeGroupsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | The new type of proxy header to append before sending data to the
+-- backend. NONE or PROXY_V1 are allowed.
+data TargetTCPProxiesSetProxyHeaderRequestProxyHeader
+    = TTPSPHRPHNone
+      -- ^ @NONE@
+    | TTPSPHRPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetTCPProxiesSetProxyHeaderRequestProxyHeader
+
+instance FromHttpApiData TargetTCPProxiesSetProxyHeaderRequestProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right TTPSPHRPHNone
+        "PROXY_V1" -> Right TTPSPHRPHProxyV1
+        x -> Left ("Unable to parse TargetTCPProxiesSetProxyHeaderRequestProxyHeader from: " <> x)
+
+instance ToHttpApiData TargetTCPProxiesSetProxyHeaderRequestProxyHeader where
+    toQueryParam = \case
+        TTPSPHRPHNone -> "NONE"
+        TTPSPHRPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON TargetTCPProxiesSetProxyHeaderRequestProxyHeader where
+    parseJSON = parseJSONText "TargetTCPProxiesSetProxyHeaderRequestProxyHeader"
+
+instance ToJSON TargetTCPProxiesSetProxyHeaderRequestProxyHeader where
+    toJSON = toJSONText
+
+-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
+-- specified, the default is PERSISTENT.
+data AttachedDiskType
+    = Persistent
+      -- ^ @PERSISTENT@
+    | Scratch
+      -- ^ @SCRATCH@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AttachedDiskType
+
+instance FromHttpApiData AttachedDiskType where
+    parseQueryParam = \case
+        "PERSISTENT" -> Right Persistent
+        "SCRATCH" -> Right Scratch
+        x -> Left ("Unable to parse AttachedDiskType from: " <> x)
+
+instance ToHttpApiData AttachedDiskType where
+    toQueryParam = \case
+        Persistent -> "PERSISTENT"
+        Scratch -> "SCRATCH"
+
+instance FromJSON AttachedDiskType where
+    parseJSON = parseJSONText "AttachedDiskType"
+
+instance ToJSON AttachedDiskType where
+    toJSON = toJSONText
+
+-- | [Output Only] The resource that configures and manages this BGP peer.
+-- MANAGED_BY_USER is the default value and can be managed by you or other
+-- users; MANAGED_BY_ATTACHMENT is a BGP peer that is configured and
+-- managed by Cloud Interconnect, specifically by an InterconnectAttachment
+-- of type PARTNER. Google will automatically create, update, and delete
+-- this type of BGP peer when the PARTNER InterconnectAttachment is
+-- created, updated, or deleted.
+data RouterBGPPeerManagementType
+    = ManagedByAttachment
+      -- ^ @MANAGED_BY_ATTACHMENT@
+    | ManagedByUser
+      -- ^ @MANAGED_BY_USER@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterBGPPeerManagementType
+
+instance FromHttpApiData RouterBGPPeerManagementType where
+    parseQueryParam = \case
+        "MANAGED_BY_ATTACHMENT" -> Right ManagedByAttachment
+        "MANAGED_BY_USER" -> Right ManagedByUser
+        x -> Left ("Unable to parse RouterBGPPeerManagementType from: " <> x)
+
+instance ToHttpApiData RouterBGPPeerManagementType where
+    toQueryParam = \case
+        ManagedByAttachment -> "MANAGED_BY_ATTACHMENT"
+        ManagedByUser -> "MANAGED_BY_USER"
+
+instance FromJSON RouterBGPPeerManagementType where
+    parseJSON = parseJSONText "RouterBGPPeerManagementType"
+
+instance ToJSON RouterBGPPeerManagementType where
+    toJSON = toJSONText
+
+data RouterNATSubnetworkToNATSourceIPRangesToNATItem
+    = AllIPRanges
+      -- ^ @ALL_IP_RANGES@
+    | ListOfSecondaryIPRanges
+      -- ^ @LIST_OF_SECONDARY_IP_RANGES@
+    | PrimaryIPRange
+      -- ^ @PRIMARY_IP_RANGE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterNATSubnetworkToNATSourceIPRangesToNATItem
+
+instance FromHttpApiData RouterNATSubnetworkToNATSourceIPRangesToNATItem where
+    parseQueryParam = \case
+        "ALL_IP_RANGES" -> Right AllIPRanges
+        "LIST_OF_SECONDARY_IP_RANGES" -> Right ListOfSecondaryIPRanges
+        "PRIMARY_IP_RANGE" -> Right PrimaryIPRange
+        x -> Left ("Unable to parse RouterNATSubnetworkToNATSourceIPRangesToNATItem from: " <> x)
+
+instance ToHttpApiData RouterNATSubnetworkToNATSourceIPRangesToNATItem where
+    toQueryParam = \case
+        AllIPRanges -> "ALL_IP_RANGES"
+        ListOfSecondaryIPRanges -> "LIST_OF_SECONDARY_IP_RANGES"
+        PrimaryIPRange -> "PRIMARY_IP_RANGE"
+
+instance FromJSON RouterNATSubnetworkToNATSourceIPRangesToNATItem where
+    parseJSON = parseJSONText "RouterNATSubnetworkToNATSourceIPRangesToNATItem"
+
+instance ToJSON RouterNATSubnetworkToNATSourceIPRangesToNATItem where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AcceleratorTypeAggregatedListWarningCode
+    = ATALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ATALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ATALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ATALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ATALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ATALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ATALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ATALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ATALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ATALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ATALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ATALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ATALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ATALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ATALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ATALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ATALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ATALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ATALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ATALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ATALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ATALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ATALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AcceleratorTypeAggregatedListWarningCode
+
+instance FromHttpApiData AcceleratorTypeAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ATALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ATALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ATALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ATALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ATALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ATALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ATALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ATALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ATALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ATALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ATALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ATALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ATALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ATALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ATALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ATALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ATALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ATALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ATALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ATALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ATALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ATALWCUndeclaredProperties
+        "UNREACHABLE" -> Right ATALWCUnreachable
+        x -> Left ("Unable to parse AcceleratorTypeAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData AcceleratorTypeAggregatedListWarningCode where
+    toQueryParam = \case
+        ATALWCCleanupFailed -> "CLEANUP_FAILED"
+        ATALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ATALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ATALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ATALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ATALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ATALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ATALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ATALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ATALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ATALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ATALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ATALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ATALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ATALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ATALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ATALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ATALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ATALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ATALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ATALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ATALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ATALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AcceleratorTypeAggregatedListWarningCode where
+    parseJSON = parseJSONText "AcceleratorTypeAggregatedListWarningCode"
+
+instance ToJSON AcceleratorTypeAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data HealthCheckListWarningCode
+    = HCLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | HCLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | HCLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | HCLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | HCLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | HCLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | HCLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | HCLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | HCLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | HCLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | HCLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | HCLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | HCLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | HCLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | HCLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | HCLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | HCLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | HCLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | HCLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | HCLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | HCLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | HCLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | HCLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HealthCheckListWarningCode
+
+instance FromHttpApiData HealthCheckListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right HCLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right HCLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right HCLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right HCLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right HCLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right HCLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right HCLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right HCLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right HCLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right HCLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right HCLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right HCLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right HCLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right HCLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right HCLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right HCLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right HCLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right HCLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right HCLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right HCLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right HCLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right HCLWCUndeclaredProperties
+        "UNREACHABLE" -> Right HCLWCUnreachable
+        x -> Left ("Unable to parse HealthCheckListWarningCode from: " <> x)
+
+instance ToHttpApiData HealthCheckListWarningCode where
+    toQueryParam = \case
+        HCLWCCleanupFailed -> "CLEANUP_FAILED"
+        HCLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        HCLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        HCLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        HCLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        HCLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        HCLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        HCLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        HCLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        HCLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        HCLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        HCLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        HCLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        HCLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        HCLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        HCLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        HCLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        HCLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        HCLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        HCLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        HCLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        HCLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        HCLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON HealthCheckListWarningCode where
+    parseJSON = parseJSONText "HealthCheckListWarningCode"
+
+instance ToJSON HealthCheckListWarningCode where
+    toJSON = toJSONText
+
+-- | Profile specifies the set of SSL features that can be used by the load
+-- balancer when negotiating SSL with clients. This can be one of
+-- COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of
+-- SSL features to enable must be specified in the customFeatures field.
+data SSLPolicyProFile
+    = Compatible
+      -- ^ @COMPATIBLE@
+    | Custom
+      -- ^ @CUSTOM@
+    | Modern
+      -- ^ @MODERN@
+    | Restricted
+      -- ^ @RESTRICTED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLPolicyProFile
+
+instance FromHttpApiData SSLPolicyProFile where
+    parseQueryParam = \case
+        "COMPATIBLE" -> Right Compatible
+        "CUSTOM" -> Right Custom
+        "MODERN" -> Right Modern
+        "RESTRICTED" -> Right Restricted
+        x -> Left ("Unable to parse SSLPolicyProFile from: " <> x)
+
+instance ToHttpApiData SSLPolicyProFile where
+    toQueryParam = \case
+        Compatible -> "COMPATIBLE"
+        Custom -> "CUSTOM"
+        Modern -> "MODERN"
+        Restricted -> "RESTRICTED"
+
+instance FromJSON SSLPolicyProFile where
+    parseJSON = parseJSONText "SSLPolicyProFile"
+
+instance ToJSON SSLPolicyProFile where
+    toJSON = toJSONText
+
+-- | The party that generated this notification. Note that \"NSRC_GOOGLE\"
+-- has been deprecated in favor of \"GOOGLE\"
+data InterconnectOutageNotificationSource
+    = Google
+      -- ^ @GOOGLE@
+    | NsrcGoogle
+      -- ^ @NSRC_GOOGLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectOutageNotificationSource
+
+instance FromHttpApiData InterconnectOutageNotificationSource where
+    parseQueryParam = \case
+        "GOOGLE" -> Right Google
+        "NSRC_GOOGLE" -> Right NsrcGoogle
+        x -> Left ("Unable to parse InterconnectOutageNotificationSource from: " <> x)
+
+instance ToHttpApiData InterconnectOutageNotificationSource where
+    toQueryParam = \case
+        Google -> "GOOGLE"
+        NsrcGoogle -> "NSRC_GOOGLE"
+
+instance FromJSON InterconnectOutageNotificationSource where
+    parseJSON = parseJSONText "InterconnectOutageNotificationSource"
+
+instance ToJSON InterconnectOutageNotificationSource where
+    toJSON = toJSONText
+
+-- | Type of link requested. This field indicates speed of each of the links
+-- in the bundle, not the entire bundle. Only 10G per link is allowed for a
+-- dedicated interconnect. Options: Ethernet_10G_LR
+data InterconnectLinkType
+    = LinkTypeEthernet10GLr
+      -- ^ @LINK_TYPE_ETHERNET_10G_LR@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectLinkType
+
+instance FromHttpApiData InterconnectLinkType where
+    parseQueryParam = \case
+        "LINK_TYPE_ETHERNET_10G_LR" -> Right LinkTypeEthernet10GLr
+        x -> Left ("Unable to parse InterconnectLinkType from: " <> x)
+
+instance ToHttpApiData InterconnectLinkType where
+    toQueryParam = \case
+        LinkTypeEthernet10GLr -> "LINK_TYPE_ETHERNET_10G_LR"
+
+instance FromJSON InterconnectLinkType where
+    parseJSON = parseJSONText "InterconnectLinkType"
+
+instance ToJSON InterconnectLinkType where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data TargetSSLProxyProxyHeader
+    = TSPPHNone
+      -- ^ @NONE@
+    | TSPPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetSSLProxyProxyHeader
+
+instance FromHttpApiData TargetSSLProxyProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right TSPPHNone
+        "PROXY_V1" -> Right TSPPHProxyV1
+        x -> Left ("Unable to parse TargetSSLProxyProxyHeader from: " <> x)
+
+instance ToHttpApiData TargetSSLProxyProxyHeader where
+    toQueryParam = \case
+        TSPPHNone -> "NONE"
+        TSPPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON TargetSSLProxyProxyHeader where
+    parseJSON = parseJSONText "TargetSSLProxyProxyHeader"
+
+instance ToJSON TargetSSLProxyProxyHeader where
+    toJSON = toJSONText
+
+-- | User-specified flag to indicate which mode to use for advertisement.
+data RouterBGPAdvertiseMode
+    = RBAMCustom
+      -- ^ @CUSTOM@
+    | RBAMDefault
+      -- ^ @DEFAULT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterBGPAdvertiseMode
+
+instance FromHttpApiData RouterBGPAdvertiseMode where
+    parseQueryParam = \case
+        "CUSTOM" -> Right RBAMCustom
+        "DEFAULT" -> Right RBAMDefault
+        x -> Left ("Unable to parse RouterBGPAdvertiseMode from: " <> x)
+
+instance ToHttpApiData RouterBGPAdvertiseMode where
+    toQueryParam = \case
+        RBAMCustom -> "CUSTOM"
+        RBAMDefault -> "DEFAULT"
+
+instance FromJSON RouterBGPAdvertiseMode where
+    parseJSON = parseJSONText "RouterBGPAdvertiseMode"
+
+instance ToJSON RouterBGPAdvertiseMode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeGroupsListNodesWarningCode
+    = NGLNWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NGLNWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NGLNWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NGLNWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NGLNWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NGLNWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NGLNWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NGLNWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NGLNWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NGLNWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NGLNWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NGLNWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NGLNWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NGLNWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NGLNWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NGLNWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NGLNWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NGLNWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NGLNWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NGLNWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NGLNWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NGLNWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NGLNWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupsListNodesWarningCode
+
+instance FromHttpApiData NodeGroupsListNodesWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NGLNWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NGLNWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NGLNWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NGLNWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NGLNWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NGLNWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NGLNWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NGLNWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NGLNWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NGLNWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NGLNWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NGLNWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NGLNWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NGLNWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NGLNWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NGLNWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NGLNWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NGLNWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NGLNWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NGLNWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NGLNWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NGLNWCUndeclaredProperties
+        "UNREACHABLE" -> Right NGLNWCUnreachable
+        x -> Left ("Unable to parse NodeGroupsListNodesWarningCode from: " <> x)
+
+instance ToHttpApiData NodeGroupsListNodesWarningCode where
+    toQueryParam = \case
+        NGLNWCCleanupFailed -> "CLEANUP_FAILED"
+        NGLNWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NGLNWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NGLNWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NGLNWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NGLNWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NGLNWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NGLNWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NGLNWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NGLNWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NGLNWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NGLNWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NGLNWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NGLNWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NGLNWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NGLNWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NGLNWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NGLNWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NGLNWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NGLNWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NGLNWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NGLNWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NGLNWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeGroupsListNodesWarningCode where
+    parseJSON = parseJSONText "NodeGroupsListNodesWarningCode"
+
+instance ToJSON NodeGroupsListNodesWarningCode where
+    toJSON = toJSONText
+
+data InterconnectDiagnosticsLinkOpticalPowerState
+    = HighAlarm
+      -- ^ @HIGH_ALARM@
+    | HighWarning
+      -- ^ @HIGH_WARNING@
+    | LowAlarm
+      -- ^ @LOW_ALARM@
+    | LowWarning
+      -- ^ @LOW_WARNING@
+    | OK
+      -- ^ @OK@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectDiagnosticsLinkOpticalPowerState
+
+instance FromHttpApiData InterconnectDiagnosticsLinkOpticalPowerState where
+    parseQueryParam = \case
+        "HIGH_ALARM" -> Right HighAlarm
+        "HIGH_WARNING" -> Right HighWarning
+        "LOW_ALARM" -> Right LowAlarm
+        "LOW_WARNING" -> Right LowWarning
+        "OK" -> Right OK
+        x -> Left ("Unable to parse InterconnectDiagnosticsLinkOpticalPowerState from: " <> x)
+
+instance ToHttpApiData InterconnectDiagnosticsLinkOpticalPowerState where
+    toQueryParam = \case
+        HighAlarm -> "HIGH_ALARM"
+        HighWarning -> "HIGH_WARNING"
+        LowAlarm -> "LOW_ALARM"
+        LowWarning -> "LOW_WARNING"
+        OK -> "OK"
+
+instance FromJSON InterconnectDiagnosticsLinkOpticalPowerState where
+    parseJSON = parseJSONText "InterconnectDiagnosticsLinkOpticalPowerState"
+
+instance ToJSON InterconnectDiagnosticsLinkOpticalPowerState where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InterconnectLocationListWarningCode
+    = ILLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ILLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ILLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ILLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ILLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ILLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ILLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ILLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ILLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ILLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ILLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ILLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ILLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ILLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ILLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ILLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ILLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ILLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ILLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ILLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ILLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ILLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ILLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectLocationListWarningCode
+
+instance FromHttpApiData InterconnectLocationListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ILLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ILLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ILLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ILLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ILLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ILLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ILLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ILLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ILLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ILLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ILLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ILLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ILLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ILLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ILLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ILLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ILLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ILLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ILLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ILLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ILLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ILLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ILLWCUnreachable
+        x -> Left ("Unable to parse InterconnectLocationListWarningCode from: " <> x)
+
+instance ToHttpApiData InterconnectLocationListWarningCode where
+    toQueryParam = \case
+        ILLWCCleanupFailed -> "CLEANUP_FAILED"
+        ILLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ILLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ILLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ILLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ILLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ILLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ILLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ILLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ILLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ILLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ILLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ILLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ILLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ILLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ILLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ILLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ILLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ILLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ILLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ILLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ILLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ILLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InterconnectLocationListWarningCode where
+    parseJSON = parseJSONText "InterconnectLocationListWarningCode"
+
+instance ToJSON InterconnectLocationListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupsListInstancesWarningCode
+    = IGLIWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGLIWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGLIWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGLIWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGLIWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGLIWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGLIWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGLIWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGLIWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGLIWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGLIWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGLIWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGLIWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGLIWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGLIWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGLIWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGLIWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGLIWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGLIWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGLIWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGLIWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGLIWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGLIWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupsListInstancesWarningCode
+
+instance FromHttpApiData InstanceGroupsListInstancesWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGLIWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGLIWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGLIWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGLIWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGLIWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGLIWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGLIWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGLIWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGLIWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGLIWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGLIWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGLIWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGLIWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGLIWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGLIWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGLIWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGLIWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGLIWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGLIWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGLIWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGLIWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGLIWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGLIWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupsListInstancesWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupsListInstancesWarningCode where
+    toQueryParam = \case
+        IGLIWCCleanupFailed -> "CLEANUP_FAILED"
+        IGLIWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGLIWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGLIWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGLIWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGLIWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGLIWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGLIWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGLIWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGLIWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGLIWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGLIWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGLIWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGLIWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGLIWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGLIWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGLIWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGLIWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGLIWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGLIWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGLIWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGLIWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGLIWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupsListInstancesWarningCode where
+    parseJSON = parseJSONText "InstanceGroupsListInstancesWarningCode"
+
+instance ToJSON InstanceGroupsListInstancesWarningCode where
+    toJSON = toJSONText
+
+-- | Instances in which state should be returned. Valid options are: \'ALL\',
+-- \'RUNNING\'. By default, it lists all instances.
+data RegionInstanceGroupsListInstancesRequestInstanceState
+    = All
+      -- ^ @ALL@
+    | Running
+      -- ^ @RUNNING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionInstanceGroupsListInstancesRequestInstanceState
+
+instance FromHttpApiData RegionInstanceGroupsListInstancesRequestInstanceState where
+    parseQueryParam = \case
+        "ALL" -> Right All
+        "RUNNING" -> Right Running
+        x -> Left ("Unable to parse RegionInstanceGroupsListInstancesRequestInstanceState from: " <> x)
+
+instance ToHttpApiData RegionInstanceGroupsListInstancesRequestInstanceState where
+    toQueryParam = \case
+        All -> "ALL"
+        Running -> "RUNNING"
+
+instance FromJSON RegionInstanceGroupsListInstancesRequestInstanceState where
+    parseJSON = parseJSONText "RegionInstanceGroupsListInstancesRequestInstanceState"
+
+instance ToJSON RegionInstanceGroupsListInstancesRequestInstanceState where
+    toJSON = toJSONText
+
+-- | [Output Only] The role this project has in a shared VPC configuration.
+-- Currently only HOST projects are differentiated.
+data ProjectXpnProjectStatus
+    = Host
+      -- ^ @HOST@
+    | UnspecifiedXpnProjectStatus
+      -- ^ @UNSPECIFIED_XPN_PROJECT_STATUS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ProjectXpnProjectStatus
+
+instance FromHttpApiData ProjectXpnProjectStatus where
+    parseQueryParam = \case
+        "HOST" -> Right Host
+        "UNSPECIFIED_XPN_PROJECT_STATUS" -> Right UnspecifiedXpnProjectStatus
+        x -> Left ("Unable to parse ProjectXpnProjectStatus from: " <> x)
+
+instance ToHttpApiData ProjectXpnProjectStatus where
+    toQueryParam = \case
+        Host -> "HOST"
+        UnspecifiedXpnProjectStatus -> "UNSPECIFIED_XPN_PROJECT_STATUS"
+
+instance FromJSON ProjectXpnProjectStatus where
+    parseJSON = parseJSONText "ProjectXpnProjectStatus"
+
+instance ToJSON ProjectXpnProjectStatus where
+    toJSON = toJSONText
+
+-- | This signifies the networking tier used for configuring this access
+-- configuration and can only take the following values: PREMIUM, STANDARD.
+-- If an AccessConfig is specified without a valid external IP address, an
+-- ephemeral IP will be created with this networkTier. If an AccessConfig
+-- with a valid external IP address is specified, it must match that of the
+-- networkTier associated with the Address resource owning that IP.
+data AccessConfigNetworkTier
+    = Premium
+      -- ^ @PREMIUM@
+    | Standard
+      -- ^ @STANDARD@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AccessConfigNetworkTier
+
+instance FromHttpApiData AccessConfigNetworkTier where
+    parseQueryParam = \case
+        "PREMIUM" -> Right Premium
+        "STANDARD" -> Right Standard
+        x -> Left ("Unable to parse AccessConfigNetworkTier from: " <> x)
+
+instance ToHttpApiData AccessConfigNetworkTier where
+    toQueryParam = \case
+        Premium -> "PREMIUM"
+        Standard -> "STANDARD"
+
+instance FromJSON AccessConfigNetworkTier where
+    parseJSON = parseJSONText "AccessConfigNetworkTier"
+
+instance ToJSON AccessConfigNetworkTier where
+    toJSON = toJSONText
+
+-- | Trusted attributes supplied by any service that owns resources and uses
+-- the IAM system for access control.
+data ConditionSys
+    = CSIP
+      -- ^ @IP@
+    | CSName
+      -- ^ @NAME@
+    | CSNoAttr
+      -- ^ @NO_ATTR@
+    | CSRegion
+      -- ^ @REGION@
+    | CSService
+      -- ^ @SERVICE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionSys
+
+instance FromHttpApiData ConditionSys where
+    parseQueryParam = \case
+        "IP" -> Right CSIP
+        "NAME" -> Right CSName
+        "NO_ATTR" -> Right CSNoAttr
+        "REGION" -> Right CSRegion
+        "SERVICE" -> Right CSService
+        x -> Left ("Unable to parse ConditionSys from: " <> x)
+
+instance ToHttpApiData ConditionSys where
+    toQueryParam = \case
+        CSIP -> "IP"
+        CSName -> "NAME"
+        CSNoAttr -> "NO_ATTR"
+        CSRegion -> "REGION"
+        CSService -> "SERVICE"
+
+instance FromJSON ConditionSys where
+    parseJSON = parseJSONText "ConditionSys"
+
+instance ToJSON ConditionSys where
+    toJSON = toJSONText
+
+-- | The type of the image used to create this disk. The default and only
+-- value is RAW
+data ImageSourceType
+    = Raw
+      -- ^ @RAW@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ImageSourceType
+
+instance FromHttpApiData ImageSourceType where
+    parseQueryParam = \case
+        "RAW" -> Right Raw
+        x -> Left ("Unable to parse ImageSourceType from: " <> x)
+
+instance ToHttpApiData ImageSourceType where
+    toQueryParam = \case
+        Raw -> "RAW"
+
+instance FromJSON ImageSourceType where
+    parseJSON = parseJSONText "ImageSourceType"
+
+instance ToJSON ImageSourceType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SubnetworkAggregatedListWarningCode
+    = SALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SubnetworkAggregatedListWarningCode
+
+instance FromHttpApiData SubnetworkAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SALWCUndeclaredProperties
+        "UNREACHABLE" -> Right SALWCUnreachable
+        x -> Left ("Unable to parse SubnetworkAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData SubnetworkAggregatedListWarningCode where
+    toQueryParam = \case
+        SALWCCleanupFailed -> "CLEANUP_FAILED"
+        SALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON SubnetworkAggregatedListWarningCode where
+    parseJSON = parseJSONText "SubnetworkAggregatedListWarningCode"
+
+instance ToJSON SubnetworkAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Type of session affinity to use. The default is NONE. When the load
+-- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
+-- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
+-- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
+-- protocol is UDP, this field is not used.
+data BackendServiceSessionAffinity
+    = BSSAClientIP
+      -- ^ @CLIENT_IP@
+    | BSSAClientIPPortProto
+      -- ^ @CLIENT_IP_PORT_PROTO@
+    | BSSAClientIPProto
+      -- ^ @CLIENT_IP_PROTO@
+    | BSSAGeneratedCookie
+      -- ^ @GENERATED_COOKIE@
+    | BSSANone
+      -- ^ @NONE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServiceSessionAffinity
+
+instance FromHttpApiData BackendServiceSessionAffinity where
+    parseQueryParam = \case
+        "CLIENT_IP" -> Right BSSAClientIP
+        "CLIENT_IP_PORT_PROTO" -> Right BSSAClientIPPortProto
+        "CLIENT_IP_PROTO" -> Right BSSAClientIPProto
+        "GENERATED_COOKIE" -> Right BSSAGeneratedCookie
+        "NONE" -> Right BSSANone
+        x -> Left ("Unable to parse BackendServiceSessionAffinity from: " <> x)
+
+instance ToHttpApiData BackendServiceSessionAffinity where
+    toQueryParam = \case
+        BSSAClientIP -> "CLIENT_IP"
+        BSSAClientIPPortProto -> "CLIENT_IP_PORT_PROTO"
+        BSSAClientIPProto -> "CLIENT_IP_PROTO"
+        BSSAGeneratedCookie -> "GENERATED_COOKIE"
+        BSSANone -> "NONE"
+
+instance FromJSON BackendServiceSessionAffinity where
+    parseJSON = parseJSONText "BackendServiceSessionAffinity"
+
+instance ToJSON BackendServiceSessionAffinity where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data ForwardingRulesScopedListWarningCode
+    = FRSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | FRSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | FRSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | FRSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | FRSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | FRSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | FRSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | FRSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | FRSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | FRSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | FRSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | FRSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | FRSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | FRSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | FRSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | FRSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | FRSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | FRSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | FRSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | FRSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | FRSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | FRSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | FRSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRulesScopedListWarningCode
+
+instance FromHttpApiData ForwardingRulesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right FRSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right FRSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right FRSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FRSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right FRSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right FRSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right FRSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right FRSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right FRSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FRSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FRSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right FRSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right FRSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right FRSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right FRSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right FRSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right FRSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right FRSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right FRSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right FRSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right FRSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right FRSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right FRSLWCUnreachable
+        x -> Left ("Unable to parse ForwardingRulesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData ForwardingRulesScopedListWarningCode where
+    toQueryParam = \case
+        FRSLWCCleanupFailed -> "CLEANUP_FAILED"
+        FRSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        FRSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        FRSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        FRSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        FRSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        FRSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        FRSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        FRSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        FRSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        FRSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        FRSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        FRSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        FRSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        FRSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        FRSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        FRSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        FRSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        FRSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        FRSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        FRSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        FRSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        FRSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON ForwardingRulesScopedListWarningCode where
+    parseJSON = parseJSONText "ForwardingRulesScopedListWarningCode"
+
+instance ToJSON ForwardingRulesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data OperationsScopedListWarningCode
+    = OSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | OSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | OSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | OSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | OSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | OSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | OSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | OSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | OSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | OSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | OSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | OSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | OSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | OSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | OSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | OSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | OSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | OSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | OSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | OSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | OSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | OSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | OSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationsScopedListWarningCode
+
+instance FromHttpApiData OperationsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right OSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right OSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right OSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right OSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right OSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right OSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right OSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right OSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right OSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right OSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right OSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right OSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right OSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right OSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right OSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right OSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right OSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right OSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right OSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right OSLWCUnreachable
+        x -> Left ("Unable to parse OperationsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData OperationsScopedListWarningCode where
+    toQueryParam = \case
+        OSLWCCleanupFailed -> "CLEANUP_FAILED"
+        OSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        OSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        OSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        OSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        OSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        OSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        OSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        OSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        OSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        OSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        OSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        OSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        OSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        OSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        OSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        OSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        OSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        OSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        OSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        OSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        OSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        OSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON OperationsScopedListWarningCode where
+    parseJSON = parseJSONText "OperationsScopedListWarningCode"
+
+instance ToJSON OperationsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data OperationAggregatedListWarningCode
+    = OALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | OALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | OALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | OALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | OALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | OALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | OALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | OALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | OALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | OALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | OALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | OALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | OALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | OALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | OALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | OALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | OALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | OALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | OALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | OALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | OALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | OALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | OALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationAggregatedListWarningCode
+
+instance FromHttpApiData OperationAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right OALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right OALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right OALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right OALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right OALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right OALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right OALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right OALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right OALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right OALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right OALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right OALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right OALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right OALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right OALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right OALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right OALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right OALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right OALWCUndeclaredProperties
+        "UNREACHABLE" -> Right OALWCUnreachable
+        x -> Left ("Unable to parse OperationAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData OperationAggregatedListWarningCode where
+    toQueryParam = \case
+        OALWCCleanupFailed -> "CLEANUP_FAILED"
+        OALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        OALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        OALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        OALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        OALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        OALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        OALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        OALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        OALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        OALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        OALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        OALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        OALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        OALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        OALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        OALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        OALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        OALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        OALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        OALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        OALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        OALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON OperationAggregatedListWarningCode where
+    parseJSON = parseJSONText "OperationAggregatedListWarningCode"
+
+instance ToJSON OperationAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DiskAggregatedListWarningCode
+    = DALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskAggregatedListWarningCode
+
+instance FromHttpApiData DiskAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DALWCUndeclaredProperties
+        "UNREACHABLE" -> Right DALWCUnreachable
+        x -> Left ("Unable to parse DiskAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData DiskAggregatedListWarningCode where
+    toQueryParam = \case
+        DALWCCleanupFailed -> "CLEANUP_FAILED"
+        DALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskAggregatedListWarningCode where
+    parseJSON = parseJSONText "DiskAggregatedListWarningCode"
+
+instance ToJSON DiskAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data UsableSubnetworksAggregatedListWarningCode
+    = USALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | USALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | USALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | USALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | USALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | USALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | USALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | USALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | USALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | USALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | USALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | USALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | USALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | USALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | USALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | USALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | USALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | USALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | USALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | USALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | USALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | USALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | USALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable UsableSubnetworksAggregatedListWarningCode
+
+instance FromHttpApiData UsableSubnetworksAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right USALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right USALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right USALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right USALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right USALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right USALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right USALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right USALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right USALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right USALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right USALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right USALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right USALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right USALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right USALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right USALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right USALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right USALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right USALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right USALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right USALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right USALWCUndeclaredProperties
+        "UNREACHABLE" -> Right USALWCUnreachable
+        x -> Left ("Unable to parse UsableSubnetworksAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData UsableSubnetworksAggregatedListWarningCode where
+    toQueryParam = \case
+        USALWCCleanupFailed -> "CLEANUP_FAILED"
+        USALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        USALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        USALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        USALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        USALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        USALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        USALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        USALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        USALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        USALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        USALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        USALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        USALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        USALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        USALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        USALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        USALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        USALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        USALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        USALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        USALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        USALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON UsableSubnetworksAggregatedListWarningCode where
+    parseJSON = parseJSONText "UsableSubnetworksAggregatedListWarningCode"
+
+instance ToJSON UsableSubnetworksAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DisksScopedListWarningCode
+    = DSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DisksScopedListWarningCode
+
+instance FromHttpApiData DisksScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right DSLWCUnreachable
+        x -> Left ("Unable to parse DisksScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData DisksScopedListWarningCode where
+    toQueryParam = \case
+        DSLWCCleanupFailed -> "CLEANUP_FAILED"
+        DSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DisksScopedListWarningCode where
+    parseJSON = parseJSONText "DisksScopedListWarningCode"
+
+instance ToJSON DisksScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupManagersScopedListWarningCode
+    = IGMSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGMSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGMSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGMSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGMSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGMSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGMSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGMSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGMSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGMSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGMSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGMSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGMSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGMSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGMSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGMSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGMSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGMSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGMSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGMSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGMSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGMSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGMSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupManagersScopedListWarningCode
+
+instance FromHttpApiData InstanceGroupManagersScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGMSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGMSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGMSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGMSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGMSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGMSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGMSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGMSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGMSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGMSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGMSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGMSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGMSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGMSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGMSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGMSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGMSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGMSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGMSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGMSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGMSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGMSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGMSLWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupManagersScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupManagersScopedListWarningCode where
+    toQueryParam = \case
+        IGMSLWCCleanupFailed -> "CLEANUP_FAILED"
+        IGMSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGMSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGMSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGMSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGMSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGMSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGMSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGMSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGMSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGMSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGMSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGMSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGMSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGMSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGMSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGMSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGMSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGMSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGMSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGMSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGMSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGMSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupManagersScopedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupManagersScopedListWarningCode"
+
+instance ToJSON InstanceGroupManagersScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SSLPolicyWarningsItemCode
+    = SPWICCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SPWICDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SPWICDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SPWICDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SPWICExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SPWICExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SPWICFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SPWICInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SPWICMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SPWICNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SPWICNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SPWICNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SPWICNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SPWICNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SPWICNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SPWICNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SPWICRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SPWICResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SPWICResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SPWICSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SPWICSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SPWICUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SPWICUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLPolicyWarningsItemCode
+
+instance FromHttpApiData SSLPolicyWarningsItemCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SPWICCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SPWICDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SPWICDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SPWICDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SPWICExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SPWICExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SPWICFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SPWICInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SPWICMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SPWICNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SPWICNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SPWICNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SPWICNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SPWICNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SPWICNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SPWICNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SPWICRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SPWICResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SPWICResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SPWICSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SPWICSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SPWICUndeclaredProperties
+        "UNREACHABLE" -> Right SPWICUnreachable
+        x -> Left ("Unable to parse SSLPolicyWarningsItemCode from: " <> x)
+
+instance ToHttpApiData SSLPolicyWarningsItemCode where
+    toQueryParam = \case
+        SPWICCleanupFailed -> "CLEANUP_FAILED"
+        SPWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SPWICDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SPWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SPWICExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SPWICExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SPWICFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SPWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SPWICMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SPWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SPWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SPWICNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SPWICNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SPWICNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SPWICNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SPWICNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SPWICRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SPWICResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SPWICResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SPWICSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SPWICSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SPWICUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SPWICUnreachable -> "UNREACHABLE"
+
+instance FromJSON SSLPolicyWarningsItemCode where
+    parseJSON = parseJSONText "SSLPolicyWarningsItemCode"
+
+instance ToJSON SSLPolicyWarningsItemCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data ForwardingRuleAggregatedListWarningCode
+    = FRALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | FRALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | FRALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | FRALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | FRALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | FRALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | FRALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | FRALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | FRALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | FRALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | FRALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | FRALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | FRALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | FRALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | FRALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | FRALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | FRALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | FRALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | FRALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | FRALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | FRALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | FRALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | FRALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleAggregatedListWarningCode
+
+instance FromHttpApiData ForwardingRuleAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right FRALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right FRALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right FRALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FRALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right FRALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right FRALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right FRALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right FRALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right FRALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FRALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FRALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right FRALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right FRALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right FRALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right FRALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right FRALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right FRALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right FRALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right FRALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right FRALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right FRALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right FRALWCUndeclaredProperties
+        "UNREACHABLE" -> Right FRALWCUnreachable
+        x -> Left ("Unable to parse ForwardingRuleAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData ForwardingRuleAggregatedListWarningCode where
+    toQueryParam = \case
+        FRALWCCleanupFailed -> "CLEANUP_FAILED"
+        FRALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        FRALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        FRALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        FRALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        FRALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        FRALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        FRALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        FRALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        FRALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        FRALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        FRALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        FRALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        FRALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        FRALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        FRALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        FRALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        FRALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        FRALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        FRALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        FRALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        FRALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        FRALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON ForwardingRuleAggregatedListWarningCode where
+    parseJSON = parseJSONText "ForwardingRuleAggregatedListWarningCode"
+
+instance ToJSON ForwardingRuleAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetPoolAggregatedListWarningCode
+    = TPALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TPALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TPALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TPALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TPALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TPALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TPALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TPALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TPALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TPALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TPALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TPALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TPALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TPALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TPALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TPALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TPALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TPALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TPALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TPALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TPALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TPALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TPALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetPoolAggregatedListWarningCode
+
+instance FromHttpApiData TargetPoolAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TPALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TPALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TPALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TPALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TPALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TPALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TPALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TPALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TPALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TPALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TPALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TPALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TPALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TPALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TPALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TPALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TPALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TPALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TPALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TPALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TPALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TPALWCUndeclaredProperties
+        "UNREACHABLE" -> Right TPALWCUnreachable
+        x -> Left ("Unable to parse TargetPoolAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetPoolAggregatedListWarningCode where
+    toQueryParam = \case
+        TPALWCCleanupFailed -> "CLEANUP_FAILED"
+        TPALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TPALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TPALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TPALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TPALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TPALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TPALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TPALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TPALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TPALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TPALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TPALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TPALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TPALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TPALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TPALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TPALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TPALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TPALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TPALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TPALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TPALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetPoolAggregatedListWarningCode where
+    parseJSON = parseJSONText "TargetPoolAggregatedListWarningCode"
+
+instance ToJSON TargetPoolAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetPoolsScopedListWarningCode
+    = TPSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TPSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TPSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TPSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TPSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TPSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TPSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TPSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TPSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TPSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TPSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TPSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TPSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TPSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TPSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TPSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TPSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TPSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TPSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TPSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TPSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TPSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TPSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetPoolsScopedListWarningCode
+
+instance FromHttpApiData TargetPoolsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TPSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TPSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TPSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TPSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TPSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TPSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TPSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TPSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TPSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TPSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TPSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TPSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TPSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TPSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TPSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TPSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TPSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TPSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TPSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TPSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TPSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TPSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TPSLWCUnreachable
+        x -> Left ("Unable to parse TargetPoolsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetPoolsScopedListWarningCode where
+    toQueryParam = \case
+        TPSLWCCleanupFailed -> "CLEANUP_FAILED"
+        TPSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TPSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TPSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TPSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TPSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TPSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TPSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TPSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TPSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TPSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TPSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TPSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TPSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TPSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TPSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TPSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TPSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TPSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TPSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TPSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TPSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TPSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetPoolsScopedListWarningCode where
+    parseJSON = parseJSONText "TargetPoolsScopedListWarningCode"
+
+instance ToJSON TargetPoolsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetInstanceListWarningCode
+    = TILWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TILWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TILWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TILWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TILWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TILWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TILWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TILWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TILWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TILWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TILWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TILWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TILWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TILWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TILWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TILWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TILWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TILWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TILWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TILWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TILWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TILWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TILWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetInstanceListWarningCode
+
+instance FromHttpApiData TargetInstanceListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TILWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TILWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TILWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TILWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TILWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TILWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TILWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TILWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TILWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TILWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TILWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TILWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TILWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TILWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TILWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TILWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TILWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TILWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TILWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TILWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TILWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TILWCUndeclaredProperties
+        "UNREACHABLE" -> Right TILWCUnreachable
+        x -> Left ("Unable to parse TargetInstanceListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetInstanceListWarningCode where
+    toQueryParam = \case
+        TILWCCleanupFailed -> "CLEANUP_FAILED"
+        TILWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TILWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TILWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TILWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TILWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TILWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TILWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TILWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TILWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TILWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TILWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TILWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TILWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TILWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TILWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TILWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TILWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TILWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TILWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TILWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TILWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TILWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetInstanceListWarningCode where
+    parseJSON = parseJSONText "TargetInstanceListWarningCode"
+
+instance ToJSON TargetInstanceListWarningCode where
+    toJSON = toJSONText
+
+-- | Identifies the network presence of this location.
+data InterconnectLocationRegionInfoLocationPresence
+    = Global
+      -- ^ @GLOBAL@
+    | LocalRegion
+      -- ^ @LOCAL_REGION@
+    | LpGlobal
+      -- ^ @LP_GLOBAL@
+    | LpLocalRegion
+      -- ^ @LP_LOCAL_REGION@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectLocationRegionInfoLocationPresence
+
+instance FromHttpApiData InterconnectLocationRegionInfoLocationPresence where
+    parseQueryParam = \case
+        "GLOBAL" -> Right Global
+        "LOCAL_REGION" -> Right LocalRegion
+        "LP_GLOBAL" -> Right LpGlobal
+        "LP_LOCAL_REGION" -> Right LpLocalRegion
+        x -> Left ("Unable to parse InterconnectLocationRegionInfoLocationPresence from: " <> x)
+
+instance ToHttpApiData InterconnectLocationRegionInfoLocationPresence where
+    toQueryParam = \case
+        Global -> "GLOBAL"
+        LocalRegion -> "LOCAL_REGION"
+        LpGlobal -> "LP_GLOBAL"
+        LpLocalRegion -> "LP_LOCAL_REGION"
+
+instance FromJSON InterconnectLocationRegionInfoLocationPresence where
+    parseJSON = parseJSONText "InterconnectLocationRegionInfoLocationPresence"
+
+instance ToJSON InterconnectLocationRegionInfoLocationPresence where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data SSLHealthCheckProxyHeader
+    = SHCPHNone
+      -- ^ @NONE@
+    | SHCPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLHealthCheckProxyHeader
+
+instance FromHttpApiData SSLHealthCheckProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right SHCPHNone
+        "PROXY_V1" -> Right SHCPHProxyV1
+        x -> Left ("Unable to parse SSLHealthCheckProxyHeader from: " <> x)
+
+instance ToHttpApiData SSLHealthCheckProxyHeader where
+    toQueryParam = \case
+        SHCPHNone -> "NONE"
+        SHCPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON SSLHealthCheckProxyHeader where
+    parseJSON = parseJSONText "SSLHealthCheckProxyHeader"
+
+instance ToJSON SSLHealthCheckProxyHeader where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the VPN gateway.
+data TargetVPNGatewayStatus
+    = Creating
+      -- ^ @CREATING@
+    | Deleting
+      -- ^ @DELETING@
+    | Failed
+      -- ^ @FAILED@
+    | Ready
+      -- ^ @READY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetVPNGatewayStatus
+
+instance FromHttpApiData TargetVPNGatewayStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right Creating
+        "DELETING" -> Right Deleting
+        "FAILED" -> Right Failed
+        "READY" -> Right Ready
+        x -> Left ("Unable to parse TargetVPNGatewayStatus from: " <> x)
+
+instance ToHttpApiData TargetVPNGatewayStatus where
+    toQueryParam = \case
+        Creating -> "CREATING"
+        Deleting -> "DELETING"
+        Failed -> "FAILED"
+        Ready -> "READY"
+
+instance FromJSON TargetVPNGatewayStatus where
+    parseJSON = parseJSONText "TargetVPNGatewayStatus"
+
+instance ToJSON TargetVPNGatewayStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupManagerAggregatedListWarningCode
+    = IGMALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGMALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGMALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGMALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGMALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGMALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGMALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGMALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGMALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGMALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGMALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGMALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGMALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGMALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGMALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGMALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGMALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGMALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGMALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGMALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGMALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGMALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGMALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupManagerAggregatedListWarningCode
+
+instance FromHttpApiData InstanceGroupManagerAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGMALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGMALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGMALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGMALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGMALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGMALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGMALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGMALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGMALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGMALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGMALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGMALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGMALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGMALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGMALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGMALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGMALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGMALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGMALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGMALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGMALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGMALWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGMALWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupManagerAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupManagerAggregatedListWarningCode where
+    toQueryParam = \case
+        IGMALWCCleanupFailed -> "CLEANUP_FAILED"
+        IGMALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGMALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGMALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGMALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGMALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGMALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGMALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGMALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGMALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGMALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGMALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGMALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGMALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGMALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGMALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGMALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGMALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGMALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGMALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGMALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGMALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGMALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupManagerAggregatedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupManagerAggregatedListWarningCode"
+
+instance ToJSON InstanceGroupManagerAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the snapshot. This can be CREATING,
+-- DELETING, FAILED, READY, or UPLOADING.
+data SnapshotStatus
+    = SSCreating
+      -- ^ @CREATING@
+    | SSDeleting
+      -- ^ @DELETING@
+    | SSFailed
+      -- ^ @FAILED@
+    | SSReady
+      -- ^ @READY@
+    | SSUploading
+      -- ^ @UPLOADING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SnapshotStatus
+
+instance FromHttpApiData SnapshotStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right SSCreating
+        "DELETING" -> Right SSDeleting
+        "FAILED" -> Right SSFailed
+        "READY" -> Right SSReady
+        "UPLOADING" -> Right SSUploading
+        x -> Left ("Unable to parse SnapshotStatus from: " <> x)
+
+instance ToHttpApiData SnapshotStatus where
+    toQueryParam = \case
+        SSCreating -> "CREATING"
+        SSDeleting -> "DELETING"
+        SSFailed -> "FAILED"
+        SSReady -> "READY"
+        SSUploading -> "UPLOADING"
+
+instance FromJSON SnapshotStatus where
+    parseJSON = parseJSONText "SnapshotStatus"
+
+instance ToJSON SnapshotStatus where
+    toJSON = toJSONText
+
+-- | Preconfigured versioned expression. If this field is specified, config
+-- must also be specified. Available preconfigured expressions along with
+-- their requirements are: SRC_IPS_V1 - must specify the corresponding
+-- src_ip_range field in config.
+data SecurityPolicyRuleMatcherVersionedExpr
+    = SrcIPsV1
+      -- ^ @SRC_IPS_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SecurityPolicyRuleMatcherVersionedExpr
+
+instance FromHttpApiData SecurityPolicyRuleMatcherVersionedExpr where
+    parseQueryParam = \case
+        "SRC_IPS_V1" -> Right SrcIPsV1
+        x -> Left ("Unable to parse SecurityPolicyRuleMatcherVersionedExpr from: " <> x)
+
+instance ToHttpApiData SecurityPolicyRuleMatcherVersionedExpr where
+    toQueryParam = \case
+        SrcIPsV1 -> "SRC_IPS_V1"
+
+instance FromJSON SecurityPolicyRuleMatcherVersionedExpr where
+    parseJSON = parseJSONText "SecurityPolicyRuleMatcherVersionedExpr"
+
+instance ToJSON SecurityPolicyRuleMatcherVersionedExpr where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AutoscalerListWarningCode
+    = ALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalerListWarningCode
+
+instance FromHttpApiData AutoscalerListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ALWCUndeclaredProperties
+        "UNREACHABLE" -> Right ALWCUnreachable
+        x -> Left ("Unable to parse AutoscalerListWarningCode from: " <> x)
+
+instance ToHttpApiData AutoscalerListWarningCode where
+    toQueryParam = \case
+        ALWCCleanupFailed -> "CLEANUP_FAILED"
+        ALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AutoscalerListWarningCode where
+    parseJSON = parseJSONText "AutoscalerListWarningCode"
+
+instance ToJSON AutoscalerListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DiskTypeListWarningCode
+    = DTLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DTLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DTLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DTLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DTLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DTLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DTLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DTLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DTLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DTLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DTLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DTLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DTLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DTLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DTLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DTLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DTLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DTLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DTLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DTLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DTLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DTLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DTLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskTypeListWarningCode
+
+instance FromHttpApiData DiskTypeListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DTLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DTLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DTLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DTLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DTLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DTLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DTLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DTLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DTLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DTLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DTLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DTLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DTLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DTLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DTLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DTLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DTLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DTLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DTLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DTLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DTLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DTLWCUndeclaredProperties
+        "UNREACHABLE" -> Right DTLWCUnreachable
+        x -> Left ("Unable to parse DiskTypeListWarningCode from: " <> x)
+
+instance ToHttpApiData DiskTypeListWarningCode where
+    toQueryParam = \case
+        DTLWCCleanupFailed -> "CLEANUP_FAILED"
+        DTLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DTLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DTLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DTLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DTLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DTLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DTLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DTLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DTLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DTLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DTLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DTLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DTLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DTLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DTLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DTLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DTLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DTLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DTLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DTLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DTLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DTLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskTypeListWarningCode where
+    parseJSON = parseJSONText "DiskTypeListWarningCode"
+
+instance ToJSON DiskTypeListWarningCode where
+    toJSON = toJSONText
+
+-- | The purpose of resource, only used with INTERNAL type.
+data AddressPurpose
+    = DNSResolver
+      -- ^ @DNS_RESOLVER@
+    | GceEndpoint
+      -- ^ @GCE_ENDPOINT@
+    | VPCPeering
+      -- ^ @VPC_PEERING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressPurpose
+
+instance FromHttpApiData AddressPurpose where
+    parseQueryParam = \case
+        "DNS_RESOLVER" -> Right DNSResolver
+        "GCE_ENDPOINT" -> Right GceEndpoint
+        "VPC_PEERING" -> Right VPCPeering
+        x -> Left ("Unable to parse AddressPurpose from: " <> x)
+
+instance ToHttpApiData AddressPurpose where
+    toQueryParam = \case
+        DNSResolver -> "DNS_RESOLVER"
+        GceEndpoint -> "GCE_ENDPOINT"
+        VPCPeering -> "VPC_PEERING"
+
+instance FromJSON AddressPurpose where
+    parseJSON = parseJSONText "AddressPurpose"
+
+instance ToJSON AddressPurpose where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTypeAggregatedListWarningCode
+    = NTALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NTALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NTALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NTALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NTALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NTALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NTALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NTALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NTALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NTALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NTALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NTALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NTALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NTALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NTALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NTALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NTALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NTALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NTALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NTALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NTALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NTALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NTALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTypeAggregatedListWarningCode
+
+instance FromHttpApiData NodeTypeAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NTALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NTALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NTALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NTALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NTALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NTALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NTALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NTALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NTALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NTALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NTALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NTALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NTALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NTALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NTALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NTALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NTALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NTALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NTALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NTALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NTALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NTALWCUndeclaredProperties
+        "UNREACHABLE" -> Right NTALWCUnreachable
+        x -> Left ("Unable to parse NodeTypeAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTypeAggregatedListWarningCode where
+    toQueryParam = \case
+        NTALWCCleanupFailed -> "CLEANUP_FAILED"
+        NTALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NTALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NTALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NTALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NTALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NTALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NTALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NTALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NTALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NTALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NTALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NTALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NTALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NTALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NTALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NTALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NTALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NTALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NTALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NTALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NTALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NTALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTypeAggregatedListWarningCode where
+    parseJSON = parseJSONText "NodeTypeAggregatedListWarningCode"
+
+instance ToJSON NodeTypeAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetInstancesScopedListWarningCode
+    = TISLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TISLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TISLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TISLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TISLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TISLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TISLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TISLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TISLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TISLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TISLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TISLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TISLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TISLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TISLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TISLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TISLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TISLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TISLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TISLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TISLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TISLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TISLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetInstancesScopedListWarningCode
+
+instance FromHttpApiData TargetInstancesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TISLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TISLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TISLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TISLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TISLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TISLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TISLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TISLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TISLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TISLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TISLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TISLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TISLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TISLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TISLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TISLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TISLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TISLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TISLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TISLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TISLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TISLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TISLWCUnreachable
+        x -> Left ("Unable to parse TargetInstancesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetInstancesScopedListWarningCode where
+    toQueryParam = \case
+        TISLWCCleanupFailed -> "CLEANUP_FAILED"
+        TISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TISLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TISLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TISLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TISLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TISLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TISLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TISLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TISLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetInstancesScopedListWarningCode where
+    parseJSON = parseJSONText "TargetInstancesScopedListWarningCode"
+
+instance ToJSON TargetInstancesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data VPNTunnelAggregatedListWarningCode
+    = VTALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | VTALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | VTALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | VTALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | VTALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | VTALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | VTALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | VTALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | VTALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | VTALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | VTALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | VTALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | VTALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | VTALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | VTALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | VTALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | VTALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | VTALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | VTALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | VTALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | VTALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | VTALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | VTALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VPNTunnelAggregatedListWarningCode
+
+instance FromHttpApiData VPNTunnelAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right VTALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right VTALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right VTALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VTALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right VTALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right VTALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right VTALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right VTALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right VTALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VTALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VTALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right VTALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right VTALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right VTALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right VTALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right VTALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right VTALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right VTALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right VTALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right VTALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right VTALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right VTALWCUndeclaredProperties
+        "UNREACHABLE" -> Right VTALWCUnreachable
+        x -> Left ("Unable to parse VPNTunnelAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData VPNTunnelAggregatedListWarningCode where
+    toQueryParam = \case
+        VTALWCCleanupFailed -> "CLEANUP_FAILED"
+        VTALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        VTALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        VTALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        VTALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        VTALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        VTALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        VTALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        VTALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        VTALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        VTALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        VTALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        VTALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        VTALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        VTALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        VTALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        VTALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        VTALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        VTALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        VTALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        VTALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        VTALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        VTALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON VPNTunnelAggregatedListWarningCode where
+    parseJSON = parseJSONText "VPNTunnelAggregatedListWarningCode"
+
+instance ToJSON VPNTunnelAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetHTTPProxyListWarningCode
+    = THTTPPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | THTTPPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | THTTPPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | THTTPPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | THTTPPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | THTTPPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | THTTPPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | THTTPPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | THTTPPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | THTTPPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | THTTPPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | THTTPPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | THTTPPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | THTTPPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | THTTPPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | THTTPPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | THTTPPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | THTTPPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | THTTPPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | THTTPPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | THTTPPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | THTTPPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | THTTPPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetHTTPProxyListWarningCode
+
+instance FromHttpApiData TargetHTTPProxyListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right THTTPPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right THTTPPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right THTTPPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right THTTPPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right THTTPPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right THTTPPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right THTTPPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right THTTPPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right THTTPPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right THTTPPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right THTTPPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right THTTPPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right THTTPPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right THTTPPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right THTTPPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right THTTPPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right THTTPPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right THTTPPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right THTTPPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right THTTPPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right THTTPPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right THTTPPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right THTTPPLWCUnreachable
+        x -> Left ("Unable to parse TargetHTTPProxyListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetHTTPProxyListWarningCode where
+    toQueryParam = \case
+        THTTPPLWCCleanupFailed -> "CLEANUP_FAILED"
+        THTTPPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        THTTPPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        THTTPPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        THTTPPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        THTTPPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        THTTPPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        THTTPPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        THTTPPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        THTTPPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        THTTPPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        THTTPPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        THTTPPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        THTTPPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        THTTPPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        THTTPPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        THTTPPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        THTTPPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        THTTPPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        THTTPPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        THTTPPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        THTTPPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        THTTPPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetHTTPProxyListWarningCode where
+    parseJSON = parseJSONText "TargetHTTPProxyListWarningCode"
+
+instance ToJSON TargetHTTPProxyListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data MachineTypeListWarningCode
+    = MTLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | MTLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | MTLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | MTLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | MTLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | MTLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | MTLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | MTLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | MTLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | MTLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | MTLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | MTLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | MTLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | MTLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | MTLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | MTLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | MTLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | MTLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | MTLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | MTLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | MTLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | MTLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | MTLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable MachineTypeListWarningCode
+
+instance FromHttpApiData MachineTypeListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right MTLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right MTLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right MTLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right MTLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right MTLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right MTLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right MTLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right MTLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right MTLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right MTLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right MTLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right MTLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right MTLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right MTLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right MTLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right MTLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right MTLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right MTLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right MTLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right MTLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right MTLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right MTLWCUndeclaredProperties
+        "UNREACHABLE" -> Right MTLWCUnreachable
+        x -> Left ("Unable to parse MachineTypeListWarningCode from: " <> x)
+
+instance ToHttpApiData MachineTypeListWarningCode where
+    toQueryParam = \case
+        MTLWCCleanupFailed -> "CLEANUP_FAILED"
+        MTLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        MTLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        MTLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        MTLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        MTLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        MTLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        MTLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        MTLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        MTLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        MTLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        MTLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        MTLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        MTLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        MTLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        MTLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        MTLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        MTLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        MTLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        MTLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        MTLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        MTLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        MTLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON MachineTypeListWarningCode where
+    parseJSON = parseJSONText "MachineTypeListWarningCode"
+
+instance ToJSON MachineTypeListWarningCode where
+    toJSON = toJSONText
+
+-- | The ID of a supported feature. Read Enabling guest operating system
+-- features to see a list of available options.
+data GuestOSFeatureType
+    = FeatureTypeUnspecified
+      -- ^ @FEATURE_TYPE_UNSPECIFIED@
+    | MultiIPSubnet
+      -- ^ @MULTI_IP_SUBNET@
+    | SecureBoot
+      -- ^ @SECURE_BOOT@
+    | UefiCompatible
+      -- ^ @UEFI_COMPATIBLE@
+    | VirtioScsiMultiQueue
+      -- ^ @VIRTIO_SCSI_MULTIQUEUE@
+    | Windows
+      -- ^ @WINDOWS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GuestOSFeatureType
+
+instance FromHttpApiData GuestOSFeatureType where
+    parseQueryParam = \case
+        "FEATURE_TYPE_UNSPECIFIED" -> Right FeatureTypeUnspecified
+        "MULTI_IP_SUBNET" -> Right MultiIPSubnet
+        "SECURE_BOOT" -> Right SecureBoot
+        "UEFI_COMPATIBLE" -> Right UefiCompatible
+        "VIRTIO_SCSI_MULTIQUEUE" -> Right VirtioScsiMultiQueue
+        "WINDOWS" -> Right Windows
+        x -> Left ("Unable to parse GuestOSFeatureType from: " <> x)
+
+instance ToHttpApiData GuestOSFeatureType where
+    toQueryParam = \case
+        FeatureTypeUnspecified -> "FEATURE_TYPE_UNSPECIFIED"
+        MultiIPSubnet -> "MULTI_IP_SUBNET"
+        SecureBoot -> "SECURE_BOOT"
+        UefiCompatible -> "UEFI_COMPATIBLE"
+        VirtioScsiMultiQueue -> "VIRTIO_SCSI_MULTIQUEUE"
+        Windows -> "WINDOWS"
+
+instance FromJSON GuestOSFeatureType where
+    parseJSON = parseJSONText "GuestOSFeatureType"
+
+instance ToJSON GuestOSFeatureType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RouteWarningsItemCode
+    = RWICCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RWICDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RWICDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RWICDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RWICExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RWICExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RWICFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RWICInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RWICMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RWICNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RWICNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RWICNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RWICNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RWICNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RWICNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RWICNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RWICRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RWICResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RWICResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RWICSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RWICSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RWICUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RWICUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouteWarningsItemCode
+
+instance FromHttpApiData RouteWarningsItemCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RWICCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RWICDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RWICDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RWICDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RWICExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RWICExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RWICFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RWICInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RWICMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RWICNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RWICNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RWICNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RWICNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RWICNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RWICNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RWICNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RWICRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RWICResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RWICResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RWICSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RWICSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RWICUndeclaredProperties
+        "UNREACHABLE" -> Right RWICUnreachable
+        x -> Left ("Unable to parse RouteWarningsItemCode from: " <> x)
+
+instance ToHttpApiData RouteWarningsItemCode where
+    toQueryParam = \case
+        RWICCleanupFailed -> "CLEANUP_FAILED"
+        RWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RWICDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RWICExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RWICExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RWICFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RWICMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RWICNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RWICNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RWICNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RWICNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RWICNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RWICRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RWICResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RWICResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RWICSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RWICSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RWICUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RWICUnreachable -> "UNREACHABLE"
+
+instance FromJSON RouteWarningsItemCode where
+    parseJSON = parseJSONText "RouteWarningsItemCode"
+
+instance ToJSON RouteWarningsItemCode where
+    toJSON = toJSONText
+
+-- | User-specified flag to indicate which mode to use for advertisement.
+data RouterBGPPeerAdvertiseMode
+    = RBPAMCustom
+      -- ^ @CUSTOM@
+    | RBPAMDefault
+      -- ^ @DEFAULT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterBGPPeerAdvertiseMode
+
+instance FromHttpApiData RouterBGPPeerAdvertiseMode where
+    parseQueryParam = \case
+        "CUSTOM" -> Right RBPAMCustom
+        "DEFAULT" -> Right RBPAMDefault
+        x -> Left ("Unable to parse RouterBGPPeerAdvertiseMode from: " <> x)
+
+instance ToHttpApiData RouterBGPPeerAdvertiseMode where
+    toQueryParam = \case
+        RBPAMCustom -> "CUSTOM"
+        RBPAMDefault -> "DEFAULT"
+
+instance FromJSON RouterBGPPeerAdvertiseMode where
+    parseJSON = parseJSONText "RouterBGPPeerAdvertiseMode"
+
+instance ToJSON RouterBGPPeerAdvertiseMode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionInstanceGroupManagerListWarningCode
+    = RIGMLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RIGMLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RIGMLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RIGMLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RIGMLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RIGMLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RIGMLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RIGMLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RIGMLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RIGMLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RIGMLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RIGMLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RIGMLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RIGMLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RIGMLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RIGMLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RIGMLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RIGMLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RIGMLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RIGMLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RIGMLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RIGMLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RIGMLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionInstanceGroupManagerListWarningCode
+
+instance FromHttpApiData RegionInstanceGroupManagerListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RIGMLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RIGMLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RIGMLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RIGMLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RIGMLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RIGMLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RIGMLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RIGMLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RIGMLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RIGMLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RIGMLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RIGMLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RIGMLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RIGMLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RIGMLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RIGMLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RIGMLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RIGMLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RIGMLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RIGMLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RIGMLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RIGMLWCUndeclaredProperties
+        "UNREACHABLE" -> Right RIGMLWCUnreachable
+        x -> Left ("Unable to parse RegionInstanceGroupManagerListWarningCode from: " <> x)
+
+instance ToHttpApiData RegionInstanceGroupManagerListWarningCode where
+    toQueryParam = \case
+        RIGMLWCCleanupFailed -> "CLEANUP_FAILED"
+        RIGMLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RIGMLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RIGMLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RIGMLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RIGMLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RIGMLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RIGMLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RIGMLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RIGMLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RIGMLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RIGMLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RIGMLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RIGMLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RIGMLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RIGMLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RIGMLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RIGMLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RIGMLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RIGMLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RIGMLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RIGMLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RIGMLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionInstanceGroupManagerListWarningCode where
+    parseJSON = parseJSONText "RegionInstanceGroupManagerListWarningCode"
+
+instance ToJSON RegionInstanceGroupManagerListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] An indicator whether storageBytes is in a stable state or
+-- it is being adjusted as a result of shared storage reallocation. This
+-- status can either be UPDATING, meaning the size of the snapshot is being
+-- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.
+data SnapshotStorageBytesStatus
+    = Updating
+      -- ^ @UPDATING@
+    | UpToDate
+      -- ^ @UP_TO_DATE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SnapshotStorageBytesStatus
+
+instance FromHttpApiData SnapshotStorageBytesStatus where
+    parseQueryParam = \case
+        "UPDATING" -> Right Updating
+        "UP_TO_DATE" -> Right UpToDate
+        x -> Left ("Unable to parse SnapshotStorageBytesStatus from: " <> x)
+
+instance ToHttpApiData SnapshotStorageBytesStatus where
+    toQueryParam = \case
+        Updating -> "UPDATING"
+        UpToDate -> "UP_TO_DATE"
+
+instance FromJSON SnapshotStorageBytesStatus where
+    parseJSON = parseJSONText "SnapshotStorageBytesStatus"
+
+instance ToJSON SnapshotStorageBytesStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTemplateAggregatedListWarningCode
+    = NCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTemplateAggregatedListWarningCode
+
+instance FromHttpApiData NodeTemplateAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NUndeclaredProperties
+        "UNREACHABLE" -> Right NUnreachable
+        x -> Left ("Unable to parse NodeTemplateAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTemplateAggregatedListWarningCode where
+    toQueryParam = \case
+        NCleanupFailed -> "CLEANUP_FAILED"
+        NDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTemplateAggregatedListWarningCode where
+    parseJSON = parseJSONText "NodeTemplateAggregatedListWarningCode"
+
+instance ToJSON NodeTemplateAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Required
+data RuleAction
+    = Allow
+      -- ^ @ALLOW@
+    | AllowWithLog
+      -- ^ @ALLOW_WITH_LOG@
+    | Deny
+      -- ^ @DENY@
+    | DenyWithLog
+      -- ^ @DENY_WITH_LOG@
+    | Log
+      -- ^ @LOG@
+    | NoAction
+      -- ^ @NO_ACTION@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RuleAction
+
+instance FromHttpApiData RuleAction where
+    parseQueryParam = \case
+        "ALLOW" -> Right Allow
+        "ALLOW_WITH_LOG" -> Right AllowWithLog
+        "DENY" -> Right Deny
+        "DENY_WITH_LOG" -> Right DenyWithLog
+        "LOG" -> Right Log
+        "NO_ACTION" -> Right NoAction
+        x -> Left ("Unable to parse RuleAction from: " <> x)
+
+instance ToHttpApiData RuleAction where
+    toQueryParam = \case
+        Allow -> "ALLOW"
+        AllowWithLog -> "ALLOW_WITH_LOG"
+        Deny -> "DENY"
+        DenyWithLog -> "DENY_WITH_LOG"
+        Log -> "LOG"
+        NoAction -> "NO_ACTION"
+
+instance FromJSON RuleAction where
+    parseJSON = parseJSONText "RuleAction"
+
+instance ToJSON RuleAction where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AddressesScopedListWarningCode
+    = ASLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ASLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ASLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ASLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ASLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ASLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ASLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ASLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ASLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ASLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ASLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ASLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ASLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ASLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ASLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ASLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ASLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ASLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ASLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ASLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ASLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ASLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ASLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressesScopedListWarningCode
+
+instance FromHttpApiData AddressesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ASLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ASLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ASLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ASLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ASLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ASLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ASLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ASLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ASLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ASLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ASLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ASLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ASLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ASLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ASLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ASLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ASLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ASLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ASLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ASLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ASLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ASLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ASLWCUnreachable
+        x -> Left ("Unable to parse AddressesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData AddressesScopedListWarningCode where
+    toQueryParam = \case
+        ASLWCCleanupFailed -> "CLEANUP_FAILED"
+        ASLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ASLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ASLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ASLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ASLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ASLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ASLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ASLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ASLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ASLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ASLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ASLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ASLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ASLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ASLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ASLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ASLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ASLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ASLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ASLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ASLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ASLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AddressesScopedListWarningCode where
+    parseJSON = parseJSONText "AddressesScopedListWarningCode"
+
+instance ToJSON AddressesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the image. An image can be used to create
+-- other resources, such as instances, only after the image has been
+-- successfully created and the status is set to READY. Possible values are
+-- FAILED, PENDING, or READY.
+data ImageStatus
+    = ISFailed
+      -- ^ @FAILED@
+    | ISPending
+      -- ^ @PENDING@
+    | ISReady
+      -- ^ @READY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ImageStatus
+
+instance FromHttpApiData ImageStatus where
+    parseQueryParam = \case
+        "FAILED" -> Right ISFailed
+        "PENDING" -> Right ISPending
+        "READY" -> Right ISReady
+        x -> Left ("Unable to parse ImageStatus from: " <> x)
+
+instance ToHttpApiData ImageStatus where
+    toQueryParam = \case
+        ISFailed -> "FAILED"
+        ISPending -> "PENDING"
+        ISReady -> "READY"
+
+instance FromJSON ImageStatus where
+    parseJSON = parseJSONText "ImageStatus"
+
+instance ToJSON ImageStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupListWarningCode
+    = IGLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupListWarningCode
+
+instance FromHttpApiData InstanceGroupListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGLWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGLWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupListWarningCode where
+    toQueryParam = \case
+        IGLWCCleanupFailed -> "CLEANUP_FAILED"
+        IGLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupListWarningCode"
+
+instance ToJSON InstanceGroupListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data FirewallListWarningCode
+    = FLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | FLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | FLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | FLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | FLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | FLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | FLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | FLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | FLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | FLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | FLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | FLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | FLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | FLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | FLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | FLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | FLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | FLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | FLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | FLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | FLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | FLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | FLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable FirewallListWarningCode
+
+instance FromHttpApiData FirewallListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right FLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right FLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right FLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right FLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right FLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right FLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right FLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right FLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right FLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right FLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right FLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right FLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right FLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right FLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right FLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right FLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right FLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right FLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right FLWCUndeclaredProperties
+        "UNREACHABLE" -> Right FLWCUnreachable
+        x -> Left ("Unable to parse FirewallListWarningCode from: " <> x)
+
+instance ToHttpApiData FirewallListWarningCode where
+    toQueryParam = \case
+        FLWCCleanupFailed -> "CLEANUP_FAILED"
+        FLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        FLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        FLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        FLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        FLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        FLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        FLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        FLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        FLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        FLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        FLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        FLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        FLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        FLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        FLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        FLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        FLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        FLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        FLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        FLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        FLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        FLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON FirewallListWarningCode where
+    parseJSON = parseJSONText "FirewallListWarningCode"
+
+instance ToJSON FirewallListWarningCode where
+    toJSON = toJSONText
+
+data InterconnectAttachmentType
+    = Dedicated
+      -- ^ @DEDICATED@
+    | Partner
+      -- ^ @PARTNER@
+    | PartnerProvider
+      -- ^ @PARTNER_PROVIDER@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentType
+
+instance FromHttpApiData InterconnectAttachmentType where
+    parseQueryParam = \case
+        "DEDICATED" -> Right Dedicated
+        "PARTNER" -> Right Partner
+        "PARTNER_PROVIDER" -> Right PartnerProvider
+        x -> Left ("Unable to parse InterconnectAttachmentType from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentType where
+    toQueryParam = \case
+        Dedicated -> "DEDICATED"
+        Partner -> "PARTNER"
+        PartnerProvider -> "PARTNER_PROVIDER"
+
+instance FromJSON InterconnectAttachmentType where
+    parseJSON = parseJSONText "InterconnectAttachmentType"
+
+instance ToJSON InterconnectAttachmentType where
+    toJSON = toJSONText
+
+-- | The type of error returned.
+data AutoscalerStatusDetailsType
+    = AllInstancesUnhealthy
+      -- ^ @ALL_INSTANCES_UNHEALTHY@
+    | BackendServiceDoesNotExist
+      -- ^ @BACKEND_SERVICE_DOES_NOT_EXIST@
+    | CAppedAtMaxNumReplicas
+      -- ^ @CAPPED_AT_MAX_NUM_REPLICAS@
+    | CustomMetricDataPointsTooSparse
+      -- ^ @CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE@
+    | CustomMetricInvalid
+      -- ^ @CUSTOM_METRIC_INVALID@
+    | MinEqualsMax
+      -- ^ @MIN_EQUALS_MAX@
+    | MissingCustomMetricDataPoints
+      -- ^ @MISSING_CUSTOM_METRIC_DATA_POINTS@
+    | MissingLoadBalancingDataPoints
+      -- ^ @MISSING_LOAD_BALANCING_DATA_POINTS@
+    | MoreThanOneBackendService
+      -- ^ @MORE_THAN_ONE_BACKEND_SERVICE@
+    | NotEnoughQuotaAvailable
+      -- ^ @NOT_ENOUGH_QUOTA_AVAILABLE@
+    | RegionResourceStockout
+      -- ^ @REGION_RESOURCE_STOCKOUT@
+    | ScalingTargetDoesNotExist
+      -- ^ @SCALING_TARGET_DOES_NOT_EXIST@
+    | Unknown
+      -- ^ @UNKNOWN@
+    | UnsupportedMaxRateLoadBalancingConfiguration
+      -- ^ @UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION@
+    | ZoneResourceStockout
+      -- ^ @ZONE_RESOURCE_STOCKOUT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalerStatusDetailsType
+
+instance FromHttpApiData AutoscalerStatusDetailsType where
+    parseQueryParam = \case
+        "ALL_INSTANCES_UNHEALTHY" -> Right AllInstancesUnhealthy
+        "BACKEND_SERVICE_DOES_NOT_EXIST" -> Right BackendServiceDoesNotExist
+        "CAPPED_AT_MAX_NUM_REPLICAS" -> Right CAppedAtMaxNumReplicas
+        "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE" -> Right CustomMetricDataPointsTooSparse
+        "CUSTOM_METRIC_INVALID" -> Right CustomMetricInvalid
+        "MIN_EQUALS_MAX" -> Right MinEqualsMax
+        "MISSING_CUSTOM_METRIC_DATA_POINTS" -> Right MissingCustomMetricDataPoints
+        "MISSING_LOAD_BALANCING_DATA_POINTS" -> Right MissingLoadBalancingDataPoints
+        "MORE_THAN_ONE_BACKEND_SERVICE" -> Right MoreThanOneBackendService
+        "NOT_ENOUGH_QUOTA_AVAILABLE" -> Right NotEnoughQuotaAvailable
+        "REGION_RESOURCE_STOCKOUT" -> Right RegionResourceStockout
+        "SCALING_TARGET_DOES_NOT_EXIST" -> Right ScalingTargetDoesNotExist
+        "UNKNOWN" -> Right Unknown
+        "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION" -> Right UnsupportedMaxRateLoadBalancingConfiguration
+        "ZONE_RESOURCE_STOCKOUT" -> Right ZoneResourceStockout
+        x -> Left ("Unable to parse AutoscalerStatusDetailsType from: " <> x)
+
+instance ToHttpApiData AutoscalerStatusDetailsType where
+    toQueryParam = \case
+        AllInstancesUnhealthy -> "ALL_INSTANCES_UNHEALTHY"
+        BackendServiceDoesNotExist -> "BACKEND_SERVICE_DOES_NOT_EXIST"
+        CAppedAtMaxNumReplicas -> "CAPPED_AT_MAX_NUM_REPLICAS"
+        CustomMetricDataPointsTooSparse -> "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE"
+        CustomMetricInvalid -> "CUSTOM_METRIC_INVALID"
+        MinEqualsMax -> "MIN_EQUALS_MAX"
+        MissingCustomMetricDataPoints -> "MISSING_CUSTOM_METRIC_DATA_POINTS"
+        MissingLoadBalancingDataPoints -> "MISSING_LOAD_BALANCING_DATA_POINTS"
+        MoreThanOneBackendService -> "MORE_THAN_ONE_BACKEND_SERVICE"
+        NotEnoughQuotaAvailable -> "NOT_ENOUGH_QUOTA_AVAILABLE"
+        RegionResourceStockout -> "REGION_RESOURCE_STOCKOUT"
+        ScalingTargetDoesNotExist -> "SCALING_TARGET_DOES_NOT_EXIST"
+        Unknown -> "UNKNOWN"
+        UnsupportedMaxRateLoadBalancingConfiguration -> "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION"
+        ZoneResourceStockout -> "ZONE_RESOURCE_STOCKOUT"
+
+instance FromJSON AutoscalerStatusDetailsType where
+    parseJSON = parseJSONText "AutoscalerStatusDetailsType"
+
+instance ToJSON AutoscalerStatusDetailsType where
+    toJSON = toJSONText
+
+-- | Direction of traffic to which this firewall applies; default is INGRESS.
+-- Note: For INGRESS traffic, it is NOT supported to specify
+-- destinationRanges; For EGRESS traffic, it is NOT supported to specify
+-- sourceRanges OR sourceTags.
+data FirewallDirection
+    = Egress
+      -- ^ @EGRESS@
+    | Ingress
+      -- ^ @INGRESS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable FirewallDirection
+
+instance FromHttpApiData FirewallDirection where
+    parseQueryParam = \case
+        "EGRESS" -> Right Egress
+        "INGRESS" -> Right Ingress
+        x -> Left ("Unable to parse FirewallDirection from: " <> x)
+
+instance ToHttpApiData FirewallDirection where
+    toQueryParam = \case
+        Egress -> "EGRESS"
+        Ingress -> "INGRESS"
+
+instance FromJSON FirewallDirection where
+    parseJSON = parseJSONText "FirewallDirection"
+
+instance ToJSON FirewallDirection where
+    toJSON = toJSONText
+
+data NodeGroupNodeStatus
+    = NGNSCreating
+      -- ^ @CREATING@
+    | NGNSDeleting
+      -- ^ @DELETING@
+    | NGNSInvalid
+      -- ^ @INVALID@
+    | NGNSReady
+      -- ^ @READY@
+    | NGNSRepairing
+      -- ^ @REPAIRING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupNodeStatus
+
+instance FromHttpApiData NodeGroupNodeStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right NGNSCreating
+        "DELETING" -> Right NGNSDeleting
+        "INVALID" -> Right NGNSInvalid
+        "READY" -> Right NGNSReady
+        "REPAIRING" -> Right NGNSRepairing
+        x -> Left ("Unable to parse NodeGroupNodeStatus from: " <> x)
+
+instance ToHttpApiData NodeGroupNodeStatus where
+    toQueryParam = \case
+        NGNSCreating -> "CREATING"
+        NGNSDeleting -> "DELETING"
+        NGNSInvalid -> "INVALID"
+        NGNSReady -> "READY"
+        NGNSRepairing -> "REPAIRING"
+
+instance FromJSON NodeGroupNodeStatus where
+    parseJSON = parseJSONText "NodeGroupNodeStatus"
+
+instance ToJSON NodeGroupNodeStatus where
+    toJSON = toJSONText
+
+-- | QUIC policy for the TargetHttpsProxy resource.
+data TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride
+    = THPSQORQODisable
+      -- ^ @DISABLE@
+    | THPSQORQOEnable
+      -- ^ @ENABLE@
+    | THPSQORQONone
+      -- ^ @NONE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride
+
+instance FromHttpApiData TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride where
+    parseQueryParam = \case
+        "DISABLE" -> Right THPSQORQODisable
+        "ENABLE" -> Right THPSQORQOEnable
+        "NONE" -> Right THPSQORQONone
+        x -> Left ("Unable to parse TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride from: " <> x)
+
+instance ToHttpApiData TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride where
+    toQueryParam = \case
+        THPSQORQODisable -> "DISABLE"
+        THPSQORQOEnable -> "ENABLE"
+        THPSQORQONone -> "NONE"
+
+instance FromJSON TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride where
+    parseJSON = parseJSONText "TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride"
+
+instance ToJSON TargetHTTPSProxiesSetQuicOverrideRequestQuicOverride where
+    toJSON = toJSONText
+
+-- | Health state of the instance.
+data HealthStatusHealthState
+    = Healthy
+      -- ^ @HEALTHY@
+    | Unhealthy
+      -- ^ @UNHEALTHY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HealthStatusHealthState
+
+instance FromHttpApiData HealthStatusHealthState where
+    parseQueryParam = \case
+        "HEALTHY" -> Right Healthy
+        "UNHEALTHY" -> Right Unhealthy
+        x -> Left ("Unable to parse HealthStatusHealthState from: " <> x)
+
+instance ToHttpApiData HealthStatusHealthState where
+    toQueryParam = \case
+        Healthy -> "HEALTHY"
+        Unhealthy -> "UNHEALTHY"
+
+instance FromJSON HealthStatusHealthState where
+    parseJSON = parseJSONText "HealthStatusHealthState"
+
+instance ToJSON HealthStatusHealthState where
+    toJSON = toJSONText
+
+-- | The deprecation state of this resource. This can be DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which create a new resource using a
+-- DEPRECATED resource will return successfully, but with a warning
+-- indicating the deprecated resource and recommending its replacement.
+-- Operations which use OBSOLETE or DELETED resources will be rejected and
+-- result in an error.
+data DeprecationStatusState
+    = Deleted
+      -- ^ @DELETED@
+    | Deprecated
+      -- ^ @DEPRECATED@
+    | Obsolete
+      -- ^ @OBSOLETE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DeprecationStatusState
+
+instance FromHttpApiData DeprecationStatusState where
+    parseQueryParam = \case
+        "DELETED" -> Right Deleted
+        "DEPRECATED" -> Right Deprecated
+        "OBSOLETE" -> Right Obsolete
+        x -> Left ("Unable to parse DeprecationStatusState from: " <> x)
+
+instance ToHttpApiData DeprecationStatusState where
+    toQueryParam = \case
+        Deleted -> "DELETED"
+        Deprecated -> "DEPRECATED"
+        Obsolete -> "OBSOLETE"
+
+instance FromJSON DeprecationStatusState where
+    parseJSON = parseJSONText "DeprecationStatusState"
+
+instance ToJSON DeprecationStatusState where
+    toJSON = toJSONText
+
+data NodeGroupStatus
+    = NGSCreating
+      -- ^ @CREATING@
+    | NGSDeleting
+      -- ^ @DELETING@
+    | NGSInvalid
+      -- ^ @INVALID@
+    | NGSReady
+      -- ^ @READY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupStatus
+
+instance FromHttpApiData NodeGroupStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right NGSCreating
+        "DELETING" -> Right NGSDeleting
+        "INVALID" -> Right NGSInvalid
+        "READY" -> Right NGSReady
+        x -> Left ("Unable to parse NodeGroupStatus from: " <> x)
+
+instance ToHttpApiData NodeGroupStatus where
+    toQueryParam = \case
+        NGSCreating -> "CREATING"
+        NGSDeleting -> "DELETING"
+        NGSInvalid -> "INVALID"
+        NGSReady -> "READY"
+
+instance FromJSON NodeGroupStatus where
+    parseJSON = parseJSONText "NodeGroupStatus"
+
+instance ToJSON NodeGroupStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RouterAggregatedListWarningCode
+    = RALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterAggregatedListWarningCode
+
+instance FromHttpApiData RouterAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RALWCUndeclaredProperties
+        "UNREACHABLE" -> Right RALWCUnreachable
+        x -> Left ("Unable to parse RouterAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData RouterAggregatedListWarningCode where
+    toQueryParam = \case
+        RALWCCleanupFailed -> "CLEANUP_FAILED"
+        RALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RouterAggregatedListWarningCode where
+    parseJSON = parseJSONText "RouterAggregatedListWarningCode"
+
+instance ToJSON RouterAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RoutersScopedListWarningCode
+    = RSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RoutersScopedListWarningCode
+
+instance FromHttpApiData RoutersScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right RSLWCUnreachable
+        x -> Left ("Unable to parse RoutersScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData RoutersScopedListWarningCode where
+    toQueryParam = \case
+        RSLWCCleanupFailed -> "CLEANUP_FAILED"
+        RSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RoutersScopedListWarningCode where
+    parseJSON = parseJSONText "RoutersScopedListWarningCode"
+
+instance ToJSON RoutersScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetHTTPSProxyListWarningCode
+    = THPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | THPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | THPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | THPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | THPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | THPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | THPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | THPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | THPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | THPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | THPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | THPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | THPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | THPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | THPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | THPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | THPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | THPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | THPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | THPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | THPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | THPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | THPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetHTTPSProxyListWarningCode
+
+instance FromHttpApiData TargetHTTPSProxyListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right THPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right THPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right THPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right THPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right THPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right THPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right THPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right THPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right THPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right THPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right THPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right THPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right THPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right THPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right THPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right THPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right THPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right THPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right THPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right THPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right THPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right THPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right THPLWCUnreachable
+        x -> Left ("Unable to parse TargetHTTPSProxyListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetHTTPSProxyListWarningCode where
+    toQueryParam = \case
+        THPLWCCleanupFailed -> "CLEANUP_FAILED"
+        THPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        THPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        THPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        THPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        THPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        THPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        THPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        THPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        THPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        THPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        THPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        THPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        THPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        THPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        THPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        THPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        THPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        THPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        THPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        THPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        THPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        THPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetHTTPSProxyListWarningCode where
+    parseJSON = parseJSONText "TargetHTTPSProxyListWarningCode"
+
+instance ToJSON TargetHTTPSProxyListWarningCode where
+    toJSON = toJSONText
+
+data InterconnectDiagnosticsLinkLACPStatusState
+    = IDLLACPSSActive
+      -- ^ @ACTIVE@
+    | IDLLACPSSDetached
+      -- ^ @DETACHED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectDiagnosticsLinkLACPStatusState
+
+instance FromHttpApiData InterconnectDiagnosticsLinkLACPStatusState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right IDLLACPSSActive
+        "DETACHED" -> Right IDLLACPSSDetached
+        x -> Left ("Unable to parse InterconnectDiagnosticsLinkLACPStatusState from: " <> x)
+
+instance ToHttpApiData InterconnectDiagnosticsLinkLACPStatusState where
+    toQueryParam = \case
+        IDLLACPSSActive -> "ACTIVE"
+        IDLLACPSSDetached -> "DETACHED"
+
+instance FromJSON InterconnectDiagnosticsLinkLACPStatusState where
+    parseJSON = parseJSONText "InterconnectDiagnosticsLinkLACPStatusState"
+
+instance ToJSON InterconnectDiagnosticsLinkLACPStatusState where
+    toJSON = toJSONText
+
+-- | [Output Only] The current action that the managed instance group has
+-- scheduled for the instance. Possible values: - NONE The instance is
+-- running, and the managed instance group does not have any scheduled
+-- actions for this instance. - CREATING The managed instance group is
+-- creating this instance. If the group fails to create this instance, it
+-- will try again until it is successful. - CREATING_WITHOUT_RETRIES The
+-- managed instance group is attempting to create this instance only once.
+-- If the group fails to create this instance, it does not try again and
+-- the group\'s targetSize value is decreased instead. - RECREATING The
+-- managed instance group is recreating this instance. - DELETING The
+-- managed instance group is permanently deleting this instance. -
+-- ABANDONING The managed instance group is abandoning this instance. The
+-- instance will be removed from the instance group and from any target
+-- pools that are associated with this group. - RESTARTING The managed
+-- instance group is restarting the instance. - REFRESHING The managed
+-- instance group is applying configuration changes to the instance without
+-- stopping it. For example, the group can update the target pool list for
+-- an instance without stopping that instance. - VERIFYING The managed
+-- instance group has created the instance and it is in the process of
+-- being verified.
+data ManagedInstanceCurrentAction
+    = MICAAbandoning
+      -- ^ @ABANDONING@
+    | MICACreating
+      -- ^ @CREATING@
+    | MICACreatingWithoutRetries
+      -- ^ @CREATING_WITHOUT_RETRIES@
+    | MICADeleting
+      -- ^ @DELETING@
+    | MICANone
+      -- ^ @NONE@
+    | MICARecreating
+      -- ^ @RECREATING@
+    | MICARefreshing
+      -- ^ @REFRESHING@
+    | MICARestarting
+      -- ^ @RESTARTING@
+    | MICAVerifying
+      -- ^ @VERIFYING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedInstanceCurrentAction
+
+instance FromHttpApiData ManagedInstanceCurrentAction where
+    parseQueryParam = \case
+        "ABANDONING" -> Right MICAAbandoning
+        "CREATING" -> Right MICACreating
+        "CREATING_WITHOUT_RETRIES" -> Right MICACreatingWithoutRetries
+        "DELETING" -> Right MICADeleting
+        "NONE" -> Right MICANone
+        "RECREATING" -> Right MICARecreating
+        "REFRESHING" -> Right MICARefreshing
+        "RESTARTING" -> Right MICARestarting
+        "VERIFYING" -> Right MICAVerifying
+        x -> Left ("Unable to parse ManagedInstanceCurrentAction from: " <> x)
+
+instance ToHttpApiData ManagedInstanceCurrentAction where
+    toQueryParam = \case
+        MICAAbandoning -> "ABANDONING"
+        MICACreating -> "CREATING"
+        MICACreatingWithoutRetries -> "CREATING_WITHOUT_RETRIES"
+        MICADeleting -> "DELETING"
+        MICANone -> "NONE"
+        MICARecreating -> "RECREATING"
+        MICARefreshing -> "REFRESHING"
+        MICARestarting -> "RESTARTING"
+        MICAVerifying -> "VERIFYING"
+
+instance FromJSON ManagedInstanceCurrentAction where
+    parseJSON = parseJSONText "ManagedInstanceCurrentAction"
+
+instance ToJSON ManagedInstanceCurrentAction where
+    toJSON = toJSONText
+
+-- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
+-- only NO_NAT (default value) is supported.
+data TargetInstanceNATPolicy
+    = NoNAT
+      -- ^ @NO_NAT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetInstanceNATPolicy
+
+instance FromHttpApiData TargetInstanceNATPolicy where
+    parseQueryParam = \case
+        "NO_NAT" -> Right NoNAT
+        x -> Left ("Unable to parse TargetInstanceNATPolicy from: " <> x)
+
+instance ToHttpApiData TargetInstanceNATPolicy where
+    toQueryParam = \case
+        NoNAT -> "NO_NAT"
+
+instance FromJSON TargetInstanceNATPolicy where
+    parseJSON = parseJSONText "TargetInstanceNATPolicy"
+
+instance ToJSON TargetInstanceNATPolicy where
+    toJSON = toJSONText
+
+data RouterBGPPeerAdvertisedGroupsItem
+    = AllSubnets
+      -- ^ @ALL_SUBNETS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterBGPPeerAdvertisedGroupsItem
+
+instance FromHttpApiData RouterBGPPeerAdvertisedGroupsItem where
+    parseQueryParam = \case
+        "ALL_SUBNETS" -> Right AllSubnets
+        x -> Left ("Unable to parse RouterBGPPeerAdvertisedGroupsItem from: " <> x)
+
+instance ToHttpApiData RouterBGPPeerAdvertisedGroupsItem where
+    toQueryParam = \case
+        AllSubnets -> "ALL_SUBNETS"
+
+instance FromJSON RouterBGPPeerAdvertisedGroupsItem where
+    parseJSON = parseJSONText "RouterBGPPeerAdvertisedGroupsItem"
+
+instance ToJSON RouterBGPPeerAdvertisedGroupsItem where
+    toJSON = toJSONText
+
+-- | The type of configuration. The default and only option is
+-- ONE_TO_ONE_NAT.
+data AccessConfigType
+    = OneToOneNAT
+      -- ^ @ONE_TO_ONE_NAT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AccessConfigType
+
+instance FromHttpApiData AccessConfigType where
+    parseQueryParam = \case
+        "ONE_TO_ONE_NAT" -> Right OneToOneNAT
+        x -> Left ("Unable to parse AccessConfigType from: " <> x)
+
+instance ToHttpApiData AccessConfigType where
+    toQueryParam = \case
+        OneToOneNAT -> "ONE_TO_ONE_NAT"
+
+instance FromJSON AccessConfigType where
+    parseJSON = parseJSONText "AccessConfigType"
+
+instance ToJSON AccessConfigType where
+    toJSON = toJSONText
+
+-- | The IP Version that will be used by this forwarding rule. Valid options
+-- are IPV4 or IPV6. This can only be specified for an external global
+-- forwarding rule.
+data ForwardingRuleIPVersion
+    = IPV4
+      -- ^ @IPV4@
+    | IPV6
+      -- ^ @IPV6@
+    | UnspecifiedVersion
+      -- ^ @UNSPECIFIED_VERSION@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleIPVersion
+
+instance FromHttpApiData ForwardingRuleIPVersion where
+    parseQueryParam = \case
+        "IPV4" -> Right IPV4
+        "IPV6" -> Right IPV6
+        "UNSPECIFIED_VERSION" -> Right UnspecifiedVersion
+        x -> Left ("Unable to parse ForwardingRuleIPVersion from: " <> x)
+
+instance ToHttpApiData ForwardingRuleIPVersion where
+    toQueryParam = \case
+        IPV4 -> "IPV4"
+        IPV6 -> "IPV6"
+        UnspecifiedVersion -> "UNSPECIFIED_VERSION"
+
+instance FromJSON ForwardingRuleIPVersion where
+    parseJSON = parseJSONText "ForwardingRuleIPVersion"
+
+instance ToJSON ForwardingRuleIPVersion where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RouterListWarningCode
+    = RLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterListWarningCode
+
+instance FromHttpApiData RouterListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RLWCUndeclaredProperties
+        "UNREACHABLE" -> Right RLWCUnreachable
+        x -> Left ("Unable to parse RouterListWarningCode from: " <> x)
+
+instance ToHttpApiData RouterListWarningCode where
+    toQueryParam = \case
+        RLWCCleanupFailed -> "CLEANUP_FAILED"
+        RLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RouterListWarningCode where
+    parseJSON = parseJSONText "RouterListWarningCode"
+
+instance ToJSON RouterListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupAggregatedListWarningCode
+    = IGALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupAggregatedListWarningCode
+
+instance FromHttpApiData InstanceGroupAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGALWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGALWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupAggregatedListWarningCode where
+    toQueryParam = \case
+        IGALWCCleanupFailed -> "CLEANUP_FAILED"
+        IGALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupAggregatedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupAggregatedListWarningCode"
+
+instance ToJSON InstanceGroupAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Default network tier to be set.
+data ProjectsSetDefaultNetworkTierRequestNetworkTier
+    = PSDNTRNTPremium
+      -- ^ @PREMIUM@
+    | PSDNTRNTStandard
+      -- ^ @STANDARD@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ProjectsSetDefaultNetworkTierRequestNetworkTier
+
+instance FromHttpApiData ProjectsSetDefaultNetworkTierRequestNetworkTier where
+    parseQueryParam = \case
+        "PREMIUM" -> Right PSDNTRNTPremium
+        "STANDARD" -> Right PSDNTRNTStandard
+        x -> Left ("Unable to parse ProjectsSetDefaultNetworkTierRequestNetworkTier from: " <> x)
+
+instance ToHttpApiData ProjectsSetDefaultNetworkTierRequestNetworkTier where
+    toQueryParam = \case
+        PSDNTRNTPremium -> "PREMIUM"
+        PSDNTRNTStandard -> "STANDARD"
+
+instance FromJSON ProjectsSetDefaultNetworkTierRequestNetworkTier where
+    parseJSON = parseJSONText "ProjectsSetDefaultNetworkTierRequestNetworkTier"
+
+instance ToJSON ProjectsSetDefaultNetworkTierRequestNetworkTier where
+    toJSON = toJSONText
+
+-- | Indicates whether the backend service will be used with internal or
+-- external load balancing. A backend service created for one type of load
+-- balancing cannot be used with the other. Possible values are INTERNAL
+-- and EXTERNAL.
+data BackendServiceLoadBalancingScheme
+    = External
+      -- ^ @EXTERNAL@
+    | Internal
+      -- ^ @INTERNAL@
+    | InvalidLoadBalancingScheme
+      -- ^ @INVALID_LOAD_BALANCING_SCHEME@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServiceLoadBalancingScheme
+
+instance FromHttpApiData BackendServiceLoadBalancingScheme where
+    parseQueryParam = \case
+        "EXTERNAL" -> Right External
+        "INTERNAL" -> Right Internal
+        "INVALID_LOAD_BALANCING_SCHEME" -> Right InvalidLoadBalancingScheme
+        x -> Left ("Unable to parse BackendServiceLoadBalancingScheme from: " <> x)
+
+instance ToHttpApiData BackendServiceLoadBalancingScheme where
+    toQueryParam = \case
+        External -> "EXTERNAL"
+        Internal -> "INTERNAL"
+        InvalidLoadBalancingScheme -> "INVALID_LOAD_BALANCING_SCHEME"
+
+instance FromJSON BackendServiceLoadBalancingScheme where
+    parseJSON = parseJSONText "BackendServiceLoadBalancingScheme"
+
+instance ToJSON BackendServiceLoadBalancingScheme where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data TargetTCPProxyProxyHeader
+    = TTPPHNone
+      -- ^ @NONE@
+    | TTPPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetTCPProxyProxyHeader
+
+instance FromHttpApiData TargetTCPProxyProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right TTPPHNone
+        "PROXY_V1" -> Right TTPPHProxyV1
+        x -> Left ("Unable to parse TargetTCPProxyProxyHeader from: " <> x)
+
+instance ToHttpApiData TargetTCPProxyProxyHeader where
+    toQueryParam = \case
+        TTPPHNone -> "NONE"
+        TTPPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON TargetTCPProxyProxyHeader where
+    parseJSON = parseJSONText "TargetTCPProxyProxyHeader"
+
+instance ToJSON TargetTCPProxyProxyHeader where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetVPNGatewayAggregatedListWarningCode
+    = TVGALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TVGALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TVGALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TVGALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TVGALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TVGALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TVGALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TVGALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TVGALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TVGALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TVGALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TVGALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TVGALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TVGALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TVGALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TVGALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TVGALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TVGALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TVGALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TVGALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TVGALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TVGALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TVGALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetVPNGatewayAggregatedListWarningCode
+
+instance FromHttpApiData TargetVPNGatewayAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TVGALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TVGALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TVGALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TVGALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TVGALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TVGALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TVGALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TVGALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TVGALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TVGALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TVGALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TVGALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TVGALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TVGALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TVGALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TVGALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TVGALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TVGALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TVGALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TVGALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TVGALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TVGALWCUndeclaredProperties
+        "UNREACHABLE" -> Right TVGALWCUnreachable
+        x -> Left ("Unable to parse TargetVPNGatewayAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetVPNGatewayAggregatedListWarningCode where
+    toQueryParam = \case
+        TVGALWCCleanupFailed -> "CLEANUP_FAILED"
+        TVGALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TVGALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TVGALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TVGALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TVGALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TVGALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TVGALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TVGALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TVGALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TVGALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TVGALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TVGALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TVGALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TVGALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TVGALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TVGALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TVGALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TVGALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TVGALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TVGALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TVGALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TVGALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetVPNGatewayAggregatedListWarningCode where
+    parseJSON = parseJSONText "TargetVPNGatewayAggregatedListWarningCode"
+
+instance ToJSON TargetVPNGatewayAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the operation, which can be one of the
+-- following: PENDING, RUNNING, or DONE.
+data OperationStatus
+    = OSDone
+      -- ^ @DONE@
+    | OSPending
+      -- ^ @PENDING@
+    | OSRunning
+      -- ^ @RUNNING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationStatus
+
+instance FromHttpApiData OperationStatus where
+    parseQueryParam = \case
+        "DONE" -> Right OSDone
+        "PENDING" -> Right OSPending
+        "RUNNING" -> Right OSRunning
+        x -> Left ("Unable to parse OperationStatus from: " <> x)
+
+instance ToHttpApiData OperationStatus where
+    toQueryParam = \case
+        OSDone -> "DONE"
+        OSPending -> "PENDING"
+        OSRunning -> "RUNNING"
+
+instance FromJSON OperationStatus where
+    parseJSON = parseJSONText "OperationStatus"
+
+instance ToJSON OperationStatus where
+    toJSON = toJSONText
+
+-- | The log_name to populate in the Cloud Audit Record.
+data LogConfigCloudAuditOptionsLogName
+    = AdminActivity
+      -- ^ @ADMIN_ACTIVITY@
+    | DataAccess
+      -- ^ @DATA_ACCESS@
+    | UnspecifiedLogName
+      -- ^ @UNSPECIFIED_LOG_NAME@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable LogConfigCloudAuditOptionsLogName
+
+instance FromHttpApiData LogConfigCloudAuditOptionsLogName where
+    parseQueryParam = \case
+        "ADMIN_ACTIVITY" -> Right AdminActivity
+        "DATA_ACCESS" -> Right DataAccess
+        "UNSPECIFIED_LOG_NAME" -> Right UnspecifiedLogName
+        x -> Left ("Unable to parse LogConfigCloudAuditOptionsLogName from: " <> x)
+
+instance ToHttpApiData LogConfigCloudAuditOptionsLogName where
+    toQueryParam = \case
+        AdminActivity -> "ADMIN_ACTIVITY"
+        DataAccess -> "DATA_ACCESS"
+        UnspecifiedLogName -> "UNSPECIFIED_LOG_NAME"
+
+instance FromJSON LogConfigCloudAuditOptionsLogName where
+    parseJSON = parseJSONText "LogConfigCloudAuditOptionsLogName"
+
+instance ToJSON LogConfigCloudAuditOptionsLogName where
+    toJSON = toJSONText
+
+-- | [Output Only] Current state of this License Code.
+data LicenseCodeState
+    = LCSDisabled
+      -- ^ @DISABLED@
+    | LCSEnabled
+      -- ^ @ENABLED@
+    | LCSRestricted
+      -- ^ @RESTRICTED@
+    | LCSStateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+    | LCSTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable LicenseCodeState
+
+instance FromHttpApiData LicenseCodeState where
+    parseQueryParam = \case
+        "DISABLED" -> Right LCSDisabled
+        "ENABLED" -> Right LCSEnabled
+        "RESTRICTED" -> Right LCSRestricted
+        "STATE_UNSPECIFIED" -> Right LCSStateUnspecified
+        "TERMINATED" -> Right LCSTerminated
+        x -> Left ("Unable to parse LicenseCodeState from: " <> x)
+
+instance ToHttpApiData LicenseCodeState where
+    toQueryParam = \case
+        LCSDisabled -> "DISABLED"
+        LCSEnabled -> "ENABLED"
+        LCSRestricted -> "RESTRICTED"
+        LCSStateUnspecified -> "STATE_UNSPECIFIED"
+        LCSTerminated -> "TERMINATED"
+
+instance FromJSON LicenseCodeState where
+    parseJSON = parseJSONText "LicenseCodeState"
+
+instance ToJSON LicenseCodeState where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetVPNGatewaysScopedListWarningCode
+    = TVGSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TVGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TVGSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TVGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TVGSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TVGSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TVGSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TVGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TVGSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TVGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TVGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TVGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TVGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TVGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TVGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TVGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TVGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TVGSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TVGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TVGSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TVGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TVGSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TVGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetVPNGatewaysScopedListWarningCode
+
+instance FromHttpApiData TargetVPNGatewaysScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TVGSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TVGSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TVGSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TVGSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TVGSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TVGSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TVGSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TVGSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TVGSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TVGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TVGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TVGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TVGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TVGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TVGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TVGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TVGSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TVGSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TVGSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TVGSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TVGSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TVGSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TVGSLWCUnreachable
+        x -> Left ("Unable to parse TargetVPNGatewaysScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetVPNGatewaysScopedListWarningCode where
+    toQueryParam = \case
+        TVGSLWCCleanupFailed -> "CLEANUP_FAILED"
+        TVGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TVGSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TVGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TVGSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TVGSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TVGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TVGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TVGSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TVGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TVGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TVGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TVGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TVGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TVGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TVGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TVGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TVGSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TVGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TVGSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TVGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TVGSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TVGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetVPNGatewaysScopedListWarningCode where
+    parseJSON = parseJSONText "TargetVPNGatewaysScopedListWarningCode"
+
+instance ToJSON TargetVPNGatewaysScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of disk creation.
+data DiskStatus
+    = DSCreating
+      -- ^ @CREATING@
+    | DSFailed
+      -- ^ @FAILED@
+    | DSReady
+      -- ^ @READY@
+    | DSRestoring
+      -- ^ @RESTORING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskStatus
+
+instance FromHttpApiData DiskStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right DSCreating
+        "FAILED" -> Right DSFailed
+        "READY" -> Right DSReady
+        "RESTORING" -> Right DSRestoring
+        x -> Left ("Unable to parse DiskStatus from: " <> x)
+
+instance ToHttpApiData DiskStatus where
+    toQueryParam = \case
+        DSCreating -> "CREATING"
+        DSFailed -> "FAILED"
+        DSReady -> "READY"
+        DSRestoring -> "RESTORING"
+
+instance FromJSON DiskStatus where
+    parseJSON = parseJSONText "DiskStatus"
+
+instance ToJSON DiskStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SnapshotListWarningCode
+    = SLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SnapshotListWarningCode
+
+instance FromHttpApiData SnapshotListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SLWCUndeclaredProperties
+        "UNREACHABLE" -> Right SLWCUnreachable
+        x -> Left ("Unable to parse SnapshotListWarningCode from: " <> x)
+
+instance ToHttpApiData SnapshotListWarningCode where
+    toQueryParam = \case
+        SLWCCleanupFailed -> "CLEANUP_FAILED"
+        SLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON SnapshotListWarningCode where
+    parseJSON = parseJSONText "SnapshotListWarningCode"
+
+instance ToJSON SnapshotListWarningCode where
+    toJSON = toJSONText
+
+-- | Desired availability domain for the attachment. Only available for type
+-- PARTNER, at creation time. For improved reliability, customers should
+-- configure a pair of attachments with one per availability domain. The
+-- selected availability domain will be provided to the Partner via the
+-- pairing key so that the provisioned circuit will lie in the specified
+-- domain. If not specified, the value will default to
+-- AVAILABILITY_DOMAIN_ANY.
+data InterconnectAttachmentEdgeAvailabilityDomain
+    = AvailabilityDomain1
+      -- ^ @AVAILABILITY_DOMAIN_1@
+    | AvailabilityDomain2
+      -- ^ @AVAILABILITY_DOMAIN_2@
+    | AvailabilityDomainAny
+      -- ^ @AVAILABILITY_DOMAIN_ANY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentEdgeAvailabilityDomain
+
+instance FromHttpApiData InterconnectAttachmentEdgeAvailabilityDomain where
+    parseQueryParam = \case
+        "AVAILABILITY_DOMAIN_1" -> Right AvailabilityDomain1
+        "AVAILABILITY_DOMAIN_2" -> Right AvailabilityDomain2
+        "AVAILABILITY_DOMAIN_ANY" -> Right AvailabilityDomainAny
+        x -> Left ("Unable to parse InterconnectAttachmentEdgeAvailabilityDomain from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentEdgeAvailabilityDomain where
+    toQueryParam = \case
+        AvailabilityDomain1 -> "AVAILABILITY_DOMAIN_1"
+        AvailabilityDomain2 -> "AVAILABILITY_DOMAIN_2"
+        AvailabilityDomainAny -> "AVAILABILITY_DOMAIN_ANY"
+
+instance FromJSON InterconnectAttachmentEdgeAvailabilityDomain where
+    parseJSON = parseJSONText "InterconnectAttachmentEdgeAvailabilityDomain"
+
+instance ToJSON InterconnectAttachmentEdgeAvailabilityDomain where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance. This field is empty when the
+-- instance does not exist.
+data ManagedInstanceInstanceStatus
+    = MIISProvisioning
+      -- ^ @PROVISIONING@
+    | MIISRunning
+      -- ^ @RUNNING@
+    | MIISStaging
+      -- ^ @STAGING@
+    | MIISStopped
+      -- ^ @STOPPED@
+    | MIISStopping
+      -- ^ @STOPPING@
+    | MIISSuspended
+      -- ^ @SUSPENDED@
+    | MIISSuspending
+      -- ^ @SUSPENDING@
+    | MIISTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ManagedInstanceInstanceStatus
+
+instance FromHttpApiData ManagedInstanceInstanceStatus where
+    parseQueryParam = \case
+        "PROVISIONING" -> Right MIISProvisioning
+        "RUNNING" -> Right MIISRunning
+        "STAGING" -> Right MIISStaging
+        "STOPPED" -> Right MIISStopped
+        "STOPPING" -> Right MIISStopping
+        "SUSPENDED" -> Right MIISSuspended
+        "SUSPENDING" -> Right MIISSuspending
+        "TERMINATED" -> Right MIISTerminated
+        x -> Left ("Unable to parse ManagedInstanceInstanceStatus from: " <> x)
+
+instance ToHttpApiData ManagedInstanceInstanceStatus where
+    toQueryParam = \case
+        MIISProvisioning -> "PROVISIONING"
+        MIISRunning -> "RUNNING"
+        MIISStaging -> "STAGING"
+        MIISStopped -> "STOPPED"
+        MIISStopping -> "STOPPING"
+        MIISSuspended -> "SUSPENDED"
+        MIISSuspending -> "SUSPENDING"
+        MIISTerminated -> "TERMINATED"
+
+instance FromJSON ManagedInstanceInstanceStatus where
+    parseJSON = parseJSONText "ManagedInstanceInstanceStatus"
+
+instance ToJSON ManagedInstanceInstanceStatus where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data HTTPHealthCheckProxyHeader
+    = HTTPHCPHNone
+      -- ^ @NONE@
+    | HTTPHCPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPHealthCheckProxyHeader
+
+instance FromHttpApiData HTTPHealthCheckProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right HTTPHCPHNone
+        "PROXY_V1" -> Right HTTPHCPHProxyV1
+        x -> Left ("Unable to parse HTTPHealthCheckProxyHeader from: " <> x)
+
+instance ToHttpApiData HTTPHealthCheckProxyHeader where
+    toQueryParam = \case
+        HTTPHCPHNone -> "NONE"
+        HTTPHCPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON HTTPHealthCheckProxyHeader where
+    parseJSON = parseJSONText "HTTPHealthCheckProxyHeader"
+
+instance ToJSON HTTPHealthCheckProxyHeader where
+    toJSON = toJSONText
+
+-- | [Output Only] Continent for this location.
+data InterconnectLocationContinent
+    = Africa
+      -- ^ @AFRICA@
+    | AsiaPac
+      -- ^ @ASIA_PAC@
+    | CAfrica
+      -- ^ @C_AFRICA@
+    | CAsiaPac
+      -- ^ @C_ASIA_PAC@
+    | CEurope
+      -- ^ @C_EUROPE@
+    | CNorthAmerica
+      -- ^ @C_NORTH_AMERICA@
+    | CSouthAmerica
+      -- ^ @C_SOUTH_AMERICA@
+    | Europe
+      -- ^ @EUROPE@
+    | NorthAmerica
+      -- ^ @NORTH_AMERICA@
+    | SouthAmerica
+      -- ^ @SOUTH_AMERICA@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectLocationContinent
+
+instance FromHttpApiData InterconnectLocationContinent where
+    parseQueryParam = \case
+        "AFRICA" -> Right Africa
+        "ASIA_PAC" -> Right AsiaPac
+        "C_AFRICA" -> Right CAfrica
+        "C_ASIA_PAC" -> Right CAsiaPac
+        "C_EUROPE" -> Right CEurope
+        "C_NORTH_AMERICA" -> Right CNorthAmerica
+        "C_SOUTH_AMERICA" -> Right CSouthAmerica
+        "EUROPE" -> Right Europe
+        "NORTH_AMERICA" -> Right NorthAmerica
+        "SOUTH_AMERICA" -> Right SouthAmerica
+        x -> Left ("Unable to parse InterconnectLocationContinent from: " <> x)
+
+instance ToHttpApiData InterconnectLocationContinent where
+    toQueryParam = \case
+        Africa -> "AFRICA"
+        AsiaPac -> "ASIA_PAC"
+        CAfrica -> "C_AFRICA"
+        CAsiaPac -> "C_ASIA_PAC"
+        CEurope -> "C_EUROPE"
+        CNorthAmerica -> "C_NORTH_AMERICA"
+        CSouthAmerica -> "C_SOUTH_AMERICA"
+        Europe -> "EUROPE"
+        NorthAmerica -> "NORTH_AMERICA"
+        SouthAmerica -> "SOUTH_AMERICA"
+
+instance FromJSON InterconnectLocationContinent where
+    parseJSON = parseJSONText "InterconnectLocationContinent"
+
+instance ToJSON InterconnectLocationContinent where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data VMEndpointNATMAppingsListWarningCode
+    = VMENATMALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | VMENATMALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | VMENATMALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | VMENATMALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | VMENATMALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | VMENATMALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | VMENATMALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | VMENATMALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | VMENATMALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | VMENATMALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | VMENATMALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | VMENATMALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | VMENATMALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | VMENATMALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | VMENATMALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | VMENATMALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | VMENATMALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | VMENATMALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | VMENATMALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | VMENATMALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | VMENATMALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | VMENATMALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | VMENATMALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VMEndpointNATMAppingsListWarningCode
+
+instance FromHttpApiData VMEndpointNATMAppingsListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right VMENATMALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right VMENATMALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right VMENATMALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VMENATMALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right VMENATMALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right VMENATMALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right VMENATMALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right VMENATMALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right VMENATMALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VMENATMALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VMENATMALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right VMENATMALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right VMENATMALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right VMENATMALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right VMENATMALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right VMENATMALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right VMENATMALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right VMENATMALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right VMENATMALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right VMENATMALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right VMENATMALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right VMENATMALWCUndeclaredProperties
+        "UNREACHABLE" -> Right VMENATMALWCUnreachable
+        x -> Left ("Unable to parse VMEndpointNATMAppingsListWarningCode from: " <> x)
+
+instance ToHttpApiData VMEndpointNATMAppingsListWarningCode where
+    toQueryParam = \case
+        VMENATMALWCCleanupFailed -> "CLEANUP_FAILED"
+        VMENATMALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        VMENATMALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        VMENATMALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        VMENATMALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        VMENATMALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        VMENATMALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        VMENATMALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        VMENATMALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        VMENATMALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        VMENATMALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        VMENATMALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        VMENATMALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        VMENATMALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        VMENATMALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        VMENATMALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        VMENATMALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        VMENATMALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        VMENATMALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        VMENATMALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        VMENATMALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        VMENATMALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        VMENATMALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON VMEndpointNATMAppingsListWarningCode where
+    parseJSON = parseJSONText "VMEndpointNATMAppingsListWarningCode"
+
+instance ToJSON VMEndpointNATMAppingsListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the node template. One of the following
+-- values: CREATING, READY, and DELETING.
+data NodeTemplateStatus
+    = NTSCreating
+      -- ^ @CREATING@
+    | NTSDeleting
+      -- ^ @DELETING@
+    | NTSInvalid
+      -- ^ @INVALID@
+    | NTSReady
+      -- ^ @READY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTemplateStatus
+
+instance FromHttpApiData NodeTemplateStatus where
+    parseQueryParam = \case
+        "CREATING" -> Right NTSCreating
+        "DELETING" -> Right NTSDeleting
+        "INVALID" -> Right NTSInvalid
+        "READY" -> Right NTSReady
+        x -> Left ("Unable to parse NodeTemplateStatus from: " <> x)
+
+instance ToHttpApiData NodeTemplateStatus where
+    toQueryParam = \case
+        NTSCreating -> "CREATING"
+        NTSDeleting -> "DELETING"
+        NTSInvalid -> "INVALID"
+        NTSReady -> "READY"
+
+instance FromJSON NodeTemplateStatus where
+    parseJSON = parseJSONText "NodeTemplateStatus"
+
+instance ToJSON NodeTemplateStatus where
+    toJSON = toJSONText
+
+-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
+-- If not specified, the default is to attach the disk in READ_WRITE mode.
+data AttachedDiskMode
+    = ReadOnly
+      -- ^ @READ_ONLY@
+    | ReadWrite
+      -- ^ @READ_WRITE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AttachedDiskMode
+
+instance FromHttpApiData AttachedDiskMode where
+    parseQueryParam = \case
+        "READ_ONLY" -> Right ReadOnly
+        "READ_WRITE" -> Right ReadWrite
+        x -> Left ("Unable to parse AttachedDiskMode from: " <> x)
+
+instance ToHttpApiData AttachedDiskMode where
+    toQueryParam = \case
+        ReadOnly -> "READ_ONLY"
+        ReadWrite -> "READ_WRITE"
+
+instance FromJSON AttachedDiskMode where
+    parseJSON = parseJSONText "AttachedDiskMode"
+
+instance ToJSON AttachedDiskMode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetVPNGatewayListWarningCode
+    = TVGLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TVGLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TVGLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TVGLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TVGLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TVGLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TVGLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TVGLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TVGLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TVGLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TVGLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TVGLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TVGLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TVGLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TVGLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TVGLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TVGLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TVGLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TVGLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TVGLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TVGLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TVGLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TVGLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetVPNGatewayListWarningCode
+
+instance FromHttpApiData TargetVPNGatewayListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TVGLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TVGLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TVGLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TVGLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TVGLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TVGLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TVGLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TVGLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TVGLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TVGLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TVGLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TVGLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TVGLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TVGLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TVGLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TVGLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TVGLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TVGLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TVGLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TVGLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TVGLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TVGLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TVGLWCUnreachable
+        x -> Left ("Unable to parse TargetVPNGatewayListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetVPNGatewayListWarningCode where
+    toQueryParam = \case
+        TVGLWCCleanupFailed -> "CLEANUP_FAILED"
+        TVGLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TVGLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TVGLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TVGLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TVGLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TVGLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TVGLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TVGLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TVGLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TVGLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TVGLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TVGLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TVGLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TVGLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TVGLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TVGLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TVGLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TVGLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TVGLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TVGLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TVGLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TVGLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetVPNGatewayListWarningCode where
+    parseJSON = parseJSONText "TargetVPNGatewayListWarningCode"
+
+instance ToJSON TargetVPNGatewayListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceTemplateListWarningCode
+    = ITLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ITLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ITLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ITLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ITLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ITLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ITLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ITLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ITLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ITLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ITLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ITLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ITLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ITLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ITLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ITLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ITLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ITLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ITLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ITLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ITLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ITLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ITLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceTemplateListWarningCode
+
+instance FromHttpApiData InstanceTemplateListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ITLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ITLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ITLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ITLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ITLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ITLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ITLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ITLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ITLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ITLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ITLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ITLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ITLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ITLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ITLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ITLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ITLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ITLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ITLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ITLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ITLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ITLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ITLWCUnreachable
+        x -> Left ("Unable to parse InstanceTemplateListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceTemplateListWarningCode where
+    toQueryParam = \case
+        ITLWCCleanupFailed -> "CLEANUP_FAILED"
+        ITLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ITLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ITLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ITLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ITLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ITLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ITLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ITLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ITLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ITLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ITLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ITLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ITLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ITLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ITLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ITLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ITLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ITLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ITLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ITLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ITLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ITLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceTemplateListWarningCode where
+    parseJSON = parseJSONText "InstanceTemplateListWarningCode"
+
+instance ToJSON InstanceTemplateListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetSSLProxyListWarningCode
+    = TSPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TSPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TSPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TSPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TSPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TSPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TSPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TSPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TSPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TSPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TSPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TSPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TSPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TSPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TSPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TSPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TSPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TSPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TSPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TSPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TSPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TSPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TSPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetSSLProxyListWarningCode
+
+instance FromHttpApiData TargetSSLProxyListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TSPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TSPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TSPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TSPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TSPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TSPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TSPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TSPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TSPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TSPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TSPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TSPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TSPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TSPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TSPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TSPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TSPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TSPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TSPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TSPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TSPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TSPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TSPLWCUnreachable
+        x -> Left ("Unable to parse TargetSSLProxyListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetSSLProxyListWarningCode where
+    toQueryParam = \case
+        TSPLWCCleanupFailed -> "CLEANUP_FAILED"
+        TSPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TSPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TSPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TSPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TSPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TSPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TSPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TSPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TSPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TSPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TSPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TSPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TSPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TSPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TSPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TSPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TSPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TSPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TSPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TSPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TSPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TSPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetSSLProxyListWarningCode where
+    parseJSON = parseJSONText "TargetSSLProxyListWarningCode"
+
+instance ToJSON TargetSSLProxyListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the region, either UP or DOWN.
+data RegionStatus
+    = Down
+      -- ^ @DOWN@
+    | UP
+      -- ^ @UP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionStatus
+
+instance FromHttpApiData RegionStatus where
+    parseQueryParam = \case
+        "DOWN" -> Right Down
+        "UP" -> Right UP
+        x -> Left ("Unable to parse RegionStatus from: " <> x)
+
+instance ToHttpApiData RegionStatus where
+    toQueryParam = \case
+        Down -> "DOWN"
+        UP -> "UP"
+
+instance FromJSON RegionStatus where
+    parseJSON = parseJSONText "RegionStatus"
+
+instance ToJSON RegionStatus where
+    toJSON = toJSONText
+
+-- | Provisioned bandwidth capacity for the interconnectAttachment. Can be
+-- set by the partner to update the customer\'s provisioned bandwidth.
+-- Output only for PARTNER type, mutable for PARTNER_PROVIDER and
+-- DEDICATED.
+data InterconnectAttachmentBandwidth
+    = Bps100M
+      -- ^ @BPS_100M@
+    | Bps10G
+      -- ^ @BPS_10G@
+    | Bps1G
+      -- ^ @BPS_1G@
+    | Bps200M
+      -- ^ @BPS_200M@
+    | Bps2G
+      -- ^ @BPS_2G@
+    | Bps300M
+      -- ^ @BPS_300M@
+    | Bps400M
+      -- ^ @BPS_400M@
+    | Bps500M
+      -- ^ @BPS_500M@
+    | Bps50M
+      -- ^ @BPS_50M@
+    | Bps5G
+      -- ^ @BPS_5G@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentBandwidth
+
+instance FromHttpApiData InterconnectAttachmentBandwidth where
+    parseQueryParam = \case
+        "BPS_100M" -> Right Bps100M
+        "BPS_10G" -> Right Bps10G
+        "BPS_1G" -> Right Bps1G
+        "BPS_200M" -> Right Bps200M
+        "BPS_2G" -> Right Bps2G
+        "BPS_300M" -> Right Bps300M
+        "BPS_400M" -> Right Bps400M
+        "BPS_500M" -> Right Bps500M
+        "BPS_50M" -> Right Bps50M
+        "BPS_5G" -> Right Bps5G
+        x -> Left ("Unable to parse InterconnectAttachmentBandwidth from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentBandwidth where
+    toQueryParam = \case
+        Bps100M -> "BPS_100M"
+        Bps10G -> "BPS_10G"
+        Bps1G -> "BPS_1G"
+        Bps200M -> "BPS_200M"
+        Bps2G -> "BPS_2G"
+        Bps300M -> "BPS_300M"
+        Bps400M -> "BPS_400M"
+        Bps500M -> "BPS_500M"
+        Bps50M -> "BPS_50M"
+        Bps5G -> "BPS_5G"
+
+instance FromJSON InterconnectAttachmentBandwidth where
+    parseJSON = parseJSONText "InterconnectAttachmentBandwidth"
+
+instance ToJSON InterconnectAttachmentBandwidth where
+    toJSON = toJSONText
+
+-- | The new type of proxy header to append before sending data to the
+-- backend. NONE or PROXY_V1 are allowed.
+data TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+    = TSPSPHRPHNone
+      -- ^ @NONE@
+    | TSPSPHRPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+
+instance FromHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right TSPSPHRPHNone
+        "PROXY_V1" -> Right TSPSPHRPHProxyV1
+        x -> Left ("Unable to parse TargetSSLProxiesSetProxyHeaderRequestProxyHeader from: " <> x)
+
+instance ToHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
+    toQueryParam = \case
+        TSPSPHRPHNone -> "NONE"
+        TSPSPHRPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
+    parseJSON = parseJSONText "TargetSSLProxiesSetProxyHeaderRequestProxyHeader"
+
+instance ToJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceListReferrersWarningCode
+    = ILRWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ILRWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ILRWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ILRWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ILRWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ILRWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ILRWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ILRWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ILRWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ILRWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ILRWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ILRWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ILRWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ILRWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ILRWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ILRWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ILRWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ILRWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ILRWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ILRWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ILRWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ILRWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ILRWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceListReferrersWarningCode
+
+instance FromHttpApiData InstanceListReferrersWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ILRWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ILRWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ILRWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ILRWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ILRWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ILRWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ILRWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ILRWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ILRWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ILRWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ILRWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ILRWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ILRWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ILRWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ILRWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ILRWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ILRWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ILRWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ILRWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ILRWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ILRWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ILRWCUndeclaredProperties
+        "UNREACHABLE" -> Right ILRWCUnreachable
+        x -> Left ("Unable to parse InstanceListReferrersWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceListReferrersWarningCode where
+    toQueryParam = \case
+        ILRWCCleanupFailed -> "CLEANUP_FAILED"
+        ILRWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ILRWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ILRWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ILRWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ILRWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ILRWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ILRWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ILRWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ILRWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ILRWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ILRWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ILRWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ILRWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ILRWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ILRWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ILRWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ILRWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ILRWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ILRWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ILRWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ILRWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ILRWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceListReferrersWarningCode where
+    parseJSON = parseJSONText "InstanceListReferrersWarningCode"
+
+instance ToJSON InstanceListReferrersWarningCode where
+    toJSON = toJSONText
+
+-- | An operator to apply the subject with.
+data ConditionOp
+    = Discharged
+      -- ^ @DISCHARGED@
+    | Equals
+      -- ^ @EQUALS@
+    | IN
+      -- ^ @IN@
+    | NotEquals
+      -- ^ @NOT_EQUALS@
+    | NotIn
+      -- ^ @NOT_IN@
+    | NoOp
+      -- ^ @NO_OP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionOp
+
+instance FromHttpApiData ConditionOp where
+    parseQueryParam = \case
+        "DISCHARGED" -> Right Discharged
+        "EQUALS" -> Right Equals
+        "IN" -> Right IN
+        "NOT_EQUALS" -> Right NotEquals
+        "NOT_IN" -> Right NotIn
+        "NO_OP" -> Right NoOp
+        x -> Left ("Unable to parse ConditionOp from: " <> x)
+
+instance ToHttpApiData ConditionOp where
+    toQueryParam = \case
+        Discharged -> "DISCHARGED"
+        Equals -> "EQUALS"
+        IN -> "IN"
+        NotEquals -> "NOT_EQUALS"
+        NotIn -> "NOT_IN"
+        NoOp -> "NO_OP"
+
+instance FromJSON ConditionOp where
+    parseJSON = parseJSONText "ConditionOp"
+
+instance ToJSON ConditionOp where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RouteListWarningCode
+    = RCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouteListWarningCode
+
+instance FromHttpApiData RouteListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RUndeclaredProperties
+        "UNREACHABLE" -> Right RUnreachable
+        x -> Left ("Unable to parse RouteListWarningCode from: " <> x)
+
+instance ToHttpApiData RouteListWarningCode where
+    toQueryParam = \case
+        RCleanupFailed -> "CLEANUP_FAILED"
+        RDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RUnreachable -> "UNREACHABLE"
+
+instance FromJSON RouteListWarningCode where
+    parseJSON = parseJSONText "RouteListWarningCode"
+
+instance ToJSON RouteListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the VPN tunnel.
+data VPNTunnelStatus
+    = VTSAllocatingResources
+      -- ^ @ALLOCATING_RESOURCES@
+    | VTSAuthorizationError
+      -- ^ @AUTHORIZATION_ERROR@
+    | VTSDeprovisioning
+      -- ^ @DEPROVISIONING@
+    | VTSEstablished
+      -- ^ @ESTABLISHED@
+    | VTSFailed
+      -- ^ @FAILED@
+    | VTSFirstHandshake
+      -- ^ @FIRST_HANDSHAKE@
+    | VTSNegotiationFailure
+      -- ^ @NEGOTIATION_FAILURE@
+    | VTSNetworkError
+      -- ^ @NETWORK_ERROR@
+    | VTSNoIncomingPackets
+      -- ^ @NO_INCOMING_PACKETS@
+    | VTSProvisioning
+      -- ^ @PROVISIONING@
+    | VTSRejected
+      -- ^ @REJECTED@
+    | VTSWaitingForFullConfig
+      -- ^ @WAITING_FOR_FULL_CONFIG@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VPNTunnelStatus
+
+instance FromHttpApiData VPNTunnelStatus where
+    parseQueryParam = \case
+        "ALLOCATING_RESOURCES" -> Right VTSAllocatingResources
+        "AUTHORIZATION_ERROR" -> Right VTSAuthorizationError
+        "DEPROVISIONING" -> Right VTSDeprovisioning
+        "ESTABLISHED" -> Right VTSEstablished
+        "FAILED" -> Right VTSFailed
+        "FIRST_HANDSHAKE" -> Right VTSFirstHandshake
+        "NEGOTIATION_FAILURE" -> Right VTSNegotiationFailure
+        "NETWORK_ERROR" -> Right VTSNetworkError
+        "NO_INCOMING_PACKETS" -> Right VTSNoIncomingPackets
+        "PROVISIONING" -> Right VTSProvisioning
+        "REJECTED" -> Right VTSRejected
+        "WAITING_FOR_FULL_CONFIG" -> Right VTSWaitingForFullConfig
+        x -> Left ("Unable to parse VPNTunnelStatus from: " <> x)
+
+instance ToHttpApiData VPNTunnelStatus where
+    toQueryParam = \case
+        VTSAllocatingResources -> "ALLOCATING_RESOURCES"
+        VTSAuthorizationError -> "AUTHORIZATION_ERROR"
+        VTSDeprovisioning -> "DEPROVISIONING"
+        VTSEstablished -> "ESTABLISHED"
+        VTSFailed -> "FAILED"
+        VTSFirstHandshake -> "FIRST_HANDSHAKE"
+        VTSNegotiationFailure -> "NEGOTIATION_FAILURE"
+        VTSNetworkError -> "NETWORK_ERROR"
+        VTSNoIncomingPackets -> "NO_INCOMING_PACKETS"
+        VTSProvisioning -> "PROVISIONING"
+        VTSRejected -> "REJECTED"
+        VTSWaitingForFullConfig -> "WAITING_FOR_FULL_CONFIG"
+
+instance FromJSON VPNTunnelStatus where
+    parseJSON = parseJSONText "VPNTunnelStatus"
+
+instance ToJSON VPNTunnelStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SSLCertificateListWarningCode
+    = SCLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SCLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SCLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SCLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SCLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SCLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SCLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SCLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SCLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SCLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SCLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SCLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SCLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SCLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SCLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SCLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SCLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SCLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SCLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SCLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SCLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SCLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SCLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLCertificateListWarningCode
+
+instance FromHttpApiData SSLCertificateListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SCLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SCLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SCLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SCLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SCLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SCLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SCLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SCLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SCLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SCLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SCLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SCLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SCLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SCLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SCLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SCLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SCLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SCLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SCLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SCLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SCLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SCLWCUndeclaredProperties
+        "UNREACHABLE" -> Right SCLWCUnreachable
+        x -> Left ("Unable to parse SSLCertificateListWarningCode from: " <> x)
+
+instance ToHttpApiData SSLCertificateListWarningCode where
+    toQueryParam = \case
+        SCLWCCleanupFailed -> "CLEANUP_FAILED"
+        SCLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SCLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SCLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SCLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SCLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SCLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SCLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SCLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SCLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SCLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SCLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SCLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SCLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SCLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SCLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SCLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SCLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SCLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SCLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SCLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SCLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SCLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON SSLCertificateListWarningCode where
+    parseJSON = parseJSONText "SSLCertificateListWarningCode"
+
+instance ToJSON SSLCertificateListWarningCode where
+    toJSON = toJSONText
+
+-- | Specifies whether to include the disk and what image to use. Possible
+-- values are: - source-image: to use the same image that was used to
+-- create the source instance\'s corresponding disk. Applicable to the boot
+-- disk and additional read-write disks. - source-image-family: to use the
+-- same image family that was used to create the source instance\'s
+-- corresponding disk. Applicable to the boot disk and additional
+-- read-write disks. - custom-image: to use a user-provided image url for
+-- disk creation. Applicable to the boot disk and additional read-write
+-- disks. - attach-read-only: to attach a read-only disk. Applicable to
+-- read-only disks. - do-not-include: to exclude a disk from the template.
+-- Applicable to additional read-write disks, local SSDs, and read-only
+-- disks.
+data DiskInstantiationConfigInstantiateFrom
+    = AttachReadOnly
+      -- ^ @ATTACH_READ_ONLY@
+    | Blank
+      -- ^ @BLANK@
+    | CustomImage
+      -- ^ @CUSTOM_IMAGE@
+    | Default
+      -- ^ @DEFAULT@
+    | DoNotInclude
+      -- ^ @DO_NOT_INCLUDE@
+    | SourceImage
+      -- ^ @SOURCE_IMAGE@
+    | SourceImageFamily
+      -- ^ @SOURCE_IMAGE_FAMILY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskInstantiationConfigInstantiateFrom
+
+instance FromHttpApiData DiskInstantiationConfigInstantiateFrom where
+    parseQueryParam = \case
+        "ATTACH_READ_ONLY" -> Right AttachReadOnly
+        "BLANK" -> Right Blank
+        "CUSTOM_IMAGE" -> Right CustomImage
+        "DEFAULT" -> Right Default
+        "DO_NOT_INCLUDE" -> Right DoNotInclude
+        "SOURCE_IMAGE" -> Right SourceImage
+        "SOURCE_IMAGE_FAMILY" -> Right SourceImageFamily
+        x -> Left ("Unable to parse DiskInstantiationConfigInstantiateFrom from: " <> x)
+
+instance ToHttpApiData DiskInstantiationConfigInstantiateFrom where
+    toQueryParam = \case
+        AttachReadOnly -> "ATTACH_READ_ONLY"
+        Blank -> "BLANK"
+        CustomImage -> "CUSTOM_IMAGE"
+        Default -> "DEFAULT"
+        DoNotInclude -> "DO_NOT_INCLUDE"
+        SourceImage -> "SOURCE_IMAGE"
+        SourceImageFamily -> "SOURCE_IMAGE_FAMILY"
+
+instance FromJSON DiskInstantiationConfigInstantiateFrom where
+    parseJSON = parseJSONText "DiskInstantiationConfigInstantiateFrom"
+
+instance ToJSON DiskInstantiationConfigInstantiateFrom where
+    toJSON = toJSONText
+
+-- | Specifies the balancing mode for this backend. For global HTTP(S) or
+-- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are
+-- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). For
+-- Internal Load Balancing, the default and only supported mode is
+-- CONNECTION.
+data BackendBalancingMode
+    = Connection
+      -- ^ @CONNECTION@
+    | Rate
+      -- ^ @RATE@
+    | Utilization
+      -- ^ @UTILIZATION@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendBalancingMode
+
+instance FromHttpApiData BackendBalancingMode where
+    parseQueryParam = \case
+        "CONNECTION" -> Right Connection
+        "RATE" -> Right Rate
+        "UTILIZATION" -> Right Utilization
+        x -> Left ("Unable to parse BackendBalancingMode from: " <> x)
+
+instance ToHttpApiData BackendBalancingMode where
+    toQueryParam = \case
+        Connection -> "CONNECTION"
+        Rate -> "RATE"
+        Utilization -> "UTILIZATION"
+
+instance FromJSON BackendBalancingMode where
+    parseJSON = parseJSONText "BackendBalancingMode"
+
+instance ToJSON BackendBalancingMode where
+    toJSON = toJSONText
+
+data RouterBGPAdvertisedGroupsItem
+    = RBAGIAllSubnets
+      -- ^ @ALL_SUBNETS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterBGPAdvertisedGroupsItem
+
+instance FromHttpApiData RouterBGPAdvertisedGroupsItem where
+    parseQueryParam = \case
+        "ALL_SUBNETS" -> Right RBAGIAllSubnets
+        x -> Left ("Unable to parse RouterBGPAdvertisedGroupsItem from: " <> x)
+
+instance ToHttpApiData RouterBGPAdvertisedGroupsItem where
+    toQueryParam = \case
+        RBAGIAllSubnets -> "ALL_SUBNETS"
+
+instance FromJSON RouterBGPAdvertisedGroupsItem where
+    parseJSON = parseJSONText "RouterBGPAdvertisedGroupsItem"
+
+instance ToJSON RouterBGPAdvertisedGroupsItem where
+    toJSON = toJSONText
+
+-- | The network-wide routing mode to use. If set to REGIONAL, this
+-- network\'s cloud routers will only advertise routes with subnets of this
+-- network in the same region as the router. If set to GLOBAL, this
+-- network\'s cloud routers will advertise routes with all subnets of this
+-- network, across regions.
+data NetworkRoutingConfigRoutingMode
+    = NRCRMGlobal
+      -- ^ @GLOBAL@
+    | NRCRMRegional
+      -- ^ @REGIONAL@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkRoutingConfigRoutingMode
+
+instance FromHttpApiData NetworkRoutingConfigRoutingMode where
+    parseQueryParam = \case
+        "GLOBAL" -> Right NRCRMGlobal
+        "REGIONAL" -> Right NRCRMRegional
+        x -> Left ("Unable to parse NetworkRoutingConfigRoutingMode from: " <> x)
+
+instance ToHttpApiData NetworkRoutingConfigRoutingMode where
+    toQueryParam = \case
+        NRCRMGlobal -> "GLOBAL"
+        NRCRMRegional -> "REGIONAL"
+
+instance FromJSON NetworkRoutingConfigRoutingMode where
+    parseJSON = parseJSONText "NetworkRoutingConfigRoutingMode"
+
+instance ToJSON NetworkRoutingConfigRoutingMode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SubnetworkListWarningCode
+    = SCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SubnetworkListWarningCode
+
+instance FromHttpApiData SubnetworkListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SUndeclaredProperties
+        "UNREACHABLE" -> Right SUnreachable
+        x -> Left ("Unable to parse SubnetworkListWarningCode from: " <> x)
+
+instance ToHttpApiData SubnetworkListWarningCode where
+    toQueryParam = \case
+        SCleanupFailed -> "CLEANUP_FAILED"
+        SDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SUnreachable -> "UNREACHABLE"
+
+instance FromJSON SubnetworkListWarningCode where
+    parseJSON = parseJSONText "SubnetworkListWarningCode"
+
+instance ToJSON SubnetworkListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the commitment with regards to eventual
+-- expiration (each commitment has an end date defined). One of the
+-- following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+data CommitmentStatus
+    = CSActive
+      -- ^ @ACTIVE@
+    | CSCreating
+      -- ^ @CREATING@
+    | CSExpired
+      -- ^ @EXPIRED@
+    | CSNotYetActive
+      -- ^ @NOT_YET_ACTIVE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CommitmentStatus
+
+instance FromHttpApiData CommitmentStatus where
+    parseQueryParam = \case
+        "ACTIVE" -> Right CSActive
+        "CREATING" -> Right CSCreating
+        "EXPIRED" -> Right CSExpired
+        "NOT_YET_ACTIVE" -> Right CSNotYetActive
+        x -> Left ("Unable to parse CommitmentStatus from: " <> x)
+
+instance ToHttpApiData CommitmentStatus where
+    toQueryParam = \case
+        CSActive -> "ACTIVE"
+        CSCreating -> "CREATING"
+        CSExpired -> "EXPIRED"
+        CSNotYetActive -> "NOT_YET_ACTIVE"
+
+instance FromJSON CommitmentStatus where
+    parseJSON = parseJSONText "CommitmentStatus"
+
+instance ToJSON CommitmentStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InterconnectListWarningCode
+    = ICleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | INextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | INextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | INextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | INextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | INextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | INotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | INoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ISchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ISingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectListWarningCode
+
+instance FromHttpApiData InterconnectListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ICleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right INextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right INextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right INextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right INextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right INextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right INotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right INoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ISchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ISingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IUndeclaredProperties
+        "UNREACHABLE" -> Right IUnreachable
+        x -> Left ("Unable to parse InterconnectListWarningCode from: " <> x)
+
+instance ToHttpApiData InterconnectListWarningCode where
+    toQueryParam = \case
+        ICleanupFailed -> "CLEANUP_FAILED"
+        IDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        INextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        INextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        INextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        INextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        INextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        INotCriticalError -> "NOT_CRITICAL_ERROR"
+        INoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ISchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ISingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IUnreachable -> "UNREACHABLE"
+
+instance FromJSON InterconnectListWarningCode where
+    parseJSON = parseJSONText "InterconnectListWarningCode"
+
+instance ToJSON InterconnectListWarningCode where
+    toJSON = toJSONText
+
+-- | The minimum version of SSL protocol that can be used by the clients to
+-- establish a connection with the load balancer. This can be one of
+-- TLS_1_0, TLS_1_1, TLS_1_2.
+data SSLPolicyMinTLSVersion
+    = TLS10
+      -- ^ @TLS_1_0@
+    | TLS11
+      -- ^ @TLS_1_1@
+    | TLS12
+      -- ^ @TLS_1_2@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLPolicyMinTLSVersion
+
+instance FromHttpApiData SSLPolicyMinTLSVersion where
+    parseQueryParam = \case
+        "TLS_1_0" -> Right TLS10
+        "TLS_1_1" -> Right TLS11
+        "TLS_1_2" -> Right TLS12
+        x -> Left ("Unable to parse SSLPolicyMinTLSVersion from: " <> x)
+
+instance ToHttpApiData SSLPolicyMinTLSVersion where
+    toQueryParam = \case
+        TLS10 -> "TLS_1_0"
+        TLS11 -> "TLS_1_1"
+        TLS12 -> "TLS_1_2"
+
+instance FromJSON SSLPolicyMinTLSVersion where
+    parseJSON = parseJSONText "SSLPolicyMinTLSVersion"
+
+instance ToJSON SSLPolicyMinTLSVersion where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data HTTPHealthCheckListWarningCode
+    = HTTPHCLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | HTTPHCLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | HTTPHCLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | HTTPHCLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | HTTPHCLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | HTTPHCLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | HTTPHCLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | HTTPHCLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | HTTPHCLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | HTTPHCLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | HTTPHCLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | HTTPHCLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | HTTPHCLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | HTTPHCLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | HTTPHCLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | HTTPHCLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | HTTPHCLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | HTTPHCLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | HTTPHCLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | HTTPHCLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | HTTPHCLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | HTTPHCLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | HTTPHCLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPHealthCheckListWarningCode
+
+instance FromHttpApiData HTTPHealthCheckListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right HTTPHCLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right HTTPHCLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right HTTPHCLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right HTTPHCLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right HTTPHCLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right HTTPHCLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right HTTPHCLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right HTTPHCLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right HTTPHCLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right HTTPHCLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right HTTPHCLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right HTTPHCLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right HTTPHCLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right HTTPHCLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right HTTPHCLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right HTTPHCLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right HTTPHCLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right HTTPHCLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right HTTPHCLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right HTTPHCLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right HTTPHCLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right HTTPHCLWCUndeclaredProperties
+        "UNREACHABLE" -> Right HTTPHCLWCUnreachable
+        x -> Left ("Unable to parse HTTPHealthCheckListWarningCode from: " <> x)
+
+instance ToHttpApiData HTTPHealthCheckListWarningCode where
+    toQueryParam = \case
+        HTTPHCLWCCleanupFailed -> "CLEANUP_FAILED"
+        HTTPHCLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        HTTPHCLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        HTTPHCLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        HTTPHCLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        HTTPHCLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        HTTPHCLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        HTTPHCLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        HTTPHCLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        HTTPHCLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        HTTPHCLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        HTTPHCLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        HTTPHCLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        HTTPHCLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        HTTPHCLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        HTTPHCLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        HTTPHCLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        HTTPHCLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        HTTPHCLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        HTTPHCLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        HTTPHCLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        HTTPHCLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        HTTPHCLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON HTTPHealthCheckListWarningCode where
+    parseJSON = parseJSONText "HTTPHealthCheckListWarningCode"
+
+instance ToJSON HTTPHealthCheckListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SSLPoliciesListWarningCode
+    = SPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLPoliciesListWarningCode
+
+instance FromHttpApiData SSLPoliciesListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right SPLWCUnreachable
+        x -> Left ("Unable to parse SSLPoliciesListWarningCode from: " <> x)
+
+instance ToHttpApiData SSLPoliciesListWarningCode where
+    toQueryParam = \case
+        SPLWCCleanupFailed -> "CLEANUP_FAILED"
+        SPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON SSLPoliciesListWarningCode where
+    parseJSON = parseJSONText "SSLPoliciesListWarningCode"
+
+instance ToJSON SSLPoliciesListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The current status of whether or not this interconnect
+-- attachment is functional.
+data InterconnectAttachmentOperationalStatus
+    = OSActive
+      -- ^ @OS_ACTIVE@
+    | OSUnprovisioned
+      -- ^ @OS_UNPROVISIONED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentOperationalStatus
+
+instance FromHttpApiData InterconnectAttachmentOperationalStatus where
+    parseQueryParam = \case
+        "OS_ACTIVE" -> Right OSActive
+        "OS_UNPROVISIONED" -> Right OSUnprovisioned
+        x -> Left ("Unable to parse InterconnectAttachmentOperationalStatus from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentOperationalStatus where
+    toQueryParam = \case
+        OSActive -> "OS_ACTIVE"
+        OSUnprovisioned -> "OS_UNPROVISIONED"
+
+instance FromJSON InterconnectAttachmentOperationalStatus where
+    parseJSON = parseJSONText "InterconnectAttachmentOperationalStatus"
+
+instance ToJSON InterconnectAttachmentOperationalStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetTCPProxyListWarningCode
+    = TTPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TTPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TTPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TTPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TTPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TTPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TTPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TTPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TTPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TTPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TTPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TTPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TTPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TTPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TTPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TTPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TTPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TTPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TTPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TTPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TTPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TTPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TTPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetTCPProxyListWarningCode
+
+instance FromHttpApiData TargetTCPProxyListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TTPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TTPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TTPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TTPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TTPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TTPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TTPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TTPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TTPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TTPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TTPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TTPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TTPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TTPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TTPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TTPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TTPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TTPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TTPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TTPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TTPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TTPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TTPLWCUnreachable
+        x -> Left ("Unable to parse TargetTCPProxyListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetTCPProxyListWarningCode where
+    toQueryParam = \case
+        TTPLWCCleanupFailed -> "CLEANUP_FAILED"
+        TTPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TTPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TTPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TTPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TTPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TTPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TTPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TTPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TTPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TTPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TTPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TTPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TTPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TTPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TTPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TTPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TTPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TTPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TTPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TTPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TTPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TTPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetTCPProxyListWarningCode where
+    parseJSON = parseJSONText "TargetTCPProxyListWarningCode"
+
+instance ToJSON TargetTCPProxyListWarningCode where
+    toJSON = toJSONText
+
+-- | The log type that this config enables.
+data AuditLogConfigLogType
+    = AdminRead
+      -- ^ @ADMIN_READ@
+    | DataRead
+      -- ^ @DATA_READ@
+    | DataWrite
+      -- ^ @DATA_WRITE@
+    | LogTypeUnspecified
+      -- ^ @LOG_TYPE_UNSPECIFIED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuditLogConfigLogType
+
+instance FromHttpApiData AuditLogConfigLogType where
+    parseQueryParam = \case
+        "ADMIN_READ" -> Right AdminRead
+        "DATA_READ" -> Right DataRead
+        "DATA_WRITE" -> Right DataWrite
+        "LOG_TYPE_UNSPECIFIED" -> Right LogTypeUnspecified
+        x -> Left ("Unable to parse AuditLogConfigLogType from: " <> x)
+
+instance ToHttpApiData AuditLogConfigLogType where
+    toQueryParam = \case
+        AdminRead -> "ADMIN_READ"
+        DataRead -> "DATA_READ"
+        DataWrite -> "DATA_WRITE"
+        LogTypeUnspecified -> "LOG_TYPE_UNSPECIFIED"
+
+instance FromJSON AuditLogConfigLogType where
+    parseJSON = parseJSONText "AuditLogConfigLogType"
+
+instance ToJSON AuditLogConfigLogType where
+    toJSON = toJSONText
+
+-- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
+-- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL, only
+-- TCP and UDP are valid. When the load balancing scheme is
+-- INTERNAL_SELF_MANAGED, only TCPis valid.
+data ForwardingRuleIPProtocol
+    = FRIPAH
+      -- ^ @AH@
+    | FRIPEsp
+      -- ^ @ESP@
+    | FRIPICMP
+      -- ^ @ICMP@
+    | FRIPSctp
+      -- ^ @SCTP@
+    | FRIPTCP
+      -- ^ @TCP@
+    | FRIPUdp
+      -- ^ @UDP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleIPProtocol
+
+instance FromHttpApiData ForwardingRuleIPProtocol where
+    parseQueryParam = \case
+        "AH" -> Right FRIPAH
+        "ESP" -> Right FRIPEsp
+        "ICMP" -> Right FRIPICMP
+        "SCTP" -> Right FRIPSctp
+        "TCP" -> Right FRIPTCP
+        "UDP" -> Right FRIPUdp
+        x -> Left ("Unable to parse ForwardingRuleIPProtocol from: " <> x)
+
+instance ToHttpApiData ForwardingRuleIPProtocol where
+    toQueryParam = \case
+        FRIPAH -> "AH"
+        FRIPEsp -> "ESP"
+        FRIPICMP -> "ICMP"
+        FRIPSctp -> "SCTP"
+        FRIPTCP -> "TCP"
+        FRIPUdp -> "UDP"
+
+instance FromJSON ForwardingRuleIPProtocol where
+    parseJSON = parseJSONText "ForwardingRuleIPProtocol"
+
+instance ToJSON ForwardingRuleIPProtocol where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data ImageListWarningCode
+    = IMACleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IMADeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IMADeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IMADiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IMAExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IMAExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IMAFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IMAInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IMAMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IMANextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IMANextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IMANextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IMANextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IMANextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IMANotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IMANoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IMARequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IMAResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IMAResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IMASchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IMASingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IMAUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IMAUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ImageListWarningCode
+
+instance FromHttpApiData ImageListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IMACleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IMADeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IMADeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IMADiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IMAExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IMAExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IMAFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IMAInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IMAMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IMANextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IMANextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IMANextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IMANextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IMANextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IMANotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IMANoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IMARequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IMAResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IMAResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IMASchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IMASingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IMAUndeclaredProperties
+        "UNREACHABLE" -> Right IMAUnreachable
+        x -> Left ("Unable to parse ImageListWarningCode from: " <> x)
+
+instance ToHttpApiData ImageListWarningCode where
+    toQueryParam = \case
+        IMACleanupFailed -> "CLEANUP_FAILED"
+        IMADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IMADeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IMADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IMAExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IMAExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IMAFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IMAInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IMAMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IMANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IMANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IMANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IMANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IMANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IMANotCriticalError -> "NOT_CRITICAL_ERROR"
+        IMANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IMARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IMAResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IMAResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IMASchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IMASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IMAUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IMAUnreachable -> "UNREACHABLE"
+
+instance FromJSON ImageListWarningCode where
+    parseJSON = parseJSONText "ImageListWarningCode"
+
+instance ToJSON ImageListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the address, which can be one of RESERVING,
+-- RESERVED, or IN_USE. An address that is RESERVING is currently in the
+-- process of being reserved. A RESERVED address is currently reserved and
+-- available to use. An IN_USE address is currently being used by another
+-- resource and is not available.
+data AddressStatus
+    = InUse
+      -- ^ @IN_USE@
+    | Reserved
+      -- ^ @RESERVED@
+    | Reserving
+      -- ^ @RESERVING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressStatus
+
+instance FromHttpApiData AddressStatus where
+    parseQueryParam = \case
+        "IN_USE" -> Right InUse
+        "RESERVED" -> Right Reserved
+        "RESERVING" -> Right Reserving
+        x -> Left ("Unable to parse AddressStatus from: " <> x)
+
+instance ToHttpApiData AddressStatus where
+    toQueryParam = \case
+        InUse -> "IN_USE"
+        Reserved -> "RESERVED"
+        Reserving -> "RESERVING"
+
+instance FromJSON AddressStatus where
+    parseJSON = parseJSONText "AddressStatus"
+
+instance ToJSON AddressStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AcceleratorTypeListWarningCode
+    = ATLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ATLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ATLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ATLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ATLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ATLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ATLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ATLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ATLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ATLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ATLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ATLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ATLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ATLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ATLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ATLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ATLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ATLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ATLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ATLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ATLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ATLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ATLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AcceleratorTypeListWarningCode
+
+instance FromHttpApiData AcceleratorTypeListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ATLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ATLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ATLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ATLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ATLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ATLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ATLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ATLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ATLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ATLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ATLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ATLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ATLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ATLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ATLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ATLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ATLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ATLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ATLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ATLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ATLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ATLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ATLWCUnreachable
+        x -> Left ("Unable to parse AcceleratorTypeListWarningCode from: " <> x)
+
+instance ToHttpApiData AcceleratorTypeListWarningCode where
+    toQueryParam = \case
+        ATLWCCleanupFailed -> "CLEANUP_FAILED"
+        ATLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ATLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ATLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ATLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ATLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ATLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ATLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ATLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ATLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ATLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ATLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ATLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ATLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ATLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ATLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ATLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ATLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ATLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ATLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ATLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ATLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ATLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AcceleratorTypeListWarningCode where
+    parseJSON = parseJSONText "AcceleratorTypeListWarningCode"
+
+instance ToJSON AcceleratorTypeListWarningCode where
+    toJSON = toJSONText
+
+-- | This signifies the networking tier used for configuring this Address and
+-- can only take the following values: PREMIUM, STANDARD. Global forwarding
+-- rules can only be Premium Tier. Regional forwarding rules can be either
+-- Premium or Standard Tier. Standard Tier addresses applied to regional
+-- forwarding rules can be used with any external load balancer. Regional
+-- forwarding rules in Premium Tier can only be used with a Network load
+-- balancer. If this field is not specified, it is assumed to be PREMIUM.
+data AddressNetworkTier
+    = ANTPremium
+      -- ^ @PREMIUM@
+    | ANTStandard
+      -- ^ @STANDARD@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressNetworkTier
+
+instance FromHttpApiData AddressNetworkTier where
+    parseQueryParam = \case
+        "PREMIUM" -> Right ANTPremium
+        "STANDARD" -> Right ANTStandard
+        x -> Left ("Unable to parse AddressNetworkTier from: " <> x)
+
+instance ToHttpApiData AddressNetworkTier where
+    toQueryParam = \case
+        ANTPremium -> "PREMIUM"
+        ANTStandard -> "STANDARD"
+
+instance FromJSON AddressNetworkTier where
+    parseJSON = parseJSONText "AddressNetworkTier"
+
+instance ToJSON AddressNetworkTier where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data URLMapListWarningCode
+    = UMLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | UMLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | UMLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | UMLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | UMLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | UMLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | UMLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | UMLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | UMLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | UMLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | UMLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | UMLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | UMLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | UMLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | UMLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | UMLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | UMLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | UMLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | UMLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | UMLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | UMLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | UMLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | UMLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable URLMapListWarningCode
+
+instance FromHttpApiData URLMapListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right UMLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right UMLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right UMLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right UMLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right UMLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right UMLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right UMLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right UMLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right UMLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right UMLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right UMLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right UMLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right UMLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right UMLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right UMLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right UMLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right UMLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right UMLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right UMLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right UMLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right UMLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right UMLWCUndeclaredProperties
+        "UNREACHABLE" -> Right UMLWCUnreachable
+        x -> Left ("Unable to parse URLMapListWarningCode from: " <> x)
+
+instance ToHttpApiData URLMapListWarningCode where
+    toQueryParam = \case
+        UMLWCCleanupFailed -> "CLEANUP_FAILED"
+        UMLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        UMLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        UMLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        UMLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        UMLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        UMLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        UMLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        UMLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        UMLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        UMLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        UMLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        UMLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        UMLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        UMLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        UMLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        UMLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        UMLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        UMLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        UMLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        UMLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        UMLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        UMLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON URLMapListWarningCode where
+    parseJSON = parseJSONText "URLMapListWarningCode"
+
+instance ToJSON URLMapListWarningCode where
+    toJSON = toJSONText
+
+-- | A filter for the state of the instances in the instance group. Valid
+-- options are ALL or RUNNING. If you do not specify this parameter the
+-- list includes all instances regardless of their state.
+data InstanceGroupsListInstancesRequestInstanceState
+    = IGLIRISAll
+      -- ^ @ALL@
+    | IGLIRISRunning
+      -- ^ @RUNNING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupsListInstancesRequestInstanceState
+
+instance FromHttpApiData InstanceGroupsListInstancesRequestInstanceState where
+    parseQueryParam = \case
+        "ALL" -> Right IGLIRISAll
+        "RUNNING" -> Right IGLIRISRunning
+        x -> Left ("Unable to parse InstanceGroupsListInstancesRequestInstanceState from: " <> x)
+
+instance ToHttpApiData InstanceGroupsListInstancesRequestInstanceState where
+    toQueryParam = \case
+        IGLIRISAll -> "ALL"
+        IGLIRISRunning -> "RUNNING"
+
+instance FromJSON InstanceGroupsListInstancesRequestInstanceState where
+    parseJSON = parseJSONText "InstanceGroupsListInstancesRequestInstanceState"
+
+instance ToJSON InstanceGroupsListInstancesRequestInstanceState where
+    toJSON = toJSONText
+
+-- | Defines the operation of node selection.
+data SchedulingNodeAffinityOperator
+    = SNAOIN
+      -- ^ @IN@
+    | SNAONotIn
+      -- ^ @NOT_IN@
+    | SNAOOperatorUnspecified
+      -- ^ @OPERATOR_UNSPECIFIED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SchedulingNodeAffinityOperator
+
+instance FromHttpApiData SchedulingNodeAffinityOperator where
+    parseQueryParam = \case
+        "IN" -> Right SNAOIN
+        "NOT_IN" -> Right SNAONotIn
+        "OPERATOR_UNSPECIFIED" -> Right SNAOOperatorUnspecified
+        x -> Left ("Unable to parse SchedulingNodeAffinityOperator from: " <> x)
+
+instance ToHttpApiData SchedulingNodeAffinityOperator where
+    toQueryParam = \case
+        SNAOIN -> "IN"
+        SNAONotIn -> "NOT_IN"
+        SNAOOperatorUnspecified -> "OPERATOR_UNSPECIFIED"
+
+instance FromJSON SchedulingNodeAffinityOperator where
+    parseJSON = parseJSONText "SchedulingNodeAffinityOperator"
+
+instance ToJSON SchedulingNodeAffinityOperator where
+    toJSON = toJSONText
+
+-- | This signifies the default network tier used for configuring resources
+-- of the project and can only take the following values: PREMIUM,
+-- STANDARD. Initially the default network tier is PREMIUM.
+data ProjectDefaultNetworkTier
+    = PDNTPremium
+      -- ^ @PREMIUM@
+    | PDNTStandard
+      -- ^ @STANDARD@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ProjectDefaultNetworkTier
+
+instance FromHttpApiData ProjectDefaultNetworkTier where
+    parseQueryParam = \case
+        "PREMIUM" -> Right PDNTPremium
+        "STANDARD" -> Right PDNTStandard
+        x -> Left ("Unable to parse ProjectDefaultNetworkTier from: " <> x)
+
+instance ToHttpApiData ProjectDefaultNetworkTier where
+    toQueryParam = \case
+        PDNTPremium -> "PREMIUM"
+        PDNTStandard -> "STANDARD"
+
+instance FromJSON ProjectDefaultNetworkTier where
+    parseJSON = parseJSONText "ProjectDefaultNetworkTier"
+
+instance ToJSON ProjectDefaultNetworkTier where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeGroupListWarningCode
+    = NGLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NGLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NGLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NGLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NGLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NGLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NGLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NGLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NGLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NGLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NGLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NGLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NGLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NGLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NGLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NGLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NGLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NGLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NGLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NGLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NGLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NGLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NGLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeGroupListWarningCode
+
+instance FromHttpApiData NodeGroupListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NGLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NGLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NGLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NGLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NGLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NGLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NGLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NGLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NGLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NGLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NGLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NGLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NGLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NGLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NGLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NGLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NGLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NGLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NGLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NGLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NGLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NGLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NGLWCUnreachable
+        x -> Left ("Unable to parse NodeGroupListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeGroupListWarningCode where
+    toQueryParam = \case
+        NGLWCCleanupFailed -> "CLEANUP_FAILED"
+        NGLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NGLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NGLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NGLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NGLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NGLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NGLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NGLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NGLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NGLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NGLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NGLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NGLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NGLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NGLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NGLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NGLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NGLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NGLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NGLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NGLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NGLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeGroupListWarningCode where
+    parseJSON = parseJSONText "NodeGroupListWarningCode"
+
+instance ToJSON NodeGroupListWarningCode where
+    toJSON = toJSONText
+
+-- | Specify the Nat option. If this field contains
+-- ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES,
+-- then there should not be any other Router.Nat section in any Router for
+-- this network in this region.
+data RouterNATSourceSubnetworkIPRangesToNAT
+    = AllSubnetworksAllIPRanges
+      -- ^ @ALL_SUBNETWORKS_ALL_IP_RANGES@
+    | AllSubnetworksAllPrimaryIPRanges
+      -- ^ @ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES@
+    | ListOfSubnetworks
+      -- ^ @LIST_OF_SUBNETWORKS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterNATSourceSubnetworkIPRangesToNAT
+
+instance FromHttpApiData RouterNATSourceSubnetworkIPRangesToNAT where
+    parseQueryParam = \case
+        "ALL_SUBNETWORKS_ALL_IP_RANGES" -> Right AllSubnetworksAllIPRanges
+        "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES" -> Right AllSubnetworksAllPrimaryIPRanges
+        "LIST_OF_SUBNETWORKS" -> Right ListOfSubnetworks
+        x -> Left ("Unable to parse RouterNATSourceSubnetworkIPRangesToNAT from: " <> x)
+
+instance ToHttpApiData RouterNATSourceSubnetworkIPRangesToNAT where
+    toQueryParam = \case
+        AllSubnetworksAllIPRanges -> "ALL_SUBNETWORKS_ALL_IP_RANGES"
+        AllSubnetworksAllPrimaryIPRanges -> "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES"
+        ListOfSubnetworks -> "LIST_OF_SUBNETWORKS"
+
+instance FromJSON RouterNATSourceSubnetworkIPRangesToNAT where
+    parseJSON = parseJSONText "RouterNATSourceSubnetworkIPRangesToNAT"
+
+instance ToJSON RouterNATSourceSubnetworkIPRangesToNAT where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data HTTPSHealthCheckProxyHeader
+    = HHCPHNone
+      -- ^ @NONE@
+    | HHCPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPSHealthCheckProxyHeader
+
+instance FromHttpApiData HTTPSHealthCheckProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right HHCPHNone
+        "PROXY_V1" -> Right HHCPHProxyV1
+        x -> Left ("Unable to parse HTTPSHealthCheckProxyHeader from: " <> x)
+
+instance ToHttpApiData HTTPSHealthCheckProxyHeader where
+    toQueryParam = \case
+        HHCPHNone -> "NONE"
+        HHCPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON HTTPSHealthCheckProxyHeader where
+    parseJSON = parseJSONText "HTTPSHealthCheckProxyHeader"
+
+instance ToJSON HTTPSHealthCheckProxyHeader where
+    toJSON = toJSONText
+
+-- | Specifies the disk interface to use for attaching this disk, which is
+-- either SCSI or NVME. The default is SCSI. Persistent disks must always
+-- use SCSI and the request will fail if you attempt to attach a persistent
+-- disk in any other format than SCSI. Local SSDs can use either NVME or
+-- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD
+-- performance.
+data AttachedDiskInterface
+    = Nvme
+      -- ^ @NVME@
+    | Scsi
+      -- ^ @SCSI@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AttachedDiskInterface
+
+instance FromHttpApiData AttachedDiskInterface where
+    parseQueryParam = \case
+        "NVME" -> Right Nvme
+        "SCSI" -> Right Scsi
+        x -> Left ("Unable to parse AttachedDiskInterface from: " <> x)
+
+instance ToHttpApiData AttachedDiskInterface where
+    toQueryParam = \case
+        Nvme -> "NVME"
+        Scsi -> "SCSI"
+
+instance FromJSON AttachedDiskInterface where
+    parseJSON = parseJSONText "AttachedDiskInterface"
+
+instance ToJSON AttachedDiskInterface where
+    toJSON = toJSONText
+
+-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
+-- If not specified, the default is TCP. Exactly one of the
+-- protocol-specific health check field must be specified, which must match
+-- type field.
+data HealthCheckType
+    = HCTHTTP
+      -- ^ @HTTP@
+    | HCTHTTPS
+      -- ^ @HTTPS@
+    | HCTInvalid
+      -- ^ @INVALID@
+    | HCTSSL
+      -- ^ @SSL@
+    | HCTTCP
+      -- ^ @TCP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HealthCheckType
+
+instance FromHttpApiData HealthCheckType where
+    parseQueryParam = \case
+        "HTTP" -> Right HCTHTTP
+        "HTTPS" -> Right HCTHTTPS
+        "INVALID" -> Right HCTInvalid
+        "SSL" -> Right HCTSSL
+        "TCP" -> Right HCTTCP
+        x -> Left ("Unable to parse HealthCheckType from: " <> x)
+
+instance ToHttpApiData HealthCheckType where
+    toQueryParam = \case
+        HCTHTTP -> "HTTP"
+        HCTHTTPS -> "HTTPS"
+        HCTInvalid -> "INVALID"
+        HCTSSL -> "SSL"
+        HCTTCP -> "TCP"
+
+instance FromJSON HealthCheckType where
+    parseJSON = parseJSONText "HealthCheckType"
+
+instance ToJSON HealthCheckType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionInstanceGroupsListInstancesWarningCode
+    = RIGLIWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RIGLIWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RIGLIWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RIGLIWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RIGLIWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RIGLIWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RIGLIWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RIGLIWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RIGLIWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RIGLIWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RIGLIWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RIGLIWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RIGLIWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RIGLIWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RIGLIWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RIGLIWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RIGLIWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RIGLIWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RIGLIWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RIGLIWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RIGLIWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RIGLIWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RIGLIWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionInstanceGroupsListInstancesWarningCode
+
+instance FromHttpApiData RegionInstanceGroupsListInstancesWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RIGLIWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RIGLIWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RIGLIWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RIGLIWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RIGLIWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RIGLIWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RIGLIWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RIGLIWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RIGLIWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RIGLIWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RIGLIWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RIGLIWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RIGLIWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RIGLIWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RIGLIWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RIGLIWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RIGLIWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RIGLIWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RIGLIWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RIGLIWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RIGLIWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RIGLIWCUndeclaredProperties
+        "UNREACHABLE" -> Right RIGLIWCUnreachable
+        x -> Left ("Unable to parse RegionInstanceGroupsListInstancesWarningCode from: " <> x)
+
+instance ToHttpApiData RegionInstanceGroupsListInstancesWarningCode where
+    toQueryParam = \case
+        RIGLIWCCleanupFailed -> "CLEANUP_FAILED"
+        RIGLIWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RIGLIWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RIGLIWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RIGLIWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RIGLIWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RIGLIWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RIGLIWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RIGLIWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RIGLIWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RIGLIWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RIGLIWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RIGLIWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RIGLIWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RIGLIWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RIGLIWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RIGLIWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RIGLIWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RIGLIWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RIGLIWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RIGLIWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RIGLIWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RIGLIWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionInstanceGroupsListInstancesWarningCode where
+    parseJSON = parseJSONText "RegionInstanceGroupsListInstancesWarningCode"
+
+instance ToJSON RegionInstanceGroupsListInstancesWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the zone, either UP or DOWN.
+data ZoneStatus
+    = ZSDown
+      -- ^ @DOWN@
+    | ZSUP
+      -- ^ @UP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ZoneStatus
+
+instance FromHttpApiData ZoneStatus where
+    parseQueryParam = \case
+        "DOWN" -> Right ZSDown
+        "UP" -> Right ZSUP
+        x -> Left ("Unable to parse ZoneStatus from: " <> x)
+
+instance ToHttpApiData ZoneStatus where
+    toQueryParam = \case
+        ZSDown -> "DOWN"
+        ZSUP -> "UP"
+
+instance FromJSON ZoneStatus where
+    parseJSON = parseJSONText "ZoneStatus"
+
+instance ToJSON ZoneStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SubnetworksScopedListWarningCode
+    = SSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SubnetworksScopedListWarningCode
+
+instance FromHttpApiData SubnetworksScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right SSLWCUnreachable
+        x -> Left ("Unable to parse SubnetworksScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData SubnetworksScopedListWarningCode where
+    toQueryParam = \case
+        SSLWCCleanupFailed -> "CLEANUP_FAILED"
+        SSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON SubnetworksScopedListWarningCode where
+    parseJSON = parseJSONText "SubnetworksScopedListWarningCode"
+
+instance ToJSON SubnetworksScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] Name of the quota metric.
+data QuotaMetric
+    = Autoscalers
+      -- ^ @AUTOSCALERS@
+    | BackendBuckets
+      -- ^ @BACKEND_BUCKETS@
+    | BackendServices
+      -- ^ @BACKEND_SERVICES@
+    | Commitments
+      -- ^ @COMMITMENTS@
+    | CPUs
+      -- ^ @CPUS@
+    | CPUsAllRegions
+      -- ^ @CPUS_ALL_REGIONS@
+    | DisksTotalGb
+      -- ^ @DISKS_TOTAL_GB@
+    | Firewalls
+      -- ^ @FIREWALLS@
+    | ForwardingRules
+      -- ^ @FORWARDING_RULES@
+    | GlobalInternalAddresses
+      -- ^ @GLOBAL_INTERNAL_ADDRESSES@
+    | GpusAllRegions
+      -- ^ @GPUS_ALL_REGIONS@
+    | HealthChecks
+      -- ^ @HEALTH_CHECKS@
+    | Images
+      -- ^ @IMAGES@
+    | Instances
+      -- ^ @INSTANCES@
+    | InstanceGroups
+      -- ^ @INSTANCE_GROUPS@
+    | InstanceGroupManagers
+      -- ^ @INSTANCE_GROUP_MANAGERS@
+    | InstanceTemplates
+      -- ^ @INSTANCE_TEMPLATES@
+    | Interconnects
+      -- ^ @INTERCONNECTS@
+    | InterconnectAttachmentsPerRegion
+      -- ^ @INTERCONNECT_ATTACHMENTS_PER_REGION@
+    | InterconnectAttachmentsTotalMbps
+      -- ^ @INTERCONNECT_ATTACHMENTS_TOTAL_MBPS@
+    | InternalAddresses
+      -- ^ @INTERNAL_ADDRESSES@
+    | InUseAddresses
+      -- ^ @IN_USE_ADDRESSES@
+    | InUseBackupSchedules
+      -- ^ @IN_USE_BACKUP_SCHEDULES@
+    | LocalSsdTotalGb
+      -- ^ @LOCAL_SSD_TOTAL_GB@
+    | Networks
+      -- ^ @NETWORKS@
+    | NvidiaK80Gpus
+      -- ^ @NVIDIA_K80_GPUS@
+    | NvidiaP100Gpus
+      -- ^ @NVIDIA_P100_GPUS@
+    | NvidiaP100VwsGpus
+      -- ^ @NVIDIA_P100_VWS_GPUS@
+    | NvidiaP4Gpus
+      -- ^ @NVIDIA_P4_GPUS@
+    | NvidiaP4VwsGpus
+      -- ^ @NVIDIA_P4_VWS_GPUS@
+    | NvidiaT4Gpus
+      -- ^ @NVIDIA_T4_GPUS@
+    | NvidiaT4VwsGpus
+      -- ^ @NVIDIA_T4_VWS_GPUS@
+    | NvidiaV100Gpus
+      -- ^ @NVIDIA_V100_GPUS@
+    | PreemptibleCPUs
+      -- ^ @PREEMPTIBLE_CPUS@
+    | PreemptibleLocalSsdGb
+      -- ^ @PREEMPTIBLE_LOCAL_SSD_GB@
+    | PreemptibleNvidiaK80Gpus
+      -- ^ @PREEMPTIBLE_NVIDIA_K80_GPUS@
+    | PreemptibleNvidiaP100Gpus
+      -- ^ @PREEMPTIBLE_NVIDIA_P100_GPUS@
+    | PreemptibleNvidiaP100VwsGpus
+      -- ^ @PREEMPTIBLE_NVIDIA_P100_VWS_GPUS@
+    | PreemptibleNvidiaP4Gpus
+      -- ^ @PREEMPTIBLE_NVIDIA_P4_GPUS@
+    | PreemptibleNvidiaP4VwsGpus
+      -- ^ @PREEMPTIBLE_NVIDIA_P4_VWS_GPUS@
+    | PreemptibleNvidiaT4Gpus
+      -- ^ @PREEMPTIBLE_NVIDIA_T4_GPUS@
+    | PreemptibleNvidiaT4VwsGpus
+      -- ^ @PREEMPTIBLE_NVIDIA_T4_VWS_GPUS@
+    | PreemptibleNvidiaV100Gpus
+      -- ^ @PREEMPTIBLE_NVIDIA_V100_GPUS@
+    | RegionalAutoscalers
+      -- ^ @REGIONAL_AUTOSCALERS@
+    | RegionalInstanceGroupManagers
+      -- ^ @REGIONAL_INSTANCE_GROUP_MANAGERS@
+    | ResourcePolicies
+      -- ^ @RESOURCE_POLICIES@
+    | Routers
+      -- ^ @ROUTERS@
+    | Routes
+      -- ^ @ROUTES@
+    | SecurityPolicies
+      -- ^ @SECURITY_POLICIES@
+    | SecurityPolicyRules
+      -- ^ @SECURITY_POLICY_RULES@
+    | Snapshots
+      -- ^ @SNAPSHOTS@
+    | SsdTotalGb
+      -- ^ @SSD_TOTAL_GB@
+    | SSLCertificates
+      -- ^ @SSL_CERTIFICATES@
+    | StaticAddresses
+      -- ^ @STATIC_ADDRESSES@
+    | Subnetworks
+      -- ^ @SUBNETWORKS@
+    | TargetHTTPSProxies
+      -- ^ @TARGET_HTTPS_PROXIES@
+    | TargetHTTPProxies
+      -- ^ @TARGET_HTTP_PROXIES@
+    | TargetInstances
+      -- ^ @TARGET_INSTANCES@
+    | TargetPools
+      -- ^ @TARGET_POOLS@
+    | TargetSSLProxies
+      -- ^ @TARGET_SSL_PROXIES@
+    | TargetTCPProxies
+      -- ^ @TARGET_TCP_PROXIES@
+    | TargetVPNGateways
+      -- ^ @TARGET_VPN_GATEWAYS@
+    | URLMaps
+      -- ^ @URL_MAPS@
+    | VPNGateways
+      -- ^ @VPN_GATEWAYS@
+    | VPNTunnels
+      -- ^ @VPN_TUNNELS@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable QuotaMetric
+
+instance FromHttpApiData QuotaMetric where
+    parseQueryParam = \case
+        "AUTOSCALERS" -> Right Autoscalers
+        "BACKEND_BUCKETS" -> Right BackendBuckets
+        "BACKEND_SERVICES" -> Right BackendServices
+        "COMMITMENTS" -> Right Commitments
+        "CPUS" -> Right CPUs
+        "CPUS_ALL_REGIONS" -> Right CPUsAllRegions
+        "DISKS_TOTAL_GB" -> Right DisksTotalGb
+        "FIREWALLS" -> Right Firewalls
+        "FORWARDING_RULES" -> Right ForwardingRules
+        "GLOBAL_INTERNAL_ADDRESSES" -> Right GlobalInternalAddresses
+        "GPUS_ALL_REGIONS" -> Right GpusAllRegions
+        "HEALTH_CHECKS" -> Right HealthChecks
+        "IMAGES" -> Right Images
+        "INSTANCES" -> Right Instances
+        "INSTANCE_GROUPS" -> Right InstanceGroups
+        "INSTANCE_GROUP_MANAGERS" -> Right InstanceGroupManagers
+        "INSTANCE_TEMPLATES" -> Right InstanceTemplates
+        "INTERCONNECTS" -> Right Interconnects
+        "INTERCONNECT_ATTACHMENTS_PER_REGION" -> Right InterconnectAttachmentsPerRegion
+        "INTERCONNECT_ATTACHMENTS_TOTAL_MBPS" -> Right InterconnectAttachmentsTotalMbps
+        "INTERNAL_ADDRESSES" -> Right InternalAddresses
+        "IN_USE_ADDRESSES" -> Right InUseAddresses
+        "IN_USE_BACKUP_SCHEDULES" -> Right InUseBackupSchedules
+        "LOCAL_SSD_TOTAL_GB" -> Right LocalSsdTotalGb
+        "NETWORKS" -> Right Networks
+        "NVIDIA_K80_GPUS" -> Right NvidiaK80Gpus
+        "NVIDIA_P100_GPUS" -> Right NvidiaP100Gpus
+        "NVIDIA_P100_VWS_GPUS" -> Right NvidiaP100VwsGpus
+        "NVIDIA_P4_GPUS" -> Right NvidiaP4Gpus
+        "NVIDIA_P4_VWS_GPUS" -> Right NvidiaP4VwsGpus
+        "NVIDIA_T4_GPUS" -> Right NvidiaT4Gpus
+        "NVIDIA_T4_VWS_GPUS" -> Right NvidiaT4VwsGpus
+        "NVIDIA_V100_GPUS" -> Right NvidiaV100Gpus
+        "PREEMPTIBLE_CPUS" -> Right PreemptibleCPUs
+        "PREEMPTIBLE_LOCAL_SSD_GB" -> Right PreemptibleLocalSsdGb
+        "PREEMPTIBLE_NVIDIA_K80_GPUS" -> Right PreemptibleNvidiaK80Gpus
+        "PREEMPTIBLE_NVIDIA_P100_GPUS" -> Right PreemptibleNvidiaP100Gpus
+        "PREEMPTIBLE_NVIDIA_P100_VWS_GPUS" -> Right PreemptibleNvidiaP100VwsGpus
+        "PREEMPTIBLE_NVIDIA_P4_GPUS" -> Right PreemptibleNvidiaP4Gpus
+        "PREEMPTIBLE_NVIDIA_P4_VWS_GPUS" -> Right PreemptibleNvidiaP4VwsGpus
+        "PREEMPTIBLE_NVIDIA_T4_GPUS" -> Right PreemptibleNvidiaT4Gpus
+        "PREEMPTIBLE_NVIDIA_T4_VWS_GPUS" -> Right PreemptibleNvidiaT4VwsGpus
+        "PREEMPTIBLE_NVIDIA_V100_GPUS" -> Right PreemptibleNvidiaV100Gpus
+        "REGIONAL_AUTOSCALERS" -> Right RegionalAutoscalers
+        "REGIONAL_INSTANCE_GROUP_MANAGERS" -> Right RegionalInstanceGroupManagers
+        "RESOURCE_POLICIES" -> Right ResourcePolicies
+        "ROUTERS" -> Right Routers
+        "ROUTES" -> Right Routes
+        "SECURITY_POLICIES" -> Right SecurityPolicies
+        "SECURITY_POLICY_RULES" -> Right SecurityPolicyRules
+        "SNAPSHOTS" -> Right Snapshots
+        "SSD_TOTAL_GB" -> Right SsdTotalGb
+        "SSL_CERTIFICATES" -> Right SSLCertificates
+        "STATIC_ADDRESSES" -> Right StaticAddresses
+        "SUBNETWORKS" -> Right Subnetworks
+        "TARGET_HTTPS_PROXIES" -> Right TargetHTTPSProxies
+        "TARGET_HTTP_PROXIES" -> Right TargetHTTPProxies
+        "TARGET_INSTANCES" -> Right TargetInstances
+        "TARGET_POOLS" -> Right TargetPools
+        "TARGET_SSL_PROXIES" -> Right TargetSSLProxies
+        "TARGET_TCP_PROXIES" -> Right TargetTCPProxies
+        "TARGET_VPN_GATEWAYS" -> Right TargetVPNGateways
+        "URL_MAPS" -> Right URLMaps
+        "VPN_GATEWAYS" -> Right VPNGateways
+        "VPN_TUNNELS" -> Right VPNTunnels
+        x -> Left ("Unable to parse QuotaMetric from: " <> x)
+
+instance ToHttpApiData QuotaMetric where
+    toQueryParam = \case
+        Autoscalers -> "AUTOSCALERS"
+        BackendBuckets -> "BACKEND_BUCKETS"
+        BackendServices -> "BACKEND_SERVICES"
+        Commitments -> "COMMITMENTS"
+        CPUs -> "CPUS"
+        CPUsAllRegions -> "CPUS_ALL_REGIONS"
+        DisksTotalGb -> "DISKS_TOTAL_GB"
+        Firewalls -> "FIREWALLS"
+        ForwardingRules -> "FORWARDING_RULES"
+        GlobalInternalAddresses -> "GLOBAL_INTERNAL_ADDRESSES"
+        GpusAllRegions -> "GPUS_ALL_REGIONS"
+        HealthChecks -> "HEALTH_CHECKS"
+        Images -> "IMAGES"
+        Instances -> "INSTANCES"
+        InstanceGroups -> "INSTANCE_GROUPS"
+        InstanceGroupManagers -> "INSTANCE_GROUP_MANAGERS"
+        InstanceTemplates -> "INSTANCE_TEMPLATES"
+        Interconnects -> "INTERCONNECTS"
+        InterconnectAttachmentsPerRegion -> "INTERCONNECT_ATTACHMENTS_PER_REGION"
+        InterconnectAttachmentsTotalMbps -> "INTERCONNECT_ATTACHMENTS_TOTAL_MBPS"
+        InternalAddresses -> "INTERNAL_ADDRESSES"
+        InUseAddresses -> "IN_USE_ADDRESSES"
+        InUseBackupSchedules -> "IN_USE_BACKUP_SCHEDULES"
+        LocalSsdTotalGb -> "LOCAL_SSD_TOTAL_GB"
+        Networks -> "NETWORKS"
+        NvidiaK80Gpus -> "NVIDIA_K80_GPUS"
+        NvidiaP100Gpus -> "NVIDIA_P100_GPUS"
+        NvidiaP100VwsGpus -> "NVIDIA_P100_VWS_GPUS"
+        NvidiaP4Gpus -> "NVIDIA_P4_GPUS"
+        NvidiaP4VwsGpus -> "NVIDIA_P4_VWS_GPUS"
+        NvidiaT4Gpus -> "NVIDIA_T4_GPUS"
+        NvidiaT4VwsGpus -> "NVIDIA_T4_VWS_GPUS"
+        NvidiaV100Gpus -> "NVIDIA_V100_GPUS"
+        PreemptibleCPUs -> "PREEMPTIBLE_CPUS"
+        PreemptibleLocalSsdGb -> "PREEMPTIBLE_LOCAL_SSD_GB"
+        PreemptibleNvidiaK80Gpus -> "PREEMPTIBLE_NVIDIA_K80_GPUS"
+        PreemptibleNvidiaP100Gpus -> "PREEMPTIBLE_NVIDIA_P100_GPUS"
+        PreemptibleNvidiaP100VwsGpus -> "PREEMPTIBLE_NVIDIA_P100_VWS_GPUS"
+        PreemptibleNvidiaP4Gpus -> "PREEMPTIBLE_NVIDIA_P4_GPUS"
+        PreemptibleNvidiaP4VwsGpus -> "PREEMPTIBLE_NVIDIA_P4_VWS_GPUS"
+        PreemptibleNvidiaT4Gpus -> "PREEMPTIBLE_NVIDIA_T4_GPUS"
+        PreemptibleNvidiaT4VwsGpus -> "PREEMPTIBLE_NVIDIA_T4_VWS_GPUS"
+        PreemptibleNvidiaV100Gpus -> "PREEMPTIBLE_NVIDIA_V100_GPUS"
+        RegionalAutoscalers -> "REGIONAL_AUTOSCALERS"
+        RegionalInstanceGroupManagers -> "REGIONAL_INSTANCE_GROUP_MANAGERS"
+        ResourcePolicies -> "RESOURCE_POLICIES"
+        Routers -> "ROUTERS"
+        Routes -> "ROUTES"
+        SecurityPolicies -> "SECURITY_POLICIES"
+        SecurityPolicyRules -> "SECURITY_POLICY_RULES"
+        Snapshots -> "SNAPSHOTS"
+        SsdTotalGb -> "SSD_TOTAL_GB"
+        SSLCertificates -> "SSL_CERTIFICATES"
+        StaticAddresses -> "STATIC_ADDRESSES"
+        Subnetworks -> "SUBNETWORKS"
+        TargetHTTPSProxies -> "TARGET_HTTPS_PROXIES"
+        TargetHTTPProxies -> "TARGET_HTTP_PROXIES"
+        TargetInstances -> "TARGET_INSTANCES"
+        TargetPools -> "TARGET_POOLS"
+        TargetSSLProxies -> "TARGET_SSL_PROXIES"
+        TargetTCPProxies -> "TARGET_TCP_PROXIES"
+        TargetVPNGateways -> "TARGET_VPN_GATEWAYS"
+        URLMaps -> "URL_MAPS"
+        VPNGateways -> "VPN_GATEWAYS"
+        VPNTunnels -> "VPN_TUNNELS"
+
+instance FromJSON QuotaMetric where
+    parseJSON = parseJSONText "QuotaMetric"
+
+instance ToJSON QuotaMetric where
+    toJSON = toJSONText
+
+-- | [Output Only] The current state of whether or not this Interconnect is
+-- functional.
+data InterconnectState
+    = ISActive
+      -- ^ @ACTIVE@
+    | ISUnprovisioned
+      -- ^ @UNPROVISIONED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectState
+
+instance FromHttpApiData InterconnectState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right ISActive
+        "UNPROVISIONED" -> Right ISUnprovisioned
+        x -> Left ("Unable to parse InterconnectState from: " <> x)
+
+instance ToHttpApiData InterconnectState where
+    toQueryParam = \case
+        ISActive -> "ACTIVE"
+        ISUnprovisioned -> "UNPROVISIONED"
+
+instance FromJSON InterconnectState where
+    parseJSON = parseJSONText "InterconnectState"
+
+instance ToJSON InterconnectState where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AutoscalerAggregatedListWarningCode
+    = AALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | AALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | AALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | AALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | AALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | AALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | AALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | AALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | AALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | AALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | AALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | AALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | AALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | AALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | AALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | AALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | AALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | AALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | AALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | AALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | AALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | AALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | AALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalerAggregatedListWarningCode
+
+instance FromHttpApiData AutoscalerAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right AALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right AALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right AALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right AALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right AALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right AALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right AALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right AALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right AALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right AALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right AALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right AALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right AALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right AALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right AALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right AALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right AALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right AALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right AALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right AALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right AALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right AALWCUndeclaredProperties
+        "UNREACHABLE" -> Right AALWCUnreachable
+        x -> Left ("Unable to parse AutoscalerAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData AutoscalerAggregatedListWarningCode where
+    toQueryParam = \case
+        AALWCCleanupFailed -> "CLEANUP_FAILED"
+        AALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        AALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        AALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        AALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        AALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        AALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        AALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        AALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        AALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        AALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        AALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        AALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        AALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        AALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        AALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        AALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        AALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        AALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        AALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        AALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        AALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        AALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AutoscalerAggregatedListWarningCode where
+    parseJSON = parseJSONText "AutoscalerAggregatedListWarningCode"
+
+instance ToJSON AutoscalerAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | The IP Version that will be used by this address. Valid options are IPV4
+-- or IPV6. This can only be specified for a global address.
+data AddressIPVersion
+    = AIVIPV4
+      -- ^ @IPV4@
+    | AIVIPV6
+      -- ^ @IPV6@
+    | AIVUnspecifiedVersion
+      -- ^ @UNSPECIFIED_VERSION@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressIPVersion
+
+instance FromHttpApiData AddressIPVersion where
+    parseQueryParam = \case
+        "IPV4" -> Right AIVIPV4
+        "IPV6" -> Right AIVIPV6
+        "UNSPECIFIED_VERSION" -> Right AIVUnspecifiedVersion
+        x -> Left ("Unable to parse AddressIPVersion from: " <> x)
+
+instance ToHttpApiData AddressIPVersion where
+    toQueryParam = \case
+        AIVIPV4 -> "IPV4"
+        AIVIPV6 -> "IPV6"
+        AIVUnspecifiedVersion -> "UNSPECIFIED_VERSION"
+
+instance FromJSON AddressIPVersion where
+    parseJSON = parseJSONText "AddressIPVersion"
+
+instance ToJSON AddressIPVersion where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance. One of the following values:
+-- PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING,
+-- SUSPENDED, and TERMINATED.
+data InstanceStatus
+    = ISProvisioning
+      -- ^ @PROVISIONING@
+    | ISRunning
+      -- ^ @RUNNING@
+    | ISStaging
+      -- ^ @STAGING@
+    | ISStopped
+      -- ^ @STOPPED@
+    | ISStopping
+      -- ^ @STOPPING@
+    | ISSuspended
+      -- ^ @SUSPENDED@
+    | ISSuspending
+      -- ^ @SUSPENDING@
+    | ISTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceStatus
+
+instance FromHttpApiData InstanceStatus where
+    parseQueryParam = \case
+        "PROVISIONING" -> Right ISProvisioning
+        "RUNNING" -> Right ISRunning
+        "STAGING" -> Right ISStaging
+        "STOPPED" -> Right ISStopped
+        "STOPPING" -> Right ISStopping
+        "SUSPENDED" -> Right ISSuspended
+        "SUSPENDING" -> Right ISSuspending
+        "TERMINATED" -> Right ISTerminated
+        x -> Left ("Unable to parse InstanceStatus from: " <> x)
+
+instance ToHttpApiData InstanceStatus where
+    toQueryParam = \case
+        ISProvisioning -> "PROVISIONING"
+        ISRunning -> "RUNNING"
+        ISStaging -> "STAGING"
+        ISStopped -> "STOPPED"
+        ISStopping -> "STOPPING"
+        ISSuspended -> "SUSPENDED"
+        ISSuspending -> "SUSPENDING"
+        ISTerminated -> "TERMINATED"
+
+instance FromJSON InstanceStatus where
+    parseJSON = parseJSONText "InstanceStatus"
+
+instance ToJSON InstanceStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTypeListWarningCode
+    = NTLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NTLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NTLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NTLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NTLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NTLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NTLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NTLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NTLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NTLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NTLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NTLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NTLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NTLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NTLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NTLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NTLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NTLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NTLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NTLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NTLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NTLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NTLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTypeListWarningCode
+
+instance FromHttpApiData NodeTypeListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NTLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NTLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NTLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NTLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NTLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NTLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NTLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NTLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NTLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NTLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NTLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NTLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NTLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NTLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NTLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NTLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NTLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NTLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NTLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NTLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NTLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NTLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NTLWCUnreachable
+        x -> Left ("Unable to parse NodeTypeListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTypeListWarningCode where
+    toQueryParam = \case
+        NTLWCCleanupFailed -> "CLEANUP_FAILED"
+        NTLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NTLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NTLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NTLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NTLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NTLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NTLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NTLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NTLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NTLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NTLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NTLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NTLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NTLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NTLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NTLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NTLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NTLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NTLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NTLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NTLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NTLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTypeListWarningCode where
+    parseJSON = parseJSONText "NodeTypeListWarningCode"
+
+instance ToJSON NodeTypeListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data MachineTypesScopedListWarningCode
+    = MTSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | MTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | MTSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | MTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | MTSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | MTSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | MTSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | MTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | MTSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | MTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | MTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | MTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | MTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | MTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | MTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | MTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | MTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | MTSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | MTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | MTSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | MTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | MTSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | MTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable MachineTypesScopedListWarningCode
+
+instance FromHttpApiData MachineTypesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right MTSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right MTSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right MTSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right MTSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right MTSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right MTSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right MTSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right MTSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right MTSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right MTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right MTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right MTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right MTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right MTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right MTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right MTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right MTSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right MTSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right MTSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right MTSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right MTSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right MTSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right MTSLWCUnreachable
+        x -> Left ("Unable to parse MachineTypesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData MachineTypesScopedListWarningCode where
+    toQueryParam = \case
+        MTSLWCCleanupFailed -> "CLEANUP_FAILED"
+        MTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        MTSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        MTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        MTSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        MTSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        MTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        MTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        MTSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        MTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        MTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        MTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        MTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        MTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        MTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        MTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        MTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        MTSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        MTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        MTSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        MTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        MTSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        MTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON MachineTypesScopedListWarningCode where
+    parseJSON = parseJSONText "MachineTypesScopedListWarningCode"
+
+instance ToJSON MachineTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTemplateListWarningCode
+    = NODCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NODDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NODDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NODDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NODExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NODExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NODFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NODInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NODMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NODNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NODNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NODNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NODNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NODNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NODNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NODNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NODRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NODResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NODResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NODSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NODSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NODUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NODUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTemplateListWarningCode
+
+instance FromHttpApiData NodeTemplateListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NODCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NODDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NODDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NODDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NODExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NODExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NODFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NODInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NODMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NODNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NODNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NODNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NODNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NODNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NODNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NODNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NODRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NODResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NODResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NODSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NODSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NODUndeclaredProperties
+        "UNREACHABLE" -> Right NODUnreachable
+        x -> Left ("Unable to parse NodeTemplateListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTemplateListWarningCode where
+    toQueryParam = \case
+        NODCleanupFailed -> "CLEANUP_FAILED"
+        NODDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NODDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NODDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NODExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NODExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NODFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NODInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NODMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NODNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NODNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NODNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NODNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NODNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NODNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NODNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NODRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NODResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NODResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NODSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NODSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NODUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NODUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTemplateListWarningCode where
+    parseJSON = parseJSONText "NodeTemplateListWarningCode"
+
+instance ToJSON NodeTemplateListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionListWarningCode
+    = REGCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | REGDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | REGDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | REGDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | REGExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | REGExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | REGFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | REGInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | REGMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | REGNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | REGNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | REGNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | REGNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | REGNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | REGNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | REGNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | REGRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | REGResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | REGResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | REGSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | REGSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | REGUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | REGUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionListWarningCode
+
+instance FromHttpApiData RegionListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right REGCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right REGDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right REGDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right REGDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right REGExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right REGExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right REGFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right REGInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right REGMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right REGNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right REGNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right REGNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right REGNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right REGNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right REGNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right REGNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right REGRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right REGResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right REGResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right REGSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right REGSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right REGUndeclaredProperties
+        "UNREACHABLE" -> Right REGUnreachable
+        x -> Left ("Unable to parse RegionListWarningCode from: " <> x)
+
+instance ToHttpApiData RegionListWarningCode where
+    toQueryParam = \case
+        REGCleanupFailed -> "CLEANUP_FAILED"
+        REGDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        REGDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        REGDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        REGExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        REGExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        REGFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        REGInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        REGMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        REGNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        REGNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        REGNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        REGNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        REGNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        REGNotCriticalError -> "NOT_CRITICAL_ERROR"
+        REGNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        REGRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        REGResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        REGResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        REGSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        REGSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        REGUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        REGUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionListWarningCode where
+    parseJSON = parseJSONText "RegionListWarningCode"
+
+instance ToJSON RegionListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The resource that configures and manages this interface.
+-- MANAGED_BY_USER is the default value and can be managed by you or other
+-- users; MANAGED_BY_ATTACHMENT is an interface that is configured and
+-- managed by Cloud Interconnect, specifically by an InterconnectAttachment
+-- of type PARTNER. Google will automatically create, update, and delete
+-- this type of interface when the PARTNER InterconnectAttachment is
+-- created, updated, or deleted.
+data RouterInterfaceManagementType
+    = RIMTManagedByAttachment
+      -- ^ @MANAGED_BY_ATTACHMENT@
+    | RIMTManagedByUser
+      -- ^ @MANAGED_BY_USER@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterInterfaceManagementType
+
+instance FromHttpApiData RouterInterfaceManagementType where
+    parseQueryParam = \case
+        "MANAGED_BY_ATTACHMENT" -> Right RIMTManagedByAttachment
+        "MANAGED_BY_USER" -> Right RIMTManagedByUser
+        x -> Left ("Unable to parse RouterInterfaceManagementType from: " <> x)
+
+instance ToHttpApiData RouterInterfaceManagementType where
+    toQueryParam = \case
+        RIMTManagedByAttachment -> "MANAGED_BY_ATTACHMENT"
+        RIMTManagedByUser -> "MANAGED_BY_USER"
+
+instance FromJSON RouterInterfaceManagementType where
+    parseJSON = parseJSONText "RouterInterfaceManagementType"
+
+instance ToJSON RouterInterfaceManagementType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DiskTypesScopedListWarningCode
+    = DTSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DTSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DTSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DTSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DTSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DTSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DTSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DTSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DTSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskTypesScopedListWarningCode
+
+instance FromHttpApiData DiskTypesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DTSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DTSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DTSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DTSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DTSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DTSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DTSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DTSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DTSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DTSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DTSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DTSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DTSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DTSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DTSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right DTSLWCUnreachable
+        x -> Left ("Unable to parse DiskTypesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData DiskTypesScopedListWarningCode where
+    toQueryParam = \case
+        DTSLWCCleanupFailed -> "CLEANUP_FAILED"
+        DTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DTSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DTSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DTSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DTSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DTSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DTSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DTSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskTypesScopedListWarningCode where
+    parseJSON = parseJSONText "DiskTypesScopedListWarningCode"
+
+instance ToJSON DiskTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data MachineTypeAggregatedListWarningCode
+    = MTALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | MTALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | MTALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | MTALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | MTALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | MTALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | MTALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | MTALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | MTALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | MTALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | MTALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | MTALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | MTALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | MTALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | MTALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | MTALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | MTALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | MTALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | MTALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | MTALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | MTALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | MTALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | MTALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable MachineTypeAggregatedListWarningCode
+
+instance FromHttpApiData MachineTypeAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right MTALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right MTALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right MTALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right MTALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right MTALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right MTALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right MTALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right MTALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right MTALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right MTALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right MTALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right MTALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right MTALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right MTALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right MTALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right MTALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right MTALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right MTALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right MTALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right MTALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right MTALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right MTALWCUndeclaredProperties
+        "UNREACHABLE" -> Right MTALWCUnreachable
+        x -> Left ("Unable to parse MachineTypeAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData MachineTypeAggregatedListWarningCode where
+    toQueryParam = \case
+        MTALWCCleanupFailed -> "CLEANUP_FAILED"
+        MTALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        MTALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        MTALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        MTALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        MTALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        MTALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        MTALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        MTALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        MTALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        MTALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        MTALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        MTALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        MTALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        MTALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        MTALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        MTALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        MTALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        MTALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        MTALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        MTALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        MTALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        MTALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON MachineTypeAggregatedListWarningCode where
+    parseJSON = parseJSONText "MachineTypeAggregatedListWarningCode"
+
+instance ToJSON MachineTypeAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Whether Gin logging should happen in a fail-closed manner at the caller.
+-- This is relevant only in the LocalIAM implementation, for now. NOTE:
+-- Logging to Gin in a fail-closed manner is currently unsupported while
+-- work is being done to satisfy the requirements of go\/345. Currently,
+-- setting LOG_FAIL_CLOSED mode will have no effect, but still exists
+-- because there is active work being done to support it (b\/115874152).
+data LogConfigDataAccessOptionsLogMode
+    = LogFailClosed
+      -- ^ @LOG_FAIL_CLOSED@
+    | LogModeUnspecified
+      -- ^ @LOG_MODE_UNSPECIFIED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable LogConfigDataAccessOptionsLogMode
+
+instance FromHttpApiData LogConfigDataAccessOptionsLogMode where
+    parseQueryParam = \case
+        "LOG_FAIL_CLOSED" -> Right LogFailClosed
+        "LOG_MODE_UNSPECIFIED" -> Right LogModeUnspecified
+        x -> Left ("Unable to parse LogConfigDataAccessOptionsLogMode from: " <> x)
+
+instance ToHttpApiData LogConfigDataAccessOptionsLogMode where
+    toQueryParam = \case
+        LogFailClosed -> "LOG_FAIL_CLOSED"
+        LogModeUnspecified -> "LOG_MODE_UNSPECIFIED"
+
+instance FromJSON LogConfigDataAccessOptionsLogMode where
+    parseJSON = parseJSONText "LogConfigDataAccessOptionsLogMode"
+
+instance ToJSON LogConfigDataAccessOptionsLogMode where
+    toJSON = toJSONText
+
+-- | State of this notification. Note that the \"NS_\" versions of this enum
+-- have been deprecated in favor of the unprefixed values.
+data InterconnectOutageNotificationState
+    = IONSActive
+      -- ^ @ACTIVE@
+    | IONSCancelled
+      -- ^ @CANCELLED@
+    | IONSNsActive
+      -- ^ @NS_ACTIVE@
+    | IONSNsCanceled
+      -- ^ @NS_CANCELED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectOutageNotificationState
+
+instance FromHttpApiData InterconnectOutageNotificationState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right IONSActive
+        "CANCELLED" -> Right IONSCancelled
+        "NS_ACTIVE" -> Right IONSNsActive
+        "NS_CANCELED" -> Right IONSNsCanceled
+        x -> Left ("Unable to parse InterconnectOutageNotificationState from: " <> x)
+
+instance ToHttpApiData InterconnectOutageNotificationState where
+    toQueryParam = \case
+        IONSActive -> "ACTIVE"
+        IONSCancelled -> "CANCELLED"
+        IONSNsActive -> "NS_ACTIVE"
+        IONSNsCanceled -> "NS_CANCELED"
+
+instance FromJSON InterconnectOutageNotificationState where
+    parseJSON = parseJSONText "InterconnectOutageNotificationState"
+
+instance ToJSON InterconnectOutageNotificationState where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data VPNTunnelListWarningCode
+    = VTLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | VTLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | VTLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | VTLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | VTLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | VTLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | VTLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | VTLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | VTLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | VTLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | VTLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | VTLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | VTLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | VTLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | VTLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | VTLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | VTLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | VTLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | VTLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | VTLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | VTLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | VTLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | VTLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VPNTunnelListWarningCode
+
+instance FromHttpApiData VPNTunnelListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right VTLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right VTLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right VTLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VTLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right VTLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right VTLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right VTLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right VTLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right VTLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VTLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VTLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right VTLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right VTLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right VTLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right VTLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right VTLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right VTLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right VTLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right VTLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right VTLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right VTLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right VTLWCUndeclaredProperties
+        "UNREACHABLE" -> Right VTLWCUnreachable
+        x -> Left ("Unable to parse VPNTunnelListWarningCode from: " <> x)
+
+instance ToHttpApiData VPNTunnelListWarningCode where
+    toQueryParam = \case
+        VTLWCCleanupFailed -> "CLEANUP_FAILED"
+        VTLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        VTLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        VTLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        VTLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        VTLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        VTLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        VTLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        VTLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        VTLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        VTLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        VTLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        VTLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        VTLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        VTLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        VTLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        VTLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        VTLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        VTLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        VTLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        VTLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        VTLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        VTLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON VPNTunnelListWarningCode where
+    parseJSON = parseJSONText "VPNTunnelListWarningCode"
+
+instance ToJSON VPNTunnelListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AutoscalersScopedListWarningCode
+    = ACleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ADeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ADeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ADiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | AExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | AExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | AFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | AInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | AMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ANextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ANextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ANextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ANextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ANextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ANotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ANoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ARequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | AResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | AResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ASchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ASingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | AUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | AUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalersScopedListWarningCode
+
+instance FromHttpApiData AutoscalersScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ACleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ADeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ADeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ADiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right AExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right AExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right AFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right AInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right AMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ANextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ANextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ANextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ANextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ANextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ANotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ANoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ARequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right AResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right AResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ASchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ASingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right AUndeclaredProperties
+        "UNREACHABLE" -> Right AUnreachable
+        x -> Left ("Unable to parse AutoscalersScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData AutoscalersScopedListWarningCode where
+    toQueryParam = \case
+        ACleanupFailed -> "CLEANUP_FAILED"
+        ADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ADeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        AExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        AExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        AFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        AInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        AMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ANotCriticalError -> "NOT_CRITICAL_ERROR"
+        ANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        AResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        AResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ASchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        AUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        AUnreachable -> "UNREACHABLE"
+
+instance FromJSON AutoscalersScopedListWarningCode where
+    parseJSON = parseJSONText "AutoscalersScopedListWarningCode"
+
+instance ToJSON AutoscalersScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | This signifies what the ForwardingRule will be used for and can only
+-- take the following values: INTERNAL, INTERNAL_SELF_MANAGED, EXTERNAL.
+-- The value of INTERNAL means that this will be used for Internal Network
+-- Load Balancing (TCP, UDP). The value of INTERNAL_SELF_MANAGED means that
+-- this will be used for Internal Global HTTP(S) LB. The value of EXTERNAL
+-- means that this will be used for External Load Balancing (HTTP(S) LB,
+-- External TCP\/UDP LB, SSL Proxy)
+data ForwardingRuleLoadBalancingScheme
+    = FRLBSExternal
+      -- ^ @EXTERNAL@
+    | FRLBSInternal
+      -- ^ @INTERNAL@
+    | FRLBSInvalid
+      -- ^ @INVALID@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleLoadBalancingScheme
+
+instance FromHttpApiData ForwardingRuleLoadBalancingScheme where
+    parseQueryParam = \case
+        "EXTERNAL" -> Right FRLBSExternal
+        "INTERNAL" -> Right FRLBSInternal
+        "INVALID" -> Right FRLBSInvalid
+        x -> Left ("Unable to parse ForwardingRuleLoadBalancingScheme from: " <> x)
+
+instance ToHttpApiData ForwardingRuleLoadBalancingScheme where
+    toQueryParam = \case
+        FRLBSExternal -> "EXTERNAL"
+        FRLBSInternal -> "INTERNAL"
+        FRLBSInvalid -> "INVALID"
+
+instance FromJSON ForwardingRuleLoadBalancingScheme where
+    parseJSON = parseJSONText "ForwardingRuleLoadBalancingScheme"
+
+instance ToJSON ForwardingRuleLoadBalancingScheme where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DiskTypeAggregatedListWarningCode
+    = DTALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DTALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DTALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DTALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DTALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DTALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DTALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DTALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DTALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DTALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DTALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DTALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DTALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DTALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DTALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DTALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DTALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DTALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DTALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DTALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DTALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DTALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DTALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskTypeAggregatedListWarningCode
+
+instance FromHttpApiData DiskTypeAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DTALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DTALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DTALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DTALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DTALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DTALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DTALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DTALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DTALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DTALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DTALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DTALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DTALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DTALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DTALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DTALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DTALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DTALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DTALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DTALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DTALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DTALWCUndeclaredProperties
+        "UNREACHABLE" -> Right DTALWCUnreachable
+        x -> Left ("Unable to parse DiskTypeAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData DiskTypeAggregatedListWarningCode where
+    toQueryParam = \case
+        DTALWCCleanupFailed -> "CLEANUP_FAILED"
+        DTALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DTALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DTALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DTALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DTALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DTALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DTALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DTALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DTALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DTALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DTALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DTALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DTALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DTALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DTALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DTALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DTALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DTALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DTALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DTALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DTALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DTALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskTypeAggregatedListWarningCode where
+    parseJSON = parseJSONText "DiskTypeAggregatedListWarningCode"
+
+instance ToJSON DiskTypeAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in
+-- favor of \"DEDICATED\"
+data InterconnectInterconnectType
+    = IITDedicated
+      -- ^ @DEDICATED@
+    | IITItPrivate
+      -- ^ @IT_PRIVATE@
+    | IITPartner
+      -- ^ @PARTNER@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectInterconnectType
+
+instance FromHttpApiData InterconnectInterconnectType where
+    parseQueryParam = \case
+        "DEDICATED" -> Right IITDedicated
+        "IT_PRIVATE" -> Right IITItPrivate
+        "PARTNER" -> Right IITPartner
+        x -> Left ("Unable to parse InterconnectInterconnectType from: " <> x)
+
+instance ToHttpApiData InterconnectInterconnectType where
+    toQueryParam = \case
+        IITDedicated -> "DEDICATED"
+        IITItPrivate -> "IT_PRIVATE"
+        IITPartner -> "PARTNER"
+
+instance FromJSON InterconnectInterconnectType where
+    parseJSON = parseJSONText "InterconnectInterconnectType"
+
+instance ToJSON InterconnectInterconnectType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupManagerListWarningCode
+    = IGMLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGMLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGMLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGMLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGMLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGMLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGMLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGMLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGMLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGMLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGMLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGMLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGMLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGMLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGMLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGMLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGMLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGMLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGMLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGMLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGMLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGMLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGMLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupManagerListWarningCode
+
+instance FromHttpApiData InstanceGroupManagerListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGMLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGMLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGMLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGMLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGMLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGMLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGMLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGMLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGMLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGMLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGMLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGMLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGMLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGMLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGMLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGMLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGMLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGMLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGMLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGMLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGMLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGMLWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGMLWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupManagerListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupManagerListWarningCode where
+    toQueryParam = \case
+        IGMLWCCleanupFailed -> "CLEANUP_FAILED"
+        IGMLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGMLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGMLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGMLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGMLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGMLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGMLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGMLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGMLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGMLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGMLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGMLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGMLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGMLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGMLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGMLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGMLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGMLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGMLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGMLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGMLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGMLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupManagerListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupManagerListWarningCode"
+
+instance ToJSON InstanceGroupManagerListWarningCode where
+    toJSON = toJSONText
+
+-- | Status of the BGP peer: {UP, DOWN}
+data RouterStatusBGPPeerStatusStatus
+    = RSBPSSDown
+      -- ^ @DOWN@
+    | RSBPSSUnknown
+      -- ^ @UNKNOWN@
+    | RSBPSSUP
+      -- ^ @UP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RouterStatusBGPPeerStatusStatus
+
+instance FromHttpApiData RouterStatusBGPPeerStatusStatus where
+    parseQueryParam = \case
+        "DOWN" -> Right RSBPSSDown
+        "UNKNOWN" -> Right RSBPSSUnknown
+        "UP" -> Right RSBPSSUP
+        x -> Left ("Unable to parse RouterStatusBGPPeerStatusStatus from: " <> x)
+
+instance ToHttpApiData RouterStatusBGPPeerStatusStatus where
+    toQueryParam = \case
+        RSBPSSDown -> "DOWN"
+        RSBPSSUnknown -> "UNKNOWN"
+        RSBPSSUP -> "UP"
+
+instance FromJSON RouterStatusBGPPeerStatusStatus where
+    parseJSON = parseJSONText "RouterStatusBGPPeerStatusStatus"
+
+instance ToJSON RouterStatusBGPPeerStatusStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data DiskListWarningCode
+    = DLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | DLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | DLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | DLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | DLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | DLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | DLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | DLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | DLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | DLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiskListWarningCode
+
+instance FromHttpApiData DiskListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right DLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right DLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right DLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right DLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right DLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right DLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right DLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right DLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right DLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right DLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right DLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right DLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right DLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right DLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right DLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right DLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right DLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right DLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right DLWCUndeclaredProperties
+        "UNREACHABLE" -> Right DLWCUnreachable
+        x -> Left ("Unable to parse DiskListWarningCode from: " <> x)
+
+instance ToHttpApiData DiskListWarningCode where
+    toQueryParam = \case
+        DLWCCleanupFailed -> "CLEANUP_FAILED"
+        DLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        DLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        DLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        DLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        DLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        DLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        DLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        DLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        DLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskListWarningCode where
+    parseJSON = parseJSONText "DiskListWarningCode"
+
+instance ToJSON DiskListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionAutoscalerListWarningCode
+    = RALWCACleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RALWCADeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RALWCADeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RALWCADiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RALWCAExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RALWCAExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RALWCAFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RALWCAInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RALWCAMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RALWCANextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RALWCANextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RALWCANextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RALWCANextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RALWCANextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RALWCANotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RALWCANoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RALWCARequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RALWCAResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RALWCAResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RALWCASchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RALWCASingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RALWCAUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RALWCAUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionAutoscalerListWarningCode
+
+instance FromHttpApiData RegionAutoscalerListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RALWCACleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RALWCADeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RALWCADeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RALWCADiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RALWCAExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RALWCAExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RALWCAFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RALWCAInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RALWCAMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RALWCANextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RALWCANextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RALWCANextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RALWCANextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RALWCANextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RALWCANotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RALWCANoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RALWCARequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RALWCAResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RALWCAResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RALWCASchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RALWCASingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RALWCAUndeclaredProperties
+        "UNREACHABLE" -> Right RALWCAUnreachable
+        x -> Left ("Unable to parse RegionAutoscalerListWarningCode from: " <> x)
+
+instance ToHttpApiData RegionAutoscalerListWarningCode where
+    toQueryParam = \case
+        RALWCACleanupFailed -> "CLEANUP_FAILED"
+        RALWCADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RALWCADeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RALWCADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RALWCAExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RALWCAExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RALWCAFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RALWCAInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RALWCAMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RALWCANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RALWCANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RALWCANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RALWCANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RALWCANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RALWCANotCriticalError -> "NOT_CRITICAL_ERROR"
+        RALWCANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RALWCARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RALWCAResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RALWCAResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RALWCASchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RALWCASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RALWCAUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RALWCAUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionAutoscalerListWarningCode where
+    parseJSON = parseJSONText "RegionAutoscalerListWarningCode"
+
+instance ToJSON RegionAutoscalerListWarningCode where
+    toJSON = toJSONText
+
+-- | The plan for this commitment, which determines duration and discount
+-- rate. The currently supported plans are TWELVE_MONTH (1 year), and
+-- THIRTY_SIX_MONTH (3 years).
+data CommitmentPlan
+    = Invalid
+      -- ^ @INVALID@
+    | ThirtySixMonth
+      -- ^ @THIRTY_SIX_MONTH@
+    | TwelveMonth
+      -- ^ @TWELVE_MONTH@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CommitmentPlan
+
+instance FromHttpApiData CommitmentPlan where
+    parseQueryParam = \case
+        "INVALID" -> Right Invalid
+        "THIRTY_SIX_MONTH" -> Right ThirtySixMonth
+        "TWELVE_MONTH" -> Right TwelveMonth
+        x -> Left ("Unable to parse CommitmentPlan from: " <> x)
+
+instance ToHttpApiData CommitmentPlan where
+    toQueryParam = \case
+        Invalid -> "INVALID"
+        ThirtySixMonth -> "THIRTY_SIX_MONTH"
+        TwelveMonth -> "TWELVE_MONTH"
+
+instance FromJSON CommitmentPlan where
+    parseJSON = parseJSONText "CommitmentPlan"
+
+instance ToJSON CommitmentPlan where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data OperationListWarningCode
+    = OLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | OLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | OLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | OLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | OLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | OLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | OLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | OLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | OLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | OLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | OLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | OLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | OLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | OLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | OLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | OLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | OLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | OLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | OLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | OLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | OLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | OLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | OLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationListWarningCode
+
+instance FromHttpApiData OperationListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right OLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right OLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right OLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right OLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right OLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right OLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right OLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right OLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right OLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right OLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right OLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right OLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right OLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right OLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right OLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right OLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right OLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right OLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right OLWCUndeclaredProperties
+        "UNREACHABLE" -> Right OLWCUnreachable
+        x -> Left ("Unable to parse OperationListWarningCode from: " <> x)
+
+instance ToHttpApiData OperationListWarningCode where
+    toQueryParam = \case
+        OLWCCleanupFailed -> "CLEANUP_FAILED"
+        OLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        OLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        OLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        OLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        OLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        OLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        OLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        OLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        OLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        OLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        OLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        OLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        OLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        OLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        OLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        OLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        OLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        OLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        OLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        OLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        OLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        OLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON OperationListWarningCode where
+    parseJSON = parseJSONText "OperationListWarningCode"
+
+instance ToJSON OperationListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data ForwardingRuleListWarningCode
+    = FRLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | FRLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | FRLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | FRLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | FRLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | FRLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | FRLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | FRLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | FRLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | FRLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | FRLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | FRLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | FRLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | FRLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | FRLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | FRLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | FRLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | FRLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | FRLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | FRLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | FRLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | FRLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | FRLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleListWarningCode
+
+instance FromHttpApiData ForwardingRuleListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right FRLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right FRLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right FRLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FRLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right FRLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right FRLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right FRLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right FRLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right FRLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FRLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FRLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right FRLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right FRLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right FRLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right FRLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right FRLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right FRLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right FRLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right FRLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right FRLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right FRLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right FRLWCUndeclaredProperties
+        "UNREACHABLE" -> Right FRLWCUnreachable
+        x -> Left ("Unable to parse ForwardingRuleListWarningCode from: " <> x)
+
+instance ToHttpApiData ForwardingRuleListWarningCode where
+    toQueryParam = \case
+        FRLWCCleanupFailed -> "CLEANUP_FAILED"
+        FRLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        FRLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        FRLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        FRLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        FRLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        FRLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        FRLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        FRLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        FRLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        FRLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        FRLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        FRLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        FRLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        FRLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        FRLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        FRLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        FRLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        FRLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        FRLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        FRLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        FRLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        FRLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON ForwardingRuleListWarningCode where
+    parseJSON = parseJSONText "ForwardingRuleListWarningCode"
+
+instance ToJSON ForwardingRuleListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data VPNTunnelsScopedListWarningCode
+    = VTSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | VTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | VTSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | VTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | VTSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | VTSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | VTSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | VTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | VTSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | VTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | VTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | VTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | VTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | VTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | VTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | VTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | VTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | VTSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | VTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | VTSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | VTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | VTSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | VTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VPNTunnelsScopedListWarningCode
+
+instance FromHttpApiData VPNTunnelsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right VTSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right VTSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right VTSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VTSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right VTSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right VTSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right VTSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right VTSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right VTSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right VTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right VTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right VTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right VTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right VTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right VTSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right VTSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right VTSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right VTSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right VTSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right VTSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right VTSLWCUnreachable
+        x -> Left ("Unable to parse VPNTunnelsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData VPNTunnelsScopedListWarningCode where
+    toQueryParam = \case
+        VTSLWCCleanupFailed -> "CLEANUP_FAILED"
+        VTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        VTSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        VTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        VTSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        VTSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        VTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        VTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        VTSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        VTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        VTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        VTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        VTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        VTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        VTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        VTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        VTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        VTSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        VTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        VTSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        VTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        VTSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        VTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON VPNTunnelsScopedListWarningCode where
+    parseJSON = parseJSONText "VPNTunnelsScopedListWarningCode"
+
+instance ToJSON VPNTunnelsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTypesScopedListWarningCode
+    = NTSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NTSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NTSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NTSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NTSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NTSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NTSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NTSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NTSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTypesScopedListWarningCode
+
+instance FromHttpApiData NodeTypesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NTSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NTSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NTSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NTSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NTSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NTSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NTSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NTSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NTSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NTSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NTSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NTSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NTSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NTSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NTSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NTSLWCUnreachable
+        x -> Left ("Unable to parse NodeTypesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTypesScopedListWarningCode where
+    toQueryParam = \case
+        NTSLWCCleanupFailed -> "CLEANUP_FAILED"
+        NTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NTSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NTSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NTSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NTSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NTSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NTSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NTSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTypesScopedListWarningCode where
+    parseJSON = parseJSONText "NodeTypesScopedListWarningCode"
+
+instance ToJSON NodeTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetInstanceAggregatedListWarningCode
+    = TIALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TIALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TIALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TIALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TIALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TIALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TIALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TIALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TIALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TIALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TIALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TIALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TIALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TIALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TIALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TIALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TIALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TIALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TIALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TIALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TIALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TIALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TIALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetInstanceAggregatedListWarningCode
+
+instance FromHttpApiData TargetInstanceAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TIALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TIALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TIALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TIALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TIALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TIALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TIALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TIALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TIALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TIALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TIALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TIALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TIALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TIALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TIALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TIALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TIALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TIALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TIALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TIALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TIALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TIALWCUndeclaredProperties
+        "UNREACHABLE" -> Right TIALWCUnreachable
+        x -> Left ("Unable to parse TargetInstanceAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetInstanceAggregatedListWarningCode where
+    toQueryParam = \case
+        TIALWCCleanupFailed -> "CLEANUP_FAILED"
+        TIALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TIALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TIALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TIALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TIALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TIALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TIALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TIALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TIALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TIALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TIALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TIALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TIALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TIALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TIALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TIALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TIALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TIALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TIALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TIALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TIALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TIALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetInstanceAggregatedListWarningCode where
+    parseJSON = parseJSONText "TargetInstanceAggregatedListWarningCode"
+
+instance ToJSON TargetInstanceAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionDiskTypeListWarningCode
+    = RDTLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RDTLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RDTLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RDTLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RDTLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RDTLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RDTLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RDTLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RDTLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RDTLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RDTLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RDTLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RDTLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RDTLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RDTLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RDTLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RDTLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RDTLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RDTLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RDTLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RDTLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RDTLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RDTLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionDiskTypeListWarningCode
+
+instance FromHttpApiData RegionDiskTypeListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RDTLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RDTLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RDTLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RDTLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RDTLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RDTLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RDTLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RDTLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RDTLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RDTLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RDTLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RDTLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RDTLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RDTLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RDTLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RDTLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RDTLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RDTLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RDTLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RDTLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RDTLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RDTLWCUndeclaredProperties
+        "UNREACHABLE" -> Right RDTLWCUnreachable
+        x -> Left ("Unable to parse RegionDiskTypeListWarningCode from: " <> x)
+
+instance ToHttpApiData RegionDiskTypeListWarningCode where
+    toQueryParam = \case
+        RDTLWCCleanupFailed -> "CLEANUP_FAILED"
+        RDTLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RDTLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RDTLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RDTLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RDTLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RDTLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RDTLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RDTLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RDTLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RDTLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RDTLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RDTLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RDTLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RDTLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RDTLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RDTLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RDTLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RDTLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RDTLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RDTLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RDTLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RDTLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionDiskTypeListWarningCode where
+    parseJSON = parseJSONText "RegionDiskTypeListWarningCode"
+
+instance ToJSON RegionDiskTypeListWarningCode where
+    toJSON = toJSONText
+
+-- | The type of address to reserve, either INTERNAL or EXTERNAL. If
+-- unspecified, defaults to EXTERNAL.
+data AddressAddressType
+    = AATExternal
+      -- ^ @EXTERNAL@
+    | AATInternal
+      -- ^ @INTERNAL@
+    | AATUnspecifiedType
+      -- ^ @UNSPECIFIED_TYPE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressAddressType
+
+instance FromHttpApiData AddressAddressType where
+    parseQueryParam = \case
+        "EXTERNAL" -> Right AATExternal
+        "INTERNAL" -> Right AATInternal
+        "UNSPECIFIED_TYPE" -> Right AATUnspecifiedType
+        x -> Left ("Unable to parse AddressAddressType from: " <> x)
+
+instance ToHttpApiData AddressAddressType where
+    toQueryParam = \case
+        AATExternal -> "EXTERNAL"
+        AATInternal -> "INTERNAL"
+        AATUnspecifiedType -> "UNSPECIFIED_TYPE"
+
+instance FromJSON AddressAddressType where
+    parseJSON = parseJSONText "AddressAddressType"
+
+instance ToJSON AddressAddressType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data TargetPoolListWarningCode
+    = TPLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | TPLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TPLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | TPLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TPLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | TPLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | TPLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | TPLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TPLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | TPLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TPLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TPLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TPLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TPLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TPLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TPLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TPLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TPLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | TPLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TPLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | TPLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TPLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | TPLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetPoolListWarningCode
+
+instance FromHttpApiData TargetPoolListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right TPLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right TPLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right TPLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TPLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right TPLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right TPLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right TPLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right TPLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right TPLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TPLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TPLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right TPLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right TPLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right TPLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right TPLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right TPLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right TPLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right TPLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right TPLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right TPLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right TPLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right TPLWCUndeclaredProperties
+        "UNREACHABLE" -> Right TPLWCUnreachable
+        x -> Left ("Unable to parse TargetPoolListWarningCode from: " <> x)
+
+instance ToHttpApiData TargetPoolListWarningCode where
+    toQueryParam = \case
+        TPLWCCleanupFailed -> "CLEANUP_FAILED"
+        TPLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TPLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        TPLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TPLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        TPLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        TPLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        TPLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TPLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        TPLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TPLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TPLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TPLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TPLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TPLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TPLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TPLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TPLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        TPLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TPLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        TPLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TPLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        TPLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetPoolListWarningCode where
+    parseJSON = parseJSONText "TargetPoolListWarningCode"
+
+instance ToJSON TargetPoolListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NodeTemplatesScopedListWarningCode
+    = NTSLWCTCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NTSLWCTDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NTSLWCTDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NTSLWCTDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NTSLWCTExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NTSLWCTExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NTSLWCTFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NTSLWCTInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NTSLWCTMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NTSLWCTNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NTSLWCTNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NTSLWCTNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NTSLWCTNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NTSLWCTNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NTSLWCTNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NTSLWCTNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NTSLWCTRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NTSLWCTResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NTSLWCTResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NTSLWCTSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NTSLWCTSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NTSLWCTUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NTSLWCTUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTemplatesScopedListWarningCode
+
+instance FromHttpApiData NodeTemplatesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NTSLWCTCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NTSLWCTDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NTSLWCTDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NTSLWCTDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NTSLWCTExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NTSLWCTExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NTSLWCTFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NTSLWCTInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NTSLWCTMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NTSLWCTNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NTSLWCTNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NTSLWCTNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NTSLWCTNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NTSLWCTNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NTSLWCTNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NTSLWCTNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NTSLWCTRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NTSLWCTResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NTSLWCTResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NTSLWCTSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NTSLWCTSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NTSLWCTUndeclaredProperties
+        "UNREACHABLE" -> Right NTSLWCTUnreachable
+        x -> Left ("Unable to parse NodeTemplatesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData NodeTemplatesScopedListWarningCode where
+    toQueryParam = \case
+        NTSLWCTCleanupFailed -> "CLEANUP_FAILED"
+        NTSLWCTDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NTSLWCTDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NTSLWCTDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NTSLWCTExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NTSLWCTExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NTSLWCTFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NTSLWCTInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NTSLWCTMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NTSLWCTNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NTSLWCTNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NTSLWCTNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NTSLWCTNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NTSLWCTNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NTSLWCTNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NTSLWCTNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NTSLWCTRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NTSLWCTResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NTSLWCTResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NTSLWCTSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NTSLWCTSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NTSLWCTUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NTSLWCTUnreachable -> "UNREACHABLE"
+
+instance FromJSON NodeTemplatesScopedListWarningCode where
+    parseJSON = parseJSONText "NodeTemplatesScopedListWarningCode"
+
+instance ToJSON NodeTemplatesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NetworkListWarningCode
+    = NLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkListWarningCode
+
+instance FromHttpApiData NetworkListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NLWCUnreachable
+        x -> Left ("Unable to parse NetworkListWarningCode from: " <> x)
+
+instance ToHttpApiData NetworkListWarningCode where
+    toQueryParam = \case
+        NLWCCleanupFailed -> "CLEANUP_FAILED"
+        NLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NetworkListWarningCode where
+    parseJSON = parseJSONText "NetworkListWarningCode"
+
+instance ToJSON NetworkListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data XpnHostListWarningCode
+    = XHLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | XHLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | XHLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | XHLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | XHLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | XHLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | XHLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | XHLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | XHLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | XHLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | XHLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | XHLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | XHLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | XHLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | XHLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | XHLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | XHLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | XHLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | XHLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | XHLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | XHLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | XHLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | XHLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable XpnHostListWarningCode
+
+instance FromHttpApiData XpnHostListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right XHLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right XHLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right XHLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right XHLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right XHLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right XHLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right XHLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right XHLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right XHLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right XHLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right XHLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right XHLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right XHLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right XHLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right XHLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right XHLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right XHLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right XHLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right XHLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right XHLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right XHLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right XHLWCUndeclaredProperties
+        "UNREACHABLE" -> Right XHLWCUnreachable
+        x -> Left ("Unable to parse XpnHostListWarningCode from: " <> x)
+
+instance ToHttpApiData XpnHostListWarningCode where
+    toQueryParam = \case
+        XHLWCCleanupFailed -> "CLEANUP_FAILED"
+        XHLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        XHLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        XHLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        XHLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        XHLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        XHLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        XHLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        XHLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        XHLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        XHLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        XHLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        XHLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        XHLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        XHLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        XHLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        XHLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        XHLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        XHLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        XHLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        XHLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        XHLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        XHLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON XpnHostListWarningCode where
+    parseJSON = parseJSONText "XpnHostListWarningCode"
+
+instance ToJSON XpnHostListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InterconnectAttachmentAggregatedListWarningCode
+    = IAALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IAALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IAALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IAALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IAALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IAALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IAALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IAALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IAALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IAALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IAALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IAALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IAALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IAALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IAALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IAALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IAALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IAALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IAALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IAALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IAALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IAALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IAALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentAggregatedListWarningCode
+
+instance FromHttpApiData InterconnectAttachmentAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IAALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IAALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IAALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IAALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IAALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IAALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IAALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IAALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IAALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IAALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IAALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IAALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IAALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IAALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IAALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IAALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IAALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IAALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IAALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IAALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IAALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IAALWCUndeclaredProperties
+        "UNREACHABLE" -> Right IAALWCUnreachable
+        x -> Left ("Unable to parse InterconnectAttachmentAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentAggregatedListWarningCode where
+    toQueryParam = \case
+        IAALWCCleanupFailed -> "CLEANUP_FAILED"
+        IAALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IAALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IAALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IAALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IAALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IAALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IAALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IAALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IAALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IAALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IAALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IAALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IAALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IAALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IAALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IAALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IAALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IAALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IAALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IAALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IAALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IAALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InterconnectAttachmentAggregatedListWarningCode where
+    parseJSON = parseJSONText "InterconnectAttachmentAggregatedListWarningCode"
+
+instance ToJSON InterconnectAttachmentAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AddressListWarningCode
+    = ADDCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ADDDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ADDDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ADDDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ADDExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ADDExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ADDFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ADDInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ADDMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ADDNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ADDNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ADDNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ADDNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ADDNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ADDNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ADDNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ADDRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ADDResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ADDResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ADDSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ADDSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ADDUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ADDUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressListWarningCode
+
+instance FromHttpApiData AddressListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ADDCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ADDDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ADDDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ADDDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ADDExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ADDExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ADDFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ADDInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ADDMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ADDNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ADDNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ADDNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ADDNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ADDNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ADDNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ADDNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ADDRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ADDResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ADDResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ADDSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ADDSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ADDUndeclaredProperties
+        "UNREACHABLE" -> Right ADDUnreachable
+        x -> Left ("Unable to parse AddressListWarningCode from: " <> x)
+
+instance ToHttpApiData AddressListWarningCode where
+    toQueryParam = \case
+        ADDCleanupFailed -> "CLEANUP_FAILED"
+        ADDDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ADDDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ADDDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ADDExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ADDExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ADDFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ADDInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ADDMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ADDNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ADDNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ADDNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ADDNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ADDNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ADDNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ADDNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ADDRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ADDResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ADDResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ADDSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ADDSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ADDUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ADDUnreachable -> "UNREACHABLE"
+
+instance FromJSON AddressListWarningCode where
+    parseJSON = parseJSONText "AddressListWarningCode"
+
+instance ToJSON AddressListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] State for the peering.
+data NetworkPeeringState
+    = NPSActive
+      -- ^ @ACTIVE@
+    | NPSInactive
+      -- ^ @INACTIVE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkPeeringState
+
+instance FromHttpApiData NetworkPeeringState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right NPSActive
+        "INACTIVE" -> Right NPSInactive
+        x -> Left ("Unable to parse NetworkPeeringState from: " <> x)
+
+instance ToHttpApiData NetworkPeeringState where
+    toQueryParam = \case
+        NPSActive -> "ACTIVE"
+        NPSInactive -> "INACTIVE"
+
+instance FromJSON NetworkPeeringState where
+    parseJSON = parseJSONText "NetworkPeeringState"
+
+instance ToJSON NetworkPeeringState where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data ZoneListWarningCode
+    = ZLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ZLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ZLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ZLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ZLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ZLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ZLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ZLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ZLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ZLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ZLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ZLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ZLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ZLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ZLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ZLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ZLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ZLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ZLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ZLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ZLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ZLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ZLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ZoneListWarningCode
+
+instance FromHttpApiData ZoneListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ZLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ZLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ZLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ZLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ZLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ZLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ZLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ZLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ZLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ZLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ZLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ZLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ZLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ZLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ZLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ZLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ZLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ZLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ZLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ZLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ZLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ZLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ZLWCUnreachable
+        x -> Left ("Unable to parse ZoneListWarningCode from: " <> x)
+
+instance ToHttpApiData ZoneListWarningCode where
+    toQueryParam = \case
+        ZLWCCleanupFailed -> "CLEANUP_FAILED"
+        ZLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ZLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ZLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ZLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ZLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ZLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ZLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ZLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ZLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ZLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ZLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ZLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ZLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ZLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ZLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ZLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ZLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ZLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ZLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ZLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ZLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ZLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON ZoneListWarningCode where
+    parseJSON = parseJSONText "ZoneListWarningCode"
+
+instance ToJSON ZoneListWarningCode where
+    toJSON = toJSONText
+
+-- | The type of the permission that was checked.
+data AuthorizationLoggingOptionsPermissionType
+    = ALOPTAdminRead
+      -- ^ @ADMIN_READ@
+    | ALOPTAdminWrite
+      -- ^ @ADMIN_WRITE@
+    | ALOPTDataRead
+      -- ^ @DATA_READ@
+    | ALOPTDataWrite
+      -- ^ @DATA_WRITE@
+    | ALOPTPermissionTypeUnspecified
+      -- ^ @PERMISSION_TYPE_UNSPECIFIED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuthorizationLoggingOptionsPermissionType
+
+instance FromHttpApiData AuthorizationLoggingOptionsPermissionType where
+    parseQueryParam = \case
+        "ADMIN_READ" -> Right ALOPTAdminRead
+        "ADMIN_WRITE" -> Right ALOPTAdminWrite
+        "DATA_READ" -> Right ALOPTDataRead
+        "DATA_WRITE" -> Right ALOPTDataWrite
+        "PERMISSION_TYPE_UNSPECIFIED" -> Right ALOPTPermissionTypeUnspecified
+        x -> Left ("Unable to parse AuthorizationLoggingOptionsPermissionType from: " <> x)
+
+instance ToHttpApiData AuthorizationLoggingOptionsPermissionType where
+    toQueryParam = \case
+        ALOPTAdminRead -> "ADMIN_READ"
+        ALOPTAdminWrite -> "ADMIN_WRITE"
+        ALOPTDataRead -> "DATA_READ"
+        ALOPTDataWrite -> "DATA_WRITE"
+        ALOPTPermissionTypeUnspecified -> "PERMISSION_TYPE_UNSPECIFIED"
+
+instance FromJSON AuthorizationLoggingOptionsPermissionType where
+    parseJSON = parseJSONText "AuthorizationLoggingOptionsPermissionType"
+
+instance ToJSON AuthorizationLoggingOptionsPermissionType where
+    toJSON = toJSONText
+
+-- | Form this outage is expected to take. Note that the \"IT_\" versions of
+-- this enum have been deprecated in favor of the unprefixed values.
+data InterconnectOutageNotificationIssueType
+    = ItOutage
+      -- ^ @IT_OUTAGE@
+    | ItPartialOutage
+      -- ^ @IT_PARTIAL_OUTAGE@
+    | Outage
+      -- ^ @OUTAGE@
+    | PartialOutage
+      -- ^ @PARTIAL_OUTAGE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectOutageNotificationIssueType
+
+instance FromHttpApiData InterconnectOutageNotificationIssueType where
+    parseQueryParam = \case
+        "IT_OUTAGE" -> Right ItOutage
+        "IT_PARTIAL_OUTAGE" -> Right ItPartialOutage
+        "OUTAGE" -> Right Outage
+        "PARTIAL_OUTAGE" -> Right PartialOutage
+        x -> Left ("Unable to parse InterconnectOutageNotificationIssueType from: " <> x)
+
+instance ToHttpApiData InterconnectOutageNotificationIssueType where
+    toQueryParam = \case
+        ItOutage -> "IT_OUTAGE"
+        ItPartialOutage -> "IT_PARTIAL_OUTAGE"
+        Outage -> "OUTAGE"
+        PartialOutage -> "PARTIAL_OUTAGE"
+
+instance FromJSON InterconnectOutageNotificationIssueType where
+    parseJSON = parseJSONText "InterconnectOutageNotificationIssueType"
+
+instance ToJSON InterconnectOutageNotificationIssueType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data CommitmentsScopedListWarningCode
+    = CSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | CSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | CSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | CSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | CSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | CSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | CSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | CSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | CSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | CSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | CSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | CSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | CSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | CSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | CSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | CSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | CSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | CSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | CSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | CSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | CSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | CSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | CSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CommitmentsScopedListWarningCode
+
+instance FromHttpApiData CommitmentsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right CSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right CSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right CSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right CSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right CSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right CSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right CSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right CSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right CSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right CSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right CSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right CSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right CSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right CSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right CSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right CSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right CSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right CSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right CSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right CSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right CSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right CSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right CSLWCUnreachable
+        x -> Left ("Unable to parse CommitmentsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData CommitmentsScopedListWarningCode where
+    toQueryParam = \case
+        CSLWCCleanupFailed -> "CLEANUP_FAILED"
+        CSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        CSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        CSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        CSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        CSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        CSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        CSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        CSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        CSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        CSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        CSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        CSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        CSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        CSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        CSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        CSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        CSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        CSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        CSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        CSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        CSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        CSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON CommitmentsScopedListWarningCode where
+    parseJSON = parseJSONText "CommitmentsScopedListWarningCode"
+
+instance ToJSON CommitmentsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InterconnectAttachmentsScopedListWarningCode
+    = IASLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IASLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IASLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IASLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IASLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IASLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IASLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IASLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IASLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IASLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IASLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IASLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IASLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IASLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IASLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IASLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IASLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IASLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IASLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IASLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IASLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IASLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IASLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentsScopedListWarningCode
+
+instance FromHttpApiData InterconnectAttachmentsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IASLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IASLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IASLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IASLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IASLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IASLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IASLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IASLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IASLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IASLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IASLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IASLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IASLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IASLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IASLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IASLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IASLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IASLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IASLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IASLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IASLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IASLWCUndeclaredProperties
+        "UNREACHABLE" -> Right IASLWCUnreachable
+        x -> Left ("Unable to parse InterconnectAttachmentsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentsScopedListWarningCode where
+    toQueryParam = \case
+        IASLWCCleanupFailed -> "CLEANUP_FAILED"
+        IASLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IASLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IASLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IASLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IASLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IASLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IASLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IASLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IASLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IASLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IASLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IASLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IASLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IASLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IASLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IASLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IASLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IASLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IASLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IASLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IASLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IASLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InterconnectAttachmentsScopedListWarningCode where
+    parseJSON = parseJSONText "InterconnectAttachmentsScopedListWarningCode"
+
+instance ToJSON InterconnectAttachmentsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data SecurityPolicyListWarningCode
+    = SECCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | SECDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | SECDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | SECDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | SECExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | SECExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | SECFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | SECInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | SECMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | SECNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | SECNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | SECNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | SECNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | SECNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | SECNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | SECNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | SECRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | SECResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | SECResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SECSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | SECSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | SECUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | SECUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SecurityPolicyListWarningCode
+
+instance FromHttpApiData SecurityPolicyListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right SECCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right SECDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right SECDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SECDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right SECExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right SECExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right SECFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right SECInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right SECMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SECNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SECNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right SECNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right SECNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right SECNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right SECNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right SECNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right SECRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right SECResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right SECResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right SECSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right SECSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right SECUndeclaredProperties
+        "UNREACHABLE" -> Right SECUnreachable
+        x -> Left ("Unable to parse SecurityPolicyListWarningCode from: " <> x)
+
+instance ToHttpApiData SecurityPolicyListWarningCode where
+    toQueryParam = \case
+        SECCleanupFailed -> "CLEANUP_FAILED"
+        SECDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        SECDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        SECDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        SECExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        SECExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        SECFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        SECInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        SECMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        SECNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        SECNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        SECNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        SECNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        SECNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        SECNotCriticalError -> "NOT_CRITICAL_ERROR"
+        SECNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        SECRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        SECResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        SECResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SECSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        SECSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        SECUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        SECUnreachable -> "UNREACHABLE"
+
+instance FromJSON SecurityPolicyListWarningCode where
+    parseJSON = parseJSONText "SecurityPolicyListWarningCode"
+
+instance ToJSON SecurityPolicyListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data CommitmentAggregatedListWarningCode
+    = CALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | CALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | CALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | CALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | CALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | CALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | CALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | CALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | CALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | CALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | CALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | CALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | CALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | CALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | CALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | CALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | CALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | CALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | CALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | CALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | CALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | CALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | CALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CommitmentAggregatedListWarningCode
+
+instance FromHttpApiData CommitmentAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right CALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right CALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right CALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right CALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right CALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right CALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right CALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right CALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right CALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right CALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right CALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right CALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right CALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right CALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right CALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right CALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right CALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right CALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right CALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right CALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right CALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right CALWCUndeclaredProperties
+        "UNREACHABLE" -> Right CALWCUnreachable
+        x -> Left ("Unable to parse CommitmentAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData CommitmentAggregatedListWarningCode where
+    toQueryParam = \case
+        CALWCCleanupFailed -> "CLEANUP_FAILED"
+        CALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        CALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        CALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        CALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        CALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        CALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        CALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        CALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        CALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        CALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        CALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        CALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        CALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        CALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        CALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        CALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        CALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        CALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        CALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        CALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        CALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        CALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON CommitmentAggregatedListWarningCode where
+    parseJSON = parseJSONText "CommitmentAggregatedListWarningCode"
+
+instance ToJSON CommitmentAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data RegionInstanceGroupListWarningCode
+    = RIGLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | RIGLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RIGLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | RIGLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RIGLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | RIGLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | RIGLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | RIGLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RIGLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | RIGLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RIGLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RIGLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RIGLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RIGLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RIGLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RIGLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RIGLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RIGLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | RIGLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RIGLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | RIGLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RIGLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | RIGLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RegionInstanceGroupListWarningCode
+
+instance FromHttpApiData RegionInstanceGroupListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right RIGLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right RIGLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right RIGLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RIGLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right RIGLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right RIGLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right RIGLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right RIGLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right RIGLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RIGLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RIGLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RIGLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RIGLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right RIGLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right RIGLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right RIGLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right RIGLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right RIGLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right RIGLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right RIGLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RIGLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right RIGLWCUndeclaredProperties
+        "UNREACHABLE" -> Right RIGLWCUnreachable
+        x -> Left ("Unable to parse RegionInstanceGroupListWarningCode from: " <> x)
+
+instance ToHttpApiData RegionInstanceGroupListWarningCode where
+    toQueryParam = \case
+        RIGLWCCleanupFailed -> "CLEANUP_FAILED"
+        RIGLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RIGLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        RIGLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RIGLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        RIGLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        RIGLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        RIGLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RIGLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        RIGLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RIGLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RIGLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RIGLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RIGLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RIGLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RIGLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RIGLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RIGLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        RIGLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RIGLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        RIGLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RIGLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        RIGLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON RegionInstanceGroupListWarningCode where
+    parseJSON = parseJSONText "RegionInstanceGroupListWarningCode"
+
+instance ToJSON RegionInstanceGroupListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceGroupsScopedListWarningCode
+    = IGSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IGSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IGSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupsScopedListWarningCode
+
+instance FromHttpApiData InstanceGroupsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IGSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IGSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IGSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IGSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IGSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IGSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IGSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IGSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IGSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IGSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IGSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IGSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IGSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IGSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right IGSLWCUnreachable
+        x -> Left ("Unable to parse InstanceGroupsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceGroupsScopedListWarningCode where
+    toQueryParam = \case
+        IGSLWCCleanupFailed -> "CLEANUP_FAILED"
+        IGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IGSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupsScopedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupsScopedListWarningCode"
+
+instance ToJSON InstanceGroupsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The current status of whether or not this Interconnect is
+-- functional.
+data InterconnectOperationalStatus
+    = IOSOSActive
+      -- ^ @OS_ACTIVE@
+    | IOSOSUnprovisioned
+      -- ^ @OS_UNPROVISIONED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectOperationalStatus
+
+instance FromHttpApiData InterconnectOperationalStatus where
+    parseQueryParam = \case
+        "OS_ACTIVE" -> Right IOSOSActive
+        "OS_UNPROVISIONED" -> Right IOSOSUnprovisioned
+        x -> Left ("Unable to parse InterconnectOperationalStatus from: " <> x)
+
+instance ToHttpApiData InterconnectOperationalStatus where
+    toQueryParam = \case
+        IOSOSActive -> "OS_ACTIVE"
+        IOSOSUnprovisioned -> "OS_UNPROVISIONED"
+
+instance FromJSON InterconnectOperationalStatus where
+    parseJSON = parseJSONText "InterconnectOperationalStatus"
+
+instance ToJSON InterconnectOperationalStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data LicensesListResponseWarningCode
+    = LLRWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | LLRWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | LLRWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | LLRWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | LLRWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | LLRWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | LLRWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | LLRWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | LLRWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | LLRWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | LLRWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | LLRWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | LLRWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | LLRWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | LLRWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | LLRWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | LLRWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | LLRWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | LLRWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | LLRWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | LLRWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | LLRWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | LLRWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable LicensesListResponseWarningCode
+
+instance FromHttpApiData LicensesListResponseWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right LLRWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right LLRWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right LLRWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right LLRWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right LLRWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right LLRWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right LLRWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right LLRWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right LLRWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right LLRWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right LLRWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right LLRWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right LLRWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right LLRWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right LLRWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right LLRWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right LLRWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right LLRWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right LLRWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right LLRWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right LLRWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right LLRWCUndeclaredProperties
+        "UNREACHABLE" -> Right LLRWCUnreachable
+        x -> Left ("Unable to parse LicensesListResponseWarningCode from: " <> x)
+
+instance ToHttpApiData LicensesListResponseWarningCode where
+    toQueryParam = \case
+        LLRWCCleanupFailed -> "CLEANUP_FAILED"
+        LLRWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        LLRWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        LLRWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        LLRWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        LLRWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        LLRWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        LLRWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        LLRWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        LLRWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        LLRWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        LLRWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        LLRWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        LLRWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        LLRWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        LLRWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        LLRWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        LLRWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        LLRWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        LLRWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        LLRWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        LLRWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        LLRWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON LicensesListResponseWarningCode where
+    parseJSON = parseJSONText "LicensesListResponseWarningCode"
+
+instance ToJSON LicensesListResponseWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance.
+data InstanceWithNamedPortsStatus
+    = IWNPSProvisioning
+      -- ^ @PROVISIONING@
+    | IWNPSRunning
+      -- ^ @RUNNING@
+    | IWNPSStaging
+      -- ^ @STAGING@
+    | IWNPSStopped
+      -- ^ @STOPPED@
+    | IWNPSStopping
+      -- ^ @STOPPING@
+    | IWNPSSuspended
+      -- ^ @SUSPENDED@
+    | IWNPSSuspending
+      -- ^ @SUSPENDING@
+    | IWNPSTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceWithNamedPortsStatus
+
+instance FromHttpApiData InstanceWithNamedPortsStatus where
+    parseQueryParam = \case
+        "PROVISIONING" -> Right IWNPSProvisioning
+        "RUNNING" -> Right IWNPSRunning
+        "STAGING" -> Right IWNPSStaging
+        "STOPPED" -> Right IWNPSStopped
+        "STOPPING" -> Right IWNPSStopping
+        "SUSPENDED" -> Right IWNPSSuspended
+        "SUSPENDING" -> Right IWNPSSuspending
+        "TERMINATED" -> Right IWNPSTerminated
+        x -> Left ("Unable to parse InstanceWithNamedPortsStatus from: " <> x)
+
+instance ToHttpApiData InstanceWithNamedPortsStatus where
+    toQueryParam = \case
+        IWNPSProvisioning -> "PROVISIONING"
+        IWNPSRunning -> "RUNNING"
+        IWNPSStaging -> "STAGING"
+        IWNPSStopped -> "STOPPED"
+        IWNPSStopping -> "STOPPING"
+        IWNPSSuspended -> "SUSPENDED"
+        IWNPSSuspending -> "SUSPENDING"
+        IWNPSTerminated -> "TERMINATED"
+
+instance FromJSON InstanceWithNamedPortsStatus where
+    parseJSON = parseJSONText "InstanceWithNamedPortsStatus"
+
+instance ToJSON InstanceWithNamedPortsStatus where
+    toJSON = toJSONText
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data TCPHealthCheckProxyHeader
+    = THCPHNone
+      -- ^ @NONE@
+    | THCPHProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TCPHealthCheckProxyHeader
+
+instance FromHttpApiData TCPHealthCheckProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right THCPHNone
+        "PROXY_V1" -> Right THCPHProxyV1
+        x -> Left ("Unable to parse TCPHealthCheckProxyHeader from: " <> x)
+
+instance ToHttpApiData TCPHealthCheckProxyHeader where
+    toQueryParam = \case
+        THCPHNone -> "NONE"
+        THCPHProxyV1 -> "PROXY_V1"
+
+instance FromJSON TCPHealthCheckProxyHeader where
+    parseJSON = parseJSONText "TCPHealthCheckProxyHeader"
+
+instance ToJSON TCPHealthCheckProxyHeader where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data CommitmentListWarningCode
+    = CLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | CLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | CLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | CLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | CLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | CLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | CLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | CLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | CLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | CLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | CLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | CLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | CLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | CLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | CLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | CLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | CLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | CLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | CLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | CLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | CLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | CLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | CLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CommitmentListWarningCode
+
+instance FromHttpApiData CommitmentListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right CLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right CLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right CLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right CLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right CLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right CLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right CLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right CLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right CLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right CLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right CLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right CLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right CLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right CLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right CLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right CLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right CLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right CLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right CLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right CLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right CLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right CLWCUndeclaredProperties
+        "UNREACHABLE" -> Right CLWCUnreachable
+        x -> Left ("Unable to parse CommitmentListWarningCode from: " <> x)
+
+instance ToHttpApiData CommitmentListWarningCode where
+    toQueryParam = \case
+        CLWCCleanupFailed -> "CLEANUP_FAILED"
+        CLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        CLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        CLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        CLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        CLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        CLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        CLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        CLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        CLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        CLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        CLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        CLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        CLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        CLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        CLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        CLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        CLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        CLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        CLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        CLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        CLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        CLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON CommitmentListWarningCode where
+    parseJSON = parseJSONText "CommitmentListWarningCode"
+
+instance ToJSON CommitmentListWarningCode where
+    toJSON = toJSONText
+
+-- | Trusted attributes supplied by the IAM system.
+data ConditionIAM
+    = Approver
+      -- ^ @APPROVER@
+    | Attribution
+      -- ^ @ATTRIBUTION@
+    | Authority
+      -- ^ @AUTHORITY@
+    | CredentialsType
+      -- ^ @CREDENTIALS_TYPE@
+    | JustificationType
+      -- ^ @JUSTIFICATION_TYPE@
+    | NoAttr
+      -- ^ @NO_ATTR@
+    | SecurityRealm
+      -- ^ @SECURITY_REALM@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionIAM
+
+instance FromHttpApiData ConditionIAM where
+    parseQueryParam = \case
+        "APPROVER" -> Right Approver
+        "ATTRIBUTION" -> Right Attribution
+        "AUTHORITY" -> Right Authority
+        "CREDENTIALS_TYPE" -> Right CredentialsType
+        "JUSTIFICATION_TYPE" -> Right JustificationType
+        "NO_ATTR" -> Right NoAttr
+        "SECURITY_REALM" -> Right SecurityRealm
+        x -> Left ("Unable to parse ConditionIAM from: " <> x)
+
+instance ToHttpApiData ConditionIAM where
+    toQueryParam = \case
+        Approver -> "APPROVER"
+        Attribution -> "ATTRIBUTION"
+        Authority -> "AUTHORITY"
+        CredentialsType -> "CREDENTIALS_TYPE"
+        JustificationType -> "JUSTIFICATION_TYPE"
+        NoAttr -> "NO_ATTR"
+        SecurityRealm -> "SECURITY_REALM"
+
+instance FromJSON ConditionIAM where
+    parseJSON = parseJSONText "ConditionIAM"
+
+instance ToJSON ConditionIAM where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data AddressAggregatedListWarningCode
+    = AALWCACleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | AALWCADeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | AALWCADeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | AALWCADiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | AALWCAExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | AALWCAExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | AALWCAFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | AALWCAInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | AALWCAMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | AALWCANextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | AALWCANextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | AALWCANextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | AALWCANextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | AALWCANextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | AALWCANotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | AALWCANoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | AALWCARequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | AALWCAResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | AALWCAResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | AALWCASchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | AALWCASingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | AALWCAUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | AALWCAUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AddressAggregatedListWarningCode
+
+instance FromHttpApiData AddressAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right AALWCACleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right AALWCADeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right AALWCADeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right AALWCADiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right AALWCAExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right AALWCAExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right AALWCAFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right AALWCAInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right AALWCAMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right AALWCANextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right AALWCANextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right AALWCANextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right AALWCANextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right AALWCANextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right AALWCANotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right AALWCANoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right AALWCARequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right AALWCAResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right AALWCAResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right AALWCASchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right AALWCASingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right AALWCAUndeclaredProperties
+        "UNREACHABLE" -> Right AALWCAUnreachable
+        x -> Left ("Unable to parse AddressAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData AddressAggregatedListWarningCode where
+    toQueryParam = \case
+        AALWCACleanupFailed -> "CLEANUP_FAILED"
+        AALWCADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        AALWCADeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        AALWCADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        AALWCAExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        AALWCAExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        AALWCAFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        AALWCAInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        AALWCAMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        AALWCANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        AALWCANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        AALWCANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        AALWCANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        AALWCANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        AALWCANotCriticalError -> "NOT_CRITICAL_ERROR"
+        AALWCANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        AALWCARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        AALWCAResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        AALWCAResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        AALWCASchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        AALWCASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        AALWCAUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        AALWCAUnreachable -> "UNREACHABLE"
+
+instance FromJSON AddressAggregatedListWarningCode where
+    parseJSON = parseJSONText "AddressAggregatedListWarningCode"
+
+instance ToJSON AddressAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InterconnectAttachmentListWarningCode
+    = IALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | IALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | IALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | IALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | IALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | IALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | IALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | IALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | IALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | IALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectAttachmentListWarningCode
+
+instance FromHttpApiData InterconnectAttachmentListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right IALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right IALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right IALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right IALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right IALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right IALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right IALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right IALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right IALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right IALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right IALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right IALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right IALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right IALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right IALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right IALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right IALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right IALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right IALWCUndeclaredProperties
+        "UNREACHABLE" -> Right IALWCUnreachable
+        x -> Left ("Unable to parse InterconnectAttachmentListWarningCode from: " <> x)
+
+instance ToHttpApiData InterconnectAttachmentListWarningCode where
+    toQueryParam = \case
+        IALWCCleanupFailed -> "CLEANUP_FAILED"
+        IALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        IALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        IALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        IALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        IALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        IALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        IALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        IALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        IALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InterconnectAttachmentListWarningCode where
+    parseJSON = parseJSONText "InterconnectAttachmentListWarningCode"
+
+instance ToJSON InterconnectAttachmentListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstancesScopedListWarningCode
+    = ISLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | ISLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ISLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | ISLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ISLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | ISLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | ISLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | ISLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ISLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | ISLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ISLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ISLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ISLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ISLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ISLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ISLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ISLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ISLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | ISLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ISLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | ISLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ISLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | ISLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstancesScopedListWarningCode
+
+instance FromHttpApiData InstancesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right ISLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right ISLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right ISLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ISLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right ISLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right ISLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right ISLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right ISLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right ISLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ISLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ISLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right ISLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right ISLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right ISLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right ISLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right ISLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right ISLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right ISLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right ISLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right ISLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right ISLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right ISLWCUndeclaredProperties
+        "UNREACHABLE" -> Right ISLWCUnreachable
+        x -> Left ("Unable to parse InstancesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstancesScopedListWarningCode where
+    toQueryParam = \case
+        ISLWCCleanupFailed -> "CLEANUP_FAILED"
+        ISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ISLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        ISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ISLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        ISLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        ISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        ISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ISLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        ISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ISLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        ISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ISLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        ISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ISLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        ISLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstancesScopedListWarningCode where
+    parseJSON = parseJSONText "InstancesScopedListWarningCode"
+
+instance ToJSON InstancesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | The type of the service resource.
+data XpnResourceIdType
+    = XRITProject
+      -- ^ @PROJECT@
+    | XRITXpnResourceTypeUnspecified
+      -- ^ @XPN_RESOURCE_TYPE_UNSPECIFIED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable XpnResourceIdType
+
+instance FromHttpApiData XpnResourceIdType where
+    parseQueryParam = \case
+        "PROJECT" -> Right XRITProject
+        "XPN_RESOURCE_TYPE_UNSPECIFIED" -> Right XRITXpnResourceTypeUnspecified
+        x -> Left ("Unable to parse XpnResourceIdType from: " <> x)
+
+instance ToHttpApiData XpnResourceIdType where
+    toQueryParam = \case
+        XRITProject -> "PROJECT"
+        XRITXpnResourceTypeUnspecified -> "XPN_RESOURCE_TYPE_UNSPECIFIED"
+
+instance FromJSON XpnResourceIdType where
+    parseJSON = parseJSONText "XpnResourceIdType"
+
+instance ToJSON XpnResourceIdType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data BackendServicesScopedListWarningCode
+    = BSSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | BSSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | BSSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | BSSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | BSSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | BSSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | BSSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | BSSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | BSSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | BSSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | BSSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | BSSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | BSSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | BSSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | BSSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | BSSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | BSSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | BSSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | BSSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | BSSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | BSSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | BSSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | BSSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServicesScopedListWarningCode
+
+instance FromHttpApiData BackendServicesScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right BSSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right BSSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right BSSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right BSSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right BSSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right BSSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right BSSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right BSSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right BSSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right BSSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right BSSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right BSSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right BSSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right BSSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right BSSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right BSSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right BSSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right BSSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right BSSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right BSSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right BSSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right BSSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right BSSLWCUnreachable
+        x -> Left ("Unable to parse BackendServicesScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData BackendServicesScopedListWarningCode where
+    toQueryParam = \case
+        BSSLWCCleanupFailed -> "CLEANUP_FAILED"
+        BSSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        BSSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        BSSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        BSSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        BSSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        BSSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        BSSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        BSSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        BSSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        BSSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        BSSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        BSSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        BSSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        BSSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        BSSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        BSSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        BSSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        BSSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        BSSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        BSSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        BSSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        BSSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON BackendServicesScopedListWarningCode where
+    parseJSON = parseJSONText "BackendServicesScopedListWarningCode"
+
+instance ToJSON BackendServicesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | Session affinity option, must be one of the following values: NONE:
+-- Connections from the same client IP may go to any instance in the pool.
+-- CLIENT_IP: Connections from the same client IP will go to the same
+-- instance in the pool while that instance remains healthy.
+-- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
+-- protocol will go to the same instance in the pool while that instance
+-- remains healthy.
+data TargetPoolSessionAffinity
+    = TPSAClientIP
+      -- ^ @CLIENT_IP@
+    | TPSAClientIPPortProto
+      -- ^ @CLIENT_IP_PORT_PROTO@
+    | TPSAClientIPProto
+      -- ^ @CLIENT_IP_PROTO@
+    | TPSAGeneratedCookie
+      -- ^ @GENERATED_COOKIE@
+    | TPSANone
+      -- ^ @NONE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TargetPoolSessionAffinity
+
+instance FromHttpApiData TargetPoolSessionAffinity where
+    parseQueryParam = \case
+        "CLIENT_IP" -> Right TPSAClientIP
+        "CLIENT_IP_PORT_PROTO" -> Right TPSAClientIPPortProto
+        "CLIENT_IP_PROTO" -> Right TPSAClientIPProto
+        "GENERATED_COOKIE" -> Right TPSAGeneratedCookie
+        "NONE" -> Right TPSANone
+        x -> Left ("Unable to parse TargetPoolSessionAffinity from: " <> x)
+
+instance ToHttpApiData TargetPoolSessionAffinity where
+    toQueryParam = \case
+        TPSAClientIP -> "CLIENT_IP"
+        TPSAClientIPPortProto -> "CLIENT_IP_PORT_PROTO"
+        TPSAClientIPProto -> "CLIENT_IP_PROTO"
+        TPSAGeneratedCookie -> "GENERATED_COOKIE"
+        TPSANone -> "NONE"
+
+instance FromJSON TargetPoolSessionAffinity where
+    parseJSON = parseJSONText "TargetPoolSessionAffinity"
+
+instance ToJSON TargetPoolSessionAffinity where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the autoscaler configuration.
+data AutoscalerStatus
+    = ASActive
+      -- ^ @ACTIVE@
+    | ASDeleting
+      -- ^ @DELETING@
+    | ASError'
+      -- ^ @ERROR@
+    | ASPending
+      -- ^ @PENDING@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AutoscalerStatus
+
+instance FromHttpApiData AutoscalerStatus where
+    parseQueryParam = \case
+        "ACTIVE" -> Right ASActive
+        "DELETING" -> Right ASDeleting
+        "ERROR" -> Right ASError'
+        "PENDING" -> Right ASPending
+        x -> Left ("Unable to parse AutoscalerStatus from: " <> x)
+
+instance ToHttpApiData AutoscalerStatus where
+    toQueryParam = \case
+        ASActive -> "ACTIVE"
+        ASDeleting -> "DELETING"
+        ASError' -> "ERROR"
+        ASPending -> "PENDING"
+
+instance FromJSON AutoscalerStatus where
+    parseJSON = parseJSONText "AutoscalerStatus"
+
+instance ToJSON AutoscalerStatus where
+    toJSON = toJSONText
+
+-- | The format used to encode and transmit the block device, which should be
+-- TAR. This is just a container and transmission format and not a runtime
+-- format. Provided by the client when the disk image is created.
+data ImageRawDiskContainerType
+    = TAR
+      -- ^ @TAR@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ImageRawDiskContainerType
+
+instance FromHttpApiData ImageRawDiskContainerType where
+    parseQueryParam = \case
+        "TAR" -> Right TAR
+        x -> Left ("Unable to parse ImageRawDiskContainerType from: " <> x)
+
+instance ToHttpApiData ImageRawDiskContainerType where
+    toQueryParam = \case
+        TAR -> "TAR"
+
+instance FromJSON ImageRawDiskContainerType where
+    parseJSON = parseJSONText "ImageRawDiskContainerType"
+
+instance ToJSON ImageRawDiskContainerType where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data InstanceAggregatedListWarningCode
+    = INSCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | INSDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | INSDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | INSDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | INSExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | INSExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | INSFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | INSInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | INSMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | INSNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | INSNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | INSNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | INSNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | INSNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | INSNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | INSNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | INSRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | INSResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | INSResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | INSSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | INSSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | INSUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | INSUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceAggregatedListWarningCode
+
+instance FromHttpApiData InstanceAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right INSCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right INSDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right INSDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right INSDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right INSExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right INSExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right INSFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right INSInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right INSMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right INSNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right INSNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right INSNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right INSNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right INSNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right INSNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right INSNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right INSRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right INSResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right INSResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right INSSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right INSSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right INSUndeclaredProperties
+        "UNREACHABLE" -> Right INSUnreachable
+        x -> Left ("Unable to parse InstanceAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData InstanceAggregatedListWarningCode where
+    toQueryParam = \case
+        INSCleanupFailed -> "CLEANUP_FAILED"
+        INSDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        INSDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        INSDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        INSExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        INSExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        INSFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        INSInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        INSMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        INSNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        INSNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        INSNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        INSNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        INSNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        INSNotCriticalError -> "NOT_CRITICAL_ERROR"
+        INSNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        INSRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        INSResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        INSResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        INSSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        INSSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        INSUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        INSUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceAggregatedListWarningCode where
+    parseJSON = parseJSONText "InstanceAggregatedListWarningCode"
+
+instance ToJSON InstanceAggregatedListWarningCode where
+    toJSON = toJSONText
+
+-- | Type of resource for which this commitment applies. Possible values are
+-- VCPU and MEMORY
+data ResourceCommitmentType
+    = Memory
+      -- ^ @MEMORY@
+    | Unspecified
+      -- ^ @UNSPECIFIED@
+    | Vcpu
+      -- ^ @VCPU@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ResourceCommitmentType
+
+instance FromHttpApiData ResourceCommitmentType where
+    parseQueryParam = \case
+        "MEMORY" -> Right Memory
+        "UNSPECIFIED" -> Right Unspecified
+        "VCPU" -> Right Vcpu
+        x -> Left ("Unable to parse ResourceCommitmentType from: " <> x)
+
+instance ToHttpApiData ResourceCommitmentType where
+    toQueryParam = \case
+        Memory -> "MEMORY"
+        Unspecified -> "UNSPECIFIED"
+        Vcpu -> "VCPU"
+
+instance FromJSON ResourceCommitmentType where
+    parseJSON = parseJSONText "ResourceCommitmentType"
+
+instance ToJSON ResourceCommitmentType where
+    toJSON = toJSONText
+
+-- | This signifies the networking tier used for configuring this load
+-- balancer and can only take the following values: PREMIUM , STANDARD. For
+-- regional ForwardingRule, the valid values are PREMIUM and STANDARD. For
+-- GlobalForwardingRule, the valid value is PREMIUM. If this field is not
+-- specified, it is assumed to be PREMIUM. If IPAddress is specified, this
+-- value must be equal to the networkTier of the Address.
+data ForwardingRuleNetworkTier
+    = FRNTPremium
+      -- ^ @PREMIUM@
+    | FRNTStandard
+      -- ^ @STANDARD@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ForwardingRuleNetworkTier
+
+instance FromHttpApiData ForwardingRuleNetworkTier where
+    parseQueryParam = \case
+        "PREMIUM" -> Right FRNTPremium
+        "STANDARD" -> Right FRNTStandard
+        x -> Left ("Unable to parse ForwardingRuleNetworkTier from: " <> x)
+
+instance ToHttpApiData ForwardingRuleNetworkTier where
+    toQueryParam = \case
+        FRNTPremium -> "PREMIUM"
+        FRNTStandard -> "STANDARD"
+
+instance FromJSON ForwardingRuleNetworkTier where
+    parseJSON = parseJSONText "ForwardingRuleNetworkTier"
+
+instance ToJSON ForwardingRuleNetworkTier where
+    toJSON = toJSONText
+
+-- | [Output Only] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data BackendServiceAggregatedListWarningCode
+    = BSALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | BSALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | BSALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | BSALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | BSALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | BSALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | BSALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | BSALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | BSALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | BSALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | BSALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | BSALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | BSALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | BSALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | BSALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | BSALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | BSALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | BSALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | BSALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | BSALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | BSALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | BSALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | BSALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BackendServiceAggregatedListWarningCode
+
+instance FromHttpApiData BackendServiceAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right BSALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right BSALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right BSALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right BSALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right BSALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right BSALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right BSALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right BSALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right BSALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right BSALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right BSALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right BSALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right BSALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right BSALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right BSALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right BSALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right BSALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right BSALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right BSALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right BSALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right BSALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right BSALWCUndeclaredProperties
+        "UNREACHABLE" -> Right BSALWCUnreachable
+        x -> Left ("Unable to parse BackendServiceAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData BackendServiceAggregatedListWarningCode where
+    toQueryParam = \case
+        BSALWCCleanupFailed -> "CLEANUP_FAILED"
+        BSALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        BSALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        BSALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        BSALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        BSALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        BSALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        BSALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        BSALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        BSALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        BSALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        BSALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        BSALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        BSALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        BSALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        BSALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        BSALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        BSALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        BSALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        BSALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        BSALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        BSALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        BSALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON BackendServiceAggregatedListWarningCode where
+    parseJSON = parseJSONText "BackendServiceAggregatedListWarningCode"
+
+instance ToJSON BackendServiceAggregatedListWarningCode where
     toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.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.Compute.AcceleratorTypes.AggregatedList
+-- 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 an aggregated list of accelerator types.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.acceleratorTypes.aggregatedList@.
+module Network.Google.Resource.Compute.AcceleratorTypes.AggregatedList
+    (
+    -- * REST Resource
+      AcceleratorTypesAggregatedListResource
+
+    -- * Creating a Request
+    , acceleratorTypesAggregatedList
+    , AcceleratorTypesAggregatedList
+
+    -- * Request Lenses
+    , atalOrderBy
+    , atalProject
+    , atalFilter
+    , atalPageToken
+    , atalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.acceleratorTypes.aggregatedList@ method which the
+-- 'AcceleratorTypesAggregatedList' request conforms to.
+type AcceleratorTypesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "acceleratorTypes" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] AcceleratorTypeAggregatedList
+
+-- | Retrieves an aggregated list of accelerator types.
+--
+-- /See:/ 'acceleratorTypesAggregatedList' smart constructor.
+data AcceleratorTypesAggregatedList = AcceleratorTypesAggregatedList'
+    { _atalOrderBy    :: !(Maybe Text)
+    , _atalProject    :: !Text
+    , _atalFilter     :: !(Maybe Text)
+    , _atalPageToken  :: !(Maybe Text)
+    , _atalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atalOrderBy'
+--
+-- * 'atalProject'
+--
+-- * 'atalFilter'
+--
+-- * 'atalPageToken'
+--
+-- * 'atalMaxResults'
+acceleratorTypesAggregatedList
+    :: Text -- ^ 'atalProject'
+    -> AcceleratorTypesAggregatedList
+acceleratorTypesAggregatedList pAtalProject_ =
+    AcceleratorTypesAggregatedList'
+    { _atalOrderBy = Nothing
+    , _atalProject = pAtalProject_
+    , _atalFilter = Nothing
+    , _atalPageToken = Nothing
+    , _atalMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+atalOrderBy :: Lens' AcceleratorTypesAggregatedList (Maybe Text)
+atalOrderBy
+  = lens _atalOrderBy (\ s a -> s{_atalOrderBy = a})
+
+-- | Project ID for this request.
+atalProject :: Lens' AcceleratorTypesAggregatedList Text
+atalProject
+  = lens _atalProject (\ s a -> s{_atalProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+atalFilter :: Lens' AcceleratorTypesAggregatedList (Maybe Text)
+atalFilter
+  = lens _atalFilter (\ s a -> s{_atalFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+atalPageToken :: Lens' AcceleratorTypesAggregatedList (Maybe Text)
+atalPageToken
+  = lens _atalPageToken
+      (\ s a -> s{_atalPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+atalMaxResults :: Lens' AcceleratorTypesAggregatedList Word32
+atalMaxResults
+  = lens _atalMaxResults
+      (\ s a -> s{_atalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AcceleratorTypesAggregatedList
+         where
+        type Rs AcceleratorTypesAggregatedList =
+             AcceleratorTypeAggregatedList
+        type Scopes AcceleratorTypesAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient AcceleratorTypesAggregatedList'{..}
+          = go _atalProject _atalOrderBy _atalFilter
+              _atalPageToken
+              (Just _atalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy AcceleratorTypesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.AcceleratorTypes.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)
+--
+-- Returns the specified accelerator type.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.acceleratorTypes.get@.
+module Network.Google.Resource.Compute.AcceleratorTypes.Get
+    (
+    -- * REST Resource
+      AcceleratorTypesGetResource
+
+    -- * Creating a Request
+    , acceleratorTypesGet
+    , AcceleratorTypesGet
+
+    -- * Request Lenses
+    , atgAcceleratorType
+    , atgProject
+    , atgZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.acceleratorTypes.get@ method which the
+-- 'AcceleratorTypesGet' request conforms to.
+type AcceleratorTypesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "acceleratorTypes" :>
+                   Capture "acceleratorType" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] AcceleratorType
+
+-- | Returns the specified accelerator type.
+--
+-- /See:/ 'acceleratorTypesGet' smart constructor.
+data AcceleratorTypesGet = AcceleratorTypesGet'
+    { _atgAcceleratorType :: !Text
+    , _atgProject         :: !Text
+    , _atgZone            :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atgAcceleratorType'
+--
+-- * 'atgProject'
+--
+-- * 'atgZone'
+acceleratorTypesGet
+    :: Text -- ^ 'atgAcceleratorType'
+    -> Text -- ^ 'atgProject'
+    -> Text -- ^ 'atgZone'
+    -> AcceleratorTypesGet
+acceleratorTypesGet pAtgAcceleratorType_ pAtgProject_ pAtgZone_ =
+    AcceleratorTypesGet'
+    { _atgAcceleratorType = pAtgAcceleratorType_
+    , _atgProject = pAtgProject_
+    , _atgZone = pAtgZone_
+    }
+
+-- | Name of the accelerator type to return.
+atgAcceleratorType :: Lens' AcceleratorTypesGet Text
+atgAcceleratorType
+  = lens _atgAcceleratorType
+      (\ s a -> s{_atgAcceleratorType = a})
+
+-- | Project ID for this request.
+atgProject :: Lens' AcceleratorTypesGet Text
+atgProject
+  = lens _atgProject (\ s a -> s{_atgProject = a})
+
+-- | The name of the zone for this request.
+atgZone :: Lens' AcceleratorTypesGet Text
+atgZone = lens _atgZone (\ s a -> s{_atgZone = a})
+
+instance GoogleRequest AcceleratorTypesGet where
+        type Rs AcceleratorTypesGet = AcceleratorType
+        type Scopes AcceleratorTypesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient AcceleratorTypesGet'{..}
+          = go _atgProject _atgZone _atgAcceleratorType
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AcceleratorTypesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.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.Compute.AcceleratorTypes.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)
+--
+-- Retrieves a list of accelerator types available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.acceleratorTypes.list@.
+module Network.Google.Resource.Compute.AcceleratorTypes.List
+    (
+    -- * REST Resource
+      AcceleratorTypesListResource
+
+    -- * Creating a Request
+    , acceleratorTypesList
+    , AcceleratorTypesList
+
+    -- * Request Lenses
+    , atlOrderBy
+    , atlProject
+    , atlZone
+    , atlFilter
+    , atlPageToken
+    , atlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.acceleratorTypes.list@ method which the
+-- 'AcceleratorTypesList' request conforms to.
+type AcceleratorTypesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "acceleratorTypes" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] AcceleratorTypeList
+
+-- | Retrieves a list of accelerator types available to the specified
+-- project.
+--
+-- /See:/ 'acceleratorTypesList' smart constructor.
+data AcceleratorTypesList = AcceleratorTypesList'
+    { _atlOrderBy    :: !(Maybe Text)
+    , _atlProject    :: !Text
+    , _atlZone       :: !Text
+    , _atlFilter     :: !(Maybe Text)
+    , _atlPageToken  :: !(Maybe Text)
+    , _atlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorTypesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atlOrderBy'
+--
+-- * 'atlProject'
+--
+-- * 'atlZone'
+--
+-- * 'atlFilter'
+--
+-- * 'atlPageToken'
+--
+-- * 'atlMaxResults'
+acceleratorTypesList
+    :: Text -- ^ 'atlProject'
+    -> Text -- ^ 'atlZone'
+    -> AcceleratorTypesList
+acceleratorTypesList pAtlProject_ pAtlZone_ =
+    AcceleratorTypesList'
+    { _atlOrderBy = Nothing
+    , _atlProject = pAtlProject_
+    , _atlZone = pAtlZone_
+    , _atlFilter = Nothing
+    , _atlPageToken = Nothing
+    , _atlMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+atlOrderBy :: Lens' AcceleratorTypesList (Maybe Text)
+atlOrderBy
+  = lens _atlOrderBy (\ s a -> s{_atlOrderBy = a})
+
+-- | Project ID for this request.
+atlProject :: Lens' AcceleratorTypesList Text
+atlProject
+  = lens _atlProject (\ s a -> s{_atlProject = a})
+
+-- | The name of the zone for this request.
+atlZone :: Lens' AcceleratorTypesList Text
+atlZone = lens _atlZone (\ s a -> s{_atlZone = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+atlFilter :: Lens' AcceleratorTypesList (Maybe Text)
+atlFilter
+  = lens _atlFilter (\ s a -> s{_atlFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+atlPageToken :: Lens' AcceleratorTypesList (Maybe Text)
+atlPageToken
+  = lens _atlPageToken (\ s a -> s{_atlPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+atlMaxResults :: Lens' AcceleratorTypesList Word32
+atlMaxResults
+  = lens _atlMaxResults
+      (\ s a -> s{_atlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AcceleratorTypesList where
+        type Rs AcceleratorTypesList = AcceleratorTypeList
+        type Scopes AcceleratorTypesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient AcceleratorTypesList'{..}
+          = go _atlProject _atlZone _atlOrderBy _atlFilter
+              _atlPageToken
+              (Just _atlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AcceleratorTypesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs
@@ -112,26 +112,22 @@
 aalProject
   = lens _aalProject (\ s a -> s{_aalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 aalFilter :: Lens' AddressesAggregatedList (Maybe Text)
 aalFilter
   = lens _aalFilter (\ s a -> s{_aalFilter = a})
@@ -145,7 +141,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 aalMaxResults :: Lens' AddressesAggregatedList Word32
 aalMaxResults
   = lens _aalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Delete.hs b/gen/Network/Google/Resource/Compute/Addresses/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Addresses/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Addresses/Delete.hs
@@ -33,6 +33,7 @@
     , AddressesDelete
 
     -- * Request Lenses
+    , adddRequestId
     , adddProject
     , adddAddress
     , adddRegion
@@ -52,21 +53,25 @@
                Capture "region" Text :>
                  "addresses" :>
                    Capture "address" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified address resource.
 --
 -- /See:/ 'addressesDelete' smart constructor.
 data AddressesDelete = AddressesDelete'
-    { _adddProject :: !Text
-    , _adddAddress :: !Text
-    , _adddRegion  :: !Text
+    { _adddRequestId :: !(Maybe Text)
+    , _adddProject   :: !Text
+    , _adddAddress   :: !Text
+    , _adddRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AddressesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'adddRequestId'
+--
 -- * 'adddProject'
 --
 -- * 'adddAddress'
@@ -79,11 +84,27 @@
     -> AddressesDelete
 addressesDelete pAdddProject_ pAdddAddress_ pAdddRegion_ =
     AddressesDelete'
-    { _adddProject = pAdddProject_
+    { _adddRequestId = Nothing
+    , _adddProject = pAdddProject_
     , _adddAddress = pAdddAddress_
     , _adddRegion = pAdddRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+adddRequestId :: Lens' AddressesDelete (Maybe Text)
+adddRequestId
+  = lens _adddRequestId
+      (\ s a -> s{_adddRequestId = a})
+
 -- | Project ID for this request.
 adddProject :: Lens' AddressesDelete Text
 adddProject
@@ -106,6 +127,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient AddressesDelete'{..}
           = go _adddProject _adddRegion _adddAddress
+              _adddRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Insert.hs b/gen/Network/Google/Resource/Compute/Addresses/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Addresses/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Addresses/Insert.hs
@@ -34,6 +34,7 @@
     , AddressesInsert
 
     -- * Request Lenses
+    , aiRequestId
     , aiProject
     , aiPayload
     , aiRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "addresses" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Address :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Address :> Post '[JSON] Operation
 
 -- | Creates an address resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'addressesInsert' smart constructor.
 data AddressesInsert = AddressesInsert'
-    { _aiProject :: !Text
-    , _aiPayload :: !Address
-    , _aiRegion  :: !Text
+    { _aiRequestId :: !(Maybe Text)
+    , _aiProject   :: !Text
+    , _aiPayload   :: !Address
+    , _aiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AddressesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'aiRequestId'
+--
 -- * 'aiProject'
 --
 -- * 'aiPayload'
@@ -81,11 +86,26 @@
     -> AddressesInsert
 addressesInsert pAiProject_ pAiPayload_ pAiRegion_ =
     AddressesInsert'
-    { _aiProject = pAiProject_
+    { _aiRequestId = Nothing
+    , _aiProject = pAiProject_
     , _aiPayload = pAiPayload_
     , _aiRegion = pAiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+aiRequestId :: Lens' AddressesInsert (Maybe Text)
+aiRequestId
+  = lens _aiRequestId (\ s a -> s{_aiRequestId = a})
+
 -- | Project ID for this request.
 aiProject :: Lens' AddressesInsert Text
 aiProject
@@ -106,7 +126,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient AddressesInsert'{..}
-          = go _aiProject _aiRegion (Just AltJSON) _aiPayload
+          = go _aiProject _aiRegion _aiRequestId (Just AltJSON)
+              _aiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Addresses/List.hs b/gen/Network/Google/Resource/Compute/Addresses/List.hs
--- a/gen/Network/Google/Resource/Compute/Addresses/List.hs
+++ b/gen/Network/Google/Resource/Compute/Addresses/List.hs
@@ -118,26 +118,22 @@
 alProject
   = lens _alProject (\ s a -> s{_alProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 alFilter :: Lens' AddressesList (Maybe Text)
 alFilter = lens _alFilter (\ s a -> s{_alFilter = a})
 
@@ -154,7 +150,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 alMaxResults :: Lens' AddressesList Word32
 alMaxResults
   = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs
@@ -112,26 +112,22 @@
 autProject
   = lens _autProject (\ s a -> s{_autProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 autFilter :: Lens' AutoscalersAggregatedList (Maybe Text)
 autFilter
   = lens _autFilter (\ s a -> s{_autFilter = a})
@@ -145,7 +141,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 autMaxResults :: Lens' AutoscalersAggregatedList Word32
 autMaxResults
   = lens _autMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs
@@ -33,6 +33,7 @@
     , AutoscalersDelete
 
     -- * Request Lenses
+    , adRequestId
     , adProject
     , adZone
     , adAutoscaler
@@ -52,13 +53,15 @@
                Capture "zone" Text :>
                  "autoscalers" :>
                    Capture "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified autoscaler.
 --
 -- /See:/ 'autoscalersDelete' smart constructor.
 data AutoscalersDelete = AutoscalersDelete'
-    { _adProject    :: !Text
+    { _adRequestId  :: !(Maybe Text)
+    , _adProject    :: !Text
     , _adZone       :: !Text
     , _adAutoscaler :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'adRequestId'
+--
 -- * 'adProject'
 --
 -- * 'adZone'
@@ -79,11 +84,26 @@
     -> AutoscalersDelete
 autoscalersDelete pAdProject_ pAdZone_ pAdAutoscaler_ =
     AutoscalersDelete'
-    { _adProject = pAdProject_
+    { _adRequestId = Nothing
+    , _adProject = pAdProject_
     , _adZone = pAdZone_
     , _adAutoscaler = pAdAutoscaler_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+adRequestId :: Lens' AutoscalersDelete (Maybe Text)
+adRequestId
+  = lens _adRequestId (\ s a -> s{_adRequestId = a})
+
 -- | Project ID for this request.
 adProject :: Lens' AutoscalersDelete Text
 adProject
@@ -104,7 +124,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient AutoscalersDelete'{..}
-          = go _adProject _adZone _adAutoscaler (Just AltJSON)
+          = go _adProject _adZone _adAutoscaler _adRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified autoscaler resource. Get a list of available
+-- Returns the specified autoscaler resource. Gets a list of available
 -- autoscalers by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.get@.
@@ -55,7 +55,7 @@
                    Capture "autoscaler" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Autoscaler
 
--- | Returns the specified autoscaler resource. Get a list of available
+-- | Returns the specified autoscaler resource. Gets a list of available
 -- autoscalers by making a list() request.
 --
 -- /See:/ 'autoscalersGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs
@@ -34,6 +34,7 @@
     , AutoscalersInsert
 
     -- * Request Lenses
+    , aiiRequestId
     , aiiProject
     , aiiZone
     , aiiPayload
@@ -52,23 +53,27 @@
              "zones" :>
                Capture "zone" Text :>
                  "autoscalers" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
 
 -- | Creates an autoscaler in the specified project using the data included
 -- in the request.
 --
 -- /See:/ 'autoscalersInsert' smart constructor.
 data AutoscalersInsert = AutoscalersInsert'
-    { _aiiProject :: !Text
-    , _aiiZone    :: !Text
-    , _aiiPayload :: !Autoscaler
+    { _aiiRequestId :: !(Maybe Text)
+    , _aiiProject   :: !Text
+    , _aiiZone      :: !Text
+    , _aiiPayload   :: !Autoscaler
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AutoscalersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'aiiRequestId'
+--
 -- * 'aiiProject'
 --
 -- * 'aiiZone'
@@ -81,11 +86,26 @@
     -> AutoscalersInsert
 autoscalersInsert pAiiProject_ pAiiZone_ pAiiPayload_ =
     AutoscalersInsert'
-    { _aiiProject = pAiiProject_
+    { _aiiRequestId = Nothing
+    , _aiiProject = pAiiProject_
     , _aiiZone = pAiiZone_
     , _aiiPayload = pAiiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+aiiRequestId :: Lens' AutoscalersInsert (Maybe Text)
+aiiRequestId
+  = lens _aiiRequestId (\ s a -> s{_aiiRequestId = a})
+
 -- | Project ID for this request.
 aiiProject :: Lens' AutoscalersInsert Text
 aiiProject
@@ -106,7 +126,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient AutoscalersInsert'{..}
-          = go _aiiProject _aiiZone (Just AltJSON) _aiiPayload
+          = go _aiiProject _aiiZone _aiiRequestId
+              (Just AltJSON)
+              _aiiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/List.hs b/gen/Network/Google/Resource/Compute/Autoscalers/List.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/List.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/List.hs
@@ -121,26 +121,22 @@
 aZone :: Lens' AutoscalersList Text
 aZone = lens _aZone (\ s a -> s{_aZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 aFilter :: Lens' AutoscalersList (Maybe Text)
 aFilter = lens _aFilter (\ s a -> s{_aFilter = a})
 
@@ -153,7 +149,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 aMaxResults :: Lens' AutoscalersList Word32
 aMaxResults
   = lens _aMaxResults (\ s a -> s{_aMaxResults = a}) .
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates an autoscaler in the specified project using the data included
--- in the request. This method supports patch semantics.
+-- in the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.patch@.
 module Network.Google.Resource.Compute.Autoscalers.Patch
@@ -34,6 +35,7 @@
     , AutoscalersPatch
 
     -- * Request Lenses
+    , apRequestId
     , apProject
     , apZone
     , apPayload
@@ -53,25 +55,30 @@
              "zones" :>
                Capture "zone" Text :>
                  "autoscalers" :>
-                   QueryParam "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "autoscaler" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
 
 -- | Updates an autoscaler in the specified project using the data included
--- in the request. This method supports patch semantics.
+-- in the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
 --
 -- /See:/ 'autoscalersPatch' smart constructor.
 data AutoscalersPatch = AutoscalersPatch'
-    { _apProject    :: !Text
+    { _apRequestId  :: !(Maybe Text)
+    , _apProject    :: !Text
     , _apZone       :: !Text
     , _apPayload    :: !Autoscaler
-    , _apAutoscaler :: !Text
+    , _apAutoscaler :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AutoscalersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'apRequestId'
+--
 -- * 'apProject'
 --
 -- * 'apZone'
@@ -83,16 +90,30 @@
     :: Text -- ^ 'apProject'
     -> Text -- ^ 'apZone'
     -> Autoscaler -- ^ 'apPayload'
-    -> Text -- ^ 'apAutoscaler'
     -> AutoscalersPatch
-autoscalersPatch pApProject_ pApZone_ pApPayload_ pApAutoscaler_ =
+autoscalersPatch pApProject_ pApZone_ pApPayload_ =
     AutoscalersPatch'
-    { _apProject = pApProject_
+    { _apRequestId = Nothing
+    , _apProject = pApProject_
     , _apZone = pApZone_
     , _apPayload = pApPayload_
-    , _apAutoscaler = pApAutoscaler_
+    , _apAutoscaler = Nothing
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+apRequestId :: Lens' AutoscalersPatch (Maybe Text)
+apRequestId
+  = lens _apRequestId (\ s a -> s{_apRequestId = a})
+
 -- | Project ID for this request.
 apProject :: Lens' AutoscalersPatch Text
 apProject
@@ -107,8 +128,8 @@
 apPayload
   = lens _apPayload (\ s a -> s{_apPayload = a})
 
--- | Name of the autoscaler to update.
-apAutoscaler :: Lens' AutoscalersPatch Text
+-- | Name of the autoscaler to patch.
+apAutoscaler :: Lens' AutoscalersPatch (Maybe Text)
 apAutoscaler
   = lens _apAutoscaler (\ s a -> s{_apAutoscaler = a})
 
@@ -118,7 +139,7 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient AutoscalersPatch'{..}
-          = go _apProject _apZone (Just _apAutoscaler)
+          = go _apProject _apZone _apRequestId _apAutoscaler
               (Just AltJSON)
               _apPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs
--- a/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs
@@ -34,6 +34,7 @@
     , AutoscalersUpdate
 
     -- * Request Lenses
+    , auRequestId
     , auProject
     , auZone
     , auPayload
@@ -53,16 +54,18 @@
              "zones" :>
                Capture "zone" Text :>
                  "autoscalers" :>
-                   QueryParam "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "autoscaler" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
 
 -- | Updates an autoscaler in the specified project using the data included
 -- in the request.
 --
 -- /See:/ 'autoscalersUpdate' smart constructor.
 data AutoscalersUpdate = AutoscalersUpdate'
-    { _auProject    :: !Text
+    { _auRequestId  :: !(Maybe Text)
+    , _auProject    :: !Text
     , _auZone       :: !Text
     , _auPayload    :: !Autoscaler
     , _auAutoscaler :: !(Maybe Text)
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'auRequestId'
+--
 -- * 'auProject'
 --
 -- * 'auZone'
@@ -86,12 +91,27 @@
     -> AutoscalersUpdate
 autoscalersUpdate pAuProject_ pAuZone_ pAuPayload_ =
     AutoscalersUpdate'
-    { _auProject = pAuProject_
+    { _auRequestId = Nothing
+    , _auProject = pAuProject_
     , _auZone = pAuZone_
     , _auPayload = pAuPayload_
     , _auAutoscaler = Nothing
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+auRequestId :: Lens' AutoscalersUpdate (Maybe Text)
+auRequestId
+  = lens _auRequestId (\ s a -> s{_auRequestId = a})
+
 -- | Project ID for this request.
 auProject :: Lens' AutoscalersUpdate Text
 auProject
@@ -117,7 +137,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient AutoscalersUpdate'{..}
-          = go _auProject _auZone _auAutoscaler (Just AltJSON)
+          = go _auProject _auZone _auRequestId _auAutoscaler
+              (Just AltJSON)
               _auPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.AddSignedURLKey
+-- 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)
+--
+-- Adds a key for validating requests with signed URLs for this backend
+-- bucket.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.addSignedUrlKey@.
+module Network.Google.Resource.Compute.BackendBuckets.AddSignedURLKey
+    (
+    -- * REST Resource
+      BackendBucketsAddSignedURLKeyResource
+
+    -- * Creating a Request
+    , backendBucketsAddSignedURLKey
+    , BackendBucketsAddSignedURLKey
+
+    -- * Request Lenses
+    , bbasukRequestId
+    , bbasukBackendBucket
+    , bbasukProject
+    , bbasukPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.addSignedUrlKey@ method which the
+-- 'BackendBucketsAddSignedURLKey' request conforms to.
+type BackendBucketsAddSignedURLKeyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   "addSignedUrlKey" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SignedURLKey :>
+                           Post '[JSON] Operation
+
+-- | Adds a key for validating requests with signed URLs for this backend
+-- bucket.
+--
+-- /See:/ 'backendBucketsAddSignedURLKey' smart constructor.
+data BackendBucketsAddSignedURLKey = BackendBucketsAddSignedURLKey'
+    { _bbasukRequestId     :: !(Maybe Text)
+    , _bbasukBackendBucket :: !Text
+    , _bbasukProject       :: !Text
+    , _bbasukPayload       :: !SignedURLKey
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsAddSignedURLKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbasukRequestId'
+--
+-- * 'bbasukBackendBucket'
+--
+-- * 'bbasukProject'
+--
+-- * 'bbasukPayload'
+backendBucketsAddSignedURLKey
+    :: Text -- ^ 'bbasukBackendBucket'
+    -> Text -- ^ 'bbasukProject'
+    -> SignedURLKey -- ^ 'bbasukPayload'
+    -> BackendBucketsAddSignedURLKey
+backendBucketsAddSignedURLKey pBbasukBackendBucket_ pBbasukProject_ pBbasukPayload_ =
+    BackendBucketsAddSignedURLKey'
+    { _bbasukRequestId = Nothing
+    , _bbasukBackendBucket = pBbasukBackendBucket_
+    , _bbasukProject = pBbasukProject_
+    , _bbasukPayload = pBbasukPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbasukRequestId :: Lens' BackendBucketsAddSignedURLKey (Maybe Text)
+bbasukRequestId
+  = lens _bbasukRequestId
+      (\ s a -> s{_bbasukRequestId = a})
+
+-- | Name of the BackendBucket resource to which the Signed URL Key should be
+-- added. The name should conform to RFC1035.
+bbasukBackendBucket :: Lens' BackendBucketsAddSignedURLKey Text
+bbasukBackendBucket
+  = lens _bbasukBackendBucket
+      (\ s a -> s{_bbasukBackendBucket = a})
+
+-- | Project ID for this request.
+bbasukProject :: Lens' BackendBucketsAddSignedURLKey Text
+bbasukProject
+  = lens _bbasukProject
+      (\ s a -> s{_bbasukProject = a})
+
+-- | Multipart request metadata.
+bbasukPayload :: Lens' BackendBucketsAddSignedURLKey SignedURLKey
+bbasukPayload
+  = lens _bbasukPayload
+      (\ s a -> s{_bbasukPayload = a})
+
+instance GoogleRequest BackendBucketsAddSignedURLKey
+         where
+        type Rs BackendBucketsAddSignedURLKey = Operation
+        type Scopes BackendBucketsAddSignedURLKey =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsAddSignedURLKey'{..}
+          = go _bbasukProject _bbasukBackendBucket
+              _bbasukRequestId
+              (Just AltJSON)
+              _bbasukPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BackendBucketsAddSignedURLKeyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.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 specified BackendBucket resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.delete@.
+module Network.Google.Resource.Compute.BackendBuckets.Delete
+    (
+    -- * REST Resource
+      BackendBucketsDeleteResource
+
+    -- * Creating a Request
+    , backendBucketsDelete
+    , BackendBucketsDelete
+
+    -- * Request Lenses
+    , bbdRequestId
+    , bbdBackendBucket
+    , bbdProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.delete@ method which the
+-- 'BackendBucketsDelete' request conforms to.
+type BackendBucketsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified BackendBucket resource.
+--
+-- /See:/ 'backendBucketsDelete' smart constructor.
+data BackendBucketsDelete = BackendBucketsDelete'
+    { _bbdRequestId     :: !(Maybe Text)
+    , _bbdBackendBucket :: !Text
+    , _bbdProject       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbdRequestId'
+--
+-- * 'bbdBackendBucket'
+--
+-- * 'bbdProject'
+backendBucketsDelete
+    :: Text -- ^ 'bbdBackendBucket'
+    -> Text -- ^ 'bbdProject'
+    -> BackendBucketsDelete
+backendBucketsDelete pBbdBackendBucket_ pBbdProject_ =
+    BackendBucketsDelete'
+    { _bbdRequestId = Nothing
+    , _bbdBackendBucket = pBbdBackendBucket_
+    , _bbdProject = pBbdProject_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbdRequestId :: Lens' BackendBucketsDelete (Maybe Text)
+bbdRequestId
+  = lens _bbdRequestId (\ s a -> s{_bbdRequestId = a})
+
+-- | Name of the BackendBucket resource to delete.
+bbdBackendBucket :: Lens' BackendBucketsDelete Text
+bbdBackendBucket
+  = lens _bbdBackendBucket
+      (\ s a -> s{_bbdBackendBucket = a})
+
+-- | Project ID for this request.
+bbdProject :: Lens' BackendBucketsDelete Text
+bbdProject
+  = lens _bbdProject (\ s a -> s{_bbdProject = a})
+
+instance GoogleRequest BackendBucketsDelete where
+        type Rs BackendBucketsDelete = Operation
+        type Scopes BackendBucketsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsDelete'{..}
+          = go _bbdProject _bbdBackendBucket _bbdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.DeleteSignedURLKey
+-- 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 key for validating requests with signed URLs for this backend
+-- bucket.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.deleteSignedUrlKey@.
+module Network.Google.Resource.Compute.BackendBuckets.DeleteSignedURLKey
+    (
+    -- * REST Resource
+      BackendBucketsDeleteSignedURLKeyResource
+
+    -- * Creating a Request
+    , backendBucketsDeleteSignedURLKey
+    , BackendBucketsDeleteSignedURLKey
+
+    -- * Request Lenses
+    , bbdsukRequestId
+    , bbdsukBackendBucket
+    , bbdsukProject
+    , bbdsukKeyName
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.deleteSignedUrlKey@ method which the
+-- 'BackendBucketsDeleteSignedURLKey' request conforms to.
+type BackendBucketsDeleteSignedURLKeyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   "deleteSignedUrlKey" :>
+                     QueryParam "keyName" Text :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Deletes a key for validating requests with signed URLs for this backend
+-- bucket.
+--
+-- /See:/ 'backendBucketsDeleteSignedURLKey' smart constructor.
+data BackendBucketsDeleteSignedURLKey = BackendBucketsDeleteSignedURLKey'
+    { _bbdsukRequestId     :: !(Maybe Text)
+    , _bbdsukBackendBucket :: !Text
+    , _bbdsukProject       :: !Text
+    , _bbdsukKeyName       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsDeleteSignedURLKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbdsukRequestId'
+--
+-- * 'bbdsukBackendBucket'
+--
+-- * 'bbdsukProject'
+--
+-- * 'bbdsukKeyName'
+backendBucketsDeleteSignedURLKey
+    :: Text -- ^ 'bbdsukBackendBucket'
+    -> Text -- ^ 'bbdsukProject'
+    -> Text -- ^ 'bbdsukKeyName'
+    -> BackendBucketsDeleteSignedURLKey
+backendBucketsDeleteSignedURLKey pBbdsukBackendBucket_ pBbdsukProject_ pBbdsukKeyName_ =
+    BackendBucketsDeleteSignedURLKey'
+    { _bbdsukRequestId = Nothing
+    , _bbdsukBackendBucket = pBbdsukBackendBucket_
+    , _bbdsukProject = pBbdsukProject_
+    , _bbdsukKeyName = pBbdsukKeyName_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbdsukRequestId :: Lens' BackendBucketsDeleteSignedURLKey (Maybe Text)
+bbdsukRequestId
+  = lens _bbdsukRequestId
+      (\ s a -> s{_bbdsukRequestId = a})
+
+-- | Name of the BackendBucket resource to which the Signed URL Key should be
+-- added. The name should conform to RFC1035.
+bbdsukBackendBucket :: Lens' BackendBucketsDeleteSignedURLKey Text
+bbdsukBackendBucket
+  = lens _bbdsukBackendBucket
+      (\ s a -> s{_bbdsukBackendBucket = a})
+
+-- | Project ID for this request.
+bbdsukProject :: Lens' BackendBucketsDeleteSignedURLKey Text
+bbdsukProject
+  = lens _bbdsukProject
+      (\ s a -> s{_bbdsukProject = a})
+
+-- | The name of the Signed URL Key to delete.
+bbdsukKeyName :: Lens' BackendBucketsDeleteSignedURLKey Text
+bbdsukKeyName
+  = lens _bbdsukKeyName
+      (\ s a -> s{_bbdsukKeyName = a})
+
+instance GoogleRequest
+         BackendBucketsDeleteSignedURLKey where
+        type Rs BackendBucketsDeleteSignedURLKey = Operation
+        type Scopes BackendBucketsDeleteSignedURLKey =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsDeleteSignedURLKey'{..}
+          = go _bbdsukProject _bbdsukBackendBucket
+              (Just _bbdsukKeyName)
+              _bbdsukRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BackendBucketsDeleteSignedURLKeyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.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)
+--
+-- Returns the specified BackendBucket resource. Gets a list of available
+-- backend buckets by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.get@.
+module Network.Google.Resource.Compute.BackendBuckets.Get
+    (
+    -- * REST Resource
+      BackendBucketsGetResource
+
+    -- * Creating a Request
+    , backendBucketsGet
+    , BackendBucketsGet
+
+    -- * Request Lenses
+    , bbgBackendBucket
+    , bbgProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.get@ method which the
+-- 'BackendBucketsGet' request conforms to.
+type BackendBucketsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] BackendBucket
+
+-- | Returns the specified BackendBucket resource. Gets a list of available
+-- backend buckets by making a list() request.
+--
+-- /See:/ 'backendBucketsGet' smart constructor.
+data BackendBucketsGet = BackendBucketsGet'
+    { _bbgBackendBucket :: !Text
+    , _bbgProject       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbgBackendBucket'
+--
+-- * 'bbgProject'
+backendBucketsGet
+    :: Text -- ^ 'bbgBackendBucket'
+    -> Text -- ^ 'bbgProject'
+    -> BackendBucketsGet
+backendBucketsGet pBbgBackendBucket_ pBbgProject_ =
+    BackendBucketsGet'
+    { _bbgBackendBucket = pBbgBackendBucket_
+    , _bbgProject = pBbgProject_
+    }
+
+-- | Name of the BackendBucket resource to return.
+bbgBackendBucket :: Lens' BackendBucketsGet Text
+bbgBackendBucket
+  = lens _bbgBackendBucket
+      (\ s a -> s{_bbgBackendBucket = a})
+
+-- | Project ID for this request.
+bbgProject :: Lens' BackendBucketsGet Text
+bbgProject
+  = lens _bbgProject (\ s a -> s{_bbgProject = a})
+
+instance GoogleRequest BackendBucketsGet where
+        type Rs BackendBucketsGet = BackendBucket
+        type Scopes BackendBucketsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient BackendBucketsGet'{..}
+          = go _bbgProject _bbgBackendBucket (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.Insert
+-- 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 BackendBucket resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.insert@.
+module Network.Google.Resource.Compute.BackendBuckets.Insert
+    (
+    -- * REST Resource
+      BackendBucketsInsertResource
+
+    -- * Creating a Request
+    , backendBucketsInsert
+    , BackendBucketsInsert
+
+    -- * Request Lenses
+    , bbiRequestId
+    , bbiProject
+    , bbiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.insert@ method which the
+-- 'BackendBucketsInsert' request conforms to.
+type BackendBucketsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] BackendBucket :>
+                       Post '[JSON] Operation
+
+-- | Creates a BackendBucket resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'backendBucketsInsert' smart constructor.
+data BackendBucketsInsert = BackendBucketsInsert'
+    { _bbiRequestId :: !(Maybe Text)
+    , _bbiProject   :: !Text
+    , _bbiPayload   :: !BackendBucket
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbiRequestId'
+--
+-- * 'bbiProject'
+--
+-- * 'bbiPayload'
+backendBucketsInsert
+    :: Text -- ^ 'bbiProject'
+    -> BackendBucket -- ^ 'bbiPayload'
+    -> BackendBucketsInsert
+backendBucketsInsert pBbiProject_ pBbiPayload_ =
+    BackendBucketsInsert'
+    { _bbiRequestId = Nothing
+    , _bbiProject = pBbiProject_
+    , _bbiPayload = pBbiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbiRequestId :: Lens' BackendBucketsInsert (Maybe Text)
+bbiRequestId
+  = lens _bbiRequestId (\ s a -> s{_bbiRequestId = a})
+
+-- | Project ID for this request.
+bbiProject :: Lens' BackendBucketsInsert Text
+bbiProject
+  = lens _bbiProject (\ s a -> s{_bbiProject = a})
+
+-- | Multipart request metadata.
+bbiPayload :: Lens' BackendBucketsInsert BackendBucket
+bbiPayload
+  = lens _bbiPayload (\ s a -> s{_bbiPayload = a})
+
+instance GoogleRequest BackendBucketsInsert where
+        type Rs BackendBucketsInsert = Operation
+        type Scopes BackendBucketsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsInsert'{..}
+          = go _bbiProject _bbiRequestId (Just AltJSON)
+              _bbiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/List.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.Compute.BackendBuckets.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)
+--
+-- Retrieves the list of BackendBucket resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.list@.
+module Network.Google.Resource.Compute.BackendBuckets.List
+    (
+    -- * REST Resource
+      BackendBucketsListResource
+
+    -- * Creating a Request
+    , backendBucketsList
+    , BackendBucketsList
+
+    -- * Request Lenses
+    , bblOrderBy
+    , bblProject
+    , bblFilter
+    , bblPageToken
+    , bblMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.list@ method which the
+-- 'BackendBucketsList' request conforms to.
+type BackendBucketsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] BackendBucketList
+
+-- | Retrieves the list of BackendBucket resources available to the specified
+-- project.
+--
+-- /See:/ 'backendBucketsList' smart constructor.
+data BackendBucketsList = BackendBucketsList'
+    { _bblOrderBy    :: !(Maybe Text)
+    , _bblProject    :: !Text
+    , _bblFilter     :: !(Maybe Text)
+    , _bblPageToken  :: !(Maybe Text)
+    , _bblMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bblOrderBy'
+--
+-- * 'bblProject'
+--
+-- * 'bblFilter'
+--
+-- * 'bblPageToken'
+--
+-- * 'bblMaxResults'
+backendBucketsList
+    :: Text -- ^ 'bblProject'
+    -> BackendBucketsList
+backendBucketsList pBblProject_ =
+    BackendBucketsList'
+    { _bblOrderBy = Nothing
+    , _bblProject = pBblProject_
+    , _bblFilter = Nothing
+    , _bblPageToken = Nothing
+    , _bblMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+bblOrderBy :: Lens' BackendBucketsList (Maybe Text)
+bblOrderBy
+  = lens _bblOrderBy (\ s a -> s{_bblOrderBy = a})
+
+-- | Project ID for this request.
+bblProject :: Lens' BackendBucketsList Text
+bblProject
+  = lens _bblProject (\ s a -> s{_bblProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+bblFilter :: Lens' BackendBucketsList (Maybe Text)
+bblFilter
+  = lens _bblFilter (\ s a -> s{_bblFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+bblPageToken :: Lens' BackendBucketsList (Maybe Text)
+bblPageToken
+  = lens _bblPageToken (\ s a -> s{_bblPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+bblMaxResults :: Lens' BackendBucketsList Word32
+bblMaxResults
+  = lens _bblMaxResults
+      (\ s a -> s{_bblMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest BackendBucketsList where
+        type Rs BackendBucketsList = BackendBucketList
+        type Scopes BackendBucketsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient BackendBucketsList'{..}
+          = go _bblProject _bblOrderBy _bblFilter _bblPageToken
+              (Just _bblMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.Patch
+-- 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 specified BackendBucket resource with the data included in
+-- the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.patch@.
+module Network.Google.Resource.Compute.BackendBuckets.Patch
+    (
+    -- * REST Resource
+      BackendBucketsPatchResource
+
+    -- * Creating a Request
+    , backendBucketsPatch
+    , BackendBucketsPatch
+
+    -- * Request Lenses
+    , bbpRequestId
+    , bbpBackendBucket
+    , bbpProject
+    , bbpPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.patch@ method which the
+-- 'BackendBucketsPatch' request conforms to.
+type BackendBucketsPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BackendBucket :>
+                         Patch '[JSON] Operation
+
+-- | Updates the specified BackendBucket resource with the data included in
+-- the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
+--
+-- /See:/ 'backendBucketsPatch' smart constructor.
+data BackendBucketsPatch = BackendBucketsPatch'
+    { _bbpRequestId     :: !(Maybe Text)
+    , _bbpBackendBucket :: !Text
+    , _bbpProject       :: !Text
+    , _bbpPayload       :: !BackendBucket
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbpRequestId'
+--
+-- * 'bbpBackendBucket'
+--
+-- * 'bbpProject'
+--
+-- * 'bbpPayload'
+backendBucketsPatch
+    :: Text -- ^ 'bbpBackendBucket'
+    -> Text -- ^ 'bbpProject'
+    -> BackendBucket -- ^ 'bbpPayload'
+    -> BackendBucketsPatch
+backendBucketsPatch pBbpBackendBucket_ pBbpProject_ pBbpPayload_ =
+    BackendBucketsPatch'
+    { _bbpRequestId = Nothing
+    , _bbpBackendBucket = pBbpBackendBucket_
+    , _bbpProject = pBbpProject_
+    , _bbpPayload = pBbpPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbpRequestId :: Lens' BackendBucketsPatch (Maybe Text)
+bbpRequestId
+  = lens _bbpRequestId (\ s a -> s{_bbpRequestId = a})
+
+-- | Name of the BackendBucket resource to patch.
+bbpBackendBucket :: Lens' BackendBucketsPatch Text
+bbpBackendBucket
+  = lens _bbpBackendBucket
+      (\ s a -> s{_bbpBackendBucket = a})
+
+-- | Project ID for this request.
+bbpProject :: Lens' BackendBucketsPatch Text
+bbpProject
+  = lens _bbpProject (\ s a -> s{_bbpProject = a})
+
+-- | Multipart request metadata.
+bbpPayload :: Lens' BackendBucketsPatch BackendBucket
+bbpPayload
+  = lens _bbpPayload (\ s a -> s{_bbpPayload = a})
+
+instance GoogleRequest BackendBucketsPatch where
+        type Rs BackendBucketsPatch = Operation
+        type Scopes BackendBucketsPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsPatch'{..}
+          = go _bbpProject _bbpBackendBucket _bbpRequestId
+              (Just AltJSON)
+              _bbpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendBuckets.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 specified BackendBucket resource with the data included in
+-- the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendBuckets.update@.
+module Network.Google.Resource.Compute.BackendBuckets.Update
+    (
+    -- * REST Resource
+      BackendBucketsUpdateResource
+
+    -- * Creating a Request
+    , backendBucketsUpdate
+    , BackendBucketsUpdate
+
+    -- * Request Lenses
+    , bbuRequestId
+    , bbuBackendBucket
+    , bbuProject
+    , bbuPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendBuckets.update@ method which the
+-- 'BackendBucketsUpdate' request conforms to.
+type BackendBucketsUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendBuckets" :>
+                 Capture "backendBucket" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BackendBucket :>
+                         Put '[JSON] Operation
+
+-- | Updates the specified BackendBucket resource with the data included in
+-- the request.
+--
+-- /See:/ 'backendBucketsUpdate' smart constructor.
+data BackendBucketsUpdate = BackendBucketsUpdate'
+    { _bbuRequestId     :: !(Maybe Text)
+    , _bbuBackendBucket :: !Text
+    , _bbuProject       :: !Text
+    , _bbuPayload       :: !BackendBucket
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendBucketsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bbuRequestId'
+--
+-- * 'bbuBackendBucket'
+--
+-- * 'bbuProject'
+--
+-- * 'bbuPayload'
+backendBucketsUpdate
+    :: Text -- ^ 'bbuBackendBucket'
+    -> Text -- ^ 'bbuProject'
+    -> BackendBucket -- ^ 'bbuPayload'
+    -> BackendBucketsUpdate
+backendBucketsUpdate pBbuBackendBucket_ pBbuProject_ pBbuPayload_ =
+    BackendBucketsUpdate'
+    { _bbuRequestId = Nothing
+    , _bbuBackendBucket = pBbuBackendBucket_
+    , _bbuProject = pBbuProject_
+    , _bbuPayload = pBbuPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bbuRequestId :: Lens' BackendBucketsUpdate (Maybe Text)
+bbuRequestId
+  = lens _bbuRequestId (\ s a -> s{_bbuRequestId = a})
+
+-- | Name of the BackendBucket resource to update.
+bbuBackendBucket :: Lens' BackendBucketsUpdate Text
+bbuBackendBucket
+  = lens _bbuBackendBucket
+      (\ s a -> s{_bbuBackendBucket = a})
+
+-- | Project ID for this request.
+bbuProject :: Lens' BackendBucketsUpdate Text
+bbuProject
+  = lens _bbuProject (\ s a -> s{_bbuProject = a})
+
+-- | Multipart request metadata.
+bbuPayload :: Lens' BackendBucketsUpdate BackendBucket
+bbuPayload
+  = lens _bbuPayload (\ s a -> s{_bbuPayload = a})
+
+instance GoogleRequest BackendBucketsUpdate where
+        type Rs BackendBucketsUpdate = Operation
+        type Scopes BackendBucketsUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendBucketsUpdate'{..}
+          = go _bbuProject _bbuBackendBucket _bbuRequestId
+              (Just AltJSON)
+              _bbuPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendBucketsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendServices.AddSignedURLKey
+-- 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)
+--
+-- Adds a key for validating requests with signed URLs for this backend
+-- service.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.addSignedUrlKey@.
+module Network.Google.Resource.Compute.BackendServices.AddSignedURLKey
+    (
+    -- * REST Resource
+      BackendServicesAddSignedURLKeyResource
+
+    -- * Creating a Request
+    , backendServicesAddSignedURLKey
+    , BackendServicesAddSignedURLKey
+
+    -- * Request Lenses
+    , bsasukRequestId
+    , bsasukProject
+    , bsasukPayload
+    , bsasukBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.addSignedUrlKey@ method which the
+-- 'BackendServicesAddSignedURLKey' request conforms to.
+type BackendServicesAddSignedURLKeyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   "addSignedUrlKey" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SignedURLKey :>
+                           Post '[JSON] Operation
+
+-- | Adds a key for validating requests with signed URLs for this backend
+-- service.
+--
+-- /See:/ 'backendServicesAddSignedURLKey' smart constructor.
+data BackendServicesAddSignedURLKey = BackendServicesAddSignedURLKey'
+    { _bsasukRequestId      :: !(Maybe Text)
+    , _bsasukProject        :: !Text
+    , _bsasukPayload        :: !SignedURLKey
+    , _bsasukBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesAddSignedURLKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsasukRequestId'
+--
+-- * 'bsasukProject'
+--
+-- * 'bsasukPayload'
+--
+-- * 'bsasukBackendService'
+backendServicesAddSignedURLKey
+    :: Text -- ^ 'bsasukProject'
+    -> SignedURLKey -- ^ 'bsasukPayload'
+    -> Text -- ^ 'bsasukBackendService'
+    -> BackendServicesAddSignedURLKey
+backendServicesAddSignedURLKey pBsasukProject_ pBsasukPayload_ pBsasukBackendService_ =
+    BackendServicesAddSignedURLKey'
+    { _bsasukRequestId = Nothing
+    , _bsasukProject = pBsasukProject_
+    , _bsasukPayload = pBsasukPayload_
+    , _bsasukBackendService = pBsasukBackendService_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bsasukRequestId :: Lens' BackendServicesAddSignedURLKey (Maybe Text)
+bsasukRequestId
+  = lens _bsasukRequestId
+      (\ s a -> s{_bsasukRequestId = a})
+
+-- | Project ID for this request.
+bsasukProject :: Lens' BackendServicesAddSignedURLKey Text
+bsasukProject
+  = lens _bsasukProject
+      (\ s a -> s{_bsasukProject = a})
+
+-- | Multipart request metadata.
+bsasukPayload :: Lens' BackendServicesAddSignedURLKey SignedURLKey
+bsasukPayload
+  = lens _bsasukPayload
+      (\ s a -> s{_bsasukPayload = a})
+
+-- | Name of the BackendService resource to which the Signed URL Key should
+-- be added. The name should conform to RFC1035.
+bsasukBackendService :: Lens' BackendServicesAddSignedURLKey Text
+bsasukBackendService
+  = lens _bsasukBackendService
+      (\ s a -> s{_bsasukBackendService = a})
+
+instance GoogleRequest BackendServicesAddSignedURLKey
+         where
+        type Rs BackendServicesAddSignedURLKey = Operation
+        type Scopes BackendServicesAddSignedURLKey =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendServicesAddSignedURLKey'{..}
+          = go _bsasukProject _bsasukBackendService
+              _bsasukRequestId
+              (Just AltJSON)
+              _bsasukPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BackendServicesAddSignedURLKeyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/AggregatedList.hs b/gen/Network/Google/Resource/Compute/BackendServices/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/AggregatedList.hs
@@ -114,26 +114,22 @@
 bsalProject
   = lens _bsalProject (\ s a -> s{_bsalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 bsalFilter :: Lens' BackendServicesAggregatedList (Maybe Text)
 bsalFilter
   = lens _bsalFilter (\ s a -> s{_bsalFilter = a})
@@ -148,7 +144,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 bsalMaxResults :: Lens' BackendServicesAggregatedList Word32
 bsalMaxResults
   = lens _bsalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs b/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs
@@ -33,6 +33,7 @@
     , BackendServicesDelete
 
     -- * Request Lenses
+    , bsdRequestId
     , bsdProject
     , bsdBackendService
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "backendServices" :>
                  Capture "backendService" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified BackendService resource.
 --
 -- /See:/ 'backendServicesDelete' smart constructor.
 data BackendServicesDelete = BackendServicesDelete'
-    { _bsdProject        :: !Text
+    { _bsdRequestId      :: !(Maybe Text)
+    , _bsdProject        :: !Text
     , _bsdBackendService :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'bsdRequestId'
+--
 -- * 'bsdProject'
 --
 -- * 'bsdBackendService'
@@ -73,10 +78,25 @@
     -> BackendServicesDelete
 backendServicesDelete pBsdProject_ pBsdBackendService_ =
     BackendServicesDelete'
-    { _bsdProject = pBsdProject_
+    { _bsdRequestId = Nothing
+    , _bsdProject = pBsdProject_
     , _bsdBackendService = pBsdBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bsdRequestId :: Lens' BackendServicesDelete (Maybe Text)
+bsdRequestId
+  = lens _bsdRequestId (\ s a -> s{_bsdRequestId = a})
+
 -- | Project ID for this request.
 bsdProject :: Lens' BackendServicesDelete Text
 bsdProject
@@ -94,7 +114,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient BackendServicesDelete'{..}
-          = go _bsdProject _bsdBackendService (Just AltJSON)
+          = go _bsdProject _bsdBackendService _bsdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendServices.DeleteSignedURLKey
+-- 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 key for validating requests with signed URLs for this backend
+-- service.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.deleteSignedUrlKey@.
+module Network.Google.Resource.Compute.BackendServices.DeleteSignedURLKey
+    (
+    -- * REST Resource
+      BackendServicesDeleteSignedURLKeyResource
+
+    -- * Creating a Request
+    , backendServicesDeleteSignedURLKey
+    , BackendServicesDeleteSignedURLKey
+
+    -- * Request Lenses
+    , bsdsukRequestId
+    , bsdsukProject
+    , bsdsukKeyName
+    , bsdsukBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.deleteSignedUrlKey@ method which the
+-- 'BackendServicesDeleteSignedURLKey' request conforms to.
+type BackendServicesDeleteSignedURLKeyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   "deleteSignedUrlKey" :>
+                     QueryParam "keyName" Text :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Deletes a key for validating requests with signed URLs for this backend
+-- service.
+--
+-- /See:/ 'backendServicesDeleteSignedURLKey' smart constructor.
+data BackendServicesDeleteSignedURLKey = BackendServicesDeleteSignedURLKey'
+    { _bsdsukRequestId      :: !(Maybe Text)
+    , _bsdsukProject        :: !Text
+    , _bsdsukKeyName        :: !Text
+    , _bsdsukBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesDeleteSignedURLKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsdsukRequestId'
+--
+-- * 'bsdsukProject'
+--
+-- * 'bsdsukKeyName'
+--
+-- * 'bsdsukBackendService'
+backendServicesDeleteSignedURLKey
+    :: Text -- ^ 'bsdsukProject'
+    -> Text -- ^ 'bsdsukKeyName'
+    -> Text -- ^ 'bsdsukBackendService'
+    -> BackendServicesDeleteSignedURLKey
+backendServicesDeleteSignedURLKey pBsdsukProject_ pBsdsukKeyName_ pBsdsukBackendService_ =
+    BackendServicesDeleteSignedURLKey'
+    { _bsdsukRequestId = Nothing
+    , _bsdsukProject = pBsdsukProject_
+    , _bsdsukKeyName = pBsdsukKeyName_
+    , _bsdsukBackendService = pBsdsukBackendService_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bsdsukRequestId :: Lens' BackendServicesDeleteSignedURLKey (Maybe Text)
+bsdsukRequestId
+  = lens _bsdsukRequestId
+      (\ s a -> s{_bsdsukRequestId = a})
+
+-- | Project ID for this request.
+bsdsukProject :: Lens' BackendServicesDeleteSignedURLKey Text
+bsdsukProject
+  = lens _bsdsukProject
+      (\ s a -> s{_bsdsukProject = a})
+
+-- | The name of the Signed URL Key to delete.
+bsdsukKeyName :: Lens' BackendServicesDeleteSignedURLKey Text
+bsdsukKeyName
+  = lens _bsdsukKeyName
+      (\ s a -> s{_bsdsukKeyName = a})
+
+-- | Name of the BackendService resource to which the Signed URL Key should
+-- be added. The name should conform to RFC1035.
+bsdsukBackendService :: Lens' BackendServicesDeleteSignedURLKey Text
+bsdsukBackendService
+  = lens _bsdsukBackendService
+      (\ s a -> s{_bsdsukBackendService = a})
+
+instance GoogleRequest
+         BackendServicesDeleteSignedURLKey where
+        type Rs BackendServicesDeleteSignedURLKey = Operation
+        type Scopes BackendServicesDeleteSignedURLKey =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendServicesDeleteSignedURLKey'{..}
+          = go _bsdsukProject _bsdsukBackendService
+              (Just _bsdsukKeyName)
+              _bsdsukRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BackendServicesDeleteSignedURLKeyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Get.hs b/gen/Network/Google/Resource/Compute/BackendServices/Get.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/Get.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified BackendService resource. Get a list of available
--- backend services by making a list() request.
+-- Returns the specified BackendService resource. Gets a list of available
+-- backend services.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.get@.
 module Network.Google.Resource.Compute.BackendServices.Get
@@ -54,8 +54,8 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] BackendService
 
--- | Returns the specified BackendService resource. Get a list of available
--- backend services by making a list() request.
+-- | Returns the specified BackendService resource. Gets a list of available
+-- backend services.
 --
 -- /See:/ 'backendServicesGet' smart constructor.
 data BackendServicesGet = BackendServicesGet'
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs b/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs
@@ -36,6 +36,7 @@
     , BackendServicesInsert
 
     -- * Request Lenses
+    , bsiRequestId
     , bsiProject
     , bsiPayload
     ) where
@@ -52,9 +53,10 @@
            Capture "project" Text :>
              "global" :>
                "backendServices" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] BackendService :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] BackendService :>
+                       Post '[JSON] Operation
 
 -- | Creates a BackendService resource in the specified project using the
 -- data included in the request. There are several restrictions and
@@ -63,14 +65,17 @@
 --
 -- /See:/ 'backendServicesInsert' smart constructor.
 data BackendServicesInsert = BackendServicesInsert'
-    { _bsiProject :: !Text
-    , _bsiPayload :: !BackendService
+    { _bsiRequestId :: !(Maybe Text)
+    , _bsiProject   :: !Text
+    , _bsiPayload   :: !BackendService
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'BackendServicesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'bsiRequestId'
+--
 -- * 'bsiProject'
 --
 -- * 'bsiPayload'
@@ -80,10 +85,25 @@
     -> BackendServicesInsert
 backendServicesInsert pBsiProject_ pBsiPayload_ =
     BackendServicesInsert'
-    { _bsiProject = pBsiProject_
+    { _bsiRequestId = Nothing
+    , _bsiProject = pBsiProject_
     , _bsiPayload = pBsiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bsiRequestId :: Lens' BackendServicesInsert (Maybe Text)
+bsiRequestId
+  = lens _bsiRequestId (\ s a -> s{_bsiRequestId = a})
+
 -- | Project ID for this request.
 bsiProject :: Lens' BackendServicesInsert Text
 bsiProject
@@ -100,7 +120,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient BackendServicesInsert'{..}
-          = go _bsiProject (Just AltJSON) _bsiPayload
+          = go _bsiProject _bsiRequestId (Just AltJSON)
+              _bsiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/List.hs b/gen/Network/Google/Resource/Compute/BackendServices/List.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/List.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/List.hs
@@ -114,26 +114,22 @@
 bslProject
   = lens _bslProject (\ s a -> s{_bslProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 bslFilter :: Lens' BackendServicesList (Maybe Text)
 bslFilter
   = lens _bslFilter (\ s a -> s{_bslFilter = a})
@@ -147,7 +143,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 bslMaxResults :: Lens' BackendServicesList Word32
 bslMaxResults
   = lens _bslMaxResults
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs b/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs
@@ -20,10 +20,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the specified BackendService resource with the data included in
+-- Patches the specified BackendService resource with the data included in
 -- the request. There are several restrictions and guidelines to keep in
 -- mind when updating a backend service. Read Restrictions and Guidelines
--- for more information. This method supports patch semantics.
+-- for more information. This method supports PATCH semantics and uses the
+-- JSON merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.patch@.
 module Network.Google.Resource.Compute.BackendServices.Patch
@@ -36,6 +37,7 @@
     , BackendServicesPatch
 
     -- * Request Lenses
+    , bspRequestId
     , bspProject
     , bspPayload
     , bspBackendService
@@ -54,18 +56,21 @@
              "global" :>
                "backendServices" :>
                  Capture "backendService" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] BackendService :>
-                       Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BackendService :>
+                         Patch '[JSON] Operation
 
--- | Updates the specified BackendService resource with the data included in
+-- | Patches the specified BackendService resource with the data included in
 -- the request. There are several restrictions and guidelines to keep in
 -- mind when updating a backend service. Read Restrictions and Guidelines
--- for more information. This method supports patch semantics.
+-- for more information. This method supports PATCH semantics and uses the
+-- JSON merge patch format and processing rules.
 --
 -- /See:/ 'backendServicesPatch' smart constructor.
 data BackendServicesPatch = BackendServicesPatch'
-    { _bspProject        :: !Text
+    { _bspRequestId      :: !(Maybe Text)
+    , _bspProject        :: !Text
     , _bspPayload        :: !BackendService
     , _bspBackendService :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -74,6 +79,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'bspRequestId'
+--
 -- * 'bspProject'
 --
 -- * 'bspPayload'
@@ -86,11 +93,26 @@
     -> BackendServicesPatch
 backendServicesPatch pBspProject_ pBspPayload_ pBspBackendService_ =
     BackendServicesPatch'
-    { _bspProject = pBspProject_
+    { _bspRequestId = Nothing
+    , _bspProject = pBspProject_
     , _bspPayload = pBspPayload_
     , _bspBackendService = pBspBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bspRequestId :: Lens' BackendServicesPatch (Maybe Text)
+bspRequestId
+  = lens _bspRequestId (\ s a -> s{_bspRequestId = a})
+
 -- | Project ID for this request.
 bspProject :: Lens' BackendServicesPatch Text
 bspProject
@@ -101,7 +123,7 @@
 bspPayload
   = lens _bspPayload (\ s a -> s{_bspPayload = a})
 
--- | Name of the BackendService resource to update.
+-- | Name of the BackendService resource to patch.
 bspBackendService :: Lens' BackendServicesPatch Text
 bspBackendService
   = lens _bspBackendService
@@ -113,7 +135,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient BackendServicesPatch'{..}
-          = go _bspProject _bspBackendService (Just AltJSON)
+          = go _bspProject _bspBackendService _bspRequestId
+              (Just AltJSON)
               _bspPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs b/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.BackendServices.SetSecurityPolicy
+-- 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 security policy for the specified backend service.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.setSecurityPolicy@.
+module Network.Google.Resource.Compute.BackendServices.SetSecurityPolicy
+    (
+    -- * REST Resource
+      BackendServicesSetSecurityPolicyResource
+
+    -- * Creating a Request
+    , backendServicesSetSecurityPolicy
+    , BackendServicesSetSecurityPolicy
+
+    -- * Request Lenses
+    , bssspRequestId
+    , bssspProject
+    , bssspPayload
+    , bssspBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.setSecurityPolicy@ method which the
+-- 'BackendServicesSetSecurityPolicy' request conforms to.
+type BackendServicesSetSecurityPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   "setSecurityPolicy" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SecurityPolicyReference :>
+                           Post '[JSON] Operation
+
+-- | Sets the security policy for the specified backend service.
+--
+-- /See:/ 'backendServicesSetSecurityPolicy' smart constructor.
+data BackendServicesSetSecurityPolicy = BackendServicesSetSecurityPolicy'
+    { _bssspRequestId      :: !(Maybe Text)
+    , _bssspProject        :: !Text
+    , _bssspPayload        :: !SecurityPolicyReference
+    , _bssspBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesSetSecurityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bssspRequestId'
+--
+-- * 'bssspProject'
+--
+-- * 'bssspPayload'
+--
+-- * 'bssspBackendService'
+backendServicesSetSecurityPolicy
+    :: Text -- ^ 'bssspProject'
+    -> SecurityPolicyReference -- ^ 'bssspPayload'
+    -> Text -- ^ 'bssspBackendService'
+    -> BackendServicesSetSecurityPolicy
+backendServicesSetSecurityPolicy pBssspProject_ pBssspPayload_ pBssspBackendService_ =
+    BackendServicesSetSecurityPolicy'
+    { _bssspRequestId = Nothing
+    , _bssspProject = pBssspProject_
+    , _bssspPayload = pBssspPayload_
+    , _bssspBackendService = pBssspBackendService_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bssspRequestId :: Lens' BackendServicesSetSecurityPolicy (Maybe Text)
+bssspRequestId
+  = lens _bssspRequestId
+      (\ s a -> s{_bssspRequestId = a})
+
+-- | Project ID for this request.
+bssspProject :: Lens' BackendServicesSetSecurityPolicy Text
+bssspProject
+  = lens _bssspProject (\ s a -> s{_bssspProject = a})
+
+-- | Multipart request metadata.
+bssspPayload :: Lens' BackendServicesSetSecurityPolicy SecurityPolicyReference
+bssspPayload
+  = lens _bssspPayload (\ s a -> s{_bssspPayload = a})
+
+-- | Name of the BackendService resource to which the security policy should
+-- be set. The name should conform to RFC1035.
+bssspBackendService :: Lens' BackendServicesSetSecurityPolicy Text
+bssspBackendService
+  = lens _bssspBackendService
+      (\ s a -> s{_bssspBackendService = a})
+
+instance GoogleRequest
+         BackendServicesSetSecurityPolicy where
+        type Rs BackendServicesSetSecurityPolicy = Operation
+        type Scopes BackendServicesSetSecurityPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient BackendServicesSetSecurityPolicy'{..}
+          = go _bssspProject _bssspBackendService
+              _bssspRequestId
+              (Just AltJSON)
+              _bssspPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy BackendServicesSetSecurityPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Update.hs b/gen/Network/Google/Resource/Compute/BackendServices/Update.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/Update.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Update.hs
@@ -36,6 +36,7 @@
     , BackendServicesUpdate
 
     -- * Request Lenses
+    , bsuRequestId
     , bsuProject
     , bsuPayload
     , bsuBackendService
@@ -54,9 +55,10 @@
              "global" :>
                "backendServices" :>
                  Capture "backendService" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] BackendService :>
-                       Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BackendService :>
+                         Put '[JSON] Operation
 
 -- | Updates the specified BackendService resource with the data included in
 -- the request. There are several restrictions and guidelines to keep in
@@ -65,7 +67,8 @@
 --
 -- /See:/ 'backendServicesUpdate' smart constructor.
 data BackendServicesUpdate = BackendServicesUpdate'
-    { _bsuProject        :: !Text
+    { _bsuRequestId      :: !(Maybe Text)
+    , _bsuProject        :: !Text
     , _bsuPayload        :: !BackendService
     , _bsuBackendService :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -74,6 +77,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'bsuRequestId'
+--
 -- * 'bsuProject'
 --
 -- * 'bsuPayload'
@@ -86,11 +91,26 @@
     -> BackendServicesUpdate
 backendServicesUpdate pBsuProject_ pBsuPayload_ pBsuBackendService_ =
     BackendServicesUpdate'
-    { _bsuProject = pBsuProject_
+    { _bsuRequestId = Nothing
+    , _bsuProject = pBsuProject_
     , _bsuPayload = pBsuPayload_
     , _bsuBackendService = pBsuBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+bsuRequestId :: Lens' BackendServicesUpdate (Maybe Text)
+bsuRequestId
+  = lens _bsuRequestId (\ s a -> s{_bsuRequestId = a})
+
 -- | Project ID for this request.
 bsuProject :: Lens' BackendServicesUpdate Text
 bsuProject
@@ -113,7 +133,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient BackendServicesUpdate'{..}
-          = go _bsuProject _bsuBackendService (Just AltJSON)
+          = go _bsuProject _bsuBackendService _bsuRequestId
+              (Just AltJSON)
               _bsuPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs
@@ -112,26 +112,22 @@
 dtalProject
   = lens _dtalProject (\ s a -> s{_dtalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 dtalFilter :: Lens' DiskTypesAggregatedList (Maybe Text)
 dtalFilter
   = lens _dtalFilter (\ s a -> s{_dtalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 dtalMaxResults :: Lens' DiskTypesAggregatedList Word32
 dtalMaxResults
   = lens _dtalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs b/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs
--- a/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified disk type. Get a list of available disk types by
+-- Returns the specified disk type. Gets a list of available disk types by
 -- making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.diskTypes.get@.
@@ -55,7 +55,7 @@
                    Capture "diskType" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] DiskType
 
--- | Returns the specified disk type. Get a list of available disk types by
+-- | Returns the specified disk type. Gets a list of available disk types by
 -- making a list() request.
 --
 -- /See:/ 'diskTypesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/List.hs b/gen/Network/Google/Resource/Compute/DiskTypes/List.hs
--- a/gen/Network/Google/Resource/Compute/DiskTypes/List.hs
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/List.hs
@@ -122,26 +122,22 @@
 dtlZone :: Lens' DiskTypesList Text
 dtlZone = lens _dtlZone (\ s a -> s{_dtlZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 dtlFilter :: Lens' DiskTypesList (Maybe Text)
 dtlFilter
   = lens _dtlFilter (\ s a -> s{_dtlFilter = a})
@@ -155,7 +151,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 dtlMaxResults :: Lens' DiskTypesList Word32
 dtlMaxResults
   = lens _dtlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs
@@ -112,26 +112,22 @@
 dalProject
   = lens _dalProject (\ s a -> s{_dalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 dalFilter :: Lens' DisksAggregatedList (Maybe Text)
 dalFilter
   = lens _dalFilter (\ s a -> s{_dalFilter = a})
@@ -145,7 +141,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 dalMaxResults :: Lens' DisksAggregatedList Word32
 dalMaxResults
   = lens _dalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs b/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs
--- a/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs
@@ -33,6 +33,8 @@
     , DisksCreateSnapshot
 
     -- * Request Lenses
+    , dcsGuestFlush
+    , dcsRequestId
     , dcsProject
     , dcsDisk
     , dcsZone
@@ -54,23 +56,31 @@
                  "disks" :>
                    Capture "disk" Text :>
                      "createSnapshot" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Snapshot :> Post '[JSON] Operation
+                       QueryParam "guestFlush" Bool :>
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Snapshot :> Post '[JSON] Operation
 
 -- | Creates a snapshot of a specified persistent disk.
 --
 -- /See:/ 'disksCreateSnapshot' smart constructor.
 data DisksCreateSnapshot = DisksCreateSnapshot'
-    { _dcsProject :: !Text
-    , _dcsDisk    :: !Text
-    , _dcsZone    :: !Text
-    , _dcsPayload :: !Snapshot
+    { _dcsGuestFlush :: !(Maybe Bool)
+    , _dcsRequestId  :: !(Maybe Text)
+    , _dcsProject    :: !Text
+    , _dcsDisk       :: !Text
+    , _dcsZone       :: !Text
+    , _dcsPayload    :: !Snapshot
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DisksCreateSnapshot' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dcsGuestFlush'
+--
+-- * 'dcsRequestId'
+--
 -- * 'dcsProject'
 --
 -- * 'dcsDisk'
@@ -86,12 +96,33 @@
     -> DisksCreateSnapshot
 disksCreateSnapshot pDcsProject_ pDcsDisk_ pDcsZone_ pDcsPayload_ =
     DisksCreateSnapshot'
-    { _dcsProject = pDcsProject_
+    { _dcsGuestFlush = Nothing
+    , _dcsRequestId = Nothing
+    , _dcsProject = pDcsProject_
     , _dcsDisk = pDcsDisk_
     , _dcsZone = pDcsZone_
     , _dcsPayload = pDcsPayload_
     }
 
+dcsGuestFlush :: Lens' DisksCreateSnapshot (Maybe Bool)
+dcsGuestFlush
+  = lens _dcsGuestFlush
+      (\ s a -> s{_dcsGuestFlush = a})
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+dcsRequestId :: Lens' DisksCreateSnapshot (Maybe Text)
+dcsRequestId
+  = lens _dcsRequestId (\ s a -> s{_dcsRequestId = a})
+
 -- | Project ID for this request.
 dcsProject :: Lens' DisksCreateSnapshot Text
 dcsProject
@@ -116,7 +147,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient DisksCreateSnapshot'{..}
-          = go _dcsProject _dcsZone _dcsDisk (Just AltJSON)
+          = go _dcsProject _dcsZone _dcsDisk _dcsGuestFlush
+              _dcsRequestId
+              (Just AltJSON)
               _dcsPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Disks/Delete.hs b/gen/Network/Google/Resource/Compute/Disks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Disks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/Delete.hs
@@ -36,6 +36,7 @@
     , DisksDelete
 
     -- * Request Lenses
+    , ddRequestId
     , ddProject
     , ddDisk
     , ddZone
@@ -55,7 +56,8 @@
                Capture "zone" Text :>
                  "disks" :>
                    Capture "disk" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified persistent disk. Deleting a disk removes its data
 -- permanently and is irreversible. However, deleting a disk does not
@@ -64,15 +66,18 @@
 --
 -- /See:/ 'disksDelete' smart constructor.
 data DisksDelete = DisksDelete'
-    { _ddProject :: !Text
-    , _ddDisk    :: !Text
-    , _ddZone    :: !Text
+    { _ddRequestId :: !(Maybe Text)
+    , _ddProject   :: !Text
+    , _ddDisk      :: !Text
+    , _ddZone      :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DisksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ddRequestId'
+--
 -- * 'ddProject'
 --
 -- * 'ddDisk'
@@ -85,11 +90,26 @@
     -> DisksDelete
 disksDelete pDdProject_ pDdDisk_ pDdZone_ =
     DisksDelete'
-    { _ddProject = pDdProject_
+    { _ddRequestId = Nothing
+    , _ddProject = pDdProject_
     , _ddDisk = pDdDisk_
     , _ddZone = pDdZone_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ddRequestId :: Lens' DisksDelete (Maybe Text)
+ddRequestId
+  = lens _ddRequestId (\ s a -> s{_ddRequestId = a})
+
 -- | Project ID for this request.
 ddProject :: Lens' DisksDelete Text
 ddProject
@@ -109,7 +129,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient DisksDelete'{..}
-          = go _ddProject _ddZone _ddDisk (Just AltJSON)
+          = go _ddProject _ddZone _ddDisk _ddRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy DisksDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/Disks/Get.hs b/gen/Network/Google/Resource/Compute/Disks/Get.hs
--- a/gen/Network/Google/Resource/Compute/Disks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns a specified persistent disk. Get a list of available persistent
+-- Returns a specified persistent disk. Gets a list of available persistent
 -- disks by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.get@.
@@ -55,7 +55,7 @@
                    Capture "disk" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Disk
 
--- | Returns a specified persistent disk. Get a list of available persistent
+-- | Returns a specified persistent disk. Gets a list of available persistent
 -- disks by making a list() request.
 --
 -- /See:/ 'disksGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Disks.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.getIamPolicy@.
+module Network.Google.Resource.Compute.Disks.GetIAMPolicy
+    (
+    -- * REST Resource
+      DisksGetIAMPolicyResource
+
+    -- * Creating a Request
+    , disksGetIAMPolicy
+    , DisksGetIAMPolicy
+
+    -- * Request Lenses
+    , dgipProject
+    , dgipZone
+    , dgipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.getIamPolicy@ method which the
+-- 'DisksGetIAMPolicy' request conforms to.
+type DisksGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "getIamPolicy" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'disksGetIAMPolicy' smart constructor.
+data DisksGetIAMPolicy = DisksGetIAMPolicy'
+    { _dgipProject  :: !Text
+    , _dgipZone     :: !Text
+    , _dgipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dgipProject'
+--
+-- * 'dgipZone'
+--
+-- * 'dgipResource'
+disksGetIAMPolicy
+    :: Text -- ^ 'dgipProject'
+    -> Text -- ^ 'dgipZone'
+    -> Text -- ^ 'dgipResource'
+    -> DisksGetIAMPolicy
+disksGetIAMPolicy pDgipProject_ pDgipZone_ pDgipResource_ =
+    DisksGetIAMPolicy'
+    { _dgipProject = pDgipProject_
+    , _dgipZone = pDgipZone_
+    , _dgipResource = pDgipResource_
+    }
+
+-- | Project ID for this request.
+dgipProject :: Lens' DisksGetIAMPolicy Text
+dgipProject
+  = lens _dgipProject (\ s a -> s{_dgipProject = a})
+
+-- | The name of the zone for this request.
+dgipZone :: Lens' DisksGetIAMPolicy Text
+dgipZone = lens _dgipZone (\ s a -> s{_dgipZone = a})
+
+-- | Name or id of the resource for this request.
+dgipResource :: Lens' DisksGetIAMPolicy Text
+dgipResource
+  = lens _dgipResource (\ s a -> s{_dgipResource = a})
+
+instance GoogleRequest DisksGetIAMPolicy where
+        type Rs DisksGetIAMPolicy = Policy
+        type Scopes DisksGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient DisksGetIAMPolicy'{..}
+          = go _dgipProject _dgipZone _dgipResource
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DisksGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/Insert.hs b/gen/Network/Google/Resource/Compute/Disks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Disks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/Insert.hs
@@ -37,6 +37,7 @@
     , DisksInsert
 
     -- * Request Lenses
+    , diRequestId
     , diSourceImage
     , diProject
     , diZone
@@ -56,9 +57,10 @@
              "zones" :>
                Capture "zone" Text :>
                  "disks" :>
-                   QueryParam "sourceImage" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Disk :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "sourceImage" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Disk :> Post '[JSON] Operation
 
 -- | Creates a persistent disk in the specified project using the data in the
 -- request. You can create a disk with a sourceImage, a sourceSnapshot, or
@@ -68,7 +70,8 @@
 --
 -- /See:/ 'disksInsert' smart constructor.
 data DisksInsert = DisksInsert'
-    { _diSourceImage :: !(Maybe Text)
+    { _diRequestId   :: !(Maybe Text)
+    , _diSourceImage :: !(Maybe Text)
     , _diProject     :: !Text
     , _diZone        :: !Text
     , _diPayload     :: !Disk
@@ -78,6 +81,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'diRequestId'
+--
 -- * 'diSourceImage'
 --
 -- * 'diProject'
@@ -92,12 +97,27 @@
     -> DisksInsert
 disksInsert pDiProject_ pDiZone_ pDiPayload_ =
     DisksInsert'
-    { _diSourceImage = Nothing
+    { _diRequestId = Nothing
+    , _diSourceImage = Nothing
     , _diProject = pDiProject_
     , _diZone = pDiZone_
     , _diPayload = pDiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+diRequestId :: Lens' DisksInsert (Maybe Text)
+diRequestId
+  = lens _diRequestId (\ s a -> s{_diRequestId = a})
+
 -- | Optional. Source image to restore onto a disk.
 diSourceImage :: Lens' DisksInsert (Maybe Text)
 diSourceImage
@@ -124,7 +144,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient DisksInsert'{..}
-          = go _diProject _diZone _diSourceImage (Just AltJSON)
+          = go _diProject _diZone _diRequestId _diSourceImage
+              (Just AltJSON)
               _diPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Disks/List.hs b/gen/Network/Google/Resource/Compute/Disks/List.hs
--- a/gen/Network/Google/Resource/Compute/Disks/List.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/List.hs
@@ -124,26 +124,22 @@
 dlZone :: Lens' DisksList Text
 dlZone = lens _dlZone (\ s a -> s{_dlZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 dlFilter :: Lens' DisksList (Maybe Text)
 dlFilter = lens _dlFilter (\ s a -> s{_dlFilter = a})
 
@@ -156,7 +152,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 dlMaxResults :: Lens' DisksList Word32
 dlMaxResults
   = lens _dlMaxResults (\ s a -> s{_dlMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Disks/Resize.hs b/gen/Network/Google/Resource/Compute/Disks/Resize.hs
--- a/gen/Network/Google/Resource/Compute/Disks/Resize.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/Resize.hs
@@ -20,7 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Resizes the specified persistent disk.
+-- Resizes the specified persistent disk. You can only increase the size of
+-- the disk.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.resize@.
 module Network.Google.Resource.Compute.Disks.Resize
@@ -33,6 +34,7 @@
     , DisksResize
 
     -- * Request Lenses
+    , drRequestId
     , drProject
     , drDisk
     , drZone
@@ -54,24 +56,29 @@
                  "disks" :>
                    Capture "disk" Text :>
                      "resize" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] DisksResizeRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] DisksResizeRequest :>
+                             Post '[JSON] Operation
 
--- | Resizes the specified persistent disk.
+-- | Resizes the specified persistent disk. You can only increase the size of
+-- the disk.
 --
 -- /See:/ 'disksResize' smart constructor.
 data DisksResize = DisksResize'
-    { _drProject :: !Text
-    , _drDisk    :: !Text
-    , _drZone    :: !Text
-    , _drPayload :: !DisksResizeRequest
+    { _drRequestId :: !(Maybe Text)
+    , _drProject   :: !Text
+    , _drDisk      :: !Text
+    , _drZone      :: !Text
+    , _drPayload   :: !DisksResizeRequest
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'DisksResize' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'drRequestId'
+--
 -- * 'drProject'
 --
 -- * 'drDisk'
@@ -87,12 +94,27 @@
     -> DisksResize
 disksResize pDrProject_ pDrDisk_ pDrZone_ pDrPayload_ =
     DisksResize'
-    { _drProject = pDrProject_
+    { _drRequestId = Nothing
+    , _drProject = pDrProject_
     , _drDisk = pDrDisk_
     , _drZone = pDrZone_
     , _drPayload = pDrPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+drRequestId :: Lens' DisksResize (Maybe Text)
+drRequestId
+  = lens _drRequestId (\ s a -> s{_drRequestId = a})
+
 -- | Project ID for this request.
 drProject :: Lens' DisksResize Text
 drProject
@@ -117,7 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient DisksResize'{..}
-          = go _drProject _drZone _drDisk (Just AltJSON)
+          = go _drProject _drZone _drDisk _drRequestId
+              (Just AltJSON)
               _drPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Disks.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.setIamPolicy@.
+module Network.Google.Resource.Compute.Disks.SetIAMPolicy
+    (
+    -- * REST Resource
+      DisksSetIAMPolicyResource
+
+    -- * Creating a Request
+    , disksSetIAMPolicy
+    , DisksSetIAMPolicy
+
+    -- * Request Lenses
+    , dsipProject
+    , dsipZone
+    , dsipPayload
+    , dsipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.setIamPolicy@ method which the
+-- 'DisksSetIAMPolicy' request conforms to.
+type DisksSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "setIamPolicy" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ZoneSetPolicyRequest :>
+                           Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'disksSetIAMPolicy' smart constructor.
+data DisksSetIAMPolicy = DisksSetIAMPolicy'
+    { _dsipProject  :: !Text
+    , _dsipZone     :: !Text
+    , _dsipPayload  :: !ZoneSetPolicyRequest
+    , _dsipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsipProject'
+--
+-- * 'dsipZone'
+--
+-- * 'dsipPayload'
+--
+-- * 'dsipResource'
+disksSetIAMPolicy
+    :: Text -- ^ 'dsipProject'
+    -> Text -- ^ 'dsipZone'
+    -> ZoneSetPolicyRequest -- ^ 'dsipPayload'
+    -> Text -- ^ 'dsipResource'
+    -> DisksSetIAMPolicy
+disksSetIAMPolicy pDsipProject_ pDsipZone_ pDsipPayload_ pDsipResource_ =
+    DisksSetIAMPolicy'
+    { _dsipProject = pDsipProject_
+    , _dsipZone = pDsipZone_
+    , _dsipPayload = pDsipPayload_
+    , _dsipResource = pDsipResource_
+    }
+
+-- | Project ID for this request.
+dsipProject :: Lens' DisksSetIAMPolicy Text
+dsipProject
+  = lens _dsipProject (\ s a -> s{_dsipProject = a})
+
+-- | The name of the zone for this request.
+dsipZone :: Lens' DisksSetIAMPolicy Text
+dsipZone = lens _dsipZone (\ s a -> s{_dsipZone = a})
+
+-- | Multipart request metadata.
+dsipPayload :: Lens' DisksSetIAMPolicy ZoneSetPolicyRequest
+dsipPayload
+  = lens _dsipPayload (\ s a -> s{_dsipPayload = a})
+
+-- | Name or id of the resource for this request.
+dsipResource :: Lens' DisksSetIAMPolicy Text
+dsipResource
+  = lens _dsipResource (\ s a -> s{_dsipResource = a})
+
+instance GoogleRequest DisksSetIAMPolicy where
+        type Rs DisksSetIAMPolicy = Policy
+        type Scopes DisksSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient DisksSetIAMPolicy'{..}
+          = go _dsipProject _dsipZone _dsipResource
+              (Just AltJSON)
+              _dsipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DisksSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs b/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Disks.SetLabels
+-- 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 labels on a disk. To learn more about labels, read the Labeling
+-- Resources documentation.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.setLabels@.
+module Network.Google.Resource.Compute.Disks.SetLabels
+    (
+    -- * REST Resource
+      DisksSetLabelsResource
+
+    -- * Creating a Request
+    , disksSetLabels
+    , DisksSetLabels
+
+    -- * Request Lenses
+    , dslRequestId
+    , dslProject
+    , dslZone
+    , dslPayload
+    , dslResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.setLabels@ method which the
+-- 'DisksSetLabels' request conforms to.
+type DisksSetLabelsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "setLabels" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] ZoneSetLabelsRequest :>
+                             Post '[JSON] Operation
+
+-- | Sets the labels on a disk. To learn more about labels, read the Labeling
+-- Resources documentation.
+--
+-- /See:/ 'disksSetLabels' smart constructor.
+data DisksSetLabels = DisksSetLabels'
+    { _dslRequestId :: !(Maybe Text)
+    , _dslProject   :: !Text
+    , _dslZone      :: !Text
+    , _dslPayload   :: !ZoneSetLabelsRequest
+    , _dslResource  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksSetLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslRequestId'
+--
+-- * 'dslProject'
+--
+-- * 'dslZone'
+--
+-- * 'dslPayload'
+--
+-- * 'dslResource'
+disksSetLabels
+    :: Text -- ^ 'dslProject'
+    -> Text -- ^ 'dslZone'
+    -> ZoneSetLabelsRequest -- ^ 'dslPayload'
+    -> Text -- ^ 'dslResource'
+    -> DisksSetLabels
+disksSetLabels pDslProject_ pDslZone_ pDslPayload_ pDslResource_ =
+    DisksSetLabels'
+    { _dslRequestId = Nothing
+    , _dslProject = pDslProject_
+    , _dslZone = pDslZone_
+    , _dslPayload = pDslPayload_
+    , _dslResource = pDslResource_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+dslRequestId :: Lens' DisksSetLabels (Maybe Text)
+dslRequestId
+  = lens _dslRequestId (\ s a -> s{_dslRequestId = a})
+
+-- | Project ID for this request.
+dslProject :: Lens' DisksSetLabels Text
+dslProject
+  = lens _dslProject (\ s a -> s{_dslProject = a})
+
+-- | The name of the zone for this request.
+dslZone :: Lens' DisksSetLabels Text
+dslZone = lens _dslZone (\ s a -> s{_dslZone = a})
+
+-- | Multipart request metadata.
+dslPayload :: Lens' DisksSetLabels ZoneSetLabelsRequest
+dslPayload
+  = lens _dslPayload (\ s a -> s{_dslPayload = a})
+
+-- | Name or id of the resource for this request.
+dslResource :: Lens' DisksSetLabels Text
+dslResource
+  = lens _dslResource (\ s a -> s{_dslResource = a})
+
+instance GoogleRequest DisksSetLabels where
+        type Rs DisksSetLabels = Operation
+        type Scopes DisksSetLabels =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient DisksSetLabels'{..}
+          = go _dslProject _dslZone _dslResource _dslRequestId
+              (Just AltJSON)
+              _dslPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DisksSetLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Disks.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.testIamPermissions@.
+module Network.Google.Resource.Compute.Disks.TestIAMPermissions
+    (
+    -- * REST Resource
+      DisksTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , disksTestIAMPermissions
+    , DisksTestIAMPermissions
+
+    -- * Request Lenses
+    , dtipProject
+    , dtipZone
+    , dtipPayload
+    , dtipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.testIamPermissions@ method which the
+-- 'DisksTestIAMPermissions' request conforms to.
+type DisksTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'disksTestIAMPermissions' smart constructor.
+data DisksTestIAMPermissions = DisksTestIAMPermissions'
+    { _dtipProject  :: !Text
+    , _dtipZone     :: !Text
+    , _dtipPayload  :: !TestPermissionsRequest
+    , _dtipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtipProject'
+--
+-- * 'dtipZone'
+--
+-- * 'dtipPayload'
+--
+-- * 'dtipResource'
+disksTestIAMPermissions
+    :: Text -- ^ 'dtipProject'
+    -> Text -- ^ 'dtipZone'
+    -> TestPermissionsRequest -- ^ 'dtipPayload'
+    -> Text -- ^ 'dtipResource'
+    -> DisksTestIAMPermissions
+disksTestIAMPermissions pDtipProject_ pDtipZone_ pDtipPayload_ pDtipResource_ =
+    DisksTestIAMPermissions'
+    { _dtipProject = pDtipProject_
+    , _dtipZone = pDtipZone_
+    , _dtipPayload = pDtipPayload_
+    , _dtipResource = pDtipResource_
+    }
+
+-- | Project ID for this request.
+dtipProject :: Lens' DisksTestIAMPermissions Text
+dtipProject
+  = lens _dtipProject (\ s a -> s{_dtipProject = a})
+
+-- | The name of the zone for this request.
+dtipZone :: Lens' DisksTestIAMPermissions Text
+dtipZone = lens _dtipZone (\ s a -> s{_dtipZone = a})
+
+-- | Multipart request metadata.
+dtipPayload :: Lens' DisksTestIAMPermissions TestPermissionsRequest
+dtipPayload
+  = lens _dtipPayload (\ s a -> s{_dtipPayload = a})
+
+-- | Name or id of the resource for this request.
+dtipResource :: Lens' DisksTestIAMPermissions Text
+dtipResource
+  = lens _dtipResource (\ s a -> s{_dtipResource = a})
+
+instance GoogleRequest DisksTestIAMPermissions where
+        type Rs DisksTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes DisksTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient DisksTestIAMPermissions'{..}
+          = go _dtipProject _dtipZone _dtipResource
+              (Just AltJSON)
+              _dtipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DisksTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs b/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs
@@ -33,6 +33,7 @@
     , FirewallsDelete
 
     -- * Request Lenses
+    , fdRequestId
     , fdProject
     , fdFirewall
     ) where
@@ -50,20 +51,24 @@
              "global" :>
                "firewalls" :>
                  Capture "firewall" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified firewall.
 --
 -- /See:/ 'firewallsDelete' smart constructor.
 data FirewallsDelete = FirewallsDelete'
-    { _fdProject  :: !Text
-    , _fdFirewall :: !Text
+    { _fdRequestId :: !(Maybe Text)
+    , _fdProject   :: !Text
+    , _fdFirewall  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FirewallsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fdRequestId'
+--
 -- * 'fdProject'
 --
 -- * 'fdFirewall'
@@ -73,10 +78,25 @@
     -> FirewallsDelete
 firewallsDelete pFdProject_ pFdFirewall_ =
     FirewallsDelete'
-    { _fdProject = pFdProject_
+    { _fdRequestId = Nothing
+    , _fdProject = pFdProject_
     , _fdFirewall = pFdFirewall_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+fdRequestId :: Lens' FirewallsDelete (Maybe Text)
+fdRequestId
+  = lens _fdRequestId (\ s a -> s{_fdRequestId = a})
+
 -- | Project ID for this request.
 fdProject :: Lens' FirewallsDelete Text
 fdProject
@@ -93,7 +113,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient FirewallsDelete'{..}
-          = go _fdProject _fdFirewall (Just AltJSON)
+          = go _fdProject _fdFirewall _fdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs b/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs
@@ -34,6 +34,7 @@
     , FirewallsInsert
 
     -- * Request Lenses
+    , fiRequestId
     , fiProject
     , fiPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "firewalls" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Firewall :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Firewall :> Post '[JSON] Operation
 
 -- | Creates a firewall rule in the specified project using the data included
 -- in the request.
 --
 -- /See:/ 'firewallsInsert' smart constructor.
 data FirewallsInsert = FirewallsInsert'
-    { _fiProject :: !Text
-    , _fiPayload :: !Firewall
+    { _fiRequestId :: !(Maybe Text)
+    , _fiProject   :: !Text
+    , _fiPayload   :: !Firewall
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FirewallsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fiRequestId'
+--
 -- * 'fiProject'
 --
 -- * 'fiPayload'
@@ -75,10 +80,25 @@
     -> FirewallsInsert
 firewallsInsert pFiProject_ pFiPayload_ =
     FirewallsInsert'
-    { _fiProject = pFiProject_
+    { _fiRequestId = Nothing
+    , _fiProject = pFiProject_
     , _fiPayload = pFiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+fiRequestId :: Lens' FirewallsInsert (Maybe Text)
+fiRequestId
+  = lens _fiRequestId (\ s a -> s{_fiRequestId = a})
+
 -- | Project ID for this request.
 fiProject :: Lens' FirewallsInsert Text
 fiProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient FirewallsInsert'{..}
-          = go _fiProject (Just AltJSON) _fiPayload
+          = go _fiProject _fiRequestId (Just AltJSON)
+              _fiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/List.hs b/gen/Network/Google/Resource/Compute/Firewalls/List.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/List.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/List.hs
@@ -111,26 +111,22 @@
 flProject
   = lens _flProject (\ s a -> s{_flProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 flFilter :: Lens' FirewallsList (Maybe Text)
 flFilter = lens _flFilter (\ s a -> s{_flFilter = a})
 
@@ -143,7 +139,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 flMaxResults :: Lens' FirewallsList Word32
 flMaxResults
   = lens _flMaxResults (\ s a -> s{_flMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs b/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates the specified firewall rule with the data included in the
--- request. This method supports patch semantics.
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.patch@.
 module Network.Google.Resource.Compute.Firewalls.Patch
@@ -34,6 +35,7 @@
     , FirewallsPatch
 
     -- * Request Lenses
+    , fpRequestId
     , fpProject
     , fpPayload
     , fpFirewall
@@ -52,23 +54,28 @@
              "global" :>
                "firewalls" :>
                  Capture "firewall" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Firewall :> Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Firewall :> Patch '[JSON] Operation
 
 -- | Updates the specified firewall rule with the data included in the
--- request. This method supports patch semantics.
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
 --
 -- /See:/ 'firewallsPatch' smart constructor.
 data FirewallsPatch = FirewallsPatch'
-    { _fpProject  :: !Text
-    , _fpPayload  :: !Firewall
-    , _fpFirewall :: !Text
+    { _fpRequestId :: !(Maybe Text)
+    , _fpProject   :: !Text
+    , _fpPayload   :: !Firewall
+    , _fpFirewall  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FirewallsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fpRequestId'
+--
 -- * 'fpProject'
 --
 -- * 'fpPayload'
@@ -81,11 +88,26 @@
     -> FirewallsPatch
 firewallsPatch pFpProject_ pFpPayload_ pFpFirewall_ =
     FirewallsPatch'
-    { _fpProject = pFpProject_
+    { _fpRequestId = Nothing
+    , _fpProject = pFpProject_
     , _fpPayload = pFpPayload_
     , _fpFirewall = pFpFirewall_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+fpRequestId :: Lens' FirewallsPatch (Maybe Text)
+fpRequestId
+  = lens _fpRequestId (\ s a -> s{_fpRequestId = a})
+
 -- | Project ID for this request.
 fpProject :: Lens' FirewallsPatch Text
 fpProject
@@ -96,7 +118,7 @@
 fpPayload
   = lens _fpPayload (\ s a -> s{_fpPayload = a})
 
--- | Name of the firewall rule to update.
+-- | Name of the firewall rule to patch.
 fpFirewall :: Lens' FirewallsPatch Text
 fpFirewall
   = lens _fpFirewall (\ s a -> s{_fpFirewall = a})
@@ -107,7 +129,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient FirewallsPatch'{..}
-          = go _fpProject _fpFirewall (Just AltJSON) _fpPayload
+          = go _fpProject _fpFirewall _fpRequestId
+              (Just AltJSON)
+              _fpPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy FirewallsPatchResource)
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Update.hs b/gen/Network/Google/Resource/Compute/Firewalls/Update.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/Update.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Update.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates the specified firewall rule with the data included in the
--- request.
+-- request. The PUT method can only update the following fields of firewall
+-- rule: allowed, description, sourceRanges, sourceTags, targetTags.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.update@.
 module Network.Google.Resource.Compute.Firewalls.Update
@@ -34,6 +35,7 @@
     , FirewallsUpdate
 
     -- * Request Lenses
+    , fuRequestId
     , fuProject
     , fuPayload
     , fuFirewall
@@ -52,23 +54,28 @@
              "global" :>
                "firewalls" :>
                  Capture "firewall" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Firewall :> Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Firewall :> Put '[JSON] Operation
 
 -- | Updates the specified firewall rule with the data included in the
--- request.
+-- request. The PUT method can only update the following fields of firewall
+-- rule: allowed, description, sourceRanges, sourceTags, targetTags.
 --
 -- /See:/ 'firewallsUpdate' smart constructor.
 data FirewallsUpdate = FirewallsUpdate'
-    { _fuProject  :: !Text
-    , _fuPayload  :: !Firewall
-    , _fuFirewall :: !Text
+    { _fuRequestId :: !(Maybe Text)
+    , _fuProject   :: !Text
+    , _fuPayload   :: !Firewall
+    , _fuFirewall  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FirewallsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fuRequestId'
+--
 -- * 'fuProject'
 --
 -- * 'fuPayload'
@@ -81,11 +88,26 @@
     -> FirewallsUpdate
 firewallsUpdate pFuProject_ pFuPayload_ pFuFirewall_ =
     FirewallsUpdate'
-    { _fuProject = pFuProject_
+    { _fuRequestId = Nothing
+    , _fuProject = pFuProject_
     , _fuPayload = pFuPayload_
     , _fuFirewall = pFuFirewall_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+fuRequestId :: Lens' FirewallsUpdate (Maybe Text)
+fuRequestId
+  = lens _fuRequestId (\ s a -> s{_fuRequestId = a})
+
 -- | Project ID for this request.
 fuProject :: Lens' FirewallsUpdate Text
 fuProject
@@ -107,7 +129,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient FirewallsUpdate'{..}
-          = go _fuProject _fuFirewall (Just AltJSON) _fuPayload
+          = go _fuProject _fuFirewall _fuRequestId
+              (Just AltJSON)
+              _fuPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs
@@ -112,26 +112,22 @@
 fralProject
   = lens _fralProject (\ s a -> s{_fralProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 fralFilter :: Lens' ForwardingRulesAggregatedList (Maybe Text)
 fralFilter
   = lens _fralFilter (\ s a -> s{_fralFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 fralMaxResults :: Lens' ForwardingRulesAggregatedList Word32
 fralMaxResults
   = lens _fralMaxResults
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs
@@ -33,6 +33,7 @@
     , ForwardingRulesDelete
 
     -- * Request Lenses
+    , frdRequestId
     , frdProject
     , frdForwardingRule
     , frdRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "forwardingRules" :>
                    Capture "forwardingRule" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified ForwardingRule resource.
 --
 -- /See:/ 'forwardingRulesDelete' smart constructor.
 data ForwardingRulesDelete = ForwardingRulesDelete'
-    { _frdProject        :: !Text
+    { _frdRequestId      :: !(Maybe Text)
+    , _frdProject        :: !Text
     , _frdForwardingRule :: !Text
     , _frdRegion         :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'frdRequestId'
+--
 -- * 'frdProject'
 --
 -- * 'frdForwardingRule'
@@ -79,11 +84,26 @@
     -> ForwardingRulesDelete
 forwardingRulesDelete pFrdProject_ pFrdForwardingRule_ pFrdRegion_ =
     ForwardingRulesDelete'
-    { _frdProject = pFrdProject_
+    { _frdRequestId = Nothing
+    , _frdProject = pFrdProject_
     , _frdForwardingRule = pFrdForwardingRule_
     , _frdRegion = pFrdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+frdRequestId :: Lens' ForwardingRulesDelete (Maybe Text)
+frdRequestId
+  = lens _frdRequestId (\ s a -> s{_frdRequestId = a})
+
 -- | Project ID for this request.
 frdProject :: Lens' ForwardingRulesDelete Text
 frdProject
@@ -107,6 +127,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient ForwardingRulesDelete'{..}
           = go _frdProject _frdRegion _frdForwardingRule
+              _frdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs
@@ -34,6 +34,7 @@
     , ForwardingRulesInsert
 
     -- * Request Lenses
+    , friRequestId
     , friProject
     , friPayload
     , friRegion
@@ -52,24 +53,28 @@
              "regions" :>
                Capture "region" Text :>
                  "forwardingRules" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] ForwardingRule :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] ForwardingRule :>
+                         Post '[JSON] Operation
 
 -- | Creates a ForwardingRule resource in the specified project and region
 -- using the data included in the request.
 --
 -- /See:/ 'forwardingRulesInsert' smart constructor.
 data ForwardingRulesInsert = ForwardingRulesInsert'
-    { _friProject :: !Text
-    , _friPayload :: !ForwardingRule
-    , _friRegion  :: !Text
+    { _friRequestId :: !(Maybe Text)
+    , _friProject   :: !Text
+    , _friPayload   :: !ForwardingRule
+    , _friRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ForwardingRulesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'friRequestId'
+--
 -- * 'friProject'
 --
 -- * 'friPayload'
@@ -82,11 +87,26 @@
     -> ForwardingRulesInsert
 forwardingRulesInsert pFriProject_ pFriPayload_ pFriRegion_ =
     ForwardingRulesInsert'
-    { _friProject = pFriProject_
+    { _friRequestId = Nothing
+    , _friProject = pFriProject_
     , _friPayload = pFriPayload_
     , _friRegion = pFriRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+friRequestId :: Lens' ForwardingRulesInsert (Maybe Text)
+friRequestId
+  = lens _friRequestId (\ s a -> s{_friRequestId = a})
+
 -- | Project ID for this request.
 friProject :: Lens' ForwardingRulesInsert Text
 friProject
@@ -108,7 +128,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ForwardingRulesInsert'{..}
-          = go _friProject _friRegion (Just AltJSON)
+          = go _friProject _friRegion _friRequestId
+              (Just AltJSON)
               _friPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs
@@ -121,26 +121,22 @@
 frlProject
   = lens _frlProject (\ s a -> s{_frlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 frlFilter :: Lens' ForwardingRulesList (Maybe Text)
 frlFilter
   = lens _frlFilter (\ s a -> s{_frlFilter = a})
@@ -159,7 +155,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 frlMaxResults :: Lens' ForwardingRulesList Word32
 frlMaxResults
   = lens _frlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs
@@ -34,6 +34,7 @@
     , ForwardingRulesSetTarget
 
     -- * Request Lenses
+    , frstRequestId
     , frstProject
     , frstForwardingRule
     , frstPayload
@@ -55,16 +56,18 @@
                  "forwardingRules" :>
                    Capture "forwardingRule" Text :>
                      "setTarget" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TargetReference :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetReference :>
+                             Post '[JSON] Operation
 
 -- | Changes target URL for forwarding rule. The new target should be of the
 -- same type as the old target.
 --
 -- /See:/ 'forwardingRulesSetTarget' smart constructor.
 data ForwardingRulesSetTarget = ForwardingRulesSetTarget'
-    { _frstProject        :: !Text
+    { _frstRequestId      :: !(Maybe Text)
+    , _frstProject        :: !Text
     , _frstForwardingRule :: !Text
     , _frstPayload        :: !TargetReference
     , _frstRegion         :: !Text
@@ -74,6 +77,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'frstRequestId'
+--
 -- * 'frstProject'
 --
 -- * 'frstForwardingRule'
@@ -89,12 +94,28 @@
     -> ForwardingRulesSetTarget
 forwardingRulesSetTarget pFrstProject_ pFrstForwardingRule_ pFrstPayload_ pFrstRegion_ =
     ForwardingRulesSetTarget'
-    { _frstProject = pFrstProject_
+    { _frstRequestId = Nothing
+    , _frstProject = pFrstProject_
     , _frstForwardingRule = pFrstForwardingRule_
     , _frstPayload = pFrstPayload_
     , _frstRegion = pFrstRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+frstRequestId :: Lens' ForwardingRulesSetTarget (Maybe Text)
+frstRequestId
+  = lens _frstRequestId
+      (\ s a -> s{_frstRequestId = a})
+
 -- | Project ID for this request.
 frstProject :: Lens' ForwardingRulesSetTarget Text
 frstProject
@@ -123,6 +144,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient ForwardingRulesSetTarget'{..}
           = go _frstProject _frstRegion _frstForwardingRule
+              _frstRequestId
               (Just AltJSON)
               _frstPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs
--- a/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs
@@ -33,6 +33,7 @@
     , GlobalAddressesDelete
 
     -- * Request Lenses
+    , gadRequestId
     , gadProject
     , gadAddress
     ) where
@@ -50,20 +51,24 @@
              "global" :>
                "addresses" :>
                  Capture "address" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified address resource.
 --
 -- /See:/ 'globalAddressesDelete' smart constructor.
 data GlobalAddressesDelete = GlobalAddressesDelete'
-    { _gadProject :: !Text
-    , _gadAddress :: !Text
+    { _gadRequestId :: !(Maybe Text)
+    , _gadProject   :: !Text
+    , _gadAddress   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'GlobalAddressesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'gadRequestId'
+--
 -- * 'gadProject'
 --
 -- * 'gadAddress'
@@ -73,10 +78,25 @@
     -> GlobalAddressesDelete
 globalAddressesDelete pGadProject_ pGadAddress_ =
     GlobalAddressesDelete'
-    { _gadProject = pGadProject_
+    { _gadRequestId = Nothing
+    , _gadProject = pGadProject_
     , _gadAddress = pGadAddress_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+gadRequestId :: Lens' GlobalAddressesDelete (Maybe Text)
+gadRequestId
+  = lens _gadRequestId (\ s a -> s{_gadRequestId = a})
+
 -- | Project ID for this request.
 gadProject :: Lens' GlobalAddressesDelete Text
 gadProject
@@ -93,7 +113,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient GlobalAddressesDelete'{..}
-          = go _gadProject _gadAddress (Just AltJSON)
+          = go _gadProject _gadAddress _gadRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs
--- a/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified address resource. Get a list of available
+-- Returns the specified address resource. Gets a list of available
 -- addresses by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalAddresses.get@.
@@ -53,7 +53,7 @@
                  Capture "address" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Address
 
--- | Returns the specified address resource. Get a list of available
+-- | Returns the specified address resource. Gets a list of available
 -- addresses by making a list() request.
 --
 -- /See:/ 'globalAddressesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs
--- a/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs
@@ -34,6 +34,7 @@
     , GlobalAddressesInsert
 
     -- * Request Lenses
+    , gaiRequestId
     , gaiProject
     , gaiPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "addresses" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Address :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Address :> Post '[JSON] Operation
 
 -- | Creates an address resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'globalAddressesInsert' smart constructor.
 data GlobalAddressesInsert = GlobalAddressesInsert'
-    { _gaiProject :: !Text
-    , _gaiPayload :: !Address
+    { _gaiRequestId :: !(Maybe Text)
+    , _gaiProject   :: !Text
+    , _gaiPayload   :: !Address
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'GlobalAddressesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'gaiRequestId'
+--
 -- * 'gaiProject'
 --
 -- * 'gaiPayload'
@@ -75,10 +80,25 @@
     -> GlobalAddressesInsert
 globalAddressesInsert pGaiProject_ pGaiPayload_ =
     GlobalAddressesInsert'
-    { _gaiProject = pGaiProject_
+    { _gaiRequestId = Nothing
+    , _gaiProject = pGaiProject_
     , _gaiPayload = pGaiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+gaiRequestId :: Lens' GlobalAddressesInsert (Maybe Text)
+gaiRequestId
+  = lens _gaiRequestId (\ s a -> s{_gaiRequestId = a})
+
 -- | Project ID for this request.
 gaiProject :: Lens' GlobalAddressesInsert Text
 gaiProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient GlobalAddressesInsert'{..}
-          = go _gaiProject (Just AltJSON) _gaiPayload
+          = go _gaiProject _gaiRequestId (Just AltJSON)
+              _gaiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs
--- a/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs
@@ -111,26 +111,22 @@
 galProject
   = lens _galProject (\ s a -> s{_galProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 galFilter :: Lens' GlobalAddressesList (Maybe Text)
 galFilter
   = lens _galFilter (\ s a -> s{_galFilter = a})
@@ -144,7 +140,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 galMaxResults :: Lens' GlobalAddressesList Word32
 galMaxResults
   = lens _galMaxResults
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs
--- a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes the specified ForwardingRule resource.
+-- Deletes the specified GlobalForwardingRule resource.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.delete@.
 module Network.Google.Resource.Compute.GlobalForwardingRules.Delete
@@ -33,6 +33,7 @@
     , GlobalForwardingRulesDelete
 
     -- * Request Lenses
+    , gfrdRequestId
     , gfrdProject
     , gfrdForwardingRule
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "forwardingRules" :>
                  Capture "forwardingRule" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
--- | Deletes the specified ForwardingRule resource.
+-- | Deletes the specified GlobalForwardingRule resource.
 --
 -- /See:/ 'globalForwardingRulesDelete' smart constructor.
 data GlobalForwardingRulesDelete = GlobalForwardingRulesDelete'
-    { _gfrdProject        :: !Text
+    { _gfrdRequestId      :: !(Maybe Text)
+    , _gfrdProject        :: !Text
     , _gfrdForwardingRule :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'gfrdRequestId'
+--
 -- * 'gfrdProject'
 --
 -- * 'gfrdForwardingRule'
@@ -73,10 +78,26 @@
     -> GlobalForwardingRulesDelete
 globalForwardingRulesDelete pGfrdProject_ pGfrdForwardingRule_ =
     GlobalForwardingRulesDelete'
-    { _gfrdProject = pGfrdProject_
+    { _gfrdRequestId = Nothing
+    , _gfrdProject = pGfrdProject_
     , _gfrdForwardingRule = pGfrdForwardingRule_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+gfrdRequestId :: Lens' GlobalForwardingRulesDelete (Maybe Text)
+gfrdRequestId
+  = lens _gfrdRequestId
+      (\ s a -> s{_gfrdRequestId = a})
+
 -- | Project ID for this request.
 gfrdProject :: Lens' GlobalForwardingRulesDelete Text
 gfrdProject
@@ -95,7 +116,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient GlobalForwardingRulesDelete'{..}
-          = go _gfrdProject _gfrdForwardingRule (Just AltJSON)
+          = go _gfrdProject _gfrdForwardingRule _gfrdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs
--- a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified ForwardingRule resource. Get a list of available
--- forwarding rules by making a list() request.
+-- Returns the specified GlobalForwardingRule resource. Gets a list of
+-- available forwarding rules by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.get@.
 module Network.Google.Resource.Compute.GlobalForwardingRules.Get
@@ -54,8 +54,8 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] ForwardingRule
 
--- | Returns the specified ForwardingRule resource. Get a list of available
--- forwarding rules by making a list() request.
+-- | Returns the specified GlobalForwardingRule resource. Gets a list of
+-- available forwarding rules by making a list() request.
 --
 -- /See:/ 'globalForwardingRulesGet' smart constructor.
 data GlobalForwardingRulesGet = GlobalForwardingRulesGet'
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs
--- a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a ForwardingRule resource in the specified project and region
--- using the data included in the request.
+-- Creates a GlobalForwardingRule resource in the specified project using
+-- the data included in the request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.insert@.
 module Network.Google.Resource.Compute.GlobalForwardingRules.Insert
@@ -34,6 +34,7 @@
     , GlobalForwardingRulesInsert
 
     -- * Request Lenses
+    , gfriRequestId
     , gfriProject
     , gfriPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "forwardingRules" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] ForwardingRule :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ForwardingRule :>
+                       Post '[JSON] Operation
 
--- | Creates a ForwardingRule resource in the specified project and region
--- using the data included in the request.
+-- | Creates a GlobalForwardingRule resource in the specified project using
+-- the data included in the request.
 --
 -- /See:/ 'globalForwardingRulesInsert' smart constructor.
 data GlobalForwardingRulesInsert = GlobalForwardingRulesInsert'
-    { _gfriProject :: !Text
-    , _gfriPayload :: !ForwardingRule
+    { _gfriRequestId :: !(Maybe Text)
+    , _gfriProject   :: !Text
+    , _gfriPayload   :: !ForwardingRule
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'GlobalForwardingRulesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'gfriRequestId'
+--
 -- * 'gfriProject'
 --
 -- * 'gfriPayload'
@@ -76,10 +81,26 @@
     -> GlobalForwardingRulesInsert
 globalForwardingRulesInsert pGfriProject_ pGfriPayload_ =
     GlobalForwardingRulesInsert'
-    { _gfriProject = pGfriProject_
+    { _gfriRequestId = Nothing
+    , _gfriProject = pGfriProject_
     , _gfriPayload = pGfriPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+gfriRequestId :: Lens' GlobalForwardingRulesInsert (Maybe Text)
+gfriRequestId
+  = lens _gfriRequestId
+      (\ s a -> s{_gfriRequestId = a})
+
 -- | Project ID for this request.
 gfriProject :: Lens' GlobalForwardingRulesInsert Text
 gfriProject
@@ -97,7 +118,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient GlobalForwardingRulesInsert'{..}
-          = go _gfriProject (Just AltJSON) _gfriPayload
+          = go _gfriProject _gfriRequestId (Just AltJSON)
+              _gfriPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs
--- a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves a list of ForwardingRule resources available to the specified
--- project.
+-- Retrieves a list of GlobalForwardingRule resources available to the
+-- specified project.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.list@.
 module Network.Google.Resource.Compute.GlobalForwardingRules.List
@@ -60,8 +60,8 @@
                          QueryParam "alt" AltJSON :>
                            Get '[JSON] ForwardingRuleList
 
--- | Retrieves a list of ForwardingRule resources available to the specified
--- project.
+-- | Retrieves a list of GlobalForwardingRule resources available to the
+-- specified project.
 --
 -- /See:/ 'globalForwardingRulesList' smart constructor.
 data GlobalForwardingRulesList = GlobalForwardingRulesList'
@@ -114,26 +114,22 @@
 gfrlProject
   = lens _gfrlProject (\ s a -> s{_gfrlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 gfrlFilter :: Lens' GlobalForwardingRulesList (Maybe Text)
 gfrlFilter
   = lens _gfrlFilter (\ s a -> s{_gfrlFilter = a})
@@ -148,7 +144,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 gfrlMaxResults :: Lens' GlobalForwardingRulesList Word32
 gfrlMaxResults
   = lens _gfrlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs
--- a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Changes target URL for forwarding rule. The new target should be of the
--- same type as the old target.
+-- Changes target URL for the GlobalForwardingRule resource. The new target
+-- should be of the same type as the old target.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.setTarget@.
 module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
@@ -34,6 +34,7 @@
     , GlobalForwardingRulesSetTarget
 
     -- * Request Lenses
+    , gfrstRequestId
     , gfrstProject
     , gfrstForwardingRule
     , gfrstPayload
@@ -53,16 +54,18 @@
                "forwardingRules" :>
                  Capture "forwardingRule" Text :>
                    "setTarget" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] TargetReference :>
-                         Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetReference :>
+                           Post '[JSON] Operation
 
--- | Changes target URL for forwarding rule. The new target should be of the
--- same type as the old target.
+-- | Changes target URL for the GlobalForwardingRule resource. The new target
+-- should be of the same type as the old target.
 --
 -- /See:/ 'globalForwardingRulesSetTarget' smart constructor.
 data GlobalForwardingRulesSetTarget = GlobalForwardingRulesSetTarget'
-    { _gfrstProject        :: !Text
+    { _gfrstRequestId      :: !(Maybe Text)
+    , _gfrstProject        :: !Text
     , _gfrstForwardingRule :: !Text
     , _gfrstPayload        :: !TargetReference
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,6 +74,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'gfrstRequestId'
+--
 -- * 'gfrstProject'
 --
 -- * 'gfrstForwardingRule'
@@ -83,11 +88,27 @@
     -> GlobalForwardingRulesSetTarget
 globalForwardingRulesSetTarget pGfrstProject_ pGfrstForwardingRule_ pGfrstPayload_ =
     GlobalForwardingRulesSetTarget'
-    { _gfrstProject = pGfrstProject_
+    { _gfrstRequestId = Nothing
+    , _gfrstProject = pGfrstProject_
     , _gfrstForwardingRule = pGfrstForwardingRule_
     , _gfrstPayload = pGfrstPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+gfrstRequestId :: Lens' GlobalForwardingRulesSetTarget (Maybe Text)
+gfrstRequestId
+  = lens _gfrstRequestId
+      (\ s a -> s{_gfrstRequestId = a})
+
 -- | Project ID for this request.
 gfrstProject :: Lens' GlobalForwardingRulesSetTarget Text
 gfrstProject
@@ -112,6 +133,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient GlobalForwardingRulesSetTarget'{..}
           = go _gfrstProject _gfrstForwardingRule
+              _gfrstRequestId
               (Just AltJSON)
               _gfrstPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs
@@ -112,26 +112,22 @@
 goalProject
   = lens _goalProject (\ s a -> s{_goalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 goalFilter :: Lens' GlobalOperationsAggregatedList (Maybe Text)
 goalFilter
   = lens _goalFilter (\ s a -> s{_goalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 goalMaxResults :: Lens' GlobalOperationsAggregatedList Word32
 goalMaxResults
   = lens _goalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs
--- a/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves the specified Operations resource. Get a list of operations by
--- making a list() request.
+-- Retrieves the specified Operations resource. Gets a list of operations
+-- by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalOperations.get@.
 module Network.Google.Resource.Compute.GlobalOperations.Get
@@ -53,8 +53,8 @@
                  Capture "operation" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Operation
 
--- | Retrieves the specified Operations resource. Get a list of operations by
--- making a list() request.
+-- | Retrieves the specified Operations resource. Gets a list of operations
+-- by making a list() request.
 --
 -- /See:/ 'globalOperationsGet' smart constructor.
 data GlobalOperationsGet = GlobalOperationsGet'
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs
--- a/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs
@@ -113,26 +113,22 @@
 golProject
   = lens _golProject (\ s a -> s{_golProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 golFilter :: Lens' GlobalOperationsList (Maybe Text)
 golFilter
   = lens _golFilter (\ s a -> s{_golFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 golMaxResults :: Lens' GlobalOperationsList Word32
 golMaxResults
   = lens _golMaxResults
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs
@@ -33,6 +33,7 @@
     , HTTPHealthChecksDelete
 
     -- * Request Lenses
+    , httphcdRequestId
     , httphcdProject
     , httphcdHTTPHealthCheck
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "httpHealthChecks" :>
                  Capture "httpHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified HttpHealthCheck resource.
 --
 -- /See:/ 'hTTPHealthChecksDelete' smart constructor.
 data HTTPHealthChecksDelete = HTTPHealthChecksDelete'
-    { _httphcdProject         :: !Text
+    { _httphcdRequestId       :: !(Maybe Text)
+    , _httphcdProject         :: !Text
     , _httphcdHTTPHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'httphcdRequestId'
+--
 -- * 'httphcdProject'
 --
 -- * 'httphcdHTTPHealthCheck'
@@ -73,10 +78,26 @@
     -> HTTPHealthChecksDelete
 hTTPHealthChecksDelete pHttphcdProject_ pHttphcdHTTPHealthCheck_ =
     HTTPHealthChecksDelete'
-    { _httphcdProject = pHttphcdProject_
+    { _httphcdRequestId = Nothing
+    , _httphcdProject = pHttphcdProject_
     , _httphcdHTTPHealthCheck = pHttphcdHTTPHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+httphcdRequestId :: Lens' HTTPHealthChecksDelete (Maybe Text)
+httphcdRequestId
+  = lens _httphcdRequestId
+      (\ s a -> s{_httphcdRequestId = a})
+
 -- | Project ID for this request.
 httphcdProject :: Lens' HTTPHealthChecksDelete Text
 httphcdProject
@@ -96,6 +117,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPHealthChecksDelete'{..}
           = go _httphcdProject _httphcdHTTPHealthCheck
+              _httphcdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified HttpHealthCheck resource. Get a list of available
+-- Returns the specified HttpHealthCheck resource. Gets a list of available
 -- HTTP health checks by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.get@.
@@ -54,7 +54,7 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] HTTPHealthCheck
 
--- | Returns the specified HttpHealthCheck resource. Get a list of available
+-- | Returns the specified HttpHealthCheck resource. Gets a list of available
 -- HTTP health checks by making a list() request.
 --
 -- /See:/ 'hTTPHealthChecksGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs
@@ -34,6 +34,7 @@
     , HTTPHealthChecksInsert
 
     -- * Request Lenses
+    , httphciRequestId
     , httphciProject
     , httphciPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "httpHealthChecks" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] HTTPHealthCheck :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPHealthCheck :>
+                       Post '[JSON] Operation
 
 -- | Creates a HttpHealthCheck resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'hTTPHealthChecksInsert' smart constructor.
 data HTTPHealthChecksInsert = HTTPHealthChecksInsert'
-    { _httphciProject :: !Text
-    , _httphciPayload :: !HTTPHealthCheck
+    { _httphciRequestId :: !(Maybe Text)
+    , _httphciProject   :: !Text
+    , _httphciPayload   :: !HTTPHealthCheck
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HTTPHealthChecksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'httphciRequestId'
+--
 -- * 'httphciProject'
 --
 -- * 'httphciPayload'
@@ -76,10 +81,26 @@
     -> HTTPHealthChecksInsert
 hTTPHealthChecksInsert pHttphciProject_ pHttphciPayload_ =
     HTTPHealthChecksInsert'
-    { _httphciProject = pHttphciProject_
+    { _httphciRequestId = Nothing
+    , _httphciProject = pHttphciProject_
     , _httphciPayload = pHttphciPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+httphciRequestId :: Lens' HTTPHealthChecksInsert (Maybe Text)
+httphciRequestId
+  = lens _httphciRequestId
+      (\ s a -> s{_httphciRequestId = a})
+
 -- | Project ID for this request.
 httphciProject :: Lens' HTTPHealthChecksInsert Text
 httphciProject
@@ -98,7 +119,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPHealthChecksInsert'{..}
-          = go _httphciProject (Just AltJSON) _httphciPayload
+          = go _httphciProject _httphciRequestId (Just AltJSON)
+              _httphciPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs
@@ -116,26 +116,22 @@
   = lens _httphclProject
       (\ s a -> s{_httphclProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 httphclFilter :: Lens' HTTPHealthChecksList (Maybe Text)
 httphclFilter
   = lens _httphclFilter
@@ -151,7 +147,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 httphclMaxResults :: Lens' HTTPHealthChecksList Word32
 httphclMaxResults
   = lens _httphclMaxResults
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates a HttpHealthCheck resource in the specified project using the
--- data included in the request. This method supports patch semantics.
+-- data included in the request. This method supports PATCH semantics and
+-- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.patch@.
 module Network.Google.Resource.Compute.HTTPHealthChecks.Patch
@@ -34,6 +35,7 @@
     , HTTPHealthChecksPatch
 
     -- * Request Lenses
+    , httphcpRequestId
     , httphcpProject
     , httphcpPayload
     , httphcpHTTPHealthCheck
@@ -52,16 +54,19 @@
              "global" :>
                "httpHealthChecks" :>
                  Capture "httpHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HTTPHealthCheck :>
-                       Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HTTPHealthCheck :>
+                         Patch '[JSON] Operation
 
 -- | Updates a HttpHealthCheck resource in the specified project using the
--- data included in the request. This method supports patch semantics.
+-- data included in the request. This method supports PATCH semantics and
+-- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'hTTPHealthChecksPatch' smart constructor.
 data HTTPHealthChecksPatch = HTTPHealthChecksPatch'
-    { _httphcpProject         :: !Text
+    { _httphcpRequestId       :: !(Maybe Text)
+    , _httphcpProject         :: !Text
     , _httphcpPayload         :: !HTTPHealthCheck
     , _httphcpHTTPHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'httphcpRequestId'
+--
 -- * 'httphcpProject'
 --
 -- * 'httphcpPayload'
@@ -82,11 +89,27 @@
     -> HTTPHealthChecksPatch
 hTTPHealthChecksPatch pHttphcpProject_ pHttphcpPayload_ pHttphcpHTTPHealthCheck_ =
     HTTPHealthChecksPatch'
-    { _httphcpProject = pHttphcpProject_
+    { _httphcpRequestId = Nothing
+    , _httphcpProject = pHttphcpProject_
     , _httphcpPayload = pHttphcpPayload_
     , _httphcpHTTPHealthCheck = pHttphcpHTTPHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+httphcpRequestId :: Lens' HTTPHealthChecksPatch (Maybe Text)
+httphcpRequestId
+  = lens _httphcpRequestId
+      (\ s a -> s{_httphcpRequestId = a})
+
 -- | Project ID for this request.
 httphcpProject :: Lens' HTTPHealthChecksPatch Text
 httphcpProject
@@ -99,7 +122,7 @@
   = lens _httphcpPayload
       (\ s a -> s{_httphcpPayload = a})
 
--- | Name of the HttpHealthCheck resource to update.
+-- | Name of the HttpHealthCheck resource to patch.
 httphcpHTTPHealthCheck :: Lens' HTTPHealthChecksPatch Text
 httphcpHTTPHealthCheck
   = lens _httphcpHTTPHealthCheck
@@ -112,6 +135,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPHealthChecksPatch'{..}
           = go _httphcpProject _httphcpHTTPHealthCheck
+              _httphcpRequestId
               (Just AltJSON)
               _httphcpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs
--- a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs
@@ -34,6 +34,7 @@
     , HTTPHealthChecksUpdate
 
     -- * Request Lenses
+    , httphcuRequestId
     , httphcuProject
     , httphcuPayload
     , httphcuHTTPHealthCheck
@@ -52,16 +53,18 @@
              "global" :>
                "httpHealthChecks" :>
                  Capture "httpHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HTTPHealthCheck :>
-                       Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HTTPHealthCheck :>
+                         Put '[JSON] Operation
 
 -- | Updates a HttpHealthCheck resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'hTTPHealthChecksUpdate' smart constructor.
 data HTTPHealthChecksUpdate = HTTPHealthChecksUpdate'
-    { _httphcuProject         :: !Text
+    { _httphcuRequestId       :: !(Maybe Text)
+    , _httphcuProject         :: !Text
     , _httphcuPayload         :: !HTTPHealthCheck
     , _httphcuHTTPHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +73,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'httphcuRequestId'
+--
 -- * 'httphcuProject'
 --
 -- * 'httphcuPayload'
@@ -82,11 +87,27 @@
     -> HTTPHealthChecksUpdate
 hTTPHealthChecksUpdate pHttphcuProject_ pHttphcuPayload_ pHttphcuHTTPHealthCheck_ =
     HTTPHealthChecksUpdate'
-    { _httphcuProject = pHttphcuProject_
+    { _httphcuRequestId = Nothing
+    , _httphcuProject = pHttphcuProject_
     , _httphcuPayload = pHttphcuPayload_
     , _httphcuHTTPHealthCheck = pHttphcuHTTPHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+httphcuRequestId :: Lens' HTTPHealthChecksUpdate (Maybe Text)
+httphcuRequestId
+  = lens _httphcuRequestId
+      (\ s a -> s{_httphcuRequestId = a})
+
 -- | Project ID for this request.
 httphcuProject :: Lens' HTTPHealthChecksUpdate Text
 httphcuProject
@@ -112,6 +133,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPHealthChecksUpdate'{..}
           = go _httphcuProject _httphcuHTTPHealthCheck
+              _httphcuRequestId
               (Just AltJSON)
               _httphcuPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs
@@ -33,6 +33,7 @@
     , HTTPSHealthChecksDelete
 
     -- * Request Lenses
+    , hhcdRequestId
     , hhcdProject
     , hhcdHTTPSHealthCheck
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "httpsHealthChecks" :>
                  Capture "httpsHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified HttpsHealthCheck resource.
 --
 -- /See:/ 'httpsHealthChecksDelete' smart constructor.
 data HTTPSHealthChecksDelete = HTTPSHealthChecksDelete'
-    { _hhcdProject          :: !Text
+    { _hhcdRequestId        :: !(Maybe Text)
+    , _hhcdProject          :: !Text
     , _hhcdHTTPSHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hhcdRequestId'
+--
 -- * 'hhcdProject'
 --
 -- * 'hhcdHTTPSHealthCheck'
@@ -73,10 +78,26 @@
     -> HTTPSHealthChecksDelete
 httpsHealthChecksDelete pHhcdProject_ pHhcdHTTPSHealthCheck_ =
     HTTPSHealthChecksDelete'
-    { _hhcdProject = pHhcdProject_
+    { _hhcdRequestId = Nothing
+    , _hhcdProject = pHhcdProject_
     , _hhcdHTTPSHealthCheck = pHhcdHTTPSHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hhcdRequestId :: Lens' HTTPSHealthChecksDelete (Maybe Text)
+hhcdRequestId
+  = lens _hhcdRequestId
+      (\ s a -> s{_hhcdRequestId = a})
+
 -- | Project ID for this request.
 hhcdProject :: Lens' HTTPSHealthChecksDelete Text
 hhcdProject
@@ -95,6 +116,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPSHealthChecksDelete'{..}
           = go _hhcdProject _hhcdHTTPSHealthCheck
+              _hhcdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified HttpsHealthCheck resource. Get a list of available
--- HTTPS health checks by making a list() request.
+-- Returns the specified HttpsHealthCheck resource. Gets a list of
+-- available HTTPS health checks by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.get@.
 module Network.Google.Resource.Compute.HTTPSHealthChecks.Get
@@ -54,8 +54,8 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] HTTPSHealthCheck
 
--- | Returns the specified HttpsHealthCheck resource. Get a list of available
--- HTTPS health checks by making a list() request.
+-- | Returns the specified HttpsHealthCheck resource. Gets a list of
+-- available HTTPS health checks by making a list() request.
 --
 -- /See:/ 'httpsHealthChecksGet' smart constructor.
 data HTTPSHealthChecksGet = HTTPSHealthChecksGet'
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs
@@ -34,6 +34,7 @@
     , HTTPSHealthChecksInsert
 
     -- * Request Lenses
+    , hhciRequestId
     , hhciProject
     , hhciPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "httpsHealthChecks" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] HTTPSHealthCheck :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPSHealthCheck :>
+                       Post '[JSON] Operation
 
 -- | Creates a HttpsHealthCheck resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'httpsHealthChecksInsert' smart constructor.
 data HTTPSHealthChecksInsert = HTTPSHealthChecksInsert'
-    { _hhciProject :: !Text
-    , _hhciPayload :: !HTTPSHealthCheck
+    { _hhciRequestId :: !(Maybe Text)
+    , _hhciProject   :: !Text
+    , _hhciPayload   :: !HTTPSHealthCheck
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HTTPSHealthChecksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hhciRequestId'
+--
 -- * 'hhciProject'
 --
 -- * 'hhciPayload'
@@ -76,10 +81,26 @@
     -> HTTPSHealthChecksInsert
 httpsHealthChecksInsert pHhciProject_ pHhciPayload_ =
     HTTPSHealthChecksInsert'
-    { _hhciProject = pHhciProject_
+    { _hhciRequestId = Nothing
+    , _hhciProject = pHhciProject_
     , _hhciPayload = pHhciPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hhciRequestId :: Lens' HTTPSHealthChecksInsert (Maybe Text)
+hhciRequestId
+  = lens _hhciRequestId
+      (\ s a -> s{_hhciRequestId = a})
+
 -- | Project ID for this request.
 hhciProject :: Lens' HTTPSHealthChecksInsert Text
 hhciProject
@@ -96,7 +117,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPSHealthChecksInsert'{..}
-          = go _hhciProject (Just AltJSON) _hhciPayload
+          = go _hhciProject _hhciRequestId (Just AltJSON)
+              _hhciPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs
@@ -114,26 +114,22 @@
 hhclProject
   = lens _hhclProject (\ s a -> s{_hhclProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 hhclFilter :: Lens' HTTPSHealthChecksList (Maybe Text)
 hhclFilter
   = lens _hhclFilter (\ s a -> s{_hhclFilter = a})
@@ -148,7 +144,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 hhclMaxResults :: Lens' HTTPSHealthChecksList Word32
 hhclMaxResults
   = lens _hhclMaxResults
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates a HttpsHealthCheck resource in the specified project using the
--- data included in the request. This method supports patch semantics.
+-- data included in the request. This method supports PATCH semantics and
+-- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.patch@.
 module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
@@ -34,6 +35,7 @@
     , HTTPSHealthChecksPatch
 
     -- * Request Lenses
+    , hhcpRequestId
     , hhcpProject
     , hhcpPayload
     , hhcpHTTPSHealthCheck
@@ -52,16 +54,19 @@
              "global" :>
                "httpsHealthChecks" :>
                  Capture "httpsHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HTTPSHealthCheck :>
-                       Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HTTPSHealthCheck :>
+                         Patch '[JSON] Operation
 
 -- | Updates a HttpsHealthCheck resource in the specified project using the
--- data included in the request. This method supports patch semantics.
+-- data included in the request. This method supports PATCH semantics and
+-- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'httpsHealthChecksPatch' smart constructor.
 data HTTPSHealthChecksPatch = HTTPSHealthChecksPatch'
-    { _hhcpProject          :: !Text
+    { _hhcpRequestId        :: !(Maybe Text)
+    , _hhcpProject          :: !Text
     , _hhcpPayload          :: !HTTPSHealthCheck
     , _hhcpHTTPSHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hhcpRequestId'
+--
 -- * 'hhcpProject'
 --
 -- * 'hhcpPayload'
@@ -82,11 +89,27 @@
     -> HTTPSHealthChecksPatch
 httpsHealthChecksPatch pHhcpProject_ pHhcpPayload_ pHhcpHTTPSHealthCheck_ =
     HTTPSHealthChecksPatch'
-    { _hhcpProject = pHhcpProject_
+    { _hhcpRequestId = Nothing
+    , _hhcpProject = pHhcpProject_
     , _hhcpPayload = pHhcpPayload_
     , _hhcpHTTPSHealthCheck = pHhcpHTTPSHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hhcpRequestId :: Lens' HTTPSHealthChecksPatch (Maybe Text)
+hhcpRequestId
+  = lens _hhcpRequestId
+      (\ s a -> s{_hhcpRequestId = a})
+
 -- | Project ID for this request.
 hhcpProject :: Lens' HTTPSHealthChecksPatch Text
 hhcpProject
@@ -97,7 +120,7 @@
 hhcpPayload
   = lens _hhcpPayload (\ s a -> s{_hhcpPayload = a})
 
--- | Name of the HttpsHealthCheck resource to update.
+-- | Name of the HttpsHealthCheck resource to patch.
 hhcpHTTPSHealthCheck :: Lens' HTTPSHealthChecksPatch Text
 hhcpHTTPSHealthCheck
   = lens _hhcpHTTPSHealthCheck
@@ -110,6 +133,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPSHealthChecksPatch'{..}
           = go _hhcpProject _hhcpHTTPSHealthCheck
+              _hhcpRequestId
               (Just AltJSON)
               _hhcpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs
--- a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs
@@ -34,6 +34,7 @@
     , HTTPSHealthChecksUpdate
 
     -- * Request Lenses
+    , hhcuRequestId
     , hhcuProject
     , hhcuPayload
     , hhcuHTTPSHealthCheck
@@ -52,16 +53,18 @@
              "global" :>
                "httpsHealthChecks" :>
                  Capture "httpsHealthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HTTPSHealthCheck :>
-                       Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HTTPSHealthCheck :>
+                         Put '[JSON] Operation
 
 -- | Updates a HttpsHealthCheck resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'httpsHealthChecksUpdate' smart constructor.
 data HTTPSHealthChecksUpdate = HTTPSHealthChecksUpdate'
-    { _hhcuProject          :: !Text
+    { _hhcuRequestId        :: !(Maybe Text)
+    , _hhcuProject          :: !Text
     , _hhcuPayload          :: !HTTPSHealthCheck
     , _hhcuHTTPSHealthCheck :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +73,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hhcuRequestId'
+--
 -- * 'hhcuProject'
 --
 -- * 'hhcuPayload'
@@ -82,11 +87,27 @@
     -> HTTPSHealthChecksUpdate
 httpsHealthChecksUpdate pHhcuProject_ pHhcuPayload_ pHhcuHTTPSHealthCheck_ =
     HTTPSHealthChecksUpdate'
-    { _hhcuProject = pHhcuProject_
+    { _hhcuRequestId = Nothing
+    , _hhcuProject = pHhcuProject_
     , _hhcuPayload = pHhcuPayload_
     , _hhcuHTTPSHealthCheck = pHhcuHTTPSHealthCheck_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hhcuRequestId :: Lens' HTTPSHealthChecksUpdate (Maybe Text)
+hhcuRequestId
+  = lens _hhcuRequestId
+      (\ s a -> s{_hhcuRequestId = a})
+
 -- | Project ID for this request.
 hhcuProject :: Lens' HTTPSHealthChecksUpdate Text
 hhcuProject
@@ -110,6 +131,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient HTTPSHealthChecksUpdate'{..}
           = go _hhcuProject _hhcuHTTPSHealthCheck
+              _hhcuRequestId
               (Just AltJSON)
               _hhcuPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/Delete.hs b/gen/Network/Google/Resource/Compute/HealthChecks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/Delete.hs
@@ -33,6 +33,7 @@
     , HealthChecksDelete
 
     -- * Request Lenses
+    , hcdRequestId
     , hcdHealthCheck
     , hcdProject
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "healthChecks" :>
                  Capture "healthCheck" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified HealthCheck resource.
 --
 -- /See:/ 'healthChecksDelete' smart constructor.
 data HealthChecksDelete = HealthChecksDelete'
-    { _hcdHealthCheck :: !Text
+    { _hcdRequestId   :: !(Maybe Text)
+    , _hcdHealthCheck :: !Text
     , _hcdProject     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hcdRequestId'
+--
 -- * 'hcdHealthCheck'
 --
 -- * 'hcdProject'
@@ -73,10 +78,25 @@
     -> HealthChecksDelete
 healthChecksDelete pHcdHealthCheck_ pHcdProject_ =
     HealthChecksDelete'
-    { _hcdHealthCheck = pHcdHealthCheck_
+    { _hcdRequestId = Nothing
+    , _hcdHealthCheck = pHcdHealthCheck_
     , _hcdProject = pHcdProject_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hcdRequestId :: Lens' HealthChecksDelete (Maybe Text)
+hcdRequestId
+  = lens _hcdRequestId (\ s a -> s{_hcdRequestId = a})
+
 -- | Name of the HealthCheck resource to delete.
 hcdHealthCheck :: Lens' HealthChecksDelete Text
 hcdHealthCheck
@@ -94,7 +114,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HealthChecksDelete'{..}
-          = go _hcdProject _hcdHealthCheck (Just AltJSON)
+          = go _hcdProject _hcdHealthCheck _hcdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/Get.hs b/gen/Network/Google/Resource/Compute/HealthChecks/Get.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified HealthCheck resource. Get a list of available
+-- Returns the specified HealthCheck resource. Gets a list of available
 -- health checks by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.get@.
@@ -53,7 +53,7 @@
                  Capture "healthCheck" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] HealthCheck
 
--- | Returns the specified HealthCheck resource. Get a list of available
+-- | Returns the specified HealthCheck resource. Gets a list of available
 -- health checks by making a list() request.
 --
 -- /See:/ 'healthChecksGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/Insert.hs b/gen/Network/Google/Resource/Compute/HealthChecks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/Insert.hs
@@ -34,6 +34,7 @@
     , HealthChecksInsert
 
     -- * Request Lenses
+    , hciRequestId
     , hciProject
     , hciPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "healthChecks" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] HealthCheck :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HealthCheck :> Post '[JSON] Operation
 
 -- | Creates a HealthCheck resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'healthChecksInsert' smart constructor.
 data HealthChecksInsert = HealthChecksInsert'
-    { _hciProject :: !Text
-    , _hciPayload :: !HealthCheck
+    { _hciRequestId :: !(Maybe Text)
+    , _hciProject   :: !Text
+    , _hciPayload   :: !HealthCheck
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'HealthChecksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hciRequestId'
+--
 -- * 'hciProject'
 --
 -- * 'hciPayload'
@@ -75,10 +80,25 @@
     -> HealthChecksInsert
 healthChecksInsert pHciProject_ pHciPayload_ =
     HealthChecksInsert'
-    { _hciProject = pHciProject_
+    { _hciRequestId = Nothing
+    , _hciProject = pHciProject_
     , _hciPayload = pHciPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hciRequestId :: Lens' HealthChecksInsert (Maybe Text)
+hciRequestId
+  = lens _hciRequestId (\ s a -> s{_hciRequestId = a})
+
 -- | Project ID for this request.
 hciProject :: Lens' HealthChecksInsert Text
 hciProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HealthChecksInsert'{..}
-          = go _hciProject (Just AltJSON) _hciPayload
+          = go _hciProject _hciRequestId (Just AltJSON)
+              _hciPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/List.hs b/gen/Network/Google/Resource/Compute/HealthChecks/List.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/List.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/List.hs
@@ -114,26 +114,22 @@
 hclProject
   = lens _hclProject (\ s a -> s{_hclProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 hclFilter :: Lens' HealthChecksList (Maybe Text)
 hclFilter
   = lens _hclFilter (\ s a -> s{_hclFilter = a})
@@ -147,7 +143,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 hclMaxResults :: Lens' HealthChecksList Word32
 hclMaxResults
   = lens _hclMaxResults
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/Patch.hs b/gen/Network/Google/Resource/Compute/HealthChecks/Patch.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates a HealthCheck resource in the specified project using the data
--- included in the request. This method supports patch semantics.
+-- included in the request. This method supports PATCH semantics and uses
+-- the JSON merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.patch@.
 module Network.Google.Resource.Compute.HealthChecks.Patch
@@ -34,6 +35,7 @@
     , HealthChecksPatch
 
     -- * Request Lenses
+    , hcpRequestId
     , hcpHealthCheck
     , hcpProject
     , hcpPayload
@@ -52,16 +54,19 @@
              "global" :>
                "healthChecks" :>
                  Capture "healthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HealthCheck :>
-                       Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HealthCheck :>
+                         Patch '[JSON] Operation
 
 -- | Updates a HealthCheck resource in the specified project using the data
--- included in the request. This method supports patch semantics.
+-- included in the request. This method supports PATCH semantics and uses
+-- the JSON merge patch format and processing rules.
 --
 -- /See:/ 'healthChecksPatch' smart constructor.
 data HealthChecksPatch = HealthChecksPatch'
-    { _hcpHealthCheck :: !Text
+    { _hcpRequestId   :: !(Maybe Text)
+    , _hcpHealthCheck :: !Text
     , _hcpProject     :: !Text
     , _hcpPayload     :: !HealthCheck
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hcpRequestId'
+--
 -- * 'hcpHealthCheck'
 --
 -- * 'hcpProject'
@@ -82,12 +89,27 @@
     -> HealthChecksPatch
 healthChecksPatch pHcpHealthCheck_ pHcpProject_ pHcpPayload_ =
     HealthChecksPatch'
-    { _hcpHealthCheck = pHcpHealthCheck_
+    { _hcpRequestId = Nothing
+    , _hcpHealthCheck = pHcpHealthCheck_
     , _hcpProject = pHcpProject_
     , _hcpPayload = pHcpPayload_
     }
 
--- | Name of the HealthCheck resource to update.
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hcpRequestId :: Lens' HealthChecksPatch (Maybe Text)
+hcpRequestId
+  = lens _hcpRequestId (\ s a -> s{_hcpRequestId = a})
+
+-- | Name of the HealthCheck resource to patch.
 hcpHealthCheck :: Lens' HealthChecksPatch Text
 hcpHealthCheck
   = lens _hcpHealthCheck
@@ -109,7 +131,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HealthChecksPatch'{..}
-          = go _hcpProject _hcpHealthCheck (Just AltJSON)
+          = go _hcpProject _hcpHealthCheck _hcpRequestId
+              (Just AltJSON)
               _hcpPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/HealthChecks/Update.hs b/gen/Network/Google/Resource/Compute/HealthChecks/Update.hs
--- a/gen/Network/Google/Resource/Compute/HealthChecks/Update.hs
+++ b/gen/Network/Google/Resource/Compute/HealthChecks/Update.hs
@@ -34,6 +34,7 @@
     , HealthChecksUpdate
 
     -- * Request Lenses
+    , hcuRequestId
     , hcuHealthCheck
     , hcuProject
     , hcuPayload
@@ -52,15 +53,17 @@
              "global" :>
                "healthChecks" :>
                  Capture "healthCheck" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] HealthCheck :> Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] HealthCheck :> Put '[JSON] Operation
 
 -- | Updates a HealthCheck resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'healthChecksUpdate' smart constructor.
 data HealthChecksUpdate = HealthChecksUpdate'
-    { _hcuHealthCheck :: !Text
+    { _hcuRequestId   :: !(Maybe Text)
+    , _hcuHealthCheck :: !Text
     , _hcuProject     :: !Text
     , _hcuPayload     :: !HealthCheck
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -69,6 +72,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'hcuRequestId'
+--
 -- * 'hcuHealthCheck'
 --
 -- * 'hcuProject'
@@ -81,11 +86,26 @@
     -> HealthChecksUpdate
 healthChecksUpdate pHcuHealthCheck_ pHcuProject_ pHcuPayload_ =
     HealthChecksUpdate'
-    { _hcuHealthCheck = pHcuHealthCheck_
+    { _hcuRequestId = Nothing
+    , _hcuHealthCheck = pHcuHealthCheck_
     , _hcuProject = pHcuProject_
     , _hcuPayload = pHcuPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+hcuRequestId :: Lens' HealthChecksUpdate (Maybe Text)
+hcuRequestId
+  = lens _hcuRequestId (\ s a -> s{_hcuRequestId = a})
+
 -- | Name of the HealthCheck resource to update.
 hcuHealthCheck :: Lens' HealthChecksUpdate Text
 hcuHealthCheck
@@ -108,7 +128,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient HealthChecksUpdate'{..}
-          = go _hcuProject _hcuHealthCheck (Just AltJSON)
+          = go _hcuProject _hcuHealthCheck _hcuRequestId
+              (Just AltJSON)
               _hcuPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Images/Delete.hs b/gen/Network/Google/Resource/Compute/Images/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Images/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Images/Delete.hs
@@ -33,8 +33,9 @@
     , ImagesDelete
 
     -- * Request Lenses
-    , imaImage
-    , imaProject
+    , iddRequestId
+    , iddImage
+    , iddProject
     ) where
 
 import           Network.Google.Compute.Types
@@ -50,41 +51,60 @@
              "global" :>
                "images" :>
                  Capture "image" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified image.
 --
 -- /See:/ 'imagesDelete' smart constructor.
 data ImagesDelete = ImagesDelete'
-    { _imaImage   :: !Text
-    , _imaProject :: !Text
+    { _iddRequestId :: !(Maybe Text)
+    , _iddImage     :: !Text
+    , _iddProject   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImagesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'imaImage'
+-- * 'iddRequestId'
 --
--- * 'imaProject'
+-- * 'iddImage'
+--
+-- * 'iddProject'
 imagesDelete
-    :: Text -- ^ 'imaImage'
-    -> Text -- ^ 'imaProject'
+    :: Text -- ^ 'iddImage'
+    -> Text -- ^ 'iddProject'
     -> ImagesDelete
-imagesDelete pImaImage_ pImaProject_ =
+imagesDelete pIddImage_ pIddProject_ =
     ImagesDelete'
-    { _imaImage = pImaImage_
-    , _imaProject = pImaProject_
+    { _iddRequestId = Nothing
+    , _iddImage = pIddImage_
+    , _iddProject = pIddProject_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iddRequestId :: Lens' ImagesDelete (Maybe Text)
+iddRequestId
+  = lens _iddRequestId (\ s a -> s{_iddRequestId = a})
+
 -- | Name of the image resource to delete.
-imaImage :: Lens' ImagesDelete Text
-imaImage = lens _imaImage (\ s a -> s{_imaImage = a})
+iddImage :: Lens' ImagesDelete Text
+iddImage = lens _iddImage (\ s a -> s{_iddImage = a})
 
 -- | Project ID for this request.
-imaProject :: Lens' ImagesDelete Text
-imaProject
-  = lens _imaProject (\ s a -> s{_imaProject = a})
+iddProject :: Lens' ImagesDelete Text
+iddProject
+  = lens _iddProject (\ s a -> s{_iddProject = a})
 
 instance GoogleRequest ImagesDelete where
         type Rs ImagesDelete = Operation
@@ -92,7 +112,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ImagesDelete'{..}
-          = go _imaProject _imaImage (Just AltJSON)
+          = go _iddProject _iddImage _iddRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy ImagesDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/Images/Deprecate.hs b/gen/Network/Google/Resource/Compute/Images/Deprecate.hs
--- a/gen/Network/Google/Resource/Compute/Images/Deprecate.hs
+++ b/gen/Network/Google/Resource/Compute/Images/Deprecate.hs
@@ -34,9 +34,10 @@
     , ImagesDeprecate
 
     -- * Request Lenses
-    , imamImage
-    , imamProject
-    , imamPayload
+    , id1RequestId
+    , id1Image
+    , id1Project
+    , id1Payload
     ) where
 
 import           Network.Google.Compute.Types
@@ -53,55 +54,73 @@
                "images" :>
                  Capture "image" Text :>
                    "deprecate" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] DeprecationStatus :>
-                         Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] DeprecationStatus :>
+                           Post '[JSON] Operation
 
 -- | Sets the deprecation status of an image. If an empty request body is
 -- given, clears the deprecation status instead.
 --
 -- /See:/ 'imagesDeprecate' smart constructor.
 data ImagesDeprecate = ImagesDeprecate'
-    { _imamImage   :: !Text
-    , _imamProject :: !Text
-    , _imamPayload :: !DeprecationStatus
+    { _id1RequestId :: !(Maybe Text)
+    , _id1Image     :: !Text
+    , _id1Project   :: !Text
+    , _id1Payload   :: !DeprecationStatus
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImagesDeprecate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'imamImage'
+-- * 'id1RequestId'
 --
--- * 'imamProject'
+-- * 'id1Image'
 --
--- * 'imamPayload'
+-- * 'id1Project'
+--
+-- * 'id1Payload'
 imagesDeprecate
-    :: Text -- ^ 'imamImage'
-    -> Text -- ^ 'imamProject'
-    -> DeprecationStatus -- ^ 'imamPayload'
+    :: Text -- ^ 'id1Image'
+    -> Text -- ^ 'id1Project'
+    -> DeprecationStatus -- ^ 'id1Payload'
     -> ImagesDeprecate
-imagesDeprecate pImamImage_ pImamProject_ pImamPayload_ =
+imagesDeprecate pId1Image_ pId1Project_ pId1Payload_ =
     ImagesDeprecate'
-    { _imamImage = pImamImage_
-    , _imamProject = pImamProject_
-    , _imamPayload = pImamPayload_
+    { _id1RequestId = Nothing
+    , _id1Image = pId1Image_
+    , _id1Project = pId1Project_
+    , _id1Payload = pId1Payload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+id1RequestId :: Lens' ImagesDeprecate (Maybe Text)
+id1RequestId
+  = lens _id1RequestId (\ s a -> s{_id1RequestId = a})
+
 -- | Image name.
-imamImage :: Lens' ImagesDeprecate Text
-imamImage
-  = lens _imamImage (\ s a -> s{_imamImage = a})
+id1Image :: Lens' ImagesDeprecate Text
+id1Image = lens _id1Image (\ s a -> s{_id1Image = a})
 
 -- | Project ID for this request.
-imamProject :: Lens' ImagesDeprecate Text
-imamProject
-  = lens _imamProject (\ s a -> s{_imamProject = a})
+id1Project :: Lens' ImagesDeprecate Text
+id1Project
+  = lens _id1Project (\ s a -> s{_id1Project = a})
 
 -- | Multipart request metadata.
-imamPayload :: Lens' ImagesDeprecate DeprecationStatus
-imamPayload
-  = lens _imamPayload (\ s a -> s{_imamPayload = a})
+id1Payload :: Lens' ImagesDeprecate DeprecationStatus
+id1Payload
+  = lens _id1Payload (\ s a -> s{_id1Payload = a})
 
 instance GoogleRequest ImagesDeprecate where
         type Rs ImagesDeprecate = Operation
@@ -109,8 +128,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ImagesDeprecate'{..}
-          = go _imamProject _imamImage (Just AltJSON)
-              _imamPayload
+          = go _id1Project _id1Image _id1RequestId
+              (Just AltJSON)
+              _id1Payload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Images/Get.hs b/gen/Network/Google/Resource/Compute/Images/Get.hs
--- a/gen/Network/Google/Resource/Compute/Images/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Images/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified image. Get a list of available images by making a
+-- Returns the specified image. Gets a list of available images by making a
 -- list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.get@.
@@ -34,8 +34,8 @@
     , ImagesGet
 
     -- * Request Lenses
-    , iImage
-    , iProject
+    , imaImage
+    , imaProject
     ) where
 
 import           Network.Google.Compute.Types
@@ -53,39 +53,40 @@
                  Capture "image" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Image
 
--- | Returns the specified image. Get a list of available images by making a
+-- | Returns the specified image. Gets a list of available images by making a
 -- list() request.
 --
 -- /See:/ 'imagesGet' smart constructor.
 data ImagesGet = ImagesGet'
-    { _iImage   :: !Text
-    , _iProject :: !Text
+    { _imaImage   :: !Text
+    , _imaProject :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImagesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'iImage'
+-- * 'imaImage'
 --
--- * 'iProject'
+-- * 'imaProject'
 imagesGet
-    :: Text -- ^ 'iImage'
-    -> Text -- ^ 'iProject'
+    :: Text -- ^ 'imaImage'
+    -> Text -- ^ 'imaProject'
     -> ImagesGet
-imagesGet pIImage_ pIProject_ =
+imagesGet pImaImage_ pImaProject_ =
     ImagesGet'
-    { _iImage = pIImage_
-    , _iProject = pIProject_
+    { _imaImage = pImaImage_
+    , _imaProject = pImaProject_
     }
 
 -- | Name of the image resource to return.
-iImage :: Lens' ImagesGet Text
-iImage = lens _iImage (\ s a -> s{_iImage = a})
+imaImage :: Lens' ImagesGet Text
+imaImage = lens _imaImage (\ s a -> s{_imaImage = a})
 
 -- | Project ID for this request.
-iProject :: Lens' ImagesGet Text
-iProject = lens _iProject (\ s a -> s{_iProject = a})
+imaProject :: Lens' ImagesGet Text
+imaProject
+  = lens _imaProject (\ s a -> s{_imaProject = a})
 
 instance GoogleRequest ImagesGet where
         type Rs ImagesGet = Image
@@ -94,7 +95,8 @@
                "https://www.googleapis.com/auth/compute",
                "https://www.googleapis.com/auth/compute.readonly"]
         requestClient ImagesGet'{..}
-          = go _iProject _iImage (Just AltJSON) computeService
+          = go _imaProject _imaImage (Just AltJSON)
+              computeService
           where go
                   = buildClient (Proxy :: Proxy ImagesGetResource)
                       mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Images.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.getIamPolicy@.
+module Network.Google.Resource.Compute.Images.GetIAMPolicy
+    (
+    -- * REST Resource
+      ImagesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , imagesGetIAMPolicy
+    , ImagesGetIAMPolicy
+
+    -- * Request Lenses
+    , igipProject
+    , igipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.getIamPolicy@ method which the
+-- 'ImagesGetIAMPolicy' request conforms to.
+type ImagesGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "resource" Text :>
+                   "getIamPolicy" :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'imagesGetIAMPolicy' smart constructor.
+data ImagesGetIAMPolicy = ImagesGetIAMPolicy'
+    { _igipProject  :: !Text
+    , _igipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igipProject'
+--
+-- * 'igipResource'
+imagesGetIAMPolicy
+    :: Text -- ^ 'igipProject'
+    -> Text -- ^ 'igipResource'
+    -> ImagesGetIAMPolicy
+imagesGetIAMPolicy pIgipProject_ pIgipResource_ =
+    ImagesGetIAMPolicy'
+    { _igipProject = pIgipProject_
+    , _igipResource = pIgipResource_
+    }
+
+-- | Project ID for this request.
+igipProject :: Lens' ImagesGetIAMPolicy Text
+igipProject
+  = lens _igipProject (\ s a -> s{_igipProject = a})
+
+-- | Name or id of the resource for this request.
+igipResource :: Lens' ImagesGetIAMPolicy Text
+igipResource
+  = lens _igipResource (\ s a -> s{_igipResource = a})
+
+instance GoogleRequest ImagesGetIAMPolicy where
+        type Rs ImagesGetIAMPolicy = Policy
+        type Scopes ImagesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient ImagesGetIAMPolicy'{..}
+          = go _igipProject _igipResource (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ImagesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/Insert.hs b/gen/Network/Google/Resource/Compute/Images/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Images/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Images/Insert.hs
@@ -34,8 +34,10 @@
     , ImagesInsert
 
     -- * Request Lenses
+    , iiRequestId
     , iiProject
     , iiPayload
+    , iiForceCreate
     ) where
 
 import           Network.Google.Compute.Types
@@ -50,35 +52,59 @@
            Capture "project" Text :>
              "global" :>
                "images" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Image :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "forceCreate" Bool :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Image :> Post '[JSON] Operation
 
 -- | Creates an image in the specified project using the data included in the
 -- request.
 --
 -- /See:/ 'imagesInsert' smart constructor.
 data ImagesInsert = ImagesInsert'
-    { _iiProject :: !Text
-    , _iiPayload :: !Image
+    { _iiRequestId   :: !(Maybe Text)
+    , _iiProject     :: !Text
+    , _iiPayload     :: !Image
+    , _iiForceCreate :: !(Maybe Bool)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImagesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'iiRequestId'
+--
 -- * 'iiProject'
 --
 -- * 'iiPayload'
+--
+-- * 'iiForceCreate'
 imagesInsert
     :: Text -- ^ 'iiProject'
     -> Image -- ^ 'iiPayload'
     -> ImagesInsert
 imagesInsert pIiProject_ pIiPayload_ =
     ImagesInsert'
-    { _iiProject = pIiProject_
+    { _iiRequestId = Nothing
+    , _iiProject = pIiProject_
     , _iiPayload = pIiPayload_
+    , _iiForceCreate = Nothing
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iiRequestId :: Lens' ImagesInsert (Maybe Text)
+iiRequestId
+  = lens _iiRequestId (\ s a -> s{_iiRequestId = a})
+
 -- | Project ID for this request.
 iiProject :: Lens' ImagesInsert Text
 iiProject
@@ -89,6 +115,12 @@
 iiPayload
   = lens _iiPayload (\ s a -> s{_iiPayload = a})
 
+-- | Force image creation if true.
+iiForceCreate :: Lens' ImagesInsert (Maybe Bool)
+iiForceCreate
+  = lens _iiForceCreate
+      (\ s a -> s{_iiForceCreate = a})
+
 instance GoogleRequest ImagesInsert where
         type Rs ImagesInsert = Operation
         type Scopes ImagesInsert =
@@ -98,7 +130,9 @@
                "https://www.googleapis.com/auth/devstorage.read_only",
                "https://www.googleapis.com/auth/devstorage.read_write"]
         requestClient ImagesInsert'{..}
-          = go _iiProject (Just AltJSON) _iiPayload
+          = go _iiProject _iiRequestId _iiForceCreate
+              (Just AltJSON)
+              _iiPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy ImagesInsertResource)
diff --git a/gen/Network/Google/Resource/Compute/Images/List.hs b/gen/Network/Google/Resource/Compute/Images/List.hs
--- a/gen/Network/Google/Resource/Compute/Images/List.hs
+++ b/gen/Network/Google/Resource/Compute/Images/List.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves the list of private images available to the specified project.
--- Private images are images you create that belong to your project. This
+-- Retrieves the list of custom images available to the specified project.
+-- Custom images are images you create that belong to your project. This
 -- method does not get any images that belong to other projects, including
 -- publicly-available images, like Debian 8. If you want to get a list of
 -- publicly-available images, use this method to make a request to the
@@ -38,11 +38,11 @@
     , ImagesList
 
     -- * Request Lenses
-    , illOrderBy
-    , illProject
-    , illFilter
-    , illPageToken
-    , illMaxResults
+    , imamOrderBy
+    , imamProject
+    , imamFilter
+    , imamPageToken
+    , imamMaxResults
     ) where
 
 import           Network.Google.Compute.Types
@@ -63,8 +63,8 @@
                        QueryParam "maxResults" (Textual Word32) :>
                          QueryParam "alt" AltJSON :> Get '[JSON] ImageList
 
--- | Retrieves the list of private images available to the specified project.
--- Private images are images you create that belong to your project. This
+-- | Retrieves the list of custom images available to the specified project.
+-- Custom images are images you create that belong to your project. This
 -- method does not get any images that belong to other projects, including
 -- publicly-available images, like Debian 8. If you want to get a list of
 -- publicly-available images, use this method to make a request to the
@@ -72,36 +72,36 @@
 --
 -- /See:/ 'imagesList' smart constructor.
 data ImagesList = ImagesList'
-    { _illOrderBy    :: !(Maybe Text)
-    , _illProject    :: !Text
-    , _illFilter     :: !(Maybe Text)
-    , _illPageToken  :: !(Maybe Text)
-    , _illMaxResults :: !(Textual Word32)
+    { _imamOrderBy    :: !(Maybe Text)
+    , _imamProject    :: !Text
+    , _imamFilter     :: !(Maybe Text)
+    , _imamPageToken  :: !(Maybe Text)
+    , _imamMaxResults :: !(Textual Word32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ImagesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'illOrderBy'
+-- * 'imamOrderBy'
 --
--- * 'illProject'
+-- * 'imamProject'
 --
--- * 'illFilter'
+-- * 'imamFilter'
 --
--- * 'illPageToken'
+-- * 'imamPageToken'
 --
--- * 'illMaxResults'
+-- * 'imamMaxResults'
 imagesList
-    :: Text -- ^ 'illProject'
+    :: Text -- ^ 'imamProject'
     -> ImagesList
-imagesList pIllProject_ =
+imagesList pImamProject_ =
     ImagesList'
-    { _illOrderBy = Nothing
-    , _illProject = pIllProject_
-    , _illFilter = Nothing
-    , _illPageToken = Nothing
-    , _illMaxResults = 500
+    { _imamOrderBy = Nothing
+    , _imamProject = pImamProject_
+    , _imamFilter = Nothing
+    , _imamPageToken = Nothing
+    , _imamMaxResults = 500
     }
 
 -- | Sorts list results by a certain order. By default, results are returned
@@ -112,53 +112,51 @@
 -- first). Use this to sort resources like operations so that the newest
 -- operation is returned first. Currently, only sorting by name or
 -- creationTimestamp desc is supported.
-illOrderBy :: Lens' ImagesList (Maybe Text)
-illOrderBy
-  = lens _illOrderBy (\ s a -> s{_illOrderBy = a})
+imamOrderBy :: Lens' ImagesList (Maybe Text)
+imamOrderBy
+  = lens _imamOrderBy (\ s a -> s{_imamOrderBy = a})
 
 -- | Project ID for this request.
-illProject :: Lens' ImagesList Text
-illProject
-  = lens _illProject (\ s a -> s{_illProject = a})
+imamProject :: Lens' ImagesList Text
+imamProject
+  = lens _imamProject (\ s a -> s{_imamProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
-illFilter :: Lens' ImagesList (Maybe Text)
-illFilter
-  = lens _illFilter (\ s a -> s{_illFilter = a})
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+imamFilter :: Lens' ImagesList (Maybe Text)
+imamFilter
+  = lens _imamFilter (\ s a -> s{_imamFilter = a})
 
 -- | Specifies a page token to use. Set pageToken to the nextPageToken
 -- returned by a previous list request to get the next page of results.
-illPageToken :: Lens' ImagesList (Maybe Text)
-illPageToken
-  = lens _illPageToken (\ s a -> s{_illPageToken = a})
+imamPageToken :: Lens' ImagesList (Maybe Text)
+imamPageToken
+  = lens _imamPageToken
+      (\ s a -> s{_imamPageToken = a})
 
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
-illMaxResults :: Lens' ImagesList Word32
-illMaxResults
-  = lens _illMaxResults
-      (\ s a -> s{_illMaxResults = a})
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+imamMaxResults :: Lens' ImagesList Word32
+imamMaxResults
+  = lens _imamMaxResults
+      (\ s a -> s{_imamMaxResults = a})
       . _Coerce
 
 instance GoogleRequest ImagesList where
@@ -168,8 +166,9 @@
                "https://www.googleapis.com/auth/compute",
                "https://www.googleapis.com/auth/compute.readonly"]
         requestClient ImagesList'{..}
-          = go _illProject _illOrderBy _illFilter _illPageToken
-              (Just _illMaxResults)
+          = go _imamProject _imamOrderBy _imamFilter
+              _imamPageToken
+              (Just _imamMaxResults)
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Images.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.setIamPolicy@.
+module Network.Google.Resource.Compute.Images.SetIAMPolicy
+    (
+    -- * REST Resource
+      ImagesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , imagesSetIAMPolicy
+    , ImagesSetIAMPolicy
+
+    -- * Request Lenses
+    , isiampProject
+    , isiampPayload
+    , isiampResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.setIamPolicy@ method which the
+-- 'ImagesSetIAMPolicy' request conforms to.
+type ImagesSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "resource" Text :>
+                   "setIamPolicy" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetPolicyRequest :>
+                         Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'imagesSetIAMPolicy' smart constructor.
+data ImagesSetIAMPolicy = ImagesSetIAMPolicy'
+    { _isiampProject  :: !Text
+    , _isiampPayload  :: !GlobalSetPolicyRequest
+    , _isiampResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isiampProject'
+--
+-- * 'isiampPayload'
+--
+-- * 'isiampResource'
+imagesSetIAMPolicy
+    :: Text -- ^ 'isiampProject'
+    -> GlobalSetPolicyRequest -- ^ 'isiampPayload'
+    -> Text -- ^ 'isiampResource'
+    -> ImagesSetIAMPolicy
+imagesSetIAMPolicy pIsiampProject_ pIsiampPayload_ pIsiampResource_ =
+    ImagesSetIAMPolicy'
+    { _isiampProject = pIsiampProject_
+    , _isiampPayload = pIsiampPayload_
+    , _isiampResource = pIsiampResource_
+    }
+
+-- | Project ID for this request.
+isiampProject :: Lens' ImagesSetIAMPolicy Text
+isiampProject
+  = lens _isiampProject
+      (\ s a -> s{_isiampProject = a})
+
+-- | Multipart request metadata.
+isiampPayload :: Lens' ImagesSetIAMPolicy GlobalSetPolicyRequest
+isiampPayload
+  = lens _isiampPayload
+      (\ s a -> s{_isiampPayload = a})
+
+-- | Name or id of the resource for this request.
+isiampResource :: Lens' ImagesSetIAMPolicy Text
+isiampResource
+  = lens _isiampResource
+      (\ s a -> s{_isiampResource = a})
+
+instance GoogleRequest ImagesSetIAMPolicy where
+        type Rs ImagesSetIAMPolicy = Policy
+        type Scopes ImagesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ImagesSetIAMPolicy'{..}
+          = go _isiampProject _isiampResource (Just AltJSON)
+              _isiampPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ImagesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/SetLabels.hs b/gen/Network/Google/Resource/Compute/Images/SetLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/SetLabels.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Images.SetLabels
+-- 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 labels on an image. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.setLabels@.
+module Network.Google.Resource.Compute.Images.SetLabels
+    (
+    -- * REST Resource
+      ImagesSetLabelsResource
+
+    -- * Creating a Request
+    , imagesSetLabels
+    , ImagesSetLabels
+
+    -- * Request Lenses
+    , islsProject
+    , islsPayload
+    , islsResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.setLabels@ method which the
+-- 'ImagesSetLabels' request conforms to.
+type ImagesSetLabelsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "resource" Text :>
+                   "setLabels" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetLabelsRequest :>
+                         Post '[JSON] Operation
+
+-- | Sets the labels on an image. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ 'imagesSetLabels' smart constructor.
+data ImagesSetLabels = ImagesSetLabels'
+    { _islsProject  :: !Text
+    , _islsPayload  :: !GlobalSetLabelsRequest
+    , _islsResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesSetLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islsProject'
+--
+-- * 'islsPayload'
+--
+-- * 'islsResource'
+imagesSetLabels
+    :: Text -- ^ 'islsProject'
+    -> GlobalSetLabelsRequest -- ^ 'islsPayload'
+    -> Text -- ^ 'islsResource'
+    -> ImagesSetLabels
+imagesSetLabels pIslsProject_ pIslsPayload_ pIslsResource_ =
+    ImagesSetLabels'
+    { _islsProject = pIslsProject_
+    , _islsPayload = pIslsPayload_
+    , _islsResource = pIslsResource_
+    }
+
+-- | Project ID for this request.
+islsProject :: Lens' ImagesSetLabels Text
+islsProject
+  = lens _islsProject (\ s a -> s{_islsProject = a})
+
+-- | Multipart request metadata.
+islsPayload :: Lens' ImagesSetLabels GlobalSetLabelsRequest
+islsPayload
+  = lens _islsPayload (\ s a -> s{_islsPayload = a})
+
+-- | Name or id of the resource for this request.
+islsResource :: Lens' ImagesSetLabels Text
+islsResource
+  = lens _islsResource (\ s a -> s{_islsResource = a})
+
+instance GoogleRequest ImagesSetLabels where
+        type Rs ImagesSetLabels = Operation
+        type Scopes ImagesSetLabels =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ImagesSetLabels'{..}
+          = go _islsProject _islsResource (Just AltJSON)
+              _islsPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ImagesSetLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Images.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.testIamPermissions@.
+module Network.Google.Resource.Compute.Images.TestIAMPermissions
+    (
+    -- * REST Resource
+      ImagesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , imagesTestIAMPermissions
+    , ImagesTestIAMPermissions
+
+    -- * Request Lenses
+    , itiampProject
+    , itiampPayload
+    , itiampResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.testIamPermissions@ method which the
+-- 'ImagesTestIAMPermissions' request conforms to.
+type ImagesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "resource" Text :>
+                   "testIamPermissions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TestPermissionsRequest :>
+                         Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'imagesTestIAMPermissions' smart constructor.
+data ImagesTestIAMPermissions = ImagesTestIAMPermissions'
+    { _itiampProject  :: !Text
+    , _itiampPayload  :: !TestPermissionsRequest
+    , _itiampResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itiampProject'
+--
+-- * 'itiampPayload'
+--
+-- * 'itiampResource'
+imagesTestIAMPermissions
+    :: Text -- ^ 'itiampProject'
+    -> TestPermissionsRequest -- ^ 'itiampPayload'
+    -> Text -- ^ 'itiampResource'
+    -> ImagesTestIAMPermissions
+imagesTestIAMPermissions pItiampProject_ pItiampPayload_ pItiampResource_ =
+    ImagesTestIAMPermissions'
+    { _itiampProject = pItiampProject_
+    , _itiampPayload = pItiampPayload_
+    , _itiampResource = pItiampResource_
+    }
+
+-- | Project ID for this request.
+itiampProject :: Lens' ImagesTestIAMPermissions Text
+itiampProject
+  = lens _itiampProject
+      (\ s a -> s{_itiampProject = a})
+
+-- | Multipart request metadata.
+itiampPayload :: Lens' ImagesTestIAMPermissions TestPermissionsRequest
+itiampPayload
+  = lens _itiampPayload
+      (\ s a -> s{_itiampPayload = a})
+
+-- | Name or id of the resource for this request.
+itiampResource :: Lens' ImagesTestIAMPermissions Text
+itiampResource
+  = lens _itiampResource
+      (\ s a -> s{_itiampResource = a})
+
+instance GoogleRequest ImagesTestIAMPermissions where
+        type Rs ImagesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes ImagesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient ImagesTestIAMPermissions'{..}
+          = go _itiampProject _itiampResource (Just AltJSON)
+              _itiampPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ImagesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs
@@ -20,15 +20,19 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to remove the specified instances from the
--- managed instance group. Abandoning an instance does not delete the
--- instance, but it does remove the instance from any target pools that are
--- applied by the managed instance group. This method reduces the
--- targetSize of the managed instance group by the number of instances that
--- you abandon. This operation is marked as DONE when the action is
--- scheduled even if the instances have not yet been removed from the
--- group. You must separately verify the status of the abandoning action
--- with the listmanagedinstances method.
+-- Flags the specified instances to be removed from the managed instance
+-- group. Abandoning an instance does not delete the instance, but it does
+-- remove the instance from any target pools that are applied by the
+-- managed instance group. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you abandon. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been removed from the group. You must separately
+-- verify the status of the abandoning action with the listmanagedinstances
+-- method. If the group is part of a backend service that has enabled
+-- connection draining, it can take up to 60 seconds after the connection
+-- draining duration has elapsed before the VM instance is removed or
+-- deleted. You can specify a maximum of 1000 instances with this method
+-- per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.abandonInstances@.
 module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
@@ -41,6 +45,7 @@
     , InstanceGroupManagersAbandonInstances
 
     -- * Request Lenses
+    , igmaiRequestId
     , igmaiProject
     , igmaiInstanceGroupManager
     , igmaiZone
@@ -62,24 +67,30 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "abandonInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstanceGroupManagersAbandonInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstanceGroupManagersAbandonInstancesRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to remove the specified instances from the
--- managed instance group. Abandoning an instance does not delete the
--- instance, but it does remove the instance from any target pools that are
--- applied by the managed instance group. This method reduces the
--- targetSize of the managed instance group by the number of instances that
--- you abandon. This operation is marked as DONE when the action is
--- scheduled even if the instances have not yet been removed from the
--- group. You must separately verify the status of the abandoning action
--- with the listmanagedinstances method.
+-- | Flags the specified instances to be removed from the managed instance
+-- group. Abandoning an instance does not delete the instance, but it does
+-- remove the instance from any target pools that are applied by the
+-- managed instance group. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you abandon. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been removed from the group. You must separately
+-- verify the status of the abandoning action with the listmanagedinstances
+-- method. If the group is part of a backend service that has enabled
+-- connection draining, it can take up to 60 seconds after the connection
+-- draining duration has elapsed before the VM instance is removed or
+-- deleted. You can specify a maximum of 1000 instances with this method
+-- per request.
 --
 -- /See:/ 'instanceGroupManagersAbandonInstances' smart constructor.
 data InstanceGroupManagersAbandonInstances = InstanceGroupManagersAbandonInstances'
-    { _igmaiProject              :: !Text
+    { _igmaiRequestId            :: !(Maybe Text)
+    , _igmaiProject              :: !Text
     , _igmaiInstanceGroupManager :: !Text
     , _igmaiZone                 :: !Text
     , _igmaiPayload              :: !InstanceGroupManagersAbandonInstancesRequest
@@ -89,6 +100,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmaiRequestId'
+--
 -- * 'igmaiProject'
 --
 -- * 'igmaiInstanceGroupManager'
@@ -104,12 +117,28 @@
     -> InstanceGroupManagersAbandonInstances
 instanceGroupManagersAbandonInstances pIgmaiProject_ pIgmaiInstanceGroupManager_ pIgmaiZone_ pIgmaiPayload_ =
     InstanceGroupManagersAbandonInstances'
-    { _igmaiProject = pIgmaiProject_
+    { _igmaiRequestId = Nothing
+    , _igmaiProject = pIgmaiProject_
     , _igmaiInstanceGroupManager = pIgmaiInstanceGroupManager_
     , _igmaiZone = pIgmaiZone_
     , _igmaiPayload = pIgmaiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmaiRequestId :: Lens' InstanceGroupManagersAbandonInstances (Maybe Text)
+igmaiRequestId
+  = lens _igmaiRequestId
+      (\ s a -> s{_igmaiRequestId = a})
+
 -- | Project ID for this request.
 igmaiProject :: Lens' InstanceGroupManagersAbandonInstances Text
 igmaiProject
@@ -142,6 +171,7 @@
           InstanceGroupManagersAbandonInstances'{..}
           = go _igmaiProject _igmaiZone
               _igmaiInstanceGroupManager
+              _igmaiRequestId
               (Just AltJSON)
               _igmaiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs
@@ -112,26 +112,22 @@
 igmalProject
   = lens _igmalProject (\ s a -> s{_igmalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 igmalFilter :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)
 igmalFilter
   = lens _igmalFilter (\ s a -> s{_igmalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 igmalMaxResults :: Lens' InstanceGroupManagersAggregatedList Word32
 igmalMaxResults
   = lens _igmalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs
@@ -35,6 +35,7 @@
     , InstanceGroupManagersDelete
 
     -- * Request Lenses
+    , igmdRequestId
     , igmdProject
     , igmdInstanceGroupManager
     , igmdZone
@@ -54,7 +55,8 @@
                Capture "zone" Text :>
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified managed instance group and all of the instances in
 -- that group. Note that the instance group must not belong to a backend
@@ -62,7 +64,8 @@
 --
 -- /See:/ 'instanceGroupManagersDelete' smart constructor.
 data InstanceGroupManagersDelete = InstanceGroupManagersDelete'
-    { _igmdProject              :: !Text
+    { _igmdRequestId            :: !(Maybe Text)
+    , _igmdProject              :: !Text
     , _igmdInstanceGroupManager :: !Text
     , _igmdZone                 :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,6 +74,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmdRequestId'
+--
 -- * 'igmdProject'
 --
 -- * 'igmdInstanceGroupManager'
@@ -83,11 +88,27 @@
     -> InstanceGroupManagersDelete
 instanceGroupManagersDelete pIgmdProject_ pIgmdInstanceGroupManager_ pIgmdZone_ =
     InstanceGroupManagersDelete'
-    { _igmdProject = pIgmdProject_
+    { _igmdRequestId = Nothing
+    , _igmdProject = pIgmdProject_
     , _igmdInstanceGroupManager = pIgmdInstanceGroupManager_
     , _igmdZone = pIgmdZone_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmdRequestId :: Lens' InstanceGroupManagersDelete (Maybe Text)
+igmdRequestId
+  = lens _igmdRequestId
+      (\ s a -> s{_igmdRequestId = a})
+
 -- | Project ID for this request.
 igmdProject :: Lens' InstanceGroupManagersDelete Text
 igmdProject
@@ -111,6 +132,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupManagersDelete'{..}
           = go _igmdProject _igmdZone _igmdInstanceGroupManager
+              _igmdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs
@@ -20,13 +20,17 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to delete the specified instances in the
--- managed instance group. The instances are also removed from any target
--- pools of which they were a member. This method reduces the targetSize of
--- the managed instance group by the number of instances that you delete.
--- This operation is marked as DONE when the action is scheduled even if
--- the instances are still being deleted. You must separately verify the
--- status of the deleting action with the listmanagedinstances method.
+-- Flags the specified instances in the managed instance group for
+-- immediate deletion. The instances are also removed from any target pools
+-- of which they were a member. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you delete. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances are still being deleted. You must separately verify the status
+-- of the deleting action with the listmanagedinstances method. If the
+-- group is part of a backend service that has enabled connection draining,
+-- it can take up to 60 seconds after the connection draining duration has
+-- elapsed before the VM instance is removed or deleted. You can specify a
+-- maximum of 1000 instances with this method per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.deleteInstances@.
 module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
@@ -39,6 +43,7 @@
     , InstanceGroupManagersDeleteInstances
 
     -- * Request Lenses
+    , igmdiRequestId
     , igmdiProject
     , igmdiInstanceGroupManager
     , igmdiZone
@@ -60,22 +65,28 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "deleteInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstanceGroupManagersDeleteInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstanceGroupManagersDeleteInstancesRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to delete the specified instances in the
--- managed instance group. The instances are also removed from any target
--- pools of which they were a member. This method reduces the targetSize of
--- the managed instance group by the number of instances that you delete.
--- This operation is marked as DONE when the action is scheduled even if
--- the instances are still being deleted. You must separately verify the
--- status of the deleting action with the listmanagedinstances method.
+-- | Flags the specified instances in the managed instance group for
+-- immediate deletion. The instances are also removed from any target pools
+-- of which they were a member. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you delete. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances are still being deleted. You must separately verify the status
+-- of the deleting action with the listmanagedinstances method. If the
+-- group is part of a backend service that has enabled connection draining,
+-- it can take up to 60 seconds after the connection draining duration has
+-- elapsed before the VM instance is removed or deleted. You can specify a
+-- maximum of 1000 instances with this method per request.
 --
 -- /See:/ 'instanceGroupManagersDeleteInstances' smart constructor.
 data InstanceGroupManagersDeleteInstances = InstanceGroupManagersDeleteInstances'
-    { _igmdiProject              :: !Text
+    { _igmdiRequestId            :: !(Maybe Text)
+    , _igmdiProject              :: !Text
     , _igmdiInstanceGroupManager :: !Text
     , _igmdiZone                 :: !Text
     , _igmdiPayload              :: !InstanceGroupManagersDeleteInstancesRequest
@@ -85,6 +96,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmdiRequestId'
+--
 -- * 'igmdiProject'
 --
 -- * 'igmdiInstanceGroupManager'
@@ -100,12 +113,28 @@
     -> InstanceGroupManagersDeleteInstances
 instanceGroupManagersDeleteInstances pIgmdiProject_ pIgmdiInstanceGroupManager_ pIgmdiZone_ pIgmdiPayload_ =
     InstanceGroupManagersDeleteInstances'
-    { _igmdiProject = pIgmdiProject_
+    { _igmdiRequestId = Nothing
+    , _igmdiProject = pIgmdiProject_
     , _igmdiInstanceGroupManager = pIgmdiInstanceGroupManager_
     , _igmdiZone = pIgmdiZone_
     , _igmdiPayload = pIgmdiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmdiRequestId :: Lens' InstanceGroupManagersDeleteInstances (Maybe Text)
+igmdiRequestId
+  = lens _igmdiRequestId
+      (\ s a -> s{_igmdiRequestId = a})
+
 -- | Project ID for this request.
 igmdiProject :: Lens' InstanceGroupManagersDeleteInstances Text
 igmdiProject
@@ -138,6 +167,7 @@
           InstanceGroupManagersDeleteInstances'{..}
           = go _igmdiProject _igmdiZone
               _igmdiInstanceGroupManager
+              _igmdiRequestId
               (Just AltJSON)
               _igmdiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs
@@ -21,7 +21,7 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns all of the details about the specified managed instance group.
--- Get a list of available managed instance groups by making a list()
+-- Gets a list of available managed instance groups by making a list()
 -- request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.get@.
@@ -58,7 +58,7 @@
                        Get '[JSON] InstanceGroupManager
 
 -- | Returns all of the details about the specified managed instance group.
--- Get a list of available managed instance groups by making a list()
+-- Gets a list of available managed instance groups by making a list()
 -- request.
 --
 -- /See:/ 'instanceGroupManagersGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs
@@ -21,12 +21,13 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a managed instance group using the information that you specify
--- in the request. After the group is created, it schedules an action to
--- create instances in the group using the specified instance template.
--- This operation is marked as DONE when the group is created even if the
--- instances in the group have not yet been created. You must separately
--- verify the status of the individual instances with the
--- listmanagedinstances method.
+-- in the request. After the group is created, instances in the group are
+-- created using the specified instance template. This operation is marked
+-- as DONE when the group is created even if the instances in the group
+-- have not yet been created. You must separately verify the status of the
+-- individual instances with the listmanagedinstances method. A managed
+-- instance group can have up to 1000 VM instances per group. Please
+-- contact Cloud Support if you need an increase in this limit.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.insert@.
 module Network.Google.Resource.Compute.InstanceGroupManagers.Insert
@@ -39,6 +40,7 @@
     , InstanceGroupManagersInsert
 
     -- * Request Lenses
+    , igmiRequestId
     , igmiProject
     , igmiZone
     , igmiPayload
@@ -57,29 +59,34 @@
              "zones" :>
                Capture "zone" Text :>
                  "instanceGroupManagers" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] InstanceGroupManager :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] InstanceGroupManager :>
+                         Post '[JSON] Operation
 
 -- | Creates a managed instance group using the information that you specify
--- in the request. After the group is created, it schedules an action to
--- create instances in the group using the specified instance template.
--- This operation is marked as DONE when the group is created even if the
--- instances in the group have not yet been created. You must separately
--- verify the status of the individual instances with the
--- listmanagedinstances method.
+-- in the request. After the group is created, instances in the group are
+-- created using the specified instance template. This operation is marked
+-- as DONE when the group is created even if the instances in the group
+-- have not yet been created. You must separately verify the status of the
+-- individual instances with the listmanagedinstances method. A managed
+-- instance group can have up to 1000 VM instances per group. Please
+-- contact Cloud Support if you need an increase in this limit.
 --
 -- /See:/ 'instanceGroupManagersInsert' smart constructor.
 data InstanceGroupManagersInsert = InstanceGroupManagersInsert'
-    { _igmiProject :: !Text
-    , _igmiZone    :: !Text
-    , _igmiPayload :: !InstanceGroupManager
+    { _igmiRequestId :: !(Maybe Text)
+    , _igmiProject   :: !Text
+    , _igmiZone      :: !Text
+    , _igmiPayload   :: !InstanceGroupManager
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstanceGroupManagersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmiRequestId'
+--
 -- * 'igmiProject'
 --
 -- * 'igmiZone'
@@ -92,11 +99,27 @@
     -> InstanceGroupManagersInsert
 instanceGroupManagersInsert pIgmiProject_ pIgmiZone_ pIgmiPayload_ =
     InstanceGroupManagersInsert'
-    { _igmiProject = pIgmiProject_
+    { _igmiRequestId = Nothing
+    , _igmiProject = pIgmiProject_
     , _igmiZone = pIgmiZone_
     , _igmiPayload = pIgmiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmiRequestId :: Lens' InstanceGroupManagersInsert (Maybe Text)
+igmiRequestId
+  = lens _igmiRequestId
+      (\ s a -> s{_igmiRequestId = a})
+
 -- | Project ID for this request.
 igmiProject :: Lens' InstanceGroupManagersInsert Text
 igmiProject
@@ -119,7 +142,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupManagersInsert'{..}
-          = go _igmiProject _igmiZone (Just AltJSON)
+          = go _igmiProject _igmiZone _igmiRequestId
+              (Just AltJSON)
               _igmiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs
@@ -125,26 +125,22 @@
 igmlZone :: Lens' InstanceGroupManagersList Text
 igmlZone = lens _igmlZone (\ s a -> s{_igmlZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 igmlFilter :: Lens' InstanceGroupManagersList (Maybe Text)
 igmlFilter
   = lens _igmlFilter (\ s a -> s{_igmlFilter = a})
@@ -159,7 +155,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 igmlMaxResults :: Lens' InstanceGroupManagersList Word32
 igmlMaxResults
   = lens _igmlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs
@@ -139,20 +139,51 @@
 igmlmiZone
   = lens _igmlmiZone (\ s a -> s{_igmlmiZone = a})
 
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
 igmlmiOrderBy :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
 igmlmiOrderBy
   = lens _igmlmiOrderBy
       (\ s a -> s{_igmlmiOrderBy = a})
 
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 igmlmiFilter :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
 igmlmiFilter
   = lens _igmlmiFilter (\ s a -> s{_igmlmiFilter = a})
 
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
 igmlmiPageToken :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
 igmlmiPageToken
   = lens _igmlmiPageToken
       (\ s a -> s{_igmlmiPageToken = a})
 
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 igmlmiMaxResults :: Lens' InstanceGroupManagersListManagedInstances Word32
 igmlmiMaxResults
   = lens _igmlmiMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InstanceGroupManagers.Patch
+-- 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 a managed instance group using the information that you specify
+-- in the request. This operation is marked as DONE when the group is
+-- patched even if the instances in the group are still in the process of
+-- being patched. You must separately verify the status of the individual
+-- instances with the listManagedInstances method. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.patch@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.Patch
+    (
+    -- * REST Resource
+      InstanceGroupManagersPatchResource
+
+    -- * Creating a Request
+    , instanceGroupManagersPatch
+    , InstanceGroupManagersPatch
+
+    -- * Request Lenses
+    , igmpRequestId
+    , igmpProject
+    , igmpInstanceGroupManager
+    , igmpZone
+    , igmpPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.patch@ method which the
+-- 'InstanceGroupManagersPatch' request conforms to.
+type InstanceGroupManagersPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceGroupManager :>
+                           Patch '[JSON] Operation
+
+-- | Updates a managed instance group using the information that you specify
+-- in the request. This operation is marked as DONE when the group is
+-- patched even if the instances in the group are still in the process of
+-- being patched. You must separately verify the status of the individual
+-- instances with the listManagedInstances method. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ 'instanceGroupManagersPatch' smart constructor.
+data InstanceGroupManagersPatch = InstanceGroupManagersPatch'
+    { _igmpRequestId            :: !(Maybe Text)
+    , _igmpProject              :: !Text
+    , _igmpInstanceGroupManager :: !Text
+    , _igmpZone                 :: !Text
+    , _igmpPayload              :: !InstanceGroupManager
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmpRequestId'
+--
+-- * 'igmpProject'
+--
+-- * 'igmpInstanceGroupManager'
+--
+-- * 'igmpZone'
+--
+-- * 'igmpPayload'
+instanceGroupManagersPatch
+    :: Text -- ^ 'igmpProject'
+    -> Text -- ^ 'igmpInstanceGroupManager'
+    -> Text -- ^ 'igmpZone'
+    -> InstanceGroupManager -- ^ 'igmpPayload'
+    -> InstanceGroupManagersPatch
+instanceGroupManagersPatch pIgmpProject_ pIgmpInstanceGroupManager_ pIgmpZone_ pIgmpPayload_ =
+    InstanceGroupManagersPatch'
+    { _igmpRequestId = Nothing
+    , _igmpProject = pIgmpProject_
+    , _igmpInstanceGroupManager = pIgmpInstanceGroupManager_
+    , _igmpZone = pIgmpZone_
+    , _igmpPayload = pIgmpPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmpRequestId :: Lens' InstanceGroupManagersPatch (Maybe Text)
+igmpRequestId
+  = lens _igmpRequestId
+      (\ s a -> s{_igmpRequestId = a})
+
+-- | Project ID for this request.
+igmpProject :: Lens' InstanceGroupManagersPatch Text
+igmpProject
+  = lens _igmpProject (\ s a -> s{_igmpProject = a})
+
+-- | The name of the instance group manager.
+igmpInstanceGroupManager :: Lens' InstanceGroupManagersPatch Text
+igmpInstanceGroupManager
+  = lens _igmpInstanceGroupManager
+      (\ s a -> s{_igmpInstanceGroupManager = a})
+
+-- | The name of the zone where you want to create the managed instance
+-- group.
+igmpZone :: Lens' InstanceGroupManagersPatch Text
+igmpZone = lens _igmpZone (\ s a -> s{_igmpZone = a})
+
+-- | Multipart request metadata.
+igmpPayload :: Lens' InstanceGroupManagersPatch InstanceGroupManager
+igmpPayload
+  = lens _igmpPayload (\ s a -> s{_igmpPayload = a})
+
+instance GoogleRequest InstanceGroupManagersPatch
+         where
+        type Rs InstanceGroupManagersPatch = Operation
+        type Scopes InstanceGroupManagersPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstanceGroupManagersPatch'{..}
+          = go _igmpProject _igmpZone _igmpInstanceGroupManager
+              _igmpRequestId
+              (Just AltJSON)
+              _igmpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs
@@ -20,12 +20,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to recreate the specified instances in the
--- managed instance group. The instances are deleted and recreated using
--- the current instance template for the managed instance group. This
--- operation is marked as DONE when the action is scheduled even if the
--- instances have not yet been recreated. You must separately verify the
--- status of the recreating action with the listmanagedinstances method.
+-- Flags the specified instances in the managed instance group to be
+-- immediately recreated. The instances are deleted and recreated using the
+-- current instance template for the managed instance group. This operation
+-- is marked as DONE when the flag is set even if the instances have not
+-- yet been recreated. You must separately verify the status of the
+-- recreating action with the listmanagedinstances method. If the group is
+-- part of a backend service that has enabled connection draining, it can
+-- take up to 60 seconds after the connection draining duration has elapsed
+-- before the VM instance is removed or deleted. You can specify a maximum
+-- of 1000 instances with this method per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.recreateInstances@.
 module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
@@ -38,6 +42,7 @@
     , InstanceGroupManagersRecreateInstances
 
     -- * Request Lenses
+    , igmriRequestId
     , igmriProject
     , igmriInstanceGroupManager
     , igmriZone
@@ -59,21 +64,27 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "recreateInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstanceGroupManagersRecreateInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstanceGroupManagersRecreateInstancesRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to recreate the specified instances in the
--- managed instance group. The instances are deleted and recreated using
--- the current instance template for the managed instance group. This
--- operation is marked as DONE when the action is scheduled even if the
--- instances have not yet been recreated. You must separately verify the
--- status of the recreating action with the listmanagedinstances method.
+-- | Flags the specified instances in the managed instance group to be
+-- immediately recreated. The instances are deleted and recreated using the
+-- current instance template for the managed instance group. This operation
+-- is marked as DONE when the flag is set even if the instances have not
+-- yet been recreated. You must separately verify the status of the
+-- recreating action with the listmanagedinstances method. If the group is
+-- part of a backend service that has enabled connection draining, it can
+-- take up to 60 seconds after the connection draining duration has elapsed
+-- before the VM instance is removed or deleted. You can specify a maximum
+-- of 1000 instances with this method per request.
 --
 -- /See:/ 'instanceGroupManagersRecreateInstances' smart constructor.
 data InstanceGroupManagersRecreateInstances = InstanceGroupManagersRecreateInstances'
-    { _igmriProject              :: !Text
+    { _igmriRequestId            :: !(Maybe Text)
+    , _igmriProject              :: !Text
     , _igmriInstanceGroupManager :: !Text
     , _igmriZone                 :: !Text
     , _igmriPayload              :: !InstanceGroupManagersRecreateInstancesRequest
@@ -83,6 +94,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmriRequestId'
+--
 -- * 'igmriProject'
 --
 -- * 'igmriInstanceGroupManager'
@@ -98,12 +111,28 @@
     -> InstanceGroupManagersRecreateInstances
 instanceGroupManagersRecreateInstances pIgmriProject_ pIgmriInstanceGroupManager_ pIgmriZone_ pIgmriPayload_ =
     InstanceGroupManagersRecreateInstances'
-    { _igmriProject = pIgmriProject_
+    { _igmriRequestId = Nothing
+    , _igmriProject = pIgmriProject_
     , _igmriInstanceGroupManager = pIgmriInstanceGroupManager_
     , _igmriZone = pIgmriZone_
     , _igmriPayload = pIgmriPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmriRequestId :: Lens' InstanceGroupManagersRecreateInstances (Maybe Text)
+igmriRequestId
+  = lens _igmriRequestId
+      (\ s a -> s{_igmriRequestId = a})
+
 -- | Project ID for this request.
 igmriProject :: Lens' InstanceGroupManagersRecreateInstances Text
 igmriProject
@@ -136,6 +165,7 @@
           InstanceGroupManagersRecreateInstances'{..}
           = go _igmriProject _igmriZone
               _igmriInstanceGroupManager
+              _igmriRequestId
               (Just AltJSON)
               _igmriPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs
@@ -26,7 +26,15 @@
 -- marked DONE when the resize actions are scheduled even if the group has
 -- not yet added or deleted any instances. You must separately verify the
 -- status of the creating or deleting actions with the listmanagedinstances
--- method.
+-- method. When resizing down, the instance group arbitrarily chooses the
+-- order in which VMs are deleted. The group takes into account some VM
+-- attributes when making the selection including: + The status of the VM
+-- instance. + The health of the VM instance. + The instance template
+-- version the VM is based on. + For regional managed instance groups, the
+-- location of the VM instance. This list is subject to change. If the
+-- group is part of a backend service that has enabled connection draining,
+-- it can take up to 60 seconds after the connection draining duration has
+-- elapsed before the VM instance is removed or deleted.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.resize@.
 module Network.Google.Resource.Compute.InstanceGroupManagers.Resize
@@ -39,6 +47,7 @@
     , InstanceGroupManagersResize
 
     -- * Request Lenses
+    , igmrRequestId
     , igmrProject
     , igmrSize
     , igmrInstanceGroupManager
@@ -61,7 +70,8 @@
                    Capture "instanceGroupManager" Text :>
                      "resize" :>
                        QueryParam "size" (Textual Int32) :>
-                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Resizes the managed instance group. If you increase the size, the group
 -- creates new instances using the current instance template. If you
@@ -69,11 +79,20 @@
 -- marked DONE when the resize actions are scheduled even if the group has
 -- not yet added or deleted any instances. You must separately verify the
 -- status of the creating or deleting actions with the listmanagedinstances
--- method.
+-- method. When resizing down, the instance group arbitrarily chooses the
+-- order in which VMs are deleted. The group takes into account some VM
+-- attributes when making the selection including: + The status of the VM
+-- instance. + The health of the VM instance. + The instance template
+-- version the VM is based on. + For regional managed instance groups, the
+-- location of the VM instance. This list is subject to change. If the
+-- group is part of a backend service that has enabled connection draining,
+-- it can take up to 60 seconds after the connection draining duration has
+-- elapsed before the VM instance is removed or deleted.
 --
 -- /See:/ 'instanceGroupManagersResize' smart constructor.
 data InstanceGroupManagersResize = InstanceGroupManagersResize'
-    { _igmrProject              :: !Text
+    { _igmrRequestId            :: !(Maybe Text)
+    , _igmrProject              :: !Text
     , _igmrSize                 :: !(Textual Int32)
     , _igmrInstanceGroupManager :: !Text
     , _igmrZone                 :: !Text
@@ -83,6 +102,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmrRequestId'
+--
 -- * 'igmrProject'
 --
 -- * 'igmrSize'
@@ -98,12 +119,28 @@
     -> InstanceGroupManagersResize
 instanceGroupManagersResize pIgmrProject_ pIgmrSize_ pIgmrInstanceGroupManager_ pIgmrZone_ =
     InstanceGroupManagersResize'
-    { _igmrProject = pIgmrProject_
+    { _igmrRequestId = Nothing
+    , _igmrProject = pIgmrProject_
     , _igmrSize = _Coerce # pIgmrSize_
     , _igmrInstanceGroupManager = pIgmrInstanceGroupManager_
     , _igmrZone = pIgmrZone_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmrRequestId :: Lens' InstanceGroupManagersResize (Maybe Text)
+igmrRequestId
+  = lens _igmrRequestId
+      (\ s a -> s{_igmrRequestId = a})
+
 -- | Project ID for this request.
 igmrProject :: Lens' InstanceGroupManagersResize Text
 igmrProject
@@ -137,6 +174,7 @@
         requestClient InstanceGroupManagersResize'{..}
           = go _igmrProject _igmrZone _igmrInstanceGroupManager
               (Just _igmrSize)
+              _igmrRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs
@@ -35,6 +35,7 @@
     , InstanceGroupManagersSetInstanceTemplate
 
     -- * Request Lenses
+    , igmsitRequestId
     , igmsitProject
     , igmsitInstanceGroupManager
     , igmsitZone
@@ -57,10 +58,11 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "setInstanceTemplate" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstanceGroupManagersSetInstanceTemplateRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstanceGroupManagersSetInstanceTemplateRequest
+                             :> Post '[JSON] Operation
 
 -- | Specifies the instance template to use when creating new instances in
 -- this group. The templates for existing instances in the group do not
@@ -68,7 +70,8 @@
 --
 -- /See:/ 'instanceGroupManagersSetInstanceTemplate' smart constructor.
 data InstanceGroupManagersSetInstanceTemplate = InstanceGroupManagersSetInstanceTemplate'
-    { _igmsitProject              :: !Text
+    { _igmsitRequestId            :: !(Maybe Text)
+    , _igmsitProject              :: !Text
     , _igmsitInstanceGroupManager :: !Text
     , _igmsitZone                 :: !Text
     , _igmsitPayload              :: !InstanceGroupManagersSetInstanceTemplateRequest
@@ -78,6 +81,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmsitRequestId'
+--
 -- * 'igmsitProject'
 --
 -- * 'igmsitInstanceGroupManager'
@@ -93,12 +98,28 @@
     -> InstanceGroupManagersSetInstanceTemplate
 instanceGroupManagersSetInstanceTemplate pIgmsitProject_ pIgmsitInstanceGroupManager_ pIgmsitZone_ pIgmsitPayload_ =
     InstanceGroupManagersSetInstanceTemplate'
-    { _igmsitProject = pIgmsitProject_
+    { _igmsitRequestId = Nothing
+    , _igmsitProject = pIgmsitProject_
     , _igmsitInstanceGroupManager = pIgmsitInstanceGroupManager_
     , _igmsitZone = pIgmsitZone_
     , _igmsitPayload = pIgmsitPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmsitRequestId :: Lens' InstanceGroupManagersSetInstanceTemplate (Maybe Text)
+igmsitRequestId
+  = lens _igmsitRequestId
+      (\ s a -> s{_igmsitRequestId = a})
+
 -- | Project ID for this request.
 igmsitProject :: Lens' InstanceGroupManagersSetInstanceTemplate Text
 igmsitProject
@@ -134,6 +155,7 @@
           InstanceGroupManagersSetInstanceTemplate'{..}
           = go _igmsitProject _igmsitZone
               _igmsitInstanceGroupManager
+              _igmsitRequestId
               (Just AltJSON)
               _igmsitPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs
@@ -38,6 +38,7 @@
     , InstanceGroupManagersSetTargetPools
 
     -- * Request Lenses
+    , igmstpRequestId
     , igmstpProject
     , igmstpInstanceGroupManager
     , igmstpZone
@@ -59,10 +60,11 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "setTargetPools" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstanceGroupManagersSetTargetPoolsRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstanceGroupManagersSetTargetPoolsRequest
+                             :> Post '[JSON] Operation
 
 -- | Modifies the target pools to which all instances in this managed
 -- instance group are assigned. The target pools automatically apply to all
@@ -73,7 +75,8 @@
 --
 -- /See:/ 'instanceGroupManagersSetTargetPools' smart constructor.
 data InstanceGroupManagersSetTargetPools = InstanceGroupManagersSetTargetPools'
-    { _igmstpProject              :: !Text
+    { _igmstpRequestId            :: !(Maybe Text)
+    , _igmstpProject              :: !Text
     , _igmstpInstanceGroupManager :: !Text
     , _igmstpZone                 :: !Text
     , _igmstpPayload              :: !InstanceGroupManagersSetTargetPoolsRequest
@@ -83,6 +86,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igmstpRequestId'
+--
 -- * 'igmstpProject'
 --
 -- * 'igmstpInstanceGroupManager'
@@ -98,12 +103,28 @@
     -> InstanceGroupManagersSetTargetPools
 instanceGroupManagersSetTargetPools pIgmstpProject_ pIgmstpInstanceGroupManager_ pIgmstpZone_ pIgmstpPayload_ =
     InstanceGroupManagersSetTargetPools'
-    { _igmstpProject = pIgmstpProject_
+    { _igmstpRequestId = Nothing
+    , _igmstpProject = pIgmstpProject_
     , _igmstpInstanceGroupManager = pIgmstpInstanceGroupManager_
     , _igmstpZone = pIgmstpZone_
     , _igmstpPayload = pIgmstpPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igmstpRequestId :: Lens' InstanceGroupManagersSetTargetPools (Maybe Text)
+igmstpRequestId
+  = lens _igmstpRequestId
+      (\ s a -> s{_igmstpRequestId = a})
+
 -- | Project ID for this request.
 igmstpProject :: Lens' InstanceGroupManagersSetTargetPools Text
 igmstpProject
@@ -138,6 +159,7 @@
           InstanceGroupManagersSetTargetPools'{..}
           = go _igmstpProject _igmstpZone
               _igmstpInstanceGroupManager
+              _igmstpRequestId
               (Just AltJSON)
               _igmstpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs
@@ -35,6 +35,7 @@
     , InstanceGroupsAddInstances
 
     -- * Request Lenses
+    , igaiRequestId
     , igaiProject
     , igaiZone
     , igaiPayload
@@ -56,9 +57,10 @@
                  "instanceGroups" :>
                    Capture "instanceGroup" Text :>
                      "addInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] InstanceGroupsAddInstancesRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstanceGroupsAddInstancesRequest :>
+                             Post '[JSON] Operation
 
 -- | Adds a list of instances to the specified instance group. All of the
 -- instances in the instance group must be in the same network\/subnetwork.
@@ -66,7 +68,8 @@
 --
 -- /See:/ 'instanceGroupsAddInstances' smart constructor.
 data InstanceGroupsAddInstances = InstanceGroupsAddInstances'
-    { _igaiProject       :: !Text
+    { _igaiRequestId     :: !(Maybe Text)
+    , _igaiProject       :: !Text
     , _igaiZone          :: !Text
     , _igaiPayload       :: !InstanceGroupsAddInstancesRequest
     , _igaiInstanceGroup :: !Text
@@ -76,6 +79,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igaiRequestId'
+--
 -- * 'igaiProject'
 --
 -- * 'igaiZone'
@@ -91,12 +96,28 @@
     -> InstanceGroupsAddInstances
 instanceGroupsAddInstances pIgaiProject_ pIgaiZone_ pIgaiPayload_ pIgaiInstanceGroup_ =
     InstanceGroupsAddInstances'
-    { _igaiProject = pIgaiProject_
+    { _igaiRequestId = Nothing
+    , _igaiProject = pIgaiProject_
     , _igaiZone = pIgaiZone_
     , _igaiPayload = pIgaiPayload_
     , _igaiInstanceGroup = pIgaiInstanceGroup_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igaiRequestId :: Lens' InstanceGroupsAddInstances (Maybe Text)
+igaiRequestId
+  = lens _igaiRequestId
+      (\ s a -> s{_igaiRequestId = a})
+
 -- | Project ID for this request.
 igaiProject :: Lens' InstanceGroupsAddInstances Text
 igaiProject
@@ -125,6 +146,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupsAddInstances'{..}
           = go _igaiProject _igaiZone _igaiInstanceGroup
+              _igaiRequestId
               (Just AltJSON)
               _igaiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs
@@ -112,26 +112,22 @@
 igalProject
   = lens _igalProject (\ s a -> s{_igalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 igalFilter :: Lens' InstanceGroupsAggregatedList (Maybe Text)
 igalFilter
   = lens _igalFilter (\ s a -> s{_igalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 igalMaxResults :: Lens' InstanceGroupsAggregatedList Word32
 igalMaxResults
   = lens _igalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs
@@ -35,6 +35,7 @@
     , InstanceGroupsDelete
 
     -- * Request Lenses
+    , igdRequestId
     , igdProject
     , igdZone
     , igdInstanceGroup
@@ -54,7 +55,8 @@
                Capture "zone" Text :>
                  "instanceGroups" :>
                    Capture "instanceGroup" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified instance group. The instances in the group are not
 -- deleted. Note that instance group must not belong to a backend service.
@@ -62,7 +64,8 @@
 --
 -- /See:/ 'instanceGroupsDelete' smart constructor.
 data InstanceGroupsDelete = InstanceGroupsDelete'
-    { _igdProject       :: !Text
+    { _igdRequestId     :: !(Maybe Text)
+    , _igdProject       :: !Text
     , _igdZone          :: !Text
     , _igdInstanceGroup :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,6 +74,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igdRequestId'
+--
 -- * 'igdProject'
 --
 -- * 'igdZone'
@@ -83,11 +88,26 @@
     -> InstanceGroupsDelete
 instanceGroupsDelete pIgdProject_ pIgdZone_ pIgdInstanceGroup_ =
     InstanceGroupsDelete'
-    { _igdProject = pIgdProject_
+    { _igdRequestId = Nothing
+    , _igdProject = pIgdProject_
     , _igdZone = pIgdZone_
     , _igdInstanceGroup = pIgdInstanceGroup_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igdRequestId :: Lens' InstanceGroupsDelete (Maybe Text)
+igdRequestId
+  = lens _igdRequestId (\ s a -> s{_igdRequestId = a})
+
 -- | Project ID for this request.
 igdProject :: Lens' InstanceGroupsDelete Text
 igdProject
@@ -110,6 +130,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupsDelete'{..}
           = go _igdProject _igdZone _igdInstanceGroup
+              _igdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified instance group. Get a list of available instance
+-- Returns the specified instance group. Gets a list of available instance
 -- groups by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.get@.
@@ -55,7 +55,7 @@
                    Capture "instanceGroup" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroup
 
--- | Returns the specified instance group. Get a list of available instance
+-- | Returns the specified instance group. Gets a list of available instance
 -- groups by making a list() request.
 --
 -- /See:/ 'instanceGroupsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs
@@ -34,6 +34,7 @@
     , InstanceGroupsInsert
 
     -- * Request Lenses
+    , igiRequestId
     , igiProject
     , igiZone
     , igiPayload
@@ -52,24 +53,28 @@
              "zones" :>
                Capture "zone" Text :>
                  "instanceGroups" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] InstanceGroup :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] InstanceGroup :>
+                         Post '[JSON] Operation
 
 -- | Creates an instance group in the specified project using the parameters
 -- that are included in the request.
 --
 -- /See:/ 'instanceGroupsInsert' smart constructor.
 data InstanceGroupsInsert = InstanceGroupsInsert'
-    { _igiProject :: !Text
-    , _igiZone    :: !Text
-    , _igiPayload :: !InstanceGroup
+    { _igiRequestId :: !(Maybe Text)
+    , _igiProject   :: !Text
+    , _igiZone      :: !Text
+    , _igiPayload   :: !InstanceGroup
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstanceGroupsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igiRequestId'
+--
 -- * 'igiProject'
 --
 -- * 'igiZone'
@@ -82,11 +87,26 @@
     -> InstanceGroupsInsert
 instanceGroupsInsert pIgiProject_ pIgiZone_ pIgiPayload_ =
     InstanceGroupsInsert'
-    { _igiProject = pIgiProject_
+    { _igiRequestId = Nothing
+    , _igiProject = pIgiProject_
     , _igiZone = pIgiZone_
     , _igiPayload = pIgiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igiRequestId :: Lens' InstanceGroupsInsert (Maybe Text)
+igiRequestId
+  = lens _igiRequestId (\ s a -> s{_igiRequestId = a})
+
 -- | Project ID for this request.
 igiProject :: Lens' InstanceGroupsInsert Text
 igiProject
@@ -107,7 +127,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupsInsert'{..}
-          = go _igiProject _igiZone (Just AltJSON) _igiPayload
+          = go _igiProject _igiZone _igiRequestId
+              (Just AltJSON)
+              _igiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs
@@ -125,26 +125,22 @@
 iglZone :: Lens' InstanceGroupsList Text
 iglZone = lens _iglZone (\ s a -> s{_iglZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 iglFilter :: Lens' InstanceGroupsList (Maybe Text)
 iglFilter
   = lens _iglFilter (\ s a -> s{_iglFilter = a})
@@ -158,7 +154,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 iglMaxResults :: Lens' InstanceGroupsList Word32
 iglMaxResults
   = lens _iglMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs
@@ -144,26 +144,22 @@
 igliPayload
   = lens _igliPayload (\ s a -> s{_igliPayload = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 igliFilter :: Lens' InstanceGroupsListInstances' (Maybe Text)
 igliFilter
   = lens _igliFilter (\ s a -> s{_igliFilter = a})
@@ -185,7 +181,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 igliMaxResults :: Lens' InstanceGroupsListInstances' Word32
 igliMaxResults
   = lens _igliMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs
@@ -21,7 +21,10 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Removes one or more instances from the specified instance group, but
--- does not delete those instances.
+-- does not delete those instances. If the group is part of a backend
+-- service that has enabled connection draining, it can take up to 60
+-- seconds after the connection draining duration before the VM instance is
+-- removed or deleted.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.removeInstances@.
 module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
@@ -34,6 +37,7 @@
     , InstanceGroupsRemoveInstances
 
     -- * Request Lenses
+    , igriRequestId
     , igriProject
     , igriZone
     , igriPayload
@@ -55,16 +59,21 @@
                  "instanceGroups" :>
                    Capture "instanceGroup" Text :>
                      "removeInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] InstanceGroupsRemoveInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstanceGroupsRemoveInstancesRequest
+                             :> Post '[JSON] Operation
 
 -- | Removes one or more instances from the specified instance group, but
--- does not delete those instances.
+-- does not delete those instances. If the group is part of a backend
+-- service that has enabled connection draining, it can take up to 60
+-- seconds after the connection draining duration before the VM instance is
+-- removed or deleted.
 --
 -- /See:/ 'instanceGroupsRemoveInstances' smart constructor.
 data InstanceGroupsRemoveInstances = InstanceGroupsRemoveInstances'
-    { _igriProject       :: !Text
+    { _igriRequestId     :: !(Maybe Text)
+    , _igriProject       :: !Text
     , _igriZone          :: !Text
     , _igriPayload       :: !InstanceGroupsRemoveInstancesRequest
     , _igriInstanceGroup :: !Text
@@ -74,6 +83,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igriRequestId'
+--
 -- * 'igriProject'
 --
 -- * 'igriZone'
@@ -89,12 +100,28 @@
     -> InstanceGroupsRemoveInstances
 instanceGroupsRemoveInstances pIgriProject_ pIgriZone_ pIgriPayload_ pIgriInstanceGroup_ =
     InstanceGroupsRemoveInstances'
-    { _igriProject = pIgriProject_
+    { _igriRequestId = Nothing
+    , _igriProject = pIgriProject_
     , _igriZone = pIgriZone_
     , _igriPayload = pIgriPayload_
     , _igriInstanceGroup = pIgriInstanceGroup_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igriRequestId :: Lens' InstanceGroupsRemoveInstances (Maybe Text)
+igriRequestId
+  = lens _igriRequestId
+      (\ s a -> s{_igriRequestId = a})
+
 -- | Project ID for this request.
 igriProject :: Lens' InstanceGroupsRemoveInstances Text
 igriProject
@@ -124,6 +151,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupsRemoveInstances'{..}
           = go _igriProject _igriZone _igriInstanceGroup
+              _igriRequestId
               (Just AltJSON)
               _igriPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs
@@ -33,6 +33,7 @@
     , InstanceGroupsSetNamedPorts
 
     -- * Request Lenses
+    , igsnpRequestId
     , igsnpProject
     , igsnpZone
     , igsnpPayload
@@ -54,15 +55,17 @@
                  "instanceGroups" :>
                    Capture "instanceGroup" Text :>
                      "setNamedPorts" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] InstanceGroupsSetNamedPortsRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstanceGroupsSetNamedPortsRequest :>
+                             Post '[JSON] Operation
 
 -- | Sets the named ports for the specified instance group.
 --
 -- /See:/ 'instanceGroupsSetNamedPorts' smart constructor.
 data InstanceGroupsSetNamedPorts = InstanceGroupsSetNamedPorts'
-    { _igsnpProject       :: !Text
+    { _igsnpRequestId     :: !(Maybe Text)
+    , _igsnpProject       :: !Text
     , _igsnpZone          :: !Text
     , _igsnpPayload       :: !InstanceGroupsSetNamedPortsRequest
     , _igsnpInstanceGroup :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'igsnpRequestId'
+--
 -- * 'igsnpProject'
 --
 -- * 'igsnpZone'
@@ -87,12 +92,28 @@
     -> InstanceGroupsSetNamedPorts
 instanceGroupsSetNamedPorts pIgsnpProject_ pIgsnpZone_ pIgsnpPayload_ pIgsnpInstanceGroup_ =
     InstanceGroupsSetNamedPorts'
-    { _igsnpProject = pIgsnpProject_
+    { _igsnpRequestId = Nothing
+    , _igsnpProject = pIgsnpProject_
     , _igsnpZone = pIgsnpZone_
     , _igsnpPayload = pIgsnpPayload_
     , _igsnpInstanceGroup = pIgsnpInstanceGroup_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+igsnpRequestId :: Lens' InstanceGroupsSetNamedPorts (Maybe Text)
+igsnpRequestId
+  = lens _igsnpRequestId
+      (\ s a -> s{_igsnpRequestId = a})
+
 -- | Project ID for this request.
 igsnpProject :: Lens' InstanceGroupsSetNamedPorts Text
 igsnpProject
@@ -122,6 +143,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceGroupsSetNamedPorts'{..}
           = go _igsnpProject _igsnpZone _igsnpInstanceGroup
+              _igsnpRequestId
               (Just AltJSON)
               _igsnpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs
@@ -20,11 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes the specified instance template. If you delete an instance
--- template that is being referenced from another instance group, the
--- instance group will not be able to create or recreate virtual machine
--- instances. Deleting an instance template is permanent and cannot be
--- undone.
+-- Deletes the specified instance template. Deleting an instance template
+-- is permanent and cannot be undone. It\'s not possible to delete
+-- templates which are in use by an instance group.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.delete@.
 module Network.Google.Resource.Compute.InstanceTemplates.Delete
@@ -37,6 +35,7 @@
     , InstanceTemplatesDelete
 
     -- * Request Lenses
+    , itdRequestId
     , itdProject
     , itdInstanceTemplate
     ) where
@@ -54,17 +53,17 @@
              "global" :>
                "instanceTemplates" :>
                  Capture "instanceTemplate" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
--- | Deletes the specified instance template. If you delete an instance
--- template that is being referenced from another instance group, the
--- instance group will not be able to create or recreate virtual machine
--- instances. Deleting an instance template is permanent and cannot be
--- undone.
+-- | Deletes the specified instance template. Deleting an instance template
+-- is permanent and cannot be undone. It\'s not possible to delete
+-- templates which are in use by an instance group.
 --
 -- /See:/ 'instanceTemplatesDelete' smart constructor.
 data InstanceTemplatesDelete = InstanceTemplatesDelete'
-    { _itdProject          :: !Text
+    { _itdRequestId        :: !(Maybe Text)
+    , _itdProject          :: !Text
     , _itdInstanceTemplate :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -72,6 +71,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'itdRequestId'
+--
 -- * 'itdProject'
 --
 -- * 'itdInstanceTemplate'
@@ -81,10 +82,25 @@
     -> InstanceTemplatesDelete
 instanceTemplatesDelete pItdProject_ pItdInstanceTemplate_ =
     InstanceTemplatesDelete'
-    { _itdProject = pItdProject_
+    { _itdRequestId = Nothing
+    , _itdProject = pItdProject_
     , _itdInstanceTemplate = pItdInstanceTemplate_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+itdRequestId :: Lens' InstanceTemplatesDelete (Maybe Text)
+itdRequestId
+  = lens _itdRequestId (\ s a -> s{_itdRequestId = a})
+
 -- | Project ID for this request.
 itdProject :: Lens' InstanceTemplatesDelete Text
 itdProject
@@ -102,7 +118,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceTemplatesDelete'{..}
-          = go _itdProject _itdInstanceTemplate (Just AltJSON)
+          = go _itdProject _itdInstanceTemplate _itdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified instance template. Get a list of available
+-- Returns the specified instance template. Gets a list of available
 -- instance templates by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.get@.
@@ -54,7 +54,7 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] InstanceTemplate
 
--- | Returns the specified instance template. Get a list of available
+-- | Returns the specified instance template. Gets a list of available
 -- instance templates by making a list() request.
 --
 -- /See:/ 'instanceTemplatesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.getIamPolicy@.
+module Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
+    (
+    -- * REST Resource
+      InstanceTemplatesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , instanceTemplatesGetIAMPolicy
+    , InstanceTemplatesGetIAMPolicy
+
+    -- * Request Lenses
+    , itgipProject
+    , itgipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.getIamPolicy@ method which the
+-- 'InstanceTemplatesGetIAMPolicy' request conforms to.
+type InstanceTemplatesGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 Capture "resource" Text :>
+                   "getIamPolicy" :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'instanceTemplatesGetIAMPolicy' smart constructor.
+data InstanceTemplatesGetIAMPolicy = InstanceTemplatesGetIAMPolicy'
+    { _itgipProject  :: !Text
+    , _itgipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itgipProject'
+--
+-- * 'itgipResource'
+instanceTemplatesGetIAMPolicy
+    :: Text -- ^ 'itgipProject'
+    -> Text -- ^ 'itgipResource'
+    -> InstanceTemplatesGetIAMPolicy
+instanceTemplatesGetIAMPolicy pItgipProject_ pItgipResource_ =
+    InstanceTemplatesGetIAMPolicy'
+    { _itgipProject = pItgipProject_
+    , _itgipResource = pItgipResource_
+    }
+
+-- | Project ID for this request.
+itgipProject :: Lens' InstanceTemplatesGetIAMPolicy Text
+itgipProject
+  = lens _itgipProject (\ s a -> s{_itgipProject = a})
+
+-- | Name or id of the resource for this request.
+itgipResource :: Lens' InstanceTemplatesGetIAMPolicy Text
+itgipResource
+  = lens _itgipResource
+      (\ s a -> s{_itgipResource = a})
+
+instance GoogleRequest InstanceTemplatesGetIAMPolicy
+         where
+        type Rs InstanceTemplatesGetIAMPolicy = Policy
+        type Scopes InstanceTemplatesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InstanceTemplatesGetIAMPolicy'{..}
+          = go _itgipProject _itgipResource (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceTemplatesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs
@@ -37,6 +37,7 @@
     , InstanceTemplatesInsert
 
     -- * Request Lenses
+    , itiRequestId
     , itiProject
     , itiPayload
     ) where
@@ -53,9 +54,10 @@
            Capture "project" Text :>
              "global" :>
                "instanceTemplates" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] InstanceTemplate :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] InstanceTemplate :>
+                       Post '[JSON] Operation
 
 -- | Creates an instance template in the specified project using the data
 -- that is included in the request. If you are creating a new template to
@@ -65,14 +67,17 @@
 --
 -- /See:/ 'instanceTemplatesInsert' smart constructor.
 data InstanceTemplatesInsert = InstanceTemplatesInsert'
-    { _itiProject :: !Text
-    , _itiPayload :: !InstanceTemplate
+    { _itiRequestId :: !(Maybe Text)
+    , _itiProject   :: !Text
+    , _itiPayload   :: !InstanceTemplate
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstanceTemplatesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'itiRequestId'
+--
 -- * 'itiProject'
 --
 -- * 'itiPayload'
@@ -82,10 +87,25 @@
     -> InstanceTemplatesInsert
 instanceTemplatesInsert pItiProject_ pItiPayload_ =
     InstanceTemplatesInsert'
-    { _itiProject = pItiProject_
+    { _itiRequestId = Nothing
+    , _itiProject = pItiProject_
     , _itiPayload = pItiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+itiRequestId :: Lens' InstanceTemplatesInsert (Maybe Text)
+itiRequestId
+  = lens _itiRequestId (\ s a -> s{_itiRequestId = a})
+
 -- | Project ID for this request.
 itiProject :: Lens' InstanceTemplatesInsert Text
 itiProject
@@ -102,7 +122,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstanceTemplatesInsert'{..}
-          = go _itiProject (Just AltJSON) _itiPayload
+          = go _itiProject _itiRequestId (Just AltJSON)
+              _itiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs
@@ -114,26 +114,22 @@
 itlProject
   = lens _itlProject (\ s a -> s{_itlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 itlFilter :: Lens' InstanceTemplatesList (Maybe Text)
 itlFilter
   = lens _itlFilter (\ s a -> s{_itlFilter = a})
@@ -147,7 +143,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 itlMaxResults :: Lens' InstanceTemplatesList Word32
 itlMaxResults
   = lens _itlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InstanceTemplates.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.setIamPolicy@.
+module Network.Google.Resource.Compute.InstanceTemplates.SetIAMPolicy
+    (
+    -- * REST Resource
+      InstanceTemplatesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , instanceTemplatesSetIAMPolicy
+    , InstanceTemplatesSetIAMPolicy
+
+    -- * Request Lenses
+    , itsipProject
+    , itsipPayload
+    , itsipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.setIamPolicy@ method which the
+-- 'InstanceTemplatesSetIAMPolicy' request conforms to.
+type InstanceTemplatesSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 Capture "resource" Text :>
+                   "setIamPolicy" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetPolicyRequest :>
+                         Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'instanceTemplatesSetIAMPolicy' smart constructor.
+data InstanceTemplatesSetIAMPolicy = InstanceTemplatesSetIAMPolicy'
+    { _itsipProject  :: !Text
+    , _itsipPayload  :: !GlobalSetPolicyRequest
+    , _itsipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itsipProject'
+--
+-- * 'itsipPayload'
+--
+-- * 'itsipResource'
+instanceTemplatesSetIAMPolicy
+    :: Text -- ^ 'itsipProject'
+    -> GlobalSetPolicyRequest -- ^ 'itsipPayload'
+    -> Text -- ^ 'itsipResource'
+    -> InstanceTemplatesSetIAMPolicy
+instanceTemplatesSetIAMPolicy pItsipProject_ pItsipPayload_ pItsipResource_ =
+    InstanceTemplatesSetIAMPolicy'
+    { _itsipProject = pItsipProject_
+    , _itsipPayload = pItsipPayload_
+    , _itsipResource = pItsipResource_
+    }
+
+-- | Project ID for this request.
+itsipProject :: Lens' InstanceTemplatesSetIAMPolicy Text
+itsipProject
+  = lens _itsipProject (\ s a -> s{_itsipProject = a})
+
+-- | Multipart request metadata.
+itsipPayload :: Lens' InstanceTemplatesSetIAMPolicy GlobalSetPolicyRequest
+itsipPayload
+  = lens _itsipPayload (\ s a -> s{_itsipPayload = a})
+
+-- | Name or id of the resource for this request.
+itsipResource :: Lens' InstanceTemplatesSetIAMPolicy Text
+itsipResource
+  = lens _itsipResource
+      (\ s a -> s{_itsipResource = a})
+
+instance GoogleRequest InstanceTemplatesSetIAMPolicy
+         where
+        type Rs InstanceTemplatesSetIAMPolicy = Policy
+        type Scopes InstanceTemplatesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstanceTemplatesSetIAMPolicy'{..}
+          = go _itsipProject _itsipResource (Just AltJSON)
+              _itsipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceTemplatesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InstanceTemplates.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.testIamPermissions@.
+module Network.Google.Resource.Compute.InstanceTemplates.TestIAMPermissions
+    (
+    -- * REST Resource
+      InstanceTemplatesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , instanceTemplatesTestIAMPermissions
+    , InstanceTemplatesTestIAMPermissions
+
+    -- * Request Lenses
+    , ittipProject
+    , ittipPayload
+    , ittipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.testIamPermissions@ method which the
+-- 'InstanceTemplatesTestIAMPermissions' request conforms to.
+type InstanceTemplatesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 Capture "resource" Text :>
+                   "testIamPermissions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TestPermissionsRequest :>
+                         Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'instanceTemplatesTestIAMPermissions' smart constructor.
+data InstanceTemplatesTestIAMPermissions = InstanceTemplatesTestIAMPermissions'
+    { _ittipProject  :: !Text
+    , _ittipPayload  :: !TestPermissionsRequest
+    , _ittipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ittipProject'
+--
+-- * 'ittipPayload'
+--
+-- * 'ittipResource'
+instanceTemplatesTestIAMPermissions
+    :: Text -- ^ 'ittipProject'
+    -> TestPermissionsRequest -- ^ 'ittipPayload'
+    -> Text -- ^ 'ittipResource'
+    -> InstanceTemplatesTestIAMPermissions
+instanceTemplatesTestIAMPermissions pIttipProject_ pIttipPayload_ pIttipResource_ =
+    InstanceTemplatesTestIAMPermissions'
+    { _ittipProject = pIttipProject_
+    , _ittipPayload = pIttipPayload_
+    , _ittipResource = pIttipResource_
+    }
+
+-- | Project ID for this request.
+ittipProject :: Lens' InstanceTemplatesTestIAMPermissions Text
+ittipProject
+  = lens _ittipProject (\ s a -> s{_ittipProject = a})
+
+-- | Multipart request metadata.
+ittipPayload :: Lens' InstanceTemplatesTestIAMPermissions TestPermissionsRequest
+ittipPayload
+  = lens _ittipPayload (\ s a -> s{_ittipPayload = a})
+
+-- | Name or id of the resource for this request.
+ittipResource :: Lens' InstanceTemplatesTestIAMPermissions Text
+ittipResource
+  = lens _ittipResource
+      (\ s a -> s{_ittipResource = a})
+
+instance GoogleRequest
+         InstanceTemplatesTestIAMPermissions where
+        type Rs InstanceTemplatesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes InstanceTemplatesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          InstanceTemplatesTestIAMPermissions'{..}
+          = go _ittipProject _ittipResource (Just AltJSON)
+              _ittipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceTemplatesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs
--- a/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs
@@ -33,6 +33,7 @@
     , InstancesAddAccessConfig
 
     -- * Request Lenses
+    , iaacRequestId
     , iaacProject
     , iaacNetworkInterface
     , iaacZone
@@ -56,15 +57,17 @@
                    Capture "instance" Text :>
                      "addAccessConfig" :>
                        QueryParam "networkInterface" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] AccessConfig :>
-                             Post '[JSON] Operation
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] AccessConfig :>
+                               Post '[JSON] Operation
 
 -- | Adds an access config to an instance\'s network interface.
 --
 -- /See:/ 'instancesAddAccessConfig' smart constructor.
 data InstancesAddAccessConfig = InstancesAddAccessConfig'
-    { _iaacProject          :: !Text
+    { _iaacRequestId        :: !(Maybe Text)
+    , _iaacProject          :: !Text
     , _iaacNetworkInterface :: !Text
     , _iaacZone             :: !Text
     , _iaacPayload          :: !AccessConfig
@@ -75,6 +78,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'iaacRequestId'
+--
 -- * 'iaacProject'
 --
 -- * 'iaacNetworkInterface'
@@ -93,13 +98,29 @@
     -> InstancesAddAccessConfig
 instancesAddAccessConfig pIaacProject_ pIaacNetworkInterface_ pIaacZone_ pIaacPayload_ pIaacInstance_ =
     InstancesAddAccessConfig'
-    { _iaacProject = pIaacProject_
+    { _iaacRequestId = Nothing
+    , _iaacProject = pIaacProject_
     , _iaacNetworkInterface = pIaacNetworkInterface_
     , _iaacZone = pIaacZone_
     , _iaacPayload = pIaacPayload_
     , _iaacInstance = pIaacInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iaacRequestId :: Lens' InstancesAddAccessConfig (Maybe Text)
+iaacRequestId
+  = lens _iaacRequestId
+      (\ s a -> s{_iaacRequestId = a})
+
 -- | Project ID for this request.
 iaacProject :: Lens' InstancesAddAccessConfig Text
 iaacProject
@@ -133,6 +154,7 @@
         requestClient InstancesAddAccessConfig'{..}
           = go _iaacProject _iaacZone _iaacInstance
               (Just _iaacNetworkInterface)
+              _iaacRequestId
               (Just AltJSON)
               _iaacPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs
@@ -20,7 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves aggregated list of instances.
+-- Retrieves aggregated list of all of the instances in your project across
+-- all regions and zones.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.aggregatedList@.
 module Network.Google.Resource.Compute.Instances.AggregatedList
@@ -33,11 +34,11 @@
     , InstancesAggregatedList
 
     -- * Request Lenses
-    , ialOrderBy
-    , ialProject
-    , ialFilter
-    , ialPageToken
-    , ialMaxResults
+    , ialaOrderBy
+    , ialaProject
+    , ialaFilter
+    , ialaPageToken
+    , ialaMaxResults
     ) where
 
 import           Network.Google.Compute.Types
@@ -59,40 +60,41 @@
                          QueryParam "alt" AltJSON :>
                            Get '[JSON] InstanceAggregatedList
 
--- | Retrieves aggregated list of instances.
+-- | Retrieves aggregated list of all of the instances in your project across
+-- all regions and zones.
 --
 -- /See:/ 'instancesAggregatedList' smart constructor.
 data InstancesAggregatedList = InstancesAggregatedList'
-    { _ialOrderBy    :: !(Maybe Text)
-    , _ialProject    :: !Text
-    , _ialFilter     :: !(Maybe Text)
-    , _ialPageToken  :: !(Maybe Text)
-    , _ialMaxResults :: !(Textual Word32)
+    { _ialaOrderBy    :: !(Maybe Text)
+    , _ialaProject    :: !Text
+    , _ialaFilter     :: !(Maybe Text)
+    , _ialaPageToken  :: !(Maybe Text)
+    , _ialaMaxResults :: !(Textual Word32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ialOrderBy'
+-- * 'ialaOrderBy'
 --
--- * 'ialProject'
+-- * 'ialaProject'
 --
--- * 'ialFilter'
+-- * 'ialaFilter'
 --
--- * 'ialPageToken'
+-- * 'ialaPageToken'
 --
--- * 'ialMaxResults'
+-- * 'ialaMaxResults'
 instancesAggregatedList
-    :: Text -- ^ 'ialProject'
+    :: Text -- ^ 'ialaProject'
     -> InstancesAggregatedList
-instancesAggregatedList pIalProject_ =
+instancesAggregatedList pIalaProject_ =
     InstancesAggregatedList'
-    { _ialOrderBy = Nothing
-    , _ialProject = pIalProject_
-    , _ialFilter = Nothing
-    , _ialPageToken = Nothing
-    , _ialMaxResults = 500
+    { _ialaOrderBy = Nothing
+    , _ialaProject = pIalaProject_
+    , _ialaFilter = Nothing
+    , _ialaPageToken = Nothing
+    , _ialaMaxResults = 500
     }
 
 -- | Sorts list results by a certain order. By default, results are returned
@@ -103,53 +105,51 @@
 -- first). Use this to sort resources like operations so that the newest
 -- operation is returned first. Currently, only sorting by name or
 -- creationTimestamp desc is supported.
-ialOrderBy :: Lens' InstancesAggregatedList (Maybe Text)
-ialOrderBy
-  = lens _ialOrderBy (\ s a -> s{_ialOrderBy = a})
+ialaOrderBy :: Lens' InstancesAggregatedList (Maybe Text)
+ialaOrderBy
+  = lens _ialaOrderBy (\ s a -> s{_ialaOrderBy = a})
 
 -- | Project ID for this request.
-ialProject :: Lens' InstancesAggregatedList Text
-ialProject
-  = lens _ialProject (\ s a -> s{_ialProject = a})
+ialaProject :: Lens' InstancesAggregatedList Text
+ialaProject
+  = lens _ialaProject (\ s a -> s{_ialaProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
-ialFilter :: Lens' InstancesAggregatedList (Maybe Text)
-ialFilter
-  = lens _ialFilter (\ s a -> s{_ialFilter = a})
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ialaFilter :: Lens' InstancesAggregatedList (Maybe Text)
+ialaFilter
+  = lens _ialaFilter (\ s a -> s{_ialaFilter = a})
 
 -- | Specifies a page token to use. Set pageToken to the nextPageToken
 -- returned by a previous list request to get the next page of results.
-ialPageToken :: Lens' InstancesAggregatedList (Maybe Text)
-ialPageToken
-  = lens _ialPageToken (\ s a -> s{_ialPageToken = a})
+ialaPageToken :: Lens' InstancesAggregatedList (Maybe Text)
+ialaPageToken
+  = lens _ialaPageToken
+      (\ s a -> s{_ialaPageToken = a})
 
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
-ialMaxResults :: Lens' InstancesAggregatedList Word32
-ialMaxResults
-  = lens _ialMaxResults
-      (\ s a -> s{_ialMaxResults = a})
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ialaMaxResults :: Lens' InstancesAggregatedList Word32
+ialaMaxResults
+  = lens _ialaMaxResults
+      (\ s a -> s{_ialaMaxResults = a})
       . _Coerce
 
 instance GoogleRequest InstancesAggregatedList where
@@ -160,8 +160,9 @@
                "https://www.googleapis.com/auth/compute",
                "https://www.googleapis.com/auth/compute.readonly"]
         requestClient InstancesAggregatedList'{..}
-          = go _ialProject _ialOrderBy _ialFilter _ialPageToken
-              (Just _ialMaxResults)
+          = go _ialaProject _ialaOrderBy _ialaFilter
+              _ialaPageToken
+              (Just _ialaMaxResults)
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs b/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs
--- a/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs
@@ -20,7 +20,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Attaches a Disk resource to an instance.
+-- Attaches an existing Disk resource to an instance. You must first create
+-- the disk before you can attach it. It is not possible to create and
+-- attach a disk at the same time. For more information, read Adding a
+-- persistent disk to your instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.attachDisk@.
 module Network.Google.Resource.Compute.Instances.AttachDisk
@@ -33,10 +36,12 @@
     , InstancesAttachDisk
 
     -- * Request Lenses
-    , iadProject
-    , iadZone
-    , iadPayload
-    , iadInstance
+    , insRequestId
+    , insProject
+    , insZone
+    , insPayload
+    , insForceAttach
+    , insInstance
     ) where
 
 import           Network.Google.Compute.Types
@@ -54,63 +59,97 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "attachDisk" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] AttachedDisk :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "forceAttach" Bool :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] AttachedDisk :>
+                               Post '[JSON] Operation
 
--- | Attaches a Disk resource to an instance.
+-- | Attaches an existing Disk resource to an instance. You must first create
+-- the disk before you can attach it. It is not possible to create and
+-- attach a disk at the same time. For more information, read Adding a
+-- persistent disk to your instance.
 --
 -- /See:/ 'instancesAttachDisk' smart constructor.
 data InstancesAttachDisk = InstancesAttachDisk'
-    { _iadProject  :: !Text
-    , _iadZone     :: !Text
-    , _iadPayload  :: !AttachedDisk
-    , _iadInstance :: !Text
+    { _insRequestId   :: !(Maybe Text)
+    , _insProject     :: !Text
+    , _insZone        :: !Text
+    , _insPayload     :: !AttachedDisk
+    , _insForceAttach :: !(Maybe Bool)
+    , _insInstance    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesAttachDisk' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'iadProject'
+-- * 'insRequestId'
 --
--- * 'iadZone'
+-- * 'insProject'
 --
--- * 'iadPayload'
+-- * 'insZone'
 --
--- * 'iadInstance'
+-- * 'insPayload'
+--
+-- * 'insForceAttach'
+--
+-- * 'insInstance'
 instancesAttachDisk
-    :: Text -- ^ 'iadProject'
-    -> Text -- ^ 'iadZone'
-    -> AttachedDisk -- ^ 'iadPayload'
-    -> Text -- ^ 'iadInstance'
+    :: Text -- ^ 'insProject'
+    -> Text -- ^ 'insZone'
+    -> AttachedDisk -- ^ 'insPayload'
+    -> Text -- ^ 'insInstance'
     -> InstancesAttachDisk
-instancesAttachDisk pIadProject_ pIadZone_ pIadPayload_ pIadInstance_ =
+instancesAttachDisk pInsProject_ pInsZone_ pInsPayload_ pInsInstance_ =
     InstancesAttachDisk'
-    { _iadProject = pIadProject_
-    , _iadZone = pIadZone_
-    , _iadPayload = pIadPayload_
-    , _iadInstance = pIadInstance_
+    { _insRequestId = Nothing
+    , _insProject = pInsProject_
+    , _insZone = pInsZone_
+    , _insPayload = pInsPayload_
+    , _insForceAttach = Nothing
+    , _insInstance = pInsInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+insRequestId :: Lens' InstancesAttachDisk (Maybe Text)
+insRequestId
+  = lens _insRequestId (\ s a -> s{_insRequestId = a})
+
 -- | Project ID for this request.
-iadProject :: Lens' InstancesAttachDisk Text
-iadProject
-  = lens _iadProject (\ s a -> s{_iadProject = a})
+insProject :: Lens' InstancesAttachDisk Text
+insProject
+  = lens _insProject (\ s a -> s{_insProject = a})
 
 -- | The name of the zone for this request.
-iadZone :: Lens' InstancesAttachDisk Text
-iadZone = lens _iadZone (\ s a -> s{_iadZone = a})
+insZone :: Lens' InstancesAttachDisk Text
+insZone = lens _insZone (\ s a -> s{_insZone = a})
 
 -- | Multipart request metadata.
-iadPayload :: Lens' InstancesAttachDisk AttachedDisk
-iadPayload
-  = lens _iadPayload (\ s a -> s{_iadPayload = a})
+insPayload :: Lens' InstancesAttachDisk AttachedDisk
+insPayload
+  = lens _insPayload (\ s a -> s{_insPayload = a})
 
+-- | Whether to force attach the disk even if it\'s currently attached to
+-- another instance. This is only available for regional disks.
+insForceAttach :: Lens' InstancesAttachDisk (Maybe Bool)
+insForceAttach
+  = lens _insForceAttach
+      (\ s a -> s{_insForceAttach = a})
+
 -- | The instance name for this request.
-iadInstance :: Lens' InstancesAttachDisk Text
-iadInstance
-  = lens _iadInstance (\ s a -> s{_iadInstance = a})
+insInstance :: Lens' InstancesAttachDisk Text
+insInstance
+  = lens _insInstance (\ s a -> s{_insInstance = a})
 
 instance GoogleRequest InstancesAttachDisk where
         type Rs InstancesAttachDisk = Operation
@@ -118,8 +157,10 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesAttachDisk'{..}
-          = go _iadProject _iadZone _iadInstance (Just AltJSON)
-              _iadPayload
+          = go _insProject _insZone _insInstance _insRequestId
+              _insForceAttach
+              (Just AltJSON)
+              _insPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Instances/Delete.hs b/gen/Network/Google/Resource/Compute/Instances/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Delete.hs
@@ -34,6 +34,7 @@
     , InstancesDelete
 
     -- * Request Lenses
+    , idRequestId
     , idProject
     , idZone
     , idInstance
@@ -53,22 +54,26 @@
                Capture "zone" Text :>
                  "instances" :>
                    Capture "instance" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified Instance resource. For more information, see
 -- Stopping or Deleting an Instance.
 --
 -- /See:/ 'instancesDelete' smart constructor.
 data InstancesDelete = InstancesDelete'
-    { _idProject  :: !Text
-    , _idZone     :: !Text
-    , _idInstance :: !Text
+    { _idRequestId :: !(Maybe Text)
+    , _idProject   :: !Text
+    , _idZone      :: !Text
+    , _idInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'idRequestId'
+--
 -- * 'idProject'
 --
 -- * 'idZone'
@@ -81,11 +86,26 @@
     -> InstancesDelete
 instancesDelete pIdProject_ pIdZone_ pIdInstance_ =
     InstancesDelete'
-    { _idProject = pIdProject_
+    { _idRequestId = Nothing
+    , _idProject = pIdProject_
     , _idZone = pIdZone_
     , _idInstance = pIdInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+idRequestId :: Lens' InstancesDelete (Maybe Text)
+idRequestId
+  = lens _idRequestId (\ s a -> s{_idRequestId = a})
+
 -- | Project ID for this request.
 idProject :: Lens' InstancesDelete Text
 idProject
@@ -106,7 +126,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesDelete'{..}
-          = go _idProject _idZone _idInstance (Just AltJSON)
+          = go _idProject _idZone _idInstance _idRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs
--- a/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs
@@ -33,6 +33,7 @@
     , InstancesDeleteAccessConfig
 
     -- * Request Lenses
+    , idacRequestId
     , idacProject
     , idacNetworkInterface
     , idacZone
@@ -57,13 +58,15 @@
                      "deleteAccessConfig" :>
                        QueryParam "accessConfig" Text :>
                          QueryParam "networkInterface" Text :>
-                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                           QueryParam "requestId" Text :>
+                             QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Deletes an access config from an instance\'s network interface.
 --
 -- /See:/ 'instancesDeleteAccessConfig' smart constructor.
 data InstancesDeleteAccessConfig = InstancesDeleteAccessConfig'
-    { _idacProject          :: !Text
+    { _idacRequestId        :: !(Maybe Text)
+    , _idacProject          :: !Text
     , _idacNetworkInterface :: !Text
     , _idacZone             :: !Text
     , _idacAccessConfig     :: !Text
@@ -74,6 +77,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'idacRequestId'
+--
 -- * 'idacProject'
 --
 -- * 'idacNetworkInterface'
@@ -92,13 +97,29 @@
     -> InstancesDeleteAccessConfig
 instancesDeleteAccessConfig pIdacProject_ pIdacNetworkInterface_ pIdacZone_ pIdacAccessConfig_ pIdacInstance_ =
     InstancesDeleteAccessConfig'
-    { _idacProject = pIdacProject_
+    { _idacRequestId = Nothing
+    , _idacProject = pIdacProject_
     , _idacNetworkInterface = pIdacNetworkInterface_
     , _idacZone = pIdacZone_
     , _idacAccessConfig = pIdacAccessConfig_
     , _idacInstance = pIdacInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+idacRequestId :: Lens' InstancesDeleteAccessConfig (Maybe Text)
+idacRequestId
+  = lens _idacRequestId
+      (\ s a -> s{_idacRequestId = a})
+
 -- | Project ID for this request.
 idacProject :: Lens' InstancesDeleteAccessConfig Text
 idacProject
@@ -135,6 +156,7 @@
           = go _idacProject _idacZone _idacInstance
               (Just _idacAccessConfig)
               (Just _idacNetworkInterface)
+              _idacRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs b/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs
--- a/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs
@@ -33,10 +33,11 @@
     , InstancesDetachDisk
 
     -- * Request Lenses
-    , iddProject
-    , iddZone
-    , iddDeviceName
-    , iddInstance
+    , idddRequestId
+    , idddProject
+    , idddZone
+    , idddDeviceName
+    , idddInstance
     ) where
 
 import           Network.Google.Compute.Types
@@ -55,62 +56,83 @@
                    Capture "instance" Text :>
                      "detachDisk" :>
                        QueryParam "deviceName" Text :>
-                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Detaches a disk from an instance.
 --
 -- /See:/ 'instancesDetachDisk' smart constructor.
 data InstancesDetachDisk = InstancesDetachDisk'
-    { _iddProject    :: !Text
-    , _iddZone       :: !Text
-    , _iddDeviceName :: !Text
-    , _iddInstance   :: !Text
+    { _idddRequestId  :: !(Maybe Text)
+    , _idddProject    :: !Text
+    , _idddZone       :: !Text
+    , _idddDeviceName :: !Text
+    , _idddInstance   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesDetachDisk' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'iddProject'
+-- * 'idddRequestId'
 --
--- * 'iddZone'
+-- * 'idddProject'
 --
--- * 'iddDeviceName'
+-- * 'idddZone'
 --
--- * 'iddInstance'
+-- * 'idddDeviceName'
+--
+-- * 'idddInstance'
 instancesDetachDisk
-    :: Text -- ^ 'iddProject'
-    -> Text -- ^ 'iddZone'
-    -> Text -- ^ 'iddDeviceName'
-    -> Text -- ^ 'iddInstance'
+    :: Text -- ^ 'idddProject'
+    -> Text -- ^ 'idddZone'
+    -> Text -- ^ 'idddDeviceName'
+    -> Text -- ^ 'idddInstance'
     -> InstancesDetachDisk
-instancesDetachDisk pIddProject_ pIddZone_ pIddDeviceName_ pIddInstance_ =
+instancesDetachDisk pIdddProject_ pIdddZone_ pIdddDeviceName_ pIdddInstance_ =
     InstancesDetachDisk'
-    { _iddProject = pIddProject_
-    , _iddZone = pIddZone_
-    , _iddDeviceName = pIddDeviceName_
-    , _iddInstance = pIddInstance_
+    { _idddRequestId = Nothing
+    , _idddProject = pIdddProject_
+    , _idddZone = pIdddZone_
+    , _idddDeviceName = pIdddDeviceName_
+    , _idddInstance = pIdddInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+idddRequestId :: Lens' InstancesDetachDisk (Maybe Text)
+idddRequestId
+  = lens _idddRequestId
+      (\ s a -> s{_idddRequestId = a})
+
 -- | Project ID for this request.
-iddProject :: Lens' InstancesDetachDisk Text
-iddProject
-  = lens _iddProject (\ s a -> s{_iddProject = a})
+idddProject :: Lens' InstancesDetachDisk Text
+idddProject
+  = lens _idddProject (\ s a -> s{_idddProject = a})
 
 -- | The name of the zone for this request.
-iddZone :: Lens' InstancesDetachDisk Text
-iddZone = lens _iddZone (\ s a -> s{_iddZone = a})
+idddZone :: Lens' InstancesDetachDisk Text
+idddZone = lens _idddZone (\ s a -> s{_idddZone = a})
 
--- | Disk device name to detach.
-iddDeviceName :: Lens' InstancesDetachDisk Text
-iddDeviceName
-  = lens _iddDeviceName
-      (\ s a -> s{_iddDeviceName = a})
+-- | The device name of the disk to detach. Make a get() request on the
+-- instance to view currently attached disks and device names.
+idddDeviceName :: Lens' InstancesDetachDisk Text
+idddDeviceName
+  = lens _idddDeviceName
+      (\ s a -> s{_idddDeviceName = a})
 
--- | Instance name.
-iddInstance :: Lens' InstancesDetachDisk Text
-iddInstance
-  = lens _iddInstance (\ s a -> s{_iddInstance = a})
+-- | Instance name for this request.
+idddInstance :: Lens' InstancesDetachDisk Text
+idddInstance
+  = lens _idddInstance (\ s a -> s{_idddInstance = a})
 
 instance GoogleRequest InstancesDetachDisk where
         type Rs InstancesDetachDisk = Operation
@@ -118,8 +140,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesDetachDisk'{..}
-          = go _iddProject _iddZone _iddInstance
-              (Just _iddDeviceName)
+          = go _idddProject _idddZone _idddInstance
+              (Just _idddDeviceName)
+              _idddRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/Get.hs b/gen/Network/Google/Resource/Compute/Instances/Get.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Instance resource. Get a list of available
+-- Returns the specified Instance resource. Gets a list of available
 -- instances by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.get@.
@@ -55,7 +55,7 @@
                    Capture "instance" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Instance
 
--- | Returns the specified Instance resource. Get a list of available
+-- | Returns the specified Instance resource. Gets a list of available
 -- instances by making a list() request.
 --
 -- /See:/ 'instancesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.getIamPolicy@.
+module Network.Google.Resource.Compute.Instances.GetIAMPolicy
+    (
+    -- * REST Resource
+      InstancesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , instancesGetIAMPolicy
+    , InstancesGetIAMPolicy
+
+    -- * Request Lenses
+    , igiampProject
+    , igiampZone
+    , igiampResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.getIamPolicy@ method which the
+-- 'InstancesGetIAMPolicy' request conforms to.
+type InstancesGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "resource" Text :>
+                     "getIamPolicy" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'instancesGetIAMPolicy' smart constructor.
+data InstancesGetIAMPolicy = InstancesGetIAMPolicy'
+    { _igiampProject  :: !Text
+    , _igiampZone     :: !Text
+    , _igiampResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igiampProject'
+--
+-- * 'igiampZone'
+--
+-- * 'igiampResource'
+instancesGetIAMPolicy
+    :: Text -- ^ 'igiampProject'
+    -> Text -- ^ 'igiampZone'
+    -> Text -- ^ 'igiampResource'
+    -> InstancesGetIAMPolicy
+instancesGetIAMPolicy pIgiampProject_ pIgiampZone_ pIgiampResource_ =
+    InstancesGetIAMPolicy'
+    { _igiampProject = pIgiampProject_
+    , _igiampZone = pIgiampZone_
+    , _igiampResource = pIgiampResource_
+    }
+
+-- | Project ID for this request.
+igiampProject :: Lens' InstancesGetIAMPolicy Text
+igiampProject
+  = lens _igiampProject
+      (\ s a -> s{_igiampProject = a})
+
+-- | The name of the zone for this request.
+igiampZone :: Lens' InstancesGetIAMPolicy Text
+igiampZone
+  = lens _igiampZone (\ s a -> s{_igiampZone = a})
+
+-- | Name or id of the resource for this request.
+igiampResource :: Lens' InstancesGetIAMPolicy Text
+igiampResource
+  = lens _igiampResource
+      (\ s a -> s{_igiampResource = a})
+
+instance GoogleRequest InstancesGetIAMPolicy where
+        type Rs InstancesGetIAMPolicy = Policy
+        type Scopes InstancesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InstancesGetIAMPolicy'{..}
+          = go _igiampProject _igiampZone _igiampResource
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs b/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs
--- a/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified instance\'s serial port output.
+-- Returns the last 1 MB of serial port output from the specified instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.getSerialPortOutput@.
 module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
@@ -60,7 +60,7 @@
                            QueryParam "alt" AltJSON :>
                              Get '[JSON] SerialPortOutput
 
--- | Returns the specified instance\'s serial port output.
+-- | Returns the last 1 MB of serial port output from the specified instance.
 --
 -- /See:/ 'instancesGetSerialPortOutput' smart constructor.
 data InstancesGetSerialPortOutput = InstancesGetSerialPortOutput'
@@ -103,8 +103,10 @@
 igspoProject
   = lens _igspoProject (\ s a -> s{_igspoProject = a})
 
--- | For the initial request, leave this field unspecified. For subsequent
--- calls, this field should be set to the next value that was returned in
+-- | Returns output starting from a specific byte position. Use this to page
+-- through output when the output is too large to return in a single
+-- request. For the initial request, leave this field unspecified. For
+-- subsequent calls, this field should be set to the next value returned in
 -- the previous call.
 igspoStart :: Lens' InstancesGetSerialPortOutput (Maybe Int64)
 igspoStart
diff --git a/gen/Network/Google/Resource/Compute/Instances/Insert.hs b/gen/Network/Google/Resource/Compute/Instances/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Insert.hs
@@ -34,9 +34,11 @@
     , InstancesInsert
 
     -- * Request Lenses
+    , iiiRequestId
     , iiiProject
     , iiiZone
     , iiiPayload
+    , iiiSourceInstanceTemplate
     ) where
 
 import           Network.Google.Compute.Types
@@ -52,28 +54,36 @@
              "zones" :>
                Capture "zone" Text :>
                  "instances" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Instance :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "sourceInstanceTemplate" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Instance :> Post '[JSON] Operation
 
 -- | Creates an instance resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'instancesInsert' smart constructor.
 data InstancesInsert = InstancesInsert'
-    { _iiiProject :: !Text
-    , _iiiZone    :: !Text
-    , _iiiPayload :: !Instance
+    { _iiiRequestId              :: !(Maybe Text)
+    , _iiiProject                :: !Text
+    , _iiiZone                   :: !Text
+    , _iiiPayload                :: !Instance
+    , _iiiSourceInstanceTemplate :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'iiiRequestId'
+--
 -- * 'iiiProject'
 --
 -- * 'iiiZone'
 --
 -- * 'iiiPayload'
+--
+-- * 'iiiSourceInstanceTemplate'
 instancesInsert
     :: Text -- ^ 'iiiProject'
     -> Text -- ^ 'iiiZone'
@@ -81,11 +91,27 @@
     -> InstancesInsert
 instancesInsert pIiiProject_ pIiiZone_ pIiiPayload_ =
     InstancesInsert'
-    { _iiiProject = pIiiProject_
+    { _iiiRequestId = Nothing
+    , _iiiProject = pIiiProject_
     , _iiiZone = pIiiZone_
     , _iiiPayload = pIiiPayload_
+    , _iiiSourceInstanceTemplate = Nothing
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iiiRequestId :: Lens' InstancesInsert (Maybe Text)
+iiiRequestId
+  = lens _iiiRequestId (\ s a -> s{_iiiRequestId = a})
+
 -- | Project ID for this request.
 iiiProject :: Lens' InstancesInsert Text
 iiiProject
@@ -100,13 +126,27 @@
 iiiPayload
   = lens _iiiPayload (\ s a -> s{_iiiPayload = a})
 
+-- | Specifies instance template to create the instance. This field is
+-- optional. It can be a full or partial URL. For example, the following
+-- are all valid URLs to an instance template: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/instanceTemplates\/instanceTemplate
+-- - projects\/project\/global\/instanceTemplates\/instanceTemplate -
+-- global\/instanceTemplates\/instanceTemplate
+iiiSourceInstanceTemplate :: Lens' InstancesInsert (Maybe Text)
+iiiSourceInstanceTemplate
+  = lens _iiiSourceInstanceTemplate
+      (\ s a -> s{_iiiSourceInstanceTemplate = a})
+
 instance GoogleRequest InstancesInsert where
         type Rs InstancesInsert = Operation
         type Scopes InstancesInsert =
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesInsert'{..}
-          = go _iiiProject _iiiZone (Just AltJSON) _iiiPayload
+          = go _iiiProject _iiiZone _iiiRequestId
+              _iiiSourceInstanceTemplate
+              (Just AltJSON)
+              _iiiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Instances/List.hs b/gen/Network/Google/Resource/Compute/Instances/List.hs
--- a/gen/Network/Google/Resource/Compute/Instances/List.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/List.hs
@@ -33,12 +33,12 @@
     , InstancesList
 
     -- * Request Lenses
-    , ilOrderBy
-    , ilProject
-    , ilZone
-    , ilFilter
-    , ilPageToken
-    , ilMaxResults
+    , il1OrderBy
+    , il1Project
+    , il1Zone
+    , il1Filter
+    , il1PageToken
+    , il1MaxResults
     ) where
 
 import           Network.Google.Compute.Types
@@ -64,41 +64,41 @@
 --
 -- /See:/ 'instancesList' smart constructor.
 data InstancesList = InstancesList'
-    { _ilOrderBy    :: !(Maybe Text)
-    , _ilProject    :: !Text
-    , _ilZone       :: !Text
-    , _ilFilter     :: !(Maybe Text)
-    , _ilPageToken  :: !(Maybe Text)
-    , _ilMaxResults :: !(Textual Word32)
+    { _il1OrderBy    :: !(Maybe Text)
+    , _il1Project    :: !Text
+    , _il1Zone       :: !Text
+    , _il1Filter     :: !(Maybe Text)
+    , _il1PageToken  :: !(Maybe Text)
+    , _il1MaxResults :: !(Textual Word32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ilOrderBy'
+-- * 'il1OrderBy'
 --
--- * 'ilProject'
+-- * 'il1Project'
 --
--- * 'ilZone'
+-- * 'il1Zone'
 --
--- * 'ilFilter'
+-- * 'il1Filter'
 --
--- * 'ilPageToken'
+-- * 'il1PageToken'
 --
--- * 'ilMaxResults'
+-- * 'il1MaxResults'
 instancesList
-    :: Text -- ^ 'ilProject'
-    -> Text -- ^ 'ilZone'
+    :: Text -- ^ 'il1Project'
+    -> Text -- ^ 'il1Zone'
     -> InstancesList
-instancesList pIlProject_ pIlZone_ =
+instancesList pIl1Project_ pIl1Zone_ =
     InstancesList'
-    { _ilOrderBy = Nothing
-    , _ilProject = pIlProject_
-    , _ilZone = pIlZone_
-    , _ilFilter = Nothing
-    , _ilPageToken = Nothing
-    , _ilMaxResults = 500
+    { _il1OrderBy = Nothing
+    , _il1Project = pIl1Project_
+    , _il1Zone = pIl1Zone_
+    , _il1Filter = Nothing
+    , _il1PageToken = Nothing
+    , _il1MaxResults = 500
     }
 
 -- | Sorts list results by a certain order. By default, results are returned
@@ -109,55 +109,54 @@
 -- first). Use this to sort resources like operations so that the newest
 -- operation is returned first. Currently, only sorting by name or
 -- creationTimestamp desc is supported.
-ilOrderBy :: Lens' InstancesList (Maybe Text)
-ilOrderBy
-  = lens _ilOrderBy (\ s a -> s{_ilOrderBy = a})
+il1OrderBy :: Lens' InstancesList (Maybe Text)
+il1OrderBy
+  = lens _il1OrderBy (\ s a -> s{_il1OrderBy = a})
 
 -- | Project ID for this request.
-ilProject :: Lens' InstancesList Text
-ilProject
-  = lens _ilProject (\ s a -> s{_ilProject = a})
+il1Project :: Lens' InstancesList Text
+il1Project
+  = lens _il1Project (\ s a -> s{_il1Project = a})
 
 -- | The name of the zone for this request.
-ilZone :: Lens' InstancesList Text
-ilZone = lens _ilZone (\ s a -> s{_ilZone = a})
+il1Zone :: Lens' InstancesList Text
+il1Zone = lens _il1Zone (\ s a -> s{_il1Zone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
-ilFilter :: Lens' InstancesList (Maybe Text)
-ilFilter = lens _ilFilter (\ s a -> s{_ilFilter = a})
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+il1Filter :: Lens' InstancesList (Maybe Text)
+il1Filter
+  = lens _il1Filter (\ s a -> s{_il1Filter = a})
 
 -- | Specifies a page token to use. Set pageToken to the nextPageToken
 -- returned by a previous list request to get the next page of results.
-ilPageToken :: Lens' InstancesList (Maybe Text)
-ilPageToken
-  = lens _ilPageToken (\ s a -> s{_ilPageToken = a})
+il1PageToken :: Lens' InstancesList (Maybe Text)
+il1PageToken
+  = lens _il1PageToken (\ s a -> s{_il1PageToken = a})
 
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
-ilMaxResults :: Lens' InstancesList Word32
-ilMaxResults
-  = lens _ilMaxResults (\ s a -> s{_ilMaxResults = a})
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+il1MaxResults :: Lens' InstancesList Word32
+il1MaxResults
+  = lens _il1MaxResults
+      (\ s a -> s{_il1MaxResults = a})
       . _Coerce
 
 instance GoogleRequest InstancesList where
@@ -167,9 +166,9 @@
                "https://www.googleapis.com/auth/compute",
                "https://www.googleapis.com/auth/compute.readonly"]
         requestClient InstancesList'{..}
-          = go _ilProject _ilZone _ilOrderBy _ilFilter
-              _ilPageToken
-              (Just _ilMaxResults)
+          = go _il1Project _il1Zone _il1OrderBy _il1Filter
+              _il1PageToken
+              (Just _il1MaxResults)
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs b/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/ListReferrers.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.Compute.Instances.ListReferrers
+-- 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 list of referrers to instances contained within the
+-- specified zone. For more information, read Viewing Referrers to VM
+-- Instances.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.listReferrers@.
+module Network.Google.Resource.Compute.Instances.ListReferrers
+    (
+    -- * REST Resource
+      InstancesListReferrersResource
+
+    -- * Creating a Request
+    , instancesListReferrers
+    , InstancesListReferrers
+
+    -- * Request Lenses
+    , ilrOrderBy
+    , ilrProject
+    , ilrZone
+    , ilrFilter
+    , ilrPageToken
+    , ilrMaxResults
+    , ilrInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.listReferrers@ method which the
+-- 'InstancesListReferrers' request conforms to.
+type InstancesListReferrersResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "referrers" :>
+                       QueryParam "orderBy" Text :>
+                         QueryParam "filter" Text :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "maxResults" (Textual Word32) :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] InstanceListReferrers
+
+-- | Retrieves the list of referrers to instances contained within the
+-- specified zone. For more information, read Viewing Referrers to VM
+-- Instances.
+--
+-- /See:/ 'instancesListReferrers' smart constructor.
+data InstancesListReferrers = InstancesListReferrers'
+    { _ilrOrderBy    :: !(Maybe Text)
+    , _ilrProject    :: !Text
+    , _ilrZone       :: !Text
+    , _ilrFilter     :: !(Maybe Text)
+    , _ilrPageToken  :: !(Maybe Text)
+    , _ilrMaxResults :: !(Textual Word32)
+    , _ilrInstance   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesListReferrers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrOrderBy'
+--
+-- * 'ilrProject'
+--
+-- * 'ilrZone'
+--
+-- * 'ilrFilter'
+--
+-- * 'ilrPageToken'
+--
+-- * 'ilrMaxResults'
+--
+-- * 'ilrInstance'
+instancesListReferrers
+    :: Text -- ^ 'ilrProject'
+    -> Text -- ^ 'ilrZone'
+    -> Text -- ^ 'ilrInstance'
+    -> InstancesListReferrers
+instancesListReferrers pIlrProject_ pIlrZone_ pIlrInstance_ =
+    InstancesListReferrers'
+    { _ilrOrderBy = Nothing
+    , _ilrProject = pIlrProject_
+    , _ilrZone = pIlrZone_
+    , _ilrFilter = Nothing
+    , _ilrPageToken = Nothing
+    , _ilrMaxResults = 500
+    , _ilrInstance = pIlrInstance_
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ilrOrderBy :: Lens' InstancesListReferrers (Maybe Text)
+ilrOrderBy
+  = lens _ilrOrderBy (\ s a -> s{_ilrOrderBy = a})
+
+-- | Project ID for this request.
+ilrProject :: Lens' InstancesListReferrers Text
+ilrProject
+  = lens _ilrProject (\ s a -> s{_ilrProject = a})
+
+-- | The name of the zone for this request.
+ilrZone :: Lens' InstancesListReferrers Text
+ilrZone = lens _ilrZone (\ s a -> s{_ilrZone = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ilrFilter :: Lens' InstancesListReferrers (Maybe Text)
+ilrFilter
+  = lens _ilrFilter (\ s a -> s{_ilrFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ilrPageToken :: Lens' InstancesListReferrers (Maybe Text)
+ilrPageToken
+  = lens _ilrPageToken (\ s a -> s{_ilrPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ilrMaxResults :: Lens' InstancesListReferrers Word32
+ilrMaxResults
+  = lens _ilrMaxResults
+      (\ s a -> s{_ilrMaxResults = a})
+      . _Coerce
+
+-- | Name of the target instance scoping this request, or \'-\' if the
+-- request should span over all instances in the container.
+ilrInstance :: Lens' InstancesListReferrers Text
+ilrInstance
+  = lens _ilrInstance (\ s a -> s{_ilrInstance = a})
+
+instance GoogleRequest InstancesListReferrers where
+        type Rs InstancesListReferrers =
+             InstanceListReferrers
+        type Scopes InstancesListReferrers =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InstancesListReferrers'{..}
+          = go _ilrProject _ilrZone _ilrInstance _ilrOrderBy
+              _ilrFilter
+              _ilrPageToken
+              (Just _ilrMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesListReferrersResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Reset.hs b/gen/Network/Google/Resource/Compute/Instances/Reset.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Reset.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Reset.hs
@@ -20,7 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Performs a hard reset on the instance.
+-- Performs a reset on the instance. For more information, see Resetting an
+-- instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.reset@.
 module Network.Google.Resource.Compute.Instances.Reset
@@ -33,6 +34,7 @@
     , InstancesReset
 
     -- * Request Lenses
+    , irRequestId
     , irProject
     , irZone
     , irInstance
@@ -53,21 +55,26 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "reset" :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
--- | Performs a hard reset on the instance.
+-- | Performs a reset on the instance. For more information, see Resetting an
+-- instance.
 --
 -- /See:/ 'instancesReset' smart constructor.
 data InstancesReset = InstancesReset'
-    { _irProject  :: !Text
-    , _irZone     :: !Text
-    , _irInstance :: !Text
+    { _irRequestId :: !(Maybe Text)
+    , _irProject   :: !Text
+    , _irZone      :: !Text
+    , _irInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesReset' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'irRequestId'
+--
 -- * 'irProject'
 --
 -- * 'irZone'
@@ -80,11 +87,26 @@
     -> InstancesReset
 instancesReset pIrProject_ pIrZone_ pIrInstance_ =
     InstancesReset'
-    { _irProject = pIrProject_
+    { _irRequestId = Nothing
+    , _irProject = pIrProject_
     , _irZone = pIrZone_
     , _irInstance = pIrInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+irRequestId :: Lens' InstancesReset (Maybe Text)
+irRequestId
+  = lens _irRequestId (\ s a -> s{_irRequestId = a})
+
 -- | Project ID for this request.
 irProject :: Lens' InstancesReset Text
 irProject
@@ -105,7 +127,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesReset'{..}
-          = go _irProject _irZone _irInstance (Just AltJSON)
+          = go _irProject _irZone _irInstance _irRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy InstancesResetResource)
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs b/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SetDeletionProtection
+-- 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 deletion protection on the instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setDeletionProtection@.
+module Network.Google.Resource.Compute.Instances.SetDeletionProtection
+    (
+    -- * REST Resource
+      InstancesSetDeletionProtectionResource
+
+    -- * Creating a Request
+    , instancesSetDeletionProtection
+    , InstancesSetDeletionProtection
+
+    -- * Request Lenses
+    , isdpRequestId
+    , isdpDeletionProtection
+    , isdpProject
+    , isdpZone
+    , isdpResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setDeletionProtection@ method which the
+-- 'InstancesSetDeletionProtection' request conforms to.
+type InstancesSetDeletionProtectionResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "resource" Text :>
+                     "setDeletionProtection" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "deletionProtection" Bool :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Sets deletion protection on the instance.
+--
+-- /See:/ 'instancesSetDeletionProtection' smart constructor.
+data InstancesSetDeletionProtection = InstancesSetDeletionProtection'
+    { _isdpRequestId          :: !(Maybe Text)
+    , _isdpDeletionProtection :: !Bool
+    , _isdpProject            :: !Text
+    , _isdpZone               :: !Text
+    , _isdpResource           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetDeletionProtection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isdpRequestId'
+--
+-- * 'isdpDeletionProtection'
+--
+-- * 'isdpProject'
+--
+-- * 'isdpZone'
+--
+-- * 'isdpResource'
+instancesSetDeletionProtection
+    :: Text -- ^ 'isdpProject'
+    -> Text -- ^ 'isdpZone'
+    -> Text -- ^ 'isdpResource'
+    -> InstancesSetDeletionProtection
+instancesSetDeletionProtection pIsdpProject_ pIsdpZone_ pIsdpResource_ =
+    InstancesSetDeletionProtection'
+    { _isdpRequestId = Nothing
+    , _isdpDeletionProtection = True
+    , _isdpProject = pIsdpProject_
+    , _isdpZone = pIsdpZone_
+    , _isdpResource = pIsdpResource_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+isdpRequestId :: Lens' InstancesSetDeletionProtection (Maybe Text)
+isdpRequestId
+  = lens _isdpRequestId
+      (\ s a -> s{_isdpRequestId = a})
+
+-- | Whether the resource should be protected against deletion.
+isdpDeletionProtection :: Lens' InstancesSetDeletionProtection Bool
+isdpDeletionProtection
+  = lens _isdpDeletionProtection
+      (\ s a -> s{_isdpDeletionProtection = a})
+
+-- | Project ID for this request.
+isdpProject :: Lens' InstancesSetDeletionProtection Text
+isdpProject
+  = lens _isdpProject (\ s a -> s{_isdpProject = a})
+
+-- | The name of the zone for this request.
+isdpZone :: Lens' InstancesSetDeletionProtection Text
+isdpZone = lens _isdpZone (\ s a -> s{_isdpZone = a})
+
+-- | Name or id of the resource for this request.
+isdpResource :: Lens' InstancesSetDeletionProtection Text
+isdpResource
+  = lens _isdpResource (\ s a -> s{_isdpResource = a})
+
+instance GoogleRequest InstancesSetDeletionProtection
+         where
+        type Rs InstancesSetDeletionProtection = Operation
+        type Scopes InstancesSetDeletionProtection =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSetDeletionProtection'{..}
+          = go _isdpProject _isdpZone _isdpResource
+              _isdpRequestId
+              (Just _isdpDeletionProtection)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstancesSetDeletionProtectionResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs b/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs
@@ -33,6 +33,7 @@
     , InstancesSetDiskAutoDelete
 
     -- * Request Lenses
+    , isdadRequestId
     , isdadProject
     , isdadAutoDelete
     , isdadZone
@@ -57,13 +58,15 @@
                      "setDiskAutoDelete" :>
                        QueryParam "autoDelete" Bool :>
                          QueryParam "deviceName" Text :>
-                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                           QueryParam "requestId" Text :>
+                             QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Sets the auto-delete flag for a disk attached to an instance.
 --
 -- /See:/ 'instancesSetDiskAutoDelete' smart constructor.
 data InstancesSetDiskAutoDelete = InstancesSetDiskAutoDelete'
-    { _isdadProject    :: !Text
+    { _isdadRequestId  :: !(Maybe Text)
+    , _isdadProject    :: !Text
     , _isdadAutoDelete :: !Bool
     , _isdadZone       :: !Text
     , _isdadDeviceName :: !Text
@@ -74,6 +77,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'isdadRequestId'
+--
 -- * 'isdadProject'
 --
 -- * 'isdadAutoDelete'
@@ -92,13 +97,29 @@
     -> InstancesSetDiskAutoDelete
 instancesSetDiskAutoDelete pIsdadProject_ pIsdadAutoDelete_ pIsdadZone_ pIsdadDeviceName_ pIsdadInstance_ =
     InstancesSetDiskAutoDelete'
-    { _isdadProject = pIsdadProject_
+    { _isdadRequestId = Nothing
+    , _isdadProject = pIsdadProject_
     , _isdadAutoDelete = pIsdadAutoDelete_
     , _isdadZone = pIsdadZone_
     , _isdadDeviceName = pIsdadDeviceName_
     , _isdadInstance = pIsdadInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+isdadRequestId :: Lens' InstancesSetDiskAutoDelete (Maybe Text)
+isdadRequestId
+  = lens _isdadRequestId
+      (\ s a -> s{_isdadRequestId = a})
+
 -- | Project ID for this request.
 isdadProject :: Lens' InstancesSetDiskAutoDelete Text
 isdadProject
@@ -115,13 +136,14 @@
 isdadZone
   = lens _isdadZone (\ s a -> s{_isdadZone = a})
 
--- | The device name of the disk to modify.
+-- | The device name of the disk to modify. Make a get() request on the
+-- instance to view currently attached disks and device names.
 isdadDeviceName :: Lens' InstancesSetDiskAutoDelete Text
 isdadDeviceName
   = lens _isdadDeviceName
       (\ s a -> s{_isdadDeviceName = a})
 
--- | The instance name.
+-- | The instance name for this request.
 isdadInstance :: Lens' InstancesSetDiskAutoDelete Text
 isdadInstance
   = lens _isdadInstance
@@ -137,6 +159,7 @@
           = go _isdadProject _isdadZone _isdadInstance
               (Just _isdadAutoDelete)
               (Just _isdadDeviceName)
+              _isdadRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setIamPolicy@.
+module Network.Google.Resource.Compute.Instances.SetIAMPolicy
+    (
+    -- * REST Resource
+      InstancesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , instancesSetIAMPolicy
+    , InstancesSetIAMPolicy
+
+    -- * Request Lenses
+    , isipProject
+    , isipZone
+    , isipPayload
+    , isipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setIamPolicy@ method which the
+-- 'InstancesSetIAMPolicy' request conforms to.
+type InstancesSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "resource" Text :>
+                     "setIamPolicy" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ZoneSetPolicyRequest :>
+                           Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'instancesSetIAMPolicy' smart constructor.
+data InstancesSetIAMPolicy = InstancesSetIAMPolicy'
+    { _isipProject  :: !Text
+    , _isipZone     :: !Text
+    , _isipPayload  :: !ZoneSetPolicyRequest
+    , _isipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isipProject'
+--
+-- * 'isipZone'
+--
+-- * 'isipPayload'
+--
+-- * 'isipResource'
+instancesSetIAMPolicy
+    :: Text -- ^ 'isipProject'
+    -> Text -- ^ 'isipZone'
+    -> ZoneSetPolicyRequest -- ^ 'isipPayload'
+    -> Text -- ^ 'isipResource'
+    -> InstancesSetIAMPolicy
+instancesSetIAMPolicy pIsipProject_ pIsipZone_ pIsipPayload_ pIsipResource_ =
+    InstancesSetIAMPolicy'
+    { _isipProject = pIsipProject_
+    , _isipZone = pIsipZone_
+    , _isipPayload = pIsipPayload_
+    , _isipResource = pIsipResource_
+    }
+
+-- | Project ID for this request.
+isipProject :: Lens' InstancesSetIAMPolicy Text
+isipProject
+  = lens _isipProject (\ s a -> s{_isipProject = a})
+
+-- | The name of the zone for this request.
+isipZone :: Lens' InstancesSetIAMPolicy Text
+isipZone = lens _isipZone (\ s a -> s{_isipZone = a})
+
+-- | Multipart request metadata.
+isipPayload :: Lens' InstancesSetIAMPolicy ZoneSetPolicyRequest
+isipPayload
+  = lens _isipPayload (\ s a -> s{_isipPayload = a})
+
+-- | Name or id of the resource for this request.
+isipResource :: Lens' InstancesSetIAMPolicy Text
+isipResource
+  = lens _isipResource (\ s a -> s{_isipResource = a})
+
+instance GoogleRequest InstancesSetIAMPolicy where
+        type Rs InstancesSetIAMPolicy = Policy
+        type Scopes InstancesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSetIAMPolicy'{..}
+          = go _isipProject _isipZone _isipResource
+              (Just AltJSON)
+              _isipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs b/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SetLabels
+-- 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 an instance. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setLabels@.
+module Network.Google.Resource.Compute.Instances.SetLabels
+    (
+    -- * REST Resource
+      InstancesSetLabelsResource
+
+    -- * Creating a Request
+    , instancesSetLabels
+    , InstancesSetLabels
+
+    -- * Request Lenses
+    , islRequestId
+    , islProject
+    , islZone
+    , islPayload
+    , islInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setLabels@ method which the
+-- 'InstancesSetLabels' request conforms to.
+type InstancesSetLabelsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setLabels" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstancesSetLabelsRequest :>
+                             Post '[JSON] Operation
+
+-- | Sets labels on an instance. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ 'instancesSetLabels' smart constructor.
+data InstancesSetLabels = InstancesSetLabels'
+    { _islRequestId :: !(Maybe Text)
+    , _islProject   :: !Text
+    , _islZone      :: !Text
+    , _islPayload   :: !InstancesSetLabelsRequest
+    , _islInstance  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islRequestId'
+--
+-- * 'islProject'
+--
+-- * 'islZone'
+--
+-- * 'islPayload'
+--
+-- * 'islInstance'
+instancesSetLabels
+    :: Text -- ^ 'islProject'
+    -> Text -- ^ 'islZone'
+    -> InstancesSetLabelsRequest -- ^ 'islPayload'
+    -> Text -- ^ 'islInstance'
+    -> InstancesSetLabels
+instancesSetLabels pIslProject_ pIslZone_ pIslPayload_ pIslInstance_ =
+    InstancesSetLabels'
+    { _islRequestId = Nothing
+    , _islProject = pIslProject_
+    , _islZone = pIslZone_
+    , _islPayload = pIslPayload_
+    , _islInstance = pIslInstance_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+islRequestId :: Lens' InstancesSetLabels (Maybe Text)
+islRequestId
+  = lens _islRequestId (\ s a -> s{_islRequestId = a})
+
+-- | Project ID for this request.
+islProject :: Lens' InstancesSetLabels Text
+islProject
+  = lens _islProject (\ s a -> s{_islProject = a})
+
+-- | The name of the zone for this request.
+islZone :: Lens' InstancesSetLabels Text
+islZone = lens _islZone (\ s a -> s{_islZone = a})
+
+-- | Multipart request metadata.
+islPayload :: Lens' InstancesSetLabels InstancesSetLabelsRequest
+islPayload
+  = lens _islPayload (\ s a -> s{_islPayload = a})
+
+-- | Name of the instance scoping this request.
+islInstance :: Lens' InstancesSetLabels Text
+islInstance
+  = lens _islInstance (\ s a -> s{_islInstance = a})
+
+instance GoogleRequest InstancesSetLabels where
+        type Rs InstancesSetLabels = Operation
+        type Scopes InstancesSetLabels =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSetLabels'{..}
+          = go _islProject _islZone _islInstance _islRequestId
+              (Just AltJSON)
+              _islPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs b/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SetMachineResources
+-- 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)
+--
+-- Changes the number and\/or type of accelerator for a stopped instance to
+-- the values specified in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setMachineResources@.
+module Network.Google.Resource.Compute.Instances.SetMachineResources
+    (
+    -- * REST Resource
+      InstancesSetMachineResourcesResource
+
+    -- * Creating a Request
+    , instancesSetMachineResources
+    , InstancesSetMachineResources
+
+    -- * Request Lenses
+    , ismrRequestId
+    , ismrProject
+    , ismrZone
+    , ismrPayload
+    , ismrInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setMachineResources@ method which the
+-- 'InstancesSetMachineResources' request conforms to.
+type InstancesSetMachineResourcesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setMachineResources" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstancesSetMachineResourcesRequest
+                             :> Post '[JSON] Operation
+
+-- | Changes the number and\/or type of accelerator for a stopped instance to
+-- the values specified in the request.
+--
+-- /See:/ 'instancesSetMachineResources' smart constructor.
+data InstancesSetMachineResources = InstancesSetMachineResources'
+    { _ismrRequestId :: !(Maybe Text)
+    , _ismrProject   :: !Text
+    , _ismrZone      :: !Text
+    , _ismrPayload   :: !InstancesSetMachineResourcesRequest
+    , _ismrInstance  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMachineResources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismrRequestId'
+--
+-- * 'ismrProject'
+--
+-- * 'ismrZone'
+--
+-- * 'ismrPayload'
+--
+-- * 'ismrInstance'
+instancesSetMachineResources
+    :: Text -- ^ 'ismrProject'
+    -> Text -- ^ 'ismrZone'
+    -> InstancesSetMachineResourcesRequest -- ^ 'ismrPayload'
+    -> Text -- ^ 'ismrInstance'
+    -> InstancesSetMachineResources
+instancesSetMachineResources pIsmrProject_ pIsmrZone_ pIsmrPayload_ pIsmrInstance_ =
+    InstancesSetMachineResources'
+    { _ismrRequestId = Nothing
+    , _ismrProject = pIsmrProject_
+    , _ismrZone = pIsmrZone_
+    , _ismrPayload = pIsmrPayload_
+    , _ismrInstance = pIsmrInstance_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ismrRequestId :: Lens' InstancesSetMachineResources (Maybe Text)
+ismrRequestId
+  = lens _ismrRequestId
+      (\ s a -> s{_ismrRequestId = a})
+
+-- | Project ID for this request.
+ismrProject :: Lens' InstancesSetMachineResources Text
+ismrProject
+  = lens _ismrProject (\ s a -> s{_ismrProject = a})
+
+-- | The name of the zone for this request.
+ismrZone :: Lens' InstancesSetMachineResources Text
+ismrZone = lens _ismrZone (\ s a -> s{_ismrZone = a})
+
+-- | Multipart request metadata.
+ismrPayload :: Lens' InstancesSetMachineResources InstancesSetMachineResourcesRequest
+ismrPayload
+  = lens _ismrPayload (\ s a -> s{_ismrPayload = a})
+
+-- | Name of the instance scoping this request.
+ismrInstance :: Lens' InstancesSetMachineResources Text
+ismrInstance
+  = lens _ismrInstance (\ s a -> s{_ismrInstance = a})
+
+instance GoogleRequest InstancesSetMachineResources
+         where
+        type Rs InstancesSetMachineResources = Operation
+        type Scopes InstancesSetMachineResources =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSetMachineResources'{..}
+          = go _ismrProject _ismrZone _ismrInstance
+              _ismrRequestId
+              (Just AltJSON)
+              _ismrPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetMachineResourcesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMachineType.hs b/gen/Network/Google/Resource/Compute/Instances/SetMachineType.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetMachineType.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMachineType.hs
@@ -34,6 +34,7 @@
     , InstancesSetMachineType
 
     -- * Request Lenses
+    , ismtRequestId
     , ismtProject
     , ismtZone
     , ismtPayload
@@ -55,25 +56,29 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "setMachineType" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] InstancesSetMachineTypeRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstancesSetMachineTypeRequest :>
+                             Post '[JSON] Operation
 
 -- | Changes the machine type for a stopped instance to the machine type
 -- specified in the request.
 --
 -- /See:/ 'instancesSetMachineType' smart constructor.
 data InstancesSetMachineType = InstancesSetMachineType'
-    { _ismtProject  :: !Text
-    , _ismtZone     :: !Text
-    , _ismtPayload  :: !InstancesSetMachineTypeRequest
-    , _ismtInstance :: !Text
+    { _ismtRequestId :: !(Maybe Text)
+    , _ismtProject   :: !Text
+    , _ismtZone      :: !Text
+    , _ismtPayload   :: !InstancesSetMachineTypeRequest
+    , _ismtInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesSetMachineType' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ismtRequestId'
+--
 -- * 'ismtProject'
 --
 -- * 'ismtZone'
@@ -89,12 +94,28 @@
     -> InstancesSetMachineType
 instancesSetMachineType pIsmtProject_ pIsmtZone_ pIsmtPayload_ pIsmtInstance_ =
     InstancesSetMachineType'
-    { _ismtProject = pIsmtProject_
+    { _ismtRequestId = Nothing
+    , _ismtProject = pIsmtProject_
     , _ismtZone = pIsmtZone_
     , _ismtPayload = pIsmtPayload_
     , _ismtInstance = pIsmtInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ismtRequestId :: Lens' InstancesSetMachineType (Maybe Text)
+ismtRequestId
+  = lens _ismtRequestId
+      (\ s a -> s{_ismtRequestId = a})
+
 -- | Project ID for this request.
 ismtProject :: Lens' InstancesSetMachineType Text
 ismtProject
@@ -121,6 +142,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesSetMachineType'{..}
           = go _ismtProject _ismtZone _ismtInstance
+              _ismtRequestId
               (Just AltJSON)
               _ismtPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs b/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs
@@ -34,6 +34,7 @@
     , InstancesSetMetadata
 
     -- * Request Lenses
+    , ismRequestId
     , ismProject
     , ismZone
     , ismPayload
@@ -55,24 +56,28 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "setMetadata" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Metadata :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Metadata :> Post '[JSON] Operation
 
 -- | Sets metadata for the specified instance to the data included in the
 -- request.
 --
 -- /See:/ 'instancesSetMetadata' smart constructor.
 data InstancesSetMetadata = InstancesSetMetadata'
-    { _ismProject  :: !Text
-    , _ismZone     :: !Text
-    , _ismPayload  :: !Metadata
-    , _ismInstance :: !Text
+    { _ismRequestId :: !(Maybe Text)
+    , _ismProject   :: !Text
+    , _ismZone      :: !Text
+    , _ismPayload   :: !Metadata
+    , _ismInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesSetMetadata' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ismRequestId'
+--
 -- * 'ismProject'
 --
 -- * 'ismZone'
@@ -88,12 +93,27 @@
     -> InstancesSetMetadata
 instancesSetMetadata pIsmProject_ pIsmZone_ pIsmPayload_ pIsmInstance_ =
     InstancesSetMetadata'
-    { _ismProject = pIsmProject_
+    { _ismRequestId = Nothing
+    , _ismProject = pIsmProject_
     , _ismZone = pIsmZone_
     , _ismPayload = pIsmPayload_
     , _ismInstance = pIsmInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ismRequestId :: Lens' InstancesSetMetadata (Maybe Text)
+ismRequestId
+  = lens _ismRequestId (\ s a -> s{_ismRequestId = a})
+
 -- | Project ID for this request.
 ismProject :: Lens' InstancesSetMetadata Text
 ismProject
@@ -119,7 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesSetMetadata'{..}
-          = go _ismProject _ismZone _ismInstance (Just AltJSON)
+          = go _ismProject _ismZone _ismInstance _ismRequestId
+              (Just AltJSON)
               _ismPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs b/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
+-- 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)
+--
+-- Changes the minimum CPU platform that this instance should use. This
+-- method can only be called on a stopped instance. For more information,
+-- read Specifying a Minimum CPU Platform.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setMinCpuPlatform@.
+module Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
+    (
+    -- * REST Resource
+      InstancesSetMinCPUPlatformResource
+
+    -- * Creating a Request
+    , instancesSetMinCPUPlatform
+    , InstancesSetMinCPUPlatform
+
+    -- * Request Lenses
+    , ismcpRequestId
+    , ismcpProject
+    , ismcpZone
+    , ismcpPayload
+    , ismcpInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setMinCpuPlatform@ method which the
+-- 'InstancesSetMinCPUPlatform' request conforms to.
+type InstancesSetMinCPUPlatformResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setMinCpuPlatform" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstancesSetMinCPUPlatformRequest :>
+                             Post '[JSON] Operation
+
+-- | Changes the minimum CPU platform that this instance should use. This
+-- method can only be called on a stopped instance. For more information,
+-- read Specifying a Minimum CPU Platform.
+--
+-- /See:/ 'instancesSetMinCPUPlatform' smart constructor.
+data InstancesSetMinCPUPlatform = InstancesSetMinCPUPlatform'
+    { _ismcpRequestId :: !(Maybe Text)
+    , _ismcpProject   :: !Text
+    , _ismcpZone      :: !Text
+    , _ismcpPayload   :: !InstancesSetMinCPUPlatformRequest
+    , _ismcpInstance  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMinCPUPlatform' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismcpRequestId'
+--
+-- * 'ismcpProject'
+--
+-- * 'ismcpZone'
+--
+-- * 'ismcpPayload'
+--
+-- * 'ismcpInstance'
+instancesSetMinCPUPlatform
+    :: Text -- ^ 'ismcpProject'
+    -> Text -- ^ 'ismcpZone'
+    -> InstancesSetMinCPUPlatformRequest -- ^ 'ismcpPayload'
+    -> Text -- ^ 'ismcpInstance'
+    -> InstancesSetMinCPUPlatform
+instancesSetMinCPUPlatform pIsmcpProject_ pIsmcpZone_ pIsmcpPayload_ pIsmcpInstance_ =
+    InstancesSetMinCPUPlatform'
+    { _ismcpRequestId = Nothing
+    , _ismcpProject = pIsmcpProject_
+    , _ismcpZone = pIsmcpZone_
+    , _ismcpPayload = pIsmcpPayload_
+    , _ismcpInstance = pIsmcpInstance_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ismcpRequestId :: Lens' InstancesSetMinCPUPlatform (Maybe Text)
+ismcpRequestId
+  = lens _ismcpRequestId
+      (\ s a -> s{_ismcpRequestId = a})
+
+-- | Project ID for this request.
+ismcpProject :: Lens' InstancesSetMinCPUPlatform Text
+ismcpProject
+  = lens _ismcpProject (\ s a -> s{_ismcpProject = a})
+
+-- | The name of the zone for this request.
+ismcpZone :: Lens' InstancesSetMinCPUPlatform Text
+ismcpZone
+  = lens _ismcpZone (\ s a -> s{_ismcpZone = a})
+
+-- | Multipart request metadata.
+ismcpPayload :: Lens' InstancesSetMinCPUPlatform InstancesSetMinCPUPlatformRequest
+ismcpPayload
+  = lens _ismcpPayload (\ s a -> s{_ismcpPayload = a})
+
+-- | Name of the instance scoping this request.
+ismcpInstance :: Lens' InstancesSetMinCPUPlatform Text
+ismcpInstance
+  = lens _ismcpInstance
+      (\ s a -> s{_ismcpInstance = a})
+
+instance GoogleRequest InstancesSetMinCPUPlatform
+         where
+        type Rs InstancesSetMinCPUPlatform = Operation
+        type Scopes InstancesSetMinCPUPlatform =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSetMinCPUPlatform'{..}
+          = go _ismcpProject _ismcpZone _ismcpInstance
+              _ismcpRequestId
+              (Just AltJSON)
+              _ismcpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetMinCPUPlatformResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs b/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs
@@ -33,6 +33,7 @@
     , InstancesSetScheduling
 
     -- * Request Lenses
+    , issRequestId
     , issProject
     , issZone
     , issPayload
@@ -54,23 +55,27 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "setScheduling" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Scheduling :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Scheduling :> Post '[JSON] Operation
 
 -- | Sets an instance\'s scheduling options.
 --
 -- /See:/ 'instancesSetScheduling' smart constructor.
 data InstancesSetScheduling = InstancesSetScheduling'
-    { _issProject  :: !Text
-    , _issZone     :: !Text
-    , _issPayload  :: !Scheduling
-    , _issInstance :: !Text
+    { _issRequestId :: !(Maybe Text)
+    , _issProject   :: !Text
+    , _issZone      :: !Text
+    , _issPayload   :: !Scheduling
+    , _issInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesSetScheduling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'issRequestId'
+--
 -- * 'issProject'
 --
 -- * 'issZone'
@@ -86,12 +91,27 @@
     -> InstancesSetScheduling
 instancesSetScheduling pIssProject_ pIssZone_ pIssPayload_ pIssInstance_ =
     InstancesSetScheduling'
-    { _issProject = pIssProject_
+    { _issRequestId = Nothing
+    , _issProject = pIssProject_
     , _issZone = pIssZone_
     , _issPayload = pIssPayload_
     , _issInstance = pIssInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+issRequestId :: Lens' InstancesSetScheduling (Maybe Text)
+issRequestId
+  = lens _issRequestId (\ s a -> s{_issRequestId = a})
+
 -- | Project ID for this request.
 issProject :: Lens' InstancesSetScheduling Text
 issProject
@@ -106,7 +126,7 @@
 issPayload
   = lens _issPayload (\ s a -> s{_issPayload = a})
 
--- | Instance name.
+-- | Instance name for this request.
 issInstance :: Lens' InstancesSetScheduling Text
 issInstance
   = lens _issInstance (\ s a -> s{_issInstance = a})
@@ -117,7 +137,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesSetScheduling'{..}
-          = go _issProject _issZone _issInstance (Just AltJSON)
+          = go _issProject _issZone _issInstance _issRequestId
+              (Just AltJSON)
               _issPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetServiceAccount.hs b/gen/Network/Google/Resource/Compute/Instances/SetServiceAccount.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetServiceAccount.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetServiceAccount.hs
@@ -20,7 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Sets the service account on the instance.
+-- Sets the service account on the instance. For more information, read
+-- Changing the service account and access scopes for an instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setServiceAccount@.
 module Network.Google.Resource.Compute.Instances.SetServiceAccount
@@ -33,6 +34,7 @@
     , InstancesSetServiceAccount
 
     -- * Request Lenses
+    , issaRequestId
     , issaProject
     , issaZone
     , issaPayload
@@ -54,24 +56,29 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "setServiceAccount" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] InstancesSetServiceAccountRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] InstancesSetServiceAccountRequest :>
+                             Post '[JSON] Operation
 
--- | Sets the service account on the instance.
+-- | Sets the service account on the instance. For more information, read
+-- Changing the service account and access scopes for an instance.
 --
 -- /See:/ 'instancesSetServiceAccount' smart constructor.
 data InstancesSetServiceAccount = InstancesSetServiceAccount'
-    { _issaProject  :: !Text
-    , _issaZone     :: !Text
-    , _issaPayload  :: !InstancesSetServiceAccountRequest
-    , _issaInstance :: !Text
+    { _issaRequestId :: !(Maybe Text)
+    , _issaProject   :: !Text
+    , _issaZone      :: !Text
+    , _issaPayload   :: !InstancesSetServiceAccountRequest
+    , _issaInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesSetServiceAccount' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'issaRequestId'
+--
 -- * 'issaProject'
 --
 -- * 'issaZone'
@@ -87,12 +94,28 @@
     -> InstancesSetServiceAccount
 instancesSetServiceAccount pIssaProject_ pIssaZone_ pIssaPayload_ pIssaInstance_ =
     InstancesSetServiceAccount'
-    { _issaProject = pIssaProject_
+    { _issaRequestId = Nothing
+    , _issaProject = pIssaProject_
     , _issaZone = pIssaZone_
     , _issaPayload = pIssaPayload_
     , _issaInstance = pIssaInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+issaRequestId :: Lens' InstancesSetServiceAccount (Maybe Text)
+issaRequestId
+  = lens _issaRequestId
+      (\ s a -> s{_issaRequestId = a})
+
 -- | Project ID for this request.
 issaProject :: Lens' InstancesSetServiceAccount Text
 issaProject
@@ -120,6 +143,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesSetServiceAccount'{..}
           = go _issaProject _issaZone _issaInstance
+              _issaRequestId
               (Just AltJSON)
               _issaPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetTags.hs b/gen/Network/Google/Resource/Compute/Instances/SetTags.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetTags.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetTags.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Sets tags for the specified instance to the data included in the
+-- Sets network tags for the specified instance to the data included in the
 -- request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setTags@.
@@ -34,6 +34,7 @@
     , InstancesSetTags
 
     -- * Request Lenses
+    , istRequestId
     , istProject
     , istZone
     , istPayload
@@ -55,24 +56,28 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "setTags" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Tags :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Tags :> Post '[JSON] Operation
 
--- | Sets tags for the specified instance to the data included in the
+-- | Sets network tags for the specified instance to the data included in the
 -- request.
 --
 -- /See:/ 'instancesSetTags' smart constructor.
 data InstancesSetTags = InstancesSetTags'
-    { _istProject  :: !Text
-    , _istZone     :: !Text
-    , _istPayload  :: !Tags
-    , _istInstance :: !Text
+    { _istRequestId :: !(Maybe Text)
+    , _istProject   :: !Text
+    , _istZone      :: !Text
+    , _istPayload   :: !Tags
+    , _istInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesSetTags' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'istRequestId'
+--
 -- * 'istProject'
 --
 -- * 'istZone'
@@ -88,12 +93,27 @@
     -> InstancesSetTags
 instancesSetTags pIstProject_ pIstZone_ pIstPayload_ pIstInstance_ =
     InstancesSetTags'
-    { _istProject = pIstProject_
+    { _istRequestId = Nothing
+    , _istProject = pIstProject_
     , _istZone = pIstZone_
     , _istPayload = pIstPayload_
     , _istInstance = pIstInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+istRequestId :: Lens' InstancesSetTags (Maybe Text)
+istRequestId
+  = lens _istRequestId (\ s a -> s{_istRequestId = a})
+
 -- | Project ID for this request.
 istProject :: Lens' InstancesSetTags Text
 istProject
@@ -119,7 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesSetTags'{..}
-          = go _istProject _istZone _istInstance (Just AltJSON)
+          = go _istProject _istZone _istInstance _istRequestId
+              (Just AltJSON)
               _istPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs b/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
+-- 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)
+--
+-- Simulates a maintenance event on the instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.simulateMaintenanceEvent@.
+module Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
+    (
+    -- * REST Resource
+      InstancesSimulateMaintenanceEventResource
+
+    -- * Creating a Request
+    , instancesSimulateMaintenanceEvent
+    , InstancesSimulateMaintenanceEvent
+
+    -- * Request Lenses
+    , ismeProject
+    , ismeZone
+    , ismeInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.simulateMaintenanceEvent@ method which the
+-- 'InstancesSimulateMaintenanceEvent' request conforms to.
+type InstancesSimulateMaintenanceEventResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "simulateMaintenanceEvent" :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Simulates a maintenance event on the instance.
+--
+-- /See:/ 'instancesSimulateMaintenanceEvent' smart constructor.
+data InstancesSimulateMaintenanceEvent = InstancesSimulateMaintenanceEvent'
+    { _ismeProject  :: !Text
+    , _ismeZone     :: !Text
+    , _ismeInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSimulateMaintenanceEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismeProject'
+--
+-- * 'ismeZone'
+--
+-- * 'ismeInstance'
+instancesSimulateMaintenanceEvent
+    :: Text -- ^ 'ismeProject'
+    -> Text -- ^ 'ismeZone'
+    -> Text -- ^ 'ismeInstance'
+    -> InstancesSimulateMaintenanceEvent
+instancesSimulateMaintenanceEvent pIsmeProject_ pIsmeZone_ pIsmeInstance_ =
+    InstancesSimulateMaintenanceEvent'
+    { _ismeProject = pIsmeProject_
+    , _ismeZone = pIsmeZone_
+    , _ismeInstance = pIsmeInstance_
+    }
+
+-- | Project ID for this request.
+ismeProject :: Lens' InstancesSimulateMaintenanceEvent Text
+ismeProject
+  = lens _ismeProject (\ s a -> s{_ismeProject = a})
+
+-- | The name of the zone for this request.
+ismeZone :: Lens' InstancesSimulateMaintenanceEvent Text
+ismeZone = lens _ismeZone (\ s a -> s{_ismeZone = a})
+
+-- | Name of the instance scoping this request.
+ismeInstance :: Lens' InstancesSimulateMaintenanceEvent Text
+ismeInstance
+  = lens _ismeInstance (\ s a -> s{_ismeInstance = a})
+
+instance GoogleRequest
+         InstancesSimulateMaintenanceEvent where
+        type Rs InstancesSimulateMaintenanceEvent = Operation
+        type Scopes InstancesSimulateMaintenanceEvent =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesSimulateMaintenanceEvent'{..}
+          = go _ismeProject _ismeZone _ismeInstance
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstancesSimulateMaintenanceEventResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Start.hs b/gen/Network/Google/Resource/Compute/Instances/Start.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Start.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Start.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Starts an instance that was stopped using the using the instances().stop
--- method. For more information, see Restart an instance.
+-- Starts an instance that was stopped using the instances().stop method.
+-- For more information, see Restart an instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.start@.
 module Network.Google.Resource.Compute.Instances.Start
@@ -34,9 +34,10 @@
     , InstancesStart
 
     -- * Request Lenses
-    , insProject
-    , insZone
-    , insInstance
+    , insnRequestId
+    , insnProject
+    , insnZone
+    , insnInstance
     ) where
 
 import           Network.Google.Compute.Types
@@ -54,52 +55,72 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "start" :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
--- | Starts an instance that was stopped using the using the instances().stop
--- method. For more information, see Restart an instance.
+-- | Starts an instance that was stopped using the instances().stop method.
+-- For more information, see Restart an instance.
 --
 -- /See:/ 'instancesStart' smart constructor.
 data InstancesStart = InstancesStart'
-    { _insProject  :: !Text
-    , _insZone     :: !Text
-    , _insInstance :: !Text
+    { _insnRequestId :: !(Maybe Text)
+    , _insnProject   :: !Text
+    , _insnZone      :: !Text
+    , _insnInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesStart' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'insProject'
+-- * 'insnRequestId'
 --
--- * 'insZone'
+-- * 'insnProject'
 --
--- * 'insInstance'
+-- * 'insnZone'
+--
+-- * 'insnInstance'
 instancesStart
-    :: Text -- ^ 'insProject'
-    -> Text -- ^ 'insZone'
-    -> Text -- ^ 'insInstance'
+    :: Text -- ^ 'insnProject'
+    -> Text -- ^ 'insnZone'
+    -> Text -- ^ 'insnInstance'
     -> InstancesStart
-instancesStart pInsProject_ pInsZone_ pInsInstance_ =
+instancesStart pInsnProject_ pInsnZone_ pInsnInstance_ =
     InstancesStart'
-    { _insProject = pInsProject_
-    , _insZone = pInsZone_
-    , _insInstance = pInsInstance_
+    { _insnRequestId = Nothing
+    , _insnProject = pInsnProject_
+    , _insnZone = pInsnZone_
+    , _insnInstance = pInsnInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+insnRequestId :: Lens' InstancesStart (Maybe Text)
+insnRequestId
+  = lens _insnRequestId
+      (\ s a -> s{_insnRequestId = a})
+
 -- | Project ID for this request.
-insProject :: Lens' InstancesStart Text
-insProject
-  = lens _insProject (\ s a -> s{_insProject = a})
+insnProject :: Lens' InstancesStart Text
+insnProject
+  = lens _insnProject (\ s a -> s{_insnProject = a})
 
 -- | The name of the zone for this request.
-insZone :: Lens' InstancesStart Text
-insZone = lens _insZone (\ s a -> s{_insZone = a})
+insnZone :: Lens' InstancesStart Text
+insnZone = lens _insnZone (\ s a -> s{_insnZone = a})
 
 -- | Name of the instance resource to start.
-insInstance :: Lens' InstancesStart Text
-insInstance
-  = lens _insInstance (\ s a -> s{_insInstance = a})
+insnInstance :: Lens' InstancesStart Text
+insnInstance
+  = lens _insnInstance (\ s a -> s{_insnInstance = a})
 
 instance GoogleRequest InstancesStart where
         type Rs InstancesStart = Operation
@@ -107,7 +128,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesStart'{..}
-          = go _insProject _insZone _insInstance (Just AltJSON)
+          = go _insnProject _insnZone _insnInstance
+              _insnRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy InstancesStartResource)
diff --git a/gen/Network/Google/Resource/Compute/Instances/StartWithEncryptionKey.hs b/gen/Network/Google/Resource/Compute/Instances/StartWithEncryptionKey.hs
--- a/gen/Network/Google/Resource/Compute/Instances/StartWithEncryptionKey.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/StartWithEncryptionKey.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Starts an instance that was stopped using the using the instances().stop
--- method. For more information, see Restart an instance.
+-- Starts an instance that was stopped using the instances().stop method.
+-- For more information, see Restart an instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.startWithEncryptionKey@.
 module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
@@ -34,6 +34,7 @@
     , InstancesStartWithEncryptionKey
 
     -- * Request Lenses
+    , iswekRequestId
     , iswekProject
     , iswekZone
     , iswekPayload
@@ -55,26 +56,30 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "startWithEncryptionKey" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           InstancesStartWithEncryptionKeyRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             InstancesStartWithEncryptionKeyRequest
+                             :> Post '[JSON] Operation
 
--- | Starts an instance that was stopped using the using the instances().stop
--- method. For more information, see Restart an instance.
+-- | Starts an instance that was stopped using the instances().stop method.
+-- For more information, see Restart an instance.
 --
 -- /See:/ 'instancesStartWithEncryptionKey' smart constructor.
 data InstancesStartWithEncryptionKey = InstancesStartWithEncryptionKey'
-    { _iswekProject  :: !Text
-    , _iswekZone     :: !Text
-    , _iswekPayload  :: !InstancesStartWithEncryptionKeyRequest
-    , _iswekInstance :: !Text
+    { _iswekRequestId :: !(Maybe Text)
+    , _iswekProject   :: !Text
+    , _iswekZone      :: !Text
+    , _iswekPayload   :: !InstancesStartWithEncryptionKeyRequest
+    , _iswekInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesStartWithEncryptionKey' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'iswekRequestId'
+--
 -- * 'iswekProject'
 --
 -- * 'iswekZone'
@@ -90,12 +95,28 @@
     -> InstancesStartWithEncryptionKey
 instancesStartWithEncryptionKey pIswekProject_ pIswekZone_ pIswekPayload_ pIswekInstance_ =
     InstancesStartWithEncryptionKey'
-    { _iswekProject = pIswekProject_
+    { _iswekRequestId = Nothing
+    , _iswekProject = pIswekProject_
     , _iswekZone = pIswekZone_
     , _iswekPayload = pIswekPayload_
     , _iswekInstance = pIswekInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iswekRequestId :: Lens' InstancesStartWithEncryptionKey (Maybe Text)
+iswekRequestId
+  = lens _iswekRequestId
+      (\ s a -> s{_iswekRequestId = a})
+
 -- | Project ID for this request.
 iswekProject :: Lens' InstancesStartWithEncryptionKey Text
 iswekProject
@@ -125,6 +146,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesStartWithEncryptionKey'{..}
           = go _iswekProject _iswekZone _iswekInstance
+              _iswekRequestId
               (Just AltJSON)
               _iswekPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Instances/Stop.hs b/gen/Network/Google/Resource/Compute/Instances/Stop.hs
--- a/gen/Network/Google/Resource/Compute/Instances/Stop.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/Stop.hs
@@ -21,11 +21,11 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Stops a running instance, shutting it down cleanly, and allows you to
--- restart the instance at a later time. Stopped instances do not incur
--- per-minute, virtual machine usage charges while they are stopped, but
--- any resources that the virtual machine is using, such as persistent
--- disks and static IP addresses, will continue to be charged until they
--- are deleted. For more information, see Stopping an instance.
+-- restart the instance at a later time. Stopped instances do not incur VM
+-- usage charges while they are stopped. However, resources that the VM is
+-- using, such as persistent disks and static IP addresses, will continue
+-- to be charged until they are deleted. For more information, see Stopping
+-- an instance.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.stop@.
 module Network.Google.Resource.Compute.Instances.Stop
@@ -38,6 +38,7 @@
     , InstancesStop
 
     -- * Request Lenses
+    , isRequestId
     , isProject
     , isZone
     , isInstance
@@ -58,26 +59,30 @@
                  "instances" :>
                    Capture "instance" Text :>
                      "stop" :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Stops a running instance, shutting it down cleanly, and allows you to
--- restart the instance at a later time. Stopped instances do not incur
--- per-minute, virtual machine usage charges while they are stopped, but
--- any resources that the virtual machine is using, such as persistent
--- disks and static IP addresses, will continue to be charged until they
--- are deleted. For more information, see Stopping an instance.
+-- restart the instance at a later time. Stopped instances do not incur VM
+-- usage charges while they are stopped. However, resources that the VM is
+-- using, such as persistent disks and static IP addresses, will continue
+-- to be charged until they are deleted. For more information, see Stopping
+-- an instance.
 --
 -- /See:/ 'instancesStop' smart constructor.
 data InstancesStop = InstancesStop'
-    { _isProject  :: !Text
-    , _isZone     :: !Text
-    , _isInstance :: !Text
+    { _isRequestId :: !(Maybe Text)
+    , _isProject   :: !Text
+    , _isZone      :: !Text
+    , _isInstance  :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'InstancesStop' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'isRequestId'
+--
 -- * 'isProject'
 --
 -- * 'isZone'
@@ -90,11 +95,26 @@
     -> InstancesStop
 instancesStop pIsProject_ pIsZone_ pIsInstance_ =
     InstancesStop'
-    { _isProject = pIsProject_
+    { _isRequestId = Nothing
+    , _isProject = pIsProject_
     , _isZone = pIsZone_
     , _isInstance = pIsInstance_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+isRequestId :: Lens' InstancesStop (Maybe Text)
+isRequestId
+  = lens _isRequestId (\ s a -> s{_isRequestId = a})
+
 -- | Project ID for this request.
 isProject :: Lens' InstancesStop Text
 isProject
@@ -115,7 +135,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient InstancesStop'{..}
-          = go _isProject _isZone _isInstance (Just AltJSON)
+          = go _isProject _isZone _isInstance _isRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy InstancesStopResource)
diff --git a/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.testIamPermissions@.
+module Network.Google.Resource.Compute.Instances.TestIAMPermissions
+    (
+    -- * REST Resource
+      InstancesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , instancesTestIAMPermissions
+    , InstancesTestIAMPermissions
+
+    -- * Request Lenses
+    , itipProject
+    , itipZone
+    , itipPayload
+    , itipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.testIamPermissions@ method which the
+-- 'InstancesTestIAMPermissions' request conforms to.
+type InstancesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'instancesTestIAMPermissions' smart constructor.
+data InstancesTestIAMPermissions = InstancesTestIAMPermissions'
+    { _itipProject  :: !Text
+    , _itipZone     :: !Text
+    , _itipPayload  :: !TestPermissionsRequest
+    , _itipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itipProject'
+--
+-- * 'itipZone'
+--
+-- * 'itipPayload'
+--
+-- * 'itipResource'
+instancesTestIAMPermissions
+    :: Text -- ^ 'itipProject'
+    -> Text -- ^ 'itipZone'
+    -> TestPermissionsRequest -- ^ 'itipPayload'
+    -> Text -- ^ 'itipResource'
+    -> InstancesTestIAMPermissions
+instancesTestIAMPermissions pItipProject_ pItipZone_ pItipPayload_ pItipResource_ =
+    InstancesTestIAMPermissions'
+    { _itipProject = pItipProject_
+    , _itipZone = pItipZone_
+    , _itipPayload = pItipPayload_
+    , _itipResource = pItipResource_
+    }
+
+-- | Project ID for this request.
+itipProject :: Lens' InstancesTestIAMPermissions Text
+itipProject
+  = lens _itipProject (\ s a -> s{_itipProject = a})
+
+-- | The name of the zone for this request.
+itipZone :: Lens' InstancesTestIAMPermissions Text
+itipZone = lens _itipZone (\ s a -> s{_itipZone = a})
+
+-- | Multipart request metadata.
+itipPayload :: Lens' InstancesTestIAMPermissions TestPermissionsRequest
+itipPayload
+  = lens _itipPayload (\ s a -> s{_itipPayload = a})
+
+-- | Name or id of the resource for this request.
+itipResource :: Lens' InstancesTestIAMPermissions Text
+itipResource
+  = lens _itipResource (\ s a -> s{_itipResource = a})
+
+instance GoogleRequest InstancesTestIAMPermissions
+         where
+        type Rs InstancesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes InstancesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InstancesTestIAMPermissions'{..}
+          = go _itipProject _itipZone _itipResource
+              (Just AltJSON)
+              _itipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.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.Compute.Instances.UpdateAccessConfig
+-- 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 specified access config from an instance\'s network
+-- interface with the data included in the request. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.updateAccessConfig@.
+module Network.Google.Resource.Compute.Instances.UpdateAccessConfig
+    (
+    -- * REST Resource
+      InstancesUpdateAccessConfigResource
+
+    -- * Creating a Request
+    , instancesUpdateAccessConfig
+    , InstancesUpdateAccessConfig
+
+    -- * Request Lenses
+    , iuacRequestId
+    , iuacProject
+    , iuacNetworkInterface
+    , iuacZone
+    , iuacPayload
+    , iuacInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.updateAccessConfig@ method which the
+-- 'InstancesUpdateAccessConfig' request conforms to.
+type InstancesUpdateAccessConfigResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "updateAccessConfig" :>
+                       QueryParam "networkInterface" Text :>
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] AccessConfig :>
+                               Post '[JSON] Operation
+
+-- | Updates the specified access config from an instance\'s network
+-- interface with the data included in the request. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ 'instancesUpdateAccessConfig' smart constructor.
+data InstancesUpdateAccessConfig = InstancesUpdateAccessConfig'
+    { _iuacRequestId        :: !(Maybe Text)
+    , _iuacProject          :: !Text
+    , _iuacNetworkInterface :: !Text
+    , _iuacZone             :: !Text
+    , _iuacPayload          :: !AccessConfig
+    , _iuacInstance         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesUpdateAccessConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iuacRequestId'
+--
+-- * 'iuacProject'
+--
+-- * 'iuacNetworkInterface'
+--
+-- * 'iuacZone'
+--
+-- * 'iuacPayload'
+--
+-- * 'iuacInstance'
+instancesUpdateAccessConfig
+    :: Text -- ^ 'iuacProject'
+    -> Text -- ^ 'iuacNetworkInterface'
+    -> Text -- ^ 'iuacZone'
+    -> AccessConfig -- ^ 'iuacPayload'
+    -> Text -- ^ 'iuacInstance'
+    -> InstancesUpdateAccessConfig
+instancesUpdateAccessConfig pIuacProject_ pIuacNetworkInterface_ pIuacZone_ pIuacPayload_ pIuacInstance_ =
+    InstancesUpdateAccessConfig'
+    { _iuacRequestId = Nothing
+    , _iuacProject = pIuacProject_
+    , _iuacNetworkInterface = pIuacNetworkInterface_
+    , _iuacZone = pIuacZone_
+    , _iuacPayload = pIuacPayload_
+    , _iuacInstance = pIuacInstance_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iuacRequestId :: Lens' InstancesUpdateAccessConfig (Maybe Text)
+iuacRequestId
+  = lens _iuacRequestId
+      (\ s a -> s{_iuacRequestId = a})
+
+-- | Project ID for this request.
+iuacProject :: Lens' InstancesUpdateAccessConfig Text
+iuacProject
+  = lens _iuacProject (\ s a -> s{_iuacProject = a})
+
+-- | The name of the network interface where the access config is attached.
+iuacNetworkInterface :: Lens' InstancesUpdateAccessConfig Text
+iuacNetworkInterface
+  = lens _iuacNetworkInterface
+      (\ s a -> s{_iuacNetworkInterface = a})
+
+-- | The name of the zone for this request.
+iuacZone :: Lens' InstancesUpdateAccessConfig Text
+iuacZone = lens _iuacZone (\ s a -> s{_iuacZone = a})
+
+-- | Multipart request metadata.
+iuacPayload :: Lens' InstancesUpdateAccessConfig AccessConfig
+iuacPayload
+  = lens _iuacPayload (\ s a -> s{_iuacPayload = a})
+
+-- | The instance name for this request.
+iuacInstance :: Lens' InstancesUpdateAccessConfig Text
+iuacInstance
+  = lens _iuacInstance (\ s a -> s{_iuacInstance = a})
+
+instance GoogleRequest InstancesUpdateAccessConfig
+         where
+        type Rs InstancesUpdateAccessConfig = Operation
+        type Scopes InstancesUpdateAccessConfig =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesUpdateAccessConfig'{..}
+          = go _iuacProject _iuacZone _iuacInstance
+              (Just _iuacNetworkInterface)
+              _iuacRequestId
+              (Just AltJSON)
+              _iuacPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesUpdateAccessConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs b/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.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.Compute.Instances.UpdateNetworkInterface
+-- 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 an instance\'s network interface. This method follows PATCH
+-- semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.updateNetworkInterface@.
+module Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
+    (
+    -- * REST Resource
+      InstancesUpdateNetworkInterfaceResource
+
+    -- * Creating a Request
+    , instancesUpdateNetworkInterface
+    , InstancesUpdateNetworkInterface
+
+    -- * Request Lenses
+    , iuniRequestId
+    , iuniProject
+    , iuniNetworkInterface
+    , iuniZone
+    , iuniPayload
+    , iuniInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.updateNetworkInterface@ method which the
+-- 'InstancesUpdateNetworkInterface' request conforms to.
+type InstancesUpdateNetworkInterfaceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "updateNetworkInterface" :>
+                       QueryParam "networkInterface" Text :>
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] NetworkInterface :>
+                               Patch '[JSON] Operation
+
+-- | Updates an instance\'s network interface. This method follows PATCH
+-- semantics.
+--
+-- /See:/ 'instancesUpdateNetworkInterface' smart constructor.
+data InstancesUpdateNetworkInterface = InstancesUpdateNetworkInterface'
+    { _iuniRequestId        :: !(Maybe Text)
+    , _iuniProject          :: !Text
+    , _iuniNetworkInterface :: !Text
+    , _iuniZone             :: !Text
+    , _iuniPayload          :: !NetworkInterface
+    , _iuniInstance         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesUpdateNetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iuniRequestId'
+--
+-- * 'iuniProject'
+--
+-- * 'iuniNetworkInterface'
+--
+-- * 'iuniZone'
+--
+-- * 'iuniPayload'
+--
+-- * 'iuniInstance'
+instancesUpdateNetworkInterface
+    :: Text -- ^ 'iuniProject'
+    -> Text -- ^ 'iuniNetworkInterface'
+    -> Text -- ^ 'iuniZone'
+    -> NetworkInterface -- ^ 'iuniPayload'
+    -> Text -- ^ 'iuniInstance'
+    -> InstancesUpdateNetworkInterface
+instancesUpdateNetworkInterface pIuniProject_ pIuniNetworkInterface_ pIuniZone_ pIuniPayload_ pIuniInstance_ =
+    InstancesUpdateNetworkInterface'
+    { _iuniRequestId = Nothing
+    , _iuniProject = pIuniProject_
+    , _iuniNetworkInterface = pIuniNetworkInterface_
+    , _iuniZone = pIuniZone_
+    , _iuniPayload = pIuniPayload_
+    , _iuniInstance = pIuniInstance_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iuniRequestId :: Lens' InstancesUpdateNetworkInterface (Maybe Text)
+iuniRequestId
+  = lens _iuniRequestId
+      (\ s a -> s{_iuniRequestId = a})
+
+-- | Project ID for this request.
+iuniProject :: Lens' InstancesUpdateNetworkInterface Text
+iuniProject
+  = lens _iuniProject (\ s a -> s{_iuniProject = a})
+
+-- | The name of the network interface to update.
+iuniNetworkInterface :: Lens' InstancesUpdateNetworkInterface Text
+iuniNetworkInterface
+  = lens _iuniNetworkInterface
+      (\ s a -> s{_iuniNetworkInterface = a})
+
+-- | The name of the zone for this request.
+iuniZone :: Lens' InstancesUpdateNetworkInterface Text
+iuniZone = lens _iuniZone (\ s a -> s{_iuniZone = a})
+
+-- | Multipart request metadata.
+iuniPayload :: Lens' InstancesUpdateNetworkInterface NetworkInterface
+iuniPayload
+  = lens _iuniPayload (\ s a -> s{_iuniPayload = a})
+
+-- | The instance name for this request.
+iuniInstance :: Lens' InstancesUpdateNetworkInterface Text
+iuniInstance
+  = lens _iuniInstance (\ s a -> s{_iuniInstance = a})
+
+instance GoogleRequest
+         InstancesUpdateNetworkInterface where
+        type Rs InstancesUpdateNetworkInterface = Operation
+        type Scopes InstancesUpdateNetworkInterface =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InstancesUpdateNetworkInterface'{..}
+          = go _iuniProject _iuniZone _iuniInstance
+              (Just _iuniNetworkInterface)
+              _iuniRequestId
+              (Just AltJSON)
+              _iuniPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstancesUpdateNetworkInterfaceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
+-- 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 an aggregated list of interconnect attachments.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.aggregatedList@.
+module Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
+    (
+    -- * REST Resource
+      InterconnectAttachmentsAggregatedListResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsAggregatedList
+    , InterconnectAttachmentsAggregatedList
+
+    -- * Request Lenses
+    , iaalOrderBy
+    , iaalProject
+    , iaalFilter
+    , iaalPageToken
+    , iaalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.aggregatedList@ method which the
+-- 'InterconnectAttachmentsAggregatedList' request conforms to.
+type InterconnectAttachmentsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "interconnectAttachments" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] InterconnectAttachmentAggregatedList
+
+-- | Retrieves an aggregated list of interconnect attachments.
+--
+-- /See:/ 'interconnectAttachmentsAggregatedList' smart constructor.
+data InterconnectAttachmentsAggregatedList = InterconnectAttachmentsAggregatedList'
+    { _iaalOrderBy    :: !(Maybe Text)
+    , _iaalProject    :: !Text
+    , _iaalFilter     :: !(Maybe Text)
+    , _iaalPageToken  :: !(Maybe Text)
+    , _iaalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaalOrderBy'
+--
+-- * 'iaalProject'
+--
+-- * 'iaalFilter'
+--
+-- * 'iaalPageToken'
+--
+-- * 'iaalMaxResults'
+interconnectAttachmentsAggregatedList
+    :: Text -- ^ 'iaalProject'
+    -> InterconnectAttachmentsAggregatedList
+interconnectAttachmentsAggregatedList pIaalProject_ =
+    InterconnectAttachmentsAggregatedList'
+    { _iaalOrderBy = Nothing
+    , _iaalProject = pIaalProject_
+    , _iaalFilter = Nothing
+    , _iaalPageToken = Nothing
+    , _iaalMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+iaalOrderBy :: Lens' InterconnectAttachmentsAggregatedList (Maybe Text)
+iaalOrderBy
+  = lens _iaalOrderBy (\ s a -> s{_iaalOrderBy = a})
+
+-- | Project ID for this request.
+iaalProject :: Lens' InterconnectAttachmentsAggregatedList Text
+iaalProject
+  = lens _iaalProject (\ s a -> s{_iaalProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+iaalFilter :: Lens' InterconnectAttachmentsAggregatedList (Maybe Text)
+iaalFilter
+  = lens _iaalFilter (\ s a -> s{_iaalFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+iaalPageToken :: Lens' InterconnectAttachmentsAggregatedList (Maybe Text)
+iaalPageToken
+  = lens _iaalPageToken
+      (\ s a -> s{_iaalPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+iaalMaxResults :: Lens' InterconnectAttachmentsAggregatedList Word32
+iaalMaxResults
+  = lens _iaalMaxResults
+      (\ s a -> s{_iaalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+         InterconnectAttachmentsAggregatedList where
+        type Rs InterconnectAttachmentsAggregatedList =
+             InterconnectAttachmentAggregatedList
+        type Scopes InterconnectAttachmentsAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          InterconnectAttachmentsAggregatedList'{..}
+          = go _iaalProject _iaalOrderBy _iaalFilter
+              _iaalPageToken
+              (Just _iaalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InterconnectAttachmentsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.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 specified interconnect attachment.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.delete@.
+module Network.Google.Resource.Compute.InterconnectAttachments.Delete
+    (
+    -- * REST Resource
+      InterconnectAttachmentsDeleteResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsDelete
+    , InterconnectAttachmentsDelete
+
+    -- * Request Lenses
+    , iadRequestId
+    , iadProject
+    , iadRegion
+    , iadInterconnectAttachment
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.delete@ method which the
+-- 'InterconnectAttachmentsDelete' request conforms to.
+type InterconnectAttachmentsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "interconnectAttachments" :>
+                   Capture "interconnectAttachment" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified interconnect attachment.
+--
+-- /See:/ 'interconnectAttachmentsDelete' smart constructor.
+data InterconnectAttachmentsDelete = InterconnectAttachmentsDelete'
+    { _iadRequestId              :: !(Maybe Text)
+    , _iadProject                :: !Text
+    , _iadRegion                 :: !Text
+    , _iadInterconnectAttachment :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iadRequestId'
+--
+-- * 'iadProject'
+--
+-- * 'iadRegion'
+--
+-- * 'iadInterconnectAttachment'
+interconnectAttachmentsDelete
+    :: Text -- ^ 'iadProject'
+    -> Text -- ^ 'iadRegion'
+    -> Text -- ^ 'iadInterconnectAttachment'
+    -> InterconnectAttachmentsDelete
+interconnectAttachmentsDelete pIadProject_ pIadRegion_ pIadInterconnectAttachment_ =
+    InterconnectAttachmentsDelete'
+    { _iadRequestId = Nothing
+    , _iadProject = pIadProject_
+    , _iadRegion = pIadRegion_
+    , _iadInterconnectAttachment = pIadInterconnectAttachment_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iadRequestId :: Lens' InterconnectAttachmentsDelete (Maybe Text)
+iadRequestId
+  = lens _iadRequestId (\ s a -> s{_iadRequestId = a})
+
+-- | Project ID for this request.
+iadProject :: Lens' InterconnectAttachmentsDelete Text
+iadProject
+  = lens _iadProject (\ s a -> s{_iadProject = a})
+
+-- | Name of the region for this request.
+iadRegion :: Lens' InterconnectAttachmentsDelete Text
+iadRegion
+  = lens _iadRegion (\ s a -> s{_iadRegion = a})
+
+-- | Name of the interconnect attachment to delete.
+iadInterconnectAttachment :: Lens' InterconnectAttachmentsDelete Text
+iadInterconnectAttachment
+  = lens _iadInterconnectAttachment
+      (\ s a -> s{_iadInterconnectAttachment = a})
+
+instance GoogleRequest InterconnectAttachmentsDelete
+         where
+        type Rs InterconnectAttachmentsDelete = Operation
+        type Scopes InterconnectAttachmentsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectAttachmentsDelete'{..}
+          = go _iadProject _iadRegion
+              _iadInterconnectAttachment
+              _iadRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InterconnectAttachmentsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.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)
+--
+-- Returns the specified interconnect attachment.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.get@.
+module Network.Google.Resource.Compute.InterconnectAttachments.Get
+    (
+    -- * REST Resource
+      InterconnectAttachmentsGetResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsGet
+    , InterconnectAttachmentsGet
+
+    -- * Request Lenses
+    , iagProject
+    , iagRegion
+    , iagInterconnectAttachment
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.get@ method which the
+-- 'InterconnectAttachmentsGet' request conforms to.
+type InterconnectAttachmentsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "interconnectAttachments" :>
+                   Capture "interconnectAttachment" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] InterconnectAttachment
+
+-- | Returns the specified interconnect attachment.
+--
+-- /See:/ 'interconnectAttachmentsGet' smart constructor.
+data InterconnectAttachmentsGet = InterconnectAttachmentsGet'
+    { _iagProject                :: !Text
+    , _iagRegion                 :: !Text
+    , _iagInterconnectAttachment :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iagProject'
+--
+-- * 'iagRegion'
+--
+-- * 'iagInterconnectAttachment'
+interconnectAttachmentsGet
+    :: Text -- ^ 'iagProject'
+    -> Text -- ^ 'iagRegion'
+    -> Text -- ^ 'iagInterconnectAttachment'
+    -> InterconnectAttachmentsGet
+interconnectAttachmentsGet pIagProject_ pIagRegion_ pIagInterconnectAttachment_ =
+    InterconnectAttachmentsGet'
+    { _iagProject = pIagProject_
+    , _iagRegion = pIagRegion_
+    , _iagInterconnectAttachment = pIagInterconnectAttachment_
+    }
+
+-- | Project ID for this request.
+iagProject :: Lens' InterconnectAttachmentsGet Text
+iagProject
+  = lens _iagProject (\ s a -> s{_iagProject = a})
+
+-- | Name of the region for this request.
+iagRegion :: Lens' InterconnectAttachmentsGet Text
+iagRegion
+  = lens _iagRegion (\ s a -> s{_iagRegion = a})
+
+-- | Name of the interconnect attachment to return.
+iagInterconnectAttachment :: Lens' InterconnectAttachmentsGet Text
+iagInterconnectAttachment
+  = lens _iagInterconnectAttachment
+      (\ s a -> s{_iagInterconnectAttachment = a})
+
+instance GoogleRequest InterconnectAttachmentsGet
+         where
+        type Rs InterconnectAttachmentsGet =
+             InterconnectAttachment
+        type Scopes InterconnectAttachmentsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectAttachmentsGet'{..}
+          = go _iagProject _iagRegion
+              _iagInterconnectAttachment
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectAttachmentsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.Insert
+-- 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 an InterconnectAttachment in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.insert@.
+module Network.Google.Resource.Compute.InterconnectAttachments.Insert
+    (
+    -- * REST Resource
+      InterconnectAttachmentsInsertResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsInsert
+    , InterconnectAttachmentsInsert
+
+    -- * Request Lenses
+    , iaiRequestId
+    , iaiProject
+    , iaiPayload
+    , iaiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.insert@ method which the
+-- 'InterconnectAttachmentsInsert' request conforms to.
+type InterconnectAttachmentsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "interconnectAttachments" :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] InterconnectAttachment :>
+                         Post '[JSON] Operation
+
+-- | Creates an InterconnectAttachment in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'interconnectAttachmentsInsert' smart constructor.
+data InterconnectAttachmentsInsert = InterconnectAttachmentsInsert'
+    { _iaiRequestId :: !(Maybe Text)
+    , _iaiProject   :: !Text
+    , _iaiPayload   :: !InterconnectAttachment
+    , _iaiRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaiRequestId'
+--
+-- * 'iaiProject'
+--
+-- * 'iaiPayload'
+--
+-- * 'iaiRegion'
+interconnectAttachmentsInsert
+    :: Text -- ^ 'iaiProject'
+    -> InterconnectAttachment -- ^ 'iaiPayload'
+    -> Text -- ^ 'iaiRegion'
+    -> InterconnectAttachmentsInsert
+interconnectAttachmentsInsert pIaiProject_ pIaiPayload_ pIaiRegion_ =
+    InterconnectAttachmentsInsert'
+    { _iaiRequestId = Nothing
+    , _iaiProject = pIaiProject_
+    , _iaiPayload = pIaiPayload_
+    , _iaiRegion = pIaiRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iaiRequestId :: Lens' InterconnectAttachmentsInsert (Maybe Text)
+iaiRequestId
+  = lens _iaiRequestId (\ s a -> s{_iaiRequestId = a})
+
+-- | Project ID for this request.
+iaiProject :: Lens' InterconnectAttachmentsInsert Text
+iaiProject
+  = lens _iaiProject (\ s a -> s{_iaiProject = a})
+
+-- | Multipart request metadata.
+iaiPayload :: Lens' InterconnectAttachmentsInsert InterconnectAttachment
+iaiPayload
+  = lens _iaiPayload (\ s a -> s{_iaiPayload = a})
+
+-- | Name of the region for this request.
+iaiRegion :: Lens' InterconnectAttachmentsInsert Text
+iaiRegion
+  = lens _iaiRegion (\ s a -> s{_iaiRegion = a})
+
+instance GoogleRequest InterconnectAttachmentsInsert
+         where
+        type Rs InterconnectAttachmentsInsert = Operation
+        type Scopes InterconnectAttachmentsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectAttachmentsInsert'{..}
+          = go _iaiProject _iaiRegion _iaiRequestId
+              (Just AltJSON)
+              _iaiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InterconnectAttachmentsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.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)
+--
+-- Retrieves the list of interconnect attachments contained within the
+-- specified region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.list@.
+module Network.Google.Resource.Compute.InterconnectAttachments.List
+    (
+    -- * REST Resource
+      InterconnectAttachmentsListResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsList
+    , InterconnectAttachmentsList
+
+    -- * Request Lenses
+    , ialOrderBy
+    , ialProject
+    , ialFilter
+    , ialRegion
+    , ialPageToken
+    , ialMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.list@ method which the
+-- 'InterconnectAttachmentsList' request conforms to.
+type InterconnectAttachmentsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "interconnectAttachments" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] InterconnectAttachmentList
+
+-- | Retrieves the list of interconnect attachments contained within the
+-- specified region.
+--
+-- /See:/ 'interconnectAttachmentsList' smart constructor.
+data InterconnectAttachmentsList = InterconnectAttachmentsList'
+    { _ialOrderBy    :: !(Maybe Text)
+    , _ialProject    :: !Text
+    , _ialFilter     :: !(Maybe Text)
+    , _ialRegion     :: !Text
+    , _ialPageToken  :: !(Maybe Text)
+    , _ialMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialOrderBy'
+--
+-- * 'ialProject'
+--
+-- * 'ialFilter'
+--
+-- * 'ialRegion'
+--
+-- * 'ialPageToken'
+--
+-- * 'ialMaxResults'
+interconnectAttachmentsList
+    :: Text -- ^ 'ialProject'
+    -> Text -- ^ 'ialRegion'
+    -> InterconnectAttachmentsList
+interconnectAttachmentsList pIalProject_ pIalRegion_ =
+    InterconnectAttachmentsList'
+    { _ialOrderBy = Nothing
+    , _ialProject = pIalProject_
+    , _ialFilter = Nothing
+    , _ialRegion = pIalRegion_
+    , _ialPageToken = Nothing
+    , _ialMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ialOrderBy :: Lens' InterconnectAttachmentsList (Maybe Text)
+ialOrderBy
+  = lens _ialOrderBy (\ s a -> s{_ialOrderBy = a})
+
+-- | Project ID for this request.
+ialProject :: Lens' InterconnectAttachmentsList Text
+ialProject
+  = lens _ialProject (\ s a -> s{_ialProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ialFilter :: Lens' InterconnectAttachmentsList (Maybe Text)
+ialFilter
+  = lens _ialFilter (\ s a -> s{_ialFilter = a})
+
+-- | Name of the region for this request.
+ialRegion :: Lens' InterconnectAttachmentsList Text
+ialRegion
+  = lens _ialRegion (\ s a -> s{_ialRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ialPageToken :: Lens' InterconnectAttachmentsList (Maybe Text)
+ialPageToken
+  = lens _ialPageToken (\ s a -> s{_ialPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ialMaxResults :: Lens' InterconnectAttachmentsList Word32
+ialMaxResults
+  = lens _ialMaxResults
+      (\ s a -> s{_ialMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InterconnectAttachmentsList
+         where
+        type Rs InterconnectAttachmentsList =
+             InterconnectAttachmentList
+        type Scopes InterconnectAttachmentsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectAttachmentsList'{..}
+          = go _ialProject _ialRegion _ialOrderBy _ialFilter
+              _ialPageToken
+              (Just _ialMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectAttachmentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectAttachments.Patch
+-- 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 specified interconnect attachment with the data included in
+-- the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectAttachments.patch@.
+module Network.Google.Resource.Compute.InterconnectAttachments.Patch
+    (
+    -- * REST Resource
+      InterconnectAttachmentsPatchResource
+
+    -- * Creating a Request
+    , interconnectAttachmentsPatch
+    , InterconnectAttachmentsPatch
+
+    -- * Request Lenses
+    , iapRequestId
+    , iapProject
+    , iapPayload
+    , iapRegion
+    , iapInterconnectAttachment
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectAttachments.patch@ method which the
+-- 'InterconnectAttachmentsPatch' request conforms to.
+type InterconnectAttachmentsPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "interconnectAttachments" :>
+                   Capture "interconnectAttachment" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InterconnectAttachment :>
+                           Patch '[JSON] Operation
+
+-- | Updates the specified interconnect attachment with the data included in
+-- the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
+--
+-- /See:/ 'interconnectAttachmentsPatch' smart constructor.
+data InterconnectAttachmentsPatch = InterconnectAttachmentsPatch'
+    { _iapRequestId              :: !(Maybe Text)
+    , _iapProject                :: !Text
+    , _iapPayload                :: !InterconnectAttachment
+    , _iapRegion                 :: !Text
+    , _iapInterconnectAttachment :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectAttachmentsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapRequestId'
+--
+-- * 'iapProject'
+--
+-- * 'iapPayload'
+--
+-- * 'iapRegion'
+--
+-- * 'iapInterconnectAttachment'
+interconnectAttachmentsPatch
+    :: Text -- ^ 'iapProject'
+    -> InterconnectAttachment -- ^ 'iapPayload'
+    -> Text -- ^ 'iapRegion'
+    -> Text -- ^ 'iapInterconnectAttachment'
+    -> InterconnectAttachmentsPatch
+interconnectAttachmentsPatch pIapProject_ pIapPayload_ pIapRegion_ pIapInterconnectAttachment_ =
+    InterconnectAttachmentsPatch'
+    { _iapRequestId = Nothing
+    , _iapProject = pIapProject_
+    , _iapPayload = pIapPayload_
+    , _iapRegion = pIapRegion_
+    , _iapInterconnectAttachment = pIapInterconnectAttachment_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+iapRequestId :: Lens' InterconnectAttachmentsPatch (Maybe Text)
+iapRequestId
+  = lens _iapRequestId (\ s a -> s{_iapRequestId = a})
+
+-- | Project ID for this request.
+iapProject :: Lens' InterconnectAttachmentsPatch Text
+iapProject
+  = lens _iapProject (\ s a -> s{_iapProject = a})
+
+-- | Multipart request metadata.
+iapPayload :: Lens' InterconnectAttachmentsPatch InterconnectAttachment
+iapPayload
+  = lens _iapPayload (\ s a -> s{_iapPayload = a})
+
+-- | Name of the region scoping this request.
+iapRegion :: Lens' InterconnectAttachmentsPatch Text
+iapRegion
+  = lens _iapRegion (\ s a -> s{_iapRegion = a})
+
+-- | Name of the interconnect attachment to patch.
+iapInterconnectAttachment :: Lens' InterconnectAttachmentsPatch Text
+iapInterconnectAttachment
+  = lens _iapInterconnectAttachment
+      (\ s a -> s{_iapInterconnectAttachment = a})
+
+instance GoogleRequest InterconnectAttachmentsPatch
+         where
+        type Rs InterconnectAttachmentsPatch = Operation
+        type Scopes InterconnectAttachmentsPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectAttachmentsPatch'{..}
+          = go _iapProject _iapRegion
+              _iapInterconnectAttachment
+              _iapRequestId
+              (Just AltJSON)
+              _iapPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectAttachmentsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs b/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.InterconnectLocations.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)
+--
+-- Returns the details for the specified interconnect location. Gets a list
+-- of available interconnect locations by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectLocations.get@.
+module Network.Google.Resource.Compute.InterconnectLocations.Get
+    (
+    -- * REST Resource
+      InterconnectLocationsGetResource
+
+    -- * Creating a Request
+    , interconnectLocationsGet
+    , InterconnectLocationsGet
+
+    -- * Request Lenses
+    , ilgProject
+    , ilgInterconnectLocation
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectLocations.get@ method which the
+-- 'InterconnectLocationsGet' request conforms to.
+type InterconnectLocationsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnectLocations" :>
+                 Capture "interconnectLocation" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] InterconnectLocation
+
+-- | Returns the details for the specified interconnect location. Gets a list
+-- of available interconnect locations by making a list() request.
+--
+-- /See:/ 'interconnectLocationsGet' smart constructor.
+data InterconnectLocationsGet = InterconnectLocationsGet'
+    { _ilgProject              :: !Text
+    , _ilgInterconnectLocation :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilgProject'
+--
+-- * 'ilgInterconnectLocation'
+interconnectLocationsGet
+    :: Text -- ^ 'ilgProject'
+    -> Text -- ^ 'ilgInterconnectLocation'
+    -> InterconnectLocationsGet
+interconnectLocationsGet pIlgProject_ pIlgInterconnectLocation_ =
+    InterconnectLocationsGet'
+    { _ilgProject = pIlgProject_
+    , _ilgInterconnectLocation = pIlgInterconnectLocation_
+    }
+
+-- | Project ID for this request.
+ilgProject :: Lens' InterconnectLocationsGet Text
+ilgProject
+  = lens _ilgProject (\ s a -> s{_ilgProject = a})
+
+-- | Name of the interconnect location to return.
+ilgInterconnectLocation :: Lens' InterconnectLocationsGet Text
+ilgInterconnectLocation
+  = lens _ilgInterconnectLocation
+      (\ s a -> s{_ilgInterconnectLocation = a})
+
+instance GoogleRequest InterconnectLocationsGet where
+        type Rs InterconnectLocationsGet =
+             InterconnectLocation
+        type Scopes InterconnectLocationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectLocationsGet'{..}
+          = go _ilgProject _ilgInterconnectLocation
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectLocationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs b/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InterconnectLocations/List.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.Compute.InterconnectLocations.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)
+--
+-- Retrieves the list of interconnect locations available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnectLocations.list@.
+module Network.Google.Resource.Compute.InterconnectLocations.List
+    (
+    -- * REST Resource
+      InterconnectLocationsListResource
+
+    -- * Creating a Request
+    , interconnectLocationsList
+    , InterconnectLocationsList
+
+    -- * Request Lenses
+    , illOrderBy
+    , illProject
+    , illFilter
+    , illPageToken
+    , illMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnectLocations.list@ method which the
+-- 'InterconnectLocationsList' request conforms to.
+type InterconnectLocationsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnectLocations" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] InterconnectLocationList
+
+-- | Retrieves the list of interconnect locations available to the specified
+-- project.
+--
+-- /See:/ 'interconnectLocationsList' smart constructor.
+data InterconnectLocationsList = InterconnectLocationsList'
+    { _illOrderBy    :: !(Maybe Text)
+    , _illProject    :: !Text
+    , _illFilter     :: !(Maybe Text)
+    , _illPageToken  :: !(Maybe Text)
+    , _illMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectLocationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'illOrderBy'
+--
+-- * 'illProject'
+--
+-- * 'illFilter'
+--
+-- * 'illPageToken'
+--
+-- * 'illMaxResults'
+interconnectLocationsList
+    :: Text -- ^ 'illProject'
+    -> InterconnectLocationsList
+interconnectLocationsList pIllProject_ =
+    InterconnectLocationsList'
+    { _illOrderBy = Nothing
+    , _illProject = pIllProject_
+    , _illFilter = Nothing
+    , _illPageToken = Nothing
+    , _illMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+illOrderBy :: Lens' InterconnectLocationsList (Maybe Text)
+illOrderBy
+  = lens _illOrderBy (\ s a -> s{_illOrderBy = a})
+
+-- | Project ID for this request.
+illProject :: Lens' InterconnectLocationsList Text
+illProject
+  = lens _illProject (\ s a -> s{_illProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+illFilter :: Lens' InterconnectLocationsList (Maybe Text)
+illFilter
+  = lens _illFilter (\ s a -> s{_illFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+illPageToken :: Lens' InterconnectLocationsList (Maybe Text)
+illPageToken
+  = lens _illPageToken (\ s a -> s{_illPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+illMaxResults :: Lens' InterconnectLocationsList Word32
+illMaxResults
+  = lens _illMaxResults
+      (\ s a -> s{_illMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InterconnectLocationsList
+         where
+        type Rs InterconnectLocationsList =
+             InterconnectLocationList
+        type Scopes InterconnectLocationsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectLocationsList'{..}
+          = go _illProject _illOrderBy _illFilter _illPageToken
+              (Just _illMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectLocationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs b/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.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 specified interconnect.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.delete@.
+module Network.Google.Resource.Compute.Interconnects.Delete
+    (
+    -- * REST Resource
+      InterconnectsDeleteResource
+
+    -- * Creating a Request
+    , interconnectsDelete
+    , InterconnectsDelete
+
+    -- * Request Lenses
+    , intRequestId
+    , intProject
+    , intInterconnect
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.delete@ method which the
+-- 'InterconnectsDelete' request conforms to.
+type InterconnectsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 Capture "interconnect" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified interconnect.
+--
+-- /See:/ 'interconnectsDelete' smart constructor.
+data InterconnectsDelete = InterconnectsDelete'
+    { _intRequestId    :: !(Maybe Text)
+    , _intProject      :: !Text
+    , _intInterconnect :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'intRequestId'
+--
+-- * 'intProject'
+--
+-- * 'intInterconnect'
+interconnectsDelete
+    :: Text -- ^ 'intProject'
+    -> Text -- ^ 'intInterconnect'
+    -> InterconnectsDelete
+interconnectsDelete pIntProject_ pIntInterconnect_ =
+    InterconnectsDelete'
+    { _intRequestId = Nothing
+    , _intProject = pIntProject_
+    , _intInterconnect = pIntInterconnect_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+intRequestId :: Lens' InterconnectsDelete (Maybe Text)
+intRequestId
+  = lens _intRequestId (\ s a -> s{_intRequestId = a})
+
+-- | Project ID for this request.
+intProject :: Lens' InterconnectsDelete Text
+intProject
+  = lens _intProject (\ s a -> s{_intProject = a})
+
+-- | Name of the interconnect to delete.
+intInterconnect :: Lens' InterconnectsDelete Text
+intInterconnect
+  = lens _intInterconnect
+      (\ s a -> s{_intInterconnect = a})
+
+instance GoogleRequest InterconnectsDelete where
+        type Rs InterconnectsDelete = Operation
+        type Scopes InterconnectsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectsDelete'{..}
+          = go _intProject _intInterconnect _intRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Get.hs b/gen/Network/Google/Resource/Compute/Interconnects/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Get.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.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)
+--
+-- Returns the specified interconnect. Get a list of available
+-- interconnects by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.get@.
+module Network.Google.Resource.Compute.Interconnects.Get
+    (
+    -- * REST Resource
+      InterconnectsGetResource
+
+    -- * Creating a Request
+    , interconnectsGet
+    , InterconnectsGet
+
+    -- * Request Lenses
+    , iProject
+    , iInterconnect
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.get@ method which the
+-- 'InterconnectsGet' request conforms to.
+type InterconnectsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 Capture "interconnect" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Interconnect
+
+-- | Returns the specified interconnect. Get a list of available
+-- interconnects by making a list() request.
+--
+-- /See:/ 'interconnectsGet' smart constructor.
+data InterconnectsGet = InterconnectsGet'
+    { _iProject      :: !Text
+    , _iInterconnect :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iProject'
+--
+-- * 'iInterconnect'
+interconnectsGet
+    :: Text -- ^ 'iProject'
+    -> Text -- ^ 'iInterconnect'
+    -> InterconnectsGet
+interconnectsGet pIProject_ pIInterconnect_ =
+    InterconnectsGet'
+    { _iProject = pIProject_
+    , _iInterconnect = pIInterconnect_
+    }
+
+-- | Project ID for this request.
+iProject :: Lens' InterconnectsGet Text
+iProject = lens _iProject (\ s a -> s{_iProject = a})
+
+-- | Name of the interconnect to return.
+iInterconnect :: Lens' InterconnectsGet Text
+iInterconnect
+  = lens _iInterconnect
+      (\ s a -> s{_iInterconnect = a})
+
+instance GoogleRequest InterconnectsGet where
+        type Rs InterconnectsGet = Interconnect
+        type Scopes InterconnectsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectsGet'{..}
+          = go _iProject _iInterconnect (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs b/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.GetDiagnostics
+-- 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 the interconnectDiagnostics for the specified interconnect.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.getDiagnostics@.
+module Network.Google.Resource.Compute.Interconnects.GetDiagnostics
+    (
+    -- * REST Resource
+      InterconnectsGetDiagnosticsResource
+
+    -- * Creating a Request
+    , interconnectsGetDiagnostics
+    , InterconnectsGetDiagnostics
+
+    -- * Request Lenses
+    , igdsProject
+    , igdsInterconnect
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.getDiagnostics@ method which the
+-- 'InterconnectsGetDiagnostics' request conforms to.
+type InterconnectsGetDiagnosticsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 Capture "interconnect" Text :>
+                   "getDiagnostics" :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] InterconnectsGetDiagnosticsResponse
+
+-- | Returns the interconnectDiagnostics for the specified interconnect.
+--
+-- /See:/ 'interconnectsGetDiagnostics' smart constructor.
+data InterconnectsGetDiagnostics = InterconnectsGetDiagnostics'
+    { _igdsProject      :: !Text
+    , _igdsInterconnect :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsGetDiagnostics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igdsProject'
+--
+-- * 'igdsInterconnect'
+interconnectsGetDiagnostics
+    :: Text -- ^ 'igdsProject'
+    -> Text -- ^ 'igdsInterconnect'
+    -> InterconnectsGetDiagnostics
+interconnectsGetDiagnostics pIgdsProject_ pIgdsInterconnect_ =
+    InterconnectsGetDiagnostics'
+    { _igdsProject = pIgdsProject_
+    , _igdsInterconnect = pIgdsInterconnect_
+    }
+
+-- | Project ID for this request.
+igdsProject :: Lens' InterconnectsGetDiagnostics Text
+igdsProject
+  = lens _igdsProject (\ s a -> s{_igdsProject = a})
+
+-- | Name of the interconnect resource to query.
+igdsInterconnect :: Lens' InterconnectsGetDiagnostics Text
+igdsInterconnect
+  = lens _igdsInterconnect
+      (\ s a -> s{_igdsInterconnect = a})
+
+instance GoogleRequest InterconnectsGetDiagnostics
+         where
+        type Rs InterconnectsGetDiagnostics =
+             InterconnectsGetDiagnosticsResponse
+        type Scopes InterconnectsGetDiagnostics =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectsGetDiagnostics'{..}
+          = go _igdsProject _igdsInterconnect (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsGetDiagnosticsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs b/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.Insert
+-- 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 Interconnect in the specified project using the data included
+-- in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.insert@.
+module Network.Google.Resource.Compute.Interconnects.Insert
+    (
+    -- * REST Resource
+      InterconnectsInsertResource
+
+    -- * Creating a Request
+    , interconnectsInsert
+    , InterconnectsInsert
+
+    -- * Request Lenses
+    , intnRequestId
+    , intnProject
+    , intnPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.insert@ method which the
+-- 'InterconnectsInsert' request conforms to.
+type InterconnectsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Interconnect :>
+                       Post '[JSON] Operation
+
+-- | Creates a Interconnect in the specified project using the data included
+-- in the request.
+--
+-- /See:/ 'interconnectsInsert' smart constructor.
+data InterconnectsInsert = InterconnectsInsert'
+    { _intnRequestId :: !(Maybe Text)
+    , _intnProject   :: !Text
+    , _intnPayload   :: !Interconnect
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'intnRequestId'
+--
+-- * 'intnProject'
+--
+-- * 'intnPayload'
+interconnectsInsert
+    :: Text -- ^ 'intnProject'
+    -> Interconnect -- ^ 'intnPayload'
+    -> InterconnectsInsert
+interconnectsInsert pIntnProject_ pIntnPayload_ =
+    InterconnectsInsert'
+    { _intnRequestId = Nothing
+    , _intnProject = pIntnProject_
+    , _intnPayload = pIntnPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+intnRequestId :: Lens' InterconnectsInsert (Maybe Text)
+intnRequestId
+  = lens _intnRequestId
+      (\ s a -> s{_intnRequestId = a})
+
+-- | Project ID for this request.
+intnProject :: Lens' InterconnectsInsert Text
+intnProject
+  = lens _intnProject (\ s a -> s{_intnProject = a})
+
+-- | Multipart request metadata.
+intnPayload :: Lens' InterconnectsInsert Interconnect
+intnPayload
+  = lens _intnPayload (\ s a -> s{_intnPayload = a})
+
+instance GoogleRequest InterconnectsInsert where
+        type Rs InterconnectsInsert = Operation
+        type Scopes InterconnectsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectsInsert'{..}
+          = go _intnProject _intnRequestId (Just AltJSON)
+              _intnPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/List.hs b/gen/Network/Google/Resource/Compute/Interconnects/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/List.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.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)
+--
+-- Retrieves the list of interconnect available to the specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.list@.
+module Network.Google.Resource.Compute.Interconnects.List
+    (
+    -- * REST Resource
+      InterconnectsListResource
+
+    -- * Creating a Request
+    , interconnectsList
+    , InterconnectsList
+
+    -- * Request Lenses
+    , ilOrderBy
+    , ilProject
+    , ilFilter
+    , ilPageToken
+    , ilMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.list@ method which the
+-- 'InterconnectsList' request conforms to.
+type InterconnectsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] InterconnectList
+
+-- | Retrieves the list of interconnect available to the specified project.
+--
+-- /See:/ 'interconnectsList' smart constructor.
+data InterconnectsList = InterconnectsList'
+    { _ilOrderBy    :: !(Maybe Text)
+    , _ilProject    :: !Text
+    , _ilFilter     :: !(Maybe Text)
+    , _ilPageToken  :: !(Maybe Text)
+    , _ilMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilOrderBy'
+--
+-- * 'ilProject'
+--
+-- * 'ilFilter'
+--
+-- * 'ilPageToken'
+--
+-- * 'ilMaxResults'
+interconnectsList
+    :: Text -- ^ 'ilProject'
+    -> InterconnectsList
+interconnectsList pIlProject_ =
+    InterconnectsList'
+    { _ilOrderBy = Nothing
+    , _ilProject = pIlProject_
+    , _ilFilter = Nothing
+    , _ilPageToken = Nothing
+    , _ilMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ilOrderBy :: Lens' InterconnectsList (Maybe Text)
+ilOrderBy
+  = lens _ilOrderBy (\ s a -> s{_ilOrderBy = a})
+
+-- | Project ID for this request.
+ilProject :: Lens' InterconnectsList Text
+ilProject
+  = lens _ilProject (\ s a -> s{_ilProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ilFilter :: Lens' InterconnectsList (Maybe Text)
+ilFilter = lens _ilFilter (\ s a -> s{_ilFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ilPageToken :: Lens' InterconnectsList (Maybe Text)
+ilPageToken
+  = lens _ilPageToken (\ s a -> s{_ilPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ilMaxResults :: Lens' InterconnectsList Word32
+ilMaxResults
+  = lens _ilMaxResults (\ s a -> s{_ilMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InterconnectsList where
+        type Rs InterconnectsList = InterconnectList
+        type Scopes InterconnectsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient InterconnectsList'{..}
+          = go _ilProject _ilOrderBy _ilFilter _ilPageToken
+              (Just _ilMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs b/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Interconnects.Patch
+-- 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 specified interconnect with the data included in the
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.interconnects.patch@.
+module Network.Google.Resource.Compute.Interconnects.Patch
+    (
+    -- * REST Resource
+      InterconnectsPatchResource
+
+    -- * Creating a Request
+    , interconnectsPatch
+    , InterconnectsPatch
+
+    -- * Request Lenses
+    , ipRequestId
+    , ipProject
+    , ipPayload
+    , ipInterconnect
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.interconnects.patch@ method which the
+-- 'InterconnectsPatch' request conforms to.
+type InterconnectsPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "interconnects" :>
+                 Capture "interconnect" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Interconnect :>
+                         Patch '[JSON] Operation
+
+-- | Updates the specified interconnect with the data included in the
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
+--
+-- /See:/ 'interconnectsPatch' smart constructor.
+data InterconnectsPatch = InterconnectsPatch'
+    { _ipRequestId    :: !(Maybe Text)
+    , _ipProject      :: !Text
+    , _ipPayload      :: !Interconnect
+    , _ipInterconnect :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InterconnectsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipRequestId'
+--
+-- * 'ipProject'
+--
+-- * 'ipPayload'
+--
+-- * 'ipInterconnect'
+interconnectsPatch
+    :: Text -- ^ 'ipProject'
+    -> Interconnect -- ^ 'ipPayload'
+    -> Text -- ^ 'ipInterconnect'
+    -> InterconnectsPatch
+interconnectsPatch pIpProject_ pIpPayload_ pIpInterconnect_ =
+    InterconnectsPatch'
+    { _ipRequestId = Nothing
+    , _ipProject = pIpProject_
+    , _ipPayload = pIpPayload_
+    , _ipInterconnect = pIpInterconnect_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ipRequestId :: Lens' InterconnectsPatch (Maybe Text)
+ipRequestId
+  = lens _ipRequestId (\ s a -> s{_ipRequestId = a})
+
+-- | Project ID for this request.
+ipProject :: Lens' InterconnectsPatch Text
+ipProject
+  = lens _ipProject (\ s a -> s{_ipProject = a})
+
+-- | Multipart request metadata.
+ipPayload :: Lens' InterconnectsPatch Interconnect
+ipPayload
+  = lens _ipPayload (\ s a -> s{_ipPayload = a})
+
+-- | Name of the interconnect to update.
+ipInterconnect :: Lens' InterconnectsPatch Text
+ipInterconnect
+  = lens _ipInterconnect
+      (\ s a -> s{_ipInterconnect = a})
+
+instance GoogleRequest InterconnectsPatch where
+        type Rs InterconnectsPatch = Operation
+        type Scopes InterconnectsPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient InterconnectsPatch'{..}
+          = go _ipProject _ipInterconnect _ipRequestId
+              (Just AltJSON)
+              _ipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InterconnectsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs b/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.LicenseCodes.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)
+--
+-- Return a specified license code. License codes are mirrored across all
+-- projects that have permissions to read the License Code.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenseCodes.get@.
+module Network.Google.Resource.Compute.LicenseCodes.Get
+    (
+    -- * REST Resource
+      LicenseCodesGetResource
+
+    -- * Creating a Request
+    , licenseCodesGet
+    , LicenseCodesGet
+
+    -- * Request Lenses
+    , lcgProject
+    , lcgLicenseCode
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenseCodes.get@ method which the
+-- 'LicenseCodesGet' request conforms to.
+type LicenseCodesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenseCodes" :>
+                 Capture "licenseCode" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] LicenseCode
+
+-- | Return a specified license code. License codes are mirrored across all
+-- projects that have permissions to read the License Code.
+--
+-- /See:/ 'licenseCodesGet' smart constructor.
+data LicenseCodesGet = LicenseCodesGet'
+    { _lcgProject     :: !Text
+    , _lcgLicenseCode :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicenseCodesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcgProject'
+--
+-- * 'lcgLicenseCode'
+licenseCodesGet
+    :: Text -- ^ 'lcgProject'
+    -> Text -- ^ 'lcgLicenseCode'
+    -> LicenseCodesGet
+licenseCodesGet pLcgProject_ pLcgLicenseCode_ =
+    LicenseCodesGet'
+    { _lcgProject = pLcgProject_
+    , _lcgLicenseCode = pLcgLicenseCode_
+    }
+
+-- | Project ID for this request.
+lcgProject :: Lens' LicenseCodesGet Text
+lcgProject
+  = lens _lcgProject (\ s a -> s{_lcgProject = a})
+
+-- | Number corresponding to the License code resource to return.
+lcgLicenseCode :: Lens' LicenseCodesGet Text
+lcgLicenseCode
+  = lens _lcgLicenseCode
+      (\ s a -> s{_lcgLicenseCode = a})
+
+instance GoogleRequest LicenseCodesGet where
+        type Rs LicenseCodesGet = LicenseCode
+        type Scopes LicenseCodesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient LicenseCodesGet'{..}
+          = go _lcgProject _lcgLicenseCode (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LicenseCodesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.LicenseCodes.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenseCodes.testIamPermissions@.
+module Network.Google.Resource.Compute.LicenseCodes.TestIAMPermissions
+    (
+    -- * REST Resource
+      LicenseCodesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , licenseCodesTestIAMPermissions
+    , LicenseCodesTestIAMPermissions
+
+    -- * Request Lenses
+    , lctipProject
+    , lctipPayload
+    , lctipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenseCodes.testIamPermissions@ method which the
+-- 'LicenseCodesTestIAMPermissions' request conforms to.
+type LicenseCodesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenseCodes" :>
+                 Capture "resource" Text :>
+                   "testIamPermissions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TestPermissionsRequest :>
+                         Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'licenseCodesTestIAMPermissions' smart constructor.
+data LicenseCodesTestIAMPermissions = LicenseCodesTestIAMPermissions'
+    { _lctipProject  :: !Text
+    , _lctipPayload  :: !TestPermissionsRequest
+    , _lctipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicenseCodesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lctipProject'
+--
+-- * 'lctipPayload'
+--
+-- * 'lctipResource'
+licenseCodesTestIAMPermissions
+    :: Text -- ^ 'lctipProject'
+    -> TestPermissionsRequest -- ^ 'lctipPayload'
+    -> Text -- ^ 'lctipResource'
+    -> LicenseCodesTestIAMPermissions
+licenseCodesTestIAMPermissions pLctipProject_ pLctipPayload_ pLctipResource_ =
+    LicenseCodesTestIAMPermissions'
+    { _lctipProject = pLctipProject_
+    , _lctipPayload = pLctipPayload_
+    , _lctipResource = pLctipResource_
+    }
+
+-- | Project ID for this request.
+lctipProject :: Lens' LicenseCodesTestIAMPermissions Text
+lctipProject
+  = lens _lctipProject (\ s a -> s{_lctipProject = a})
+
+-- | Multipart request metadata.
+lctipPayload :: Lens' LicenseCodesTestIAMPermissions TestPermissionsRequest
+lctipPayload
+  = lens _lctipPayload (\ s a -> s{_lctipPayload = a})
+
+-- | Name or id of the resource for this request.
+lctipResource :: Lens' LicenseCodesTestIAMPermissions Text
+lctipResource
+  = lens _lctipResource
+      (\ s a -> s{_lctipResource = a})
+
+instance GoogleRequest LicenseCodesTestIAMPermissions
+         where
+        type Rs LicenseCodesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes LicenseCodesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient LicenseCodesTestIAMPermissions'{..}
+          = go _lctipProject _lctipResource (Just AltJSON)
+              _lctipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy LicenseCodesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Delete.hs b/gen/Network/Google/Resource/Compute/Licenses/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/Delete.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Licenses.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 specified license.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.delete@.
+module Network.Google.Resource.Compute.Licenses.Delete
+    (
+    -- * REST Resource
+      LicensesDeleteResource
+
+    -- * Creating a Request
+    , licensesDelete
+    , LicensesDelete
+
+    -- * Request Lenses
+    , ldRequestId
+    , ldProject
+    , ldLicense
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.delete@ method which the
+-- 'LicensesDelete' request conforms to.
+type LicensesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 Capture "license" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified license.
+--
+-- /See:/ 'licensesDelete' smart constructor.
+data LicensesDelete = LicensesDelete'
+    { _ldRequestId :: !(Maybe Text)
+    , _ldProject   :: !Text
+    , _ldLicense   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ldRequestId'
+--
+-- * 'ldProject'
+--
+-- * 'ldLicense'
+licensesDelete
+    :: Text -- ^ 'ldProject'
+    -> Text -- ^ 'ldLicense'
+    -> LicensesDelete
+licensesDelete pLdProject_ pLdLicense_ =
+    LicensesDelete'
+    { _ldRequestId = Nothing
+    , _ldProject = pLdProject_
+    , _ldLicense = pLdLicense_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ldRequestId :: Lens' LicensesDelete (Maybe Text)
+ldRequestId
+  = lens _ldRequestId (\ s a -> s{_ldRequestId = a})
+
+-- | Project ID for this request.
+ldProject :: Lens' LicensesDelete Text
+ldProject
+  = lens _ldProject (\ s a -> s{_ldProject = a})
+
+-- | Name of the license resource to delete.
+ldLicense :: Lens' LicensesDelete Text
+ldLicense
+  = lens _ldLicense (\ s a -> s{_ldLicense = a})
+
+instance GoogleRequest LicensesDelete where
+        type Rs LicensesDelete = Operation
+        type Scopes LicensesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient LicensesDelete'{..}
+          = go _ldProject _ldLicense _ldRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy LicensesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Get.hs b/gen/Network/Google/Resource/Compute/Licenses/Get.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/Get.hs
@@ -20,8 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified License resource. Get a list of available licenses
--- by making a list() request.
+-- Returns the specified License resource.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.get@.
 module Network.Google.Resource.Compute.Licenses.Get
@@ -53,8 +52,7 @@
                  Capture "license" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] License
 
--- | Returns the specified License resource. Get a list of available licenses
--- by making a list() request.
+-- | Returns the specified License resource.
 --
 -- /See:/ 'licensesGet' smart constructor.
 data LicensesGet = LicensesGet'
diff --git a/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Licenses.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.getIamPolicy@.
+module Network.Google.Resource.Compute.Licenses.GetIAMPolicy
+    (
+    -- * REST Resource
+      LicensesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , licensesGetIAMPolicy
+    , LicensesGetIAMPolicy
+
+    -- * Request Lenses
+    , lgipProject
+    , lgipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.getIamPolicy@ method which the
+-- 'LicensesGetIAMPolicy' request conforms to.
+type LicensesGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 Capture "resource" Text :>
+                   "getIamPolicy" :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'licensesGetIAMPolicy' smart constructor.
+data LicensesGetIAMPolicy = LicensesGetIAMPolicy'
+    { _lgipProject  :: !Text
+    , _lgipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgipProject'
+--
+-- * 'lgipResource'
+licensesGetIAMPolicy
+    :: Text -- ^ 'lgipProject'
+    -> Text -- ^ 'lgipResource'
+    -> LicensesGetIAMPolicy
+licensesGetIAMPolicy pLgipProject_ pLgipResource_ =
+    LicensesGetIAMPolicy'
+    { _lgipProject = pLgipProject_
+    , _lgipResource = pLgipResource_
+    }
+
+-- | Project ID for this request.
+lgipProject :: Lens' LicensesGetIAMPolicy Text
+lgipProject
+  = lens _lgipProject (\ s a -> s{_lgipProject = a})
+
+-- | Name or id of the resource for this request.
+lgipResource :: Lens' LicensesGetIAMPolicy Text
+lgipResource
+  = lens _lgipResource (\ s a -> s{_lgipResource = a})
+
+instance GoogleRequest LicensesGetIAMPolicy where
+        type Rs LicensesGetIAMPolicy = Policy
+        type Scopes LicensesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient LicensesGetIAMPolicy'{..}
+          = go _lgipProject _lgipResource (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LicensesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Insert.hs b/gen/Network/Google/Resource/Compute/Licenses/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/Insert.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Licenses.Insert
+-- 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)
+--
+-- Create a License resource in the specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.insert@.
+module Network.Google.Resource.Compute.Licenses.Insert
+    (
+    -- * REST Resource
+      LicensesInsertResource
+
+    -- * Creating a Request
+    , licensesInsert
+    , LicensesInsert
+
+    -- * Request Lenses
+    , liRequestId
+    , liProject
+    , liPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.insert@ method which the
+-- 'LicensesInsert' request conforms to.
+type LicensesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] License :> Post '[JSON] Operation
+
+-- | Create a License resource in the specified project.
+--
+-- /See:/ 'licensesInsert' smart constructor.
+data LicensesInsert = LicensesInsert'
+    { _liRequestId :: !(Maybe Text)
+    , _liProject   :: !Text
+    , _liPayload   :: !License
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'liRequestId'
+--
+-- * 'liProject'
+--
+-- * 'liPayload'
+licensesInsert
+    :: Text -- ^ 'liProject'
+    -> License -- ^ 'liPayload'
+    -> LicensesInsert
+licensesInsert pLiProject_ pLiPayload_ =
+    LicensesInsert'
+    { _liRequestId = Nothing
+    , _liProject = pLiProject_
+    , _liPayload = pLiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+liRequestId :: Lens' LicensesInsert (Maybe Text)
+liRequestId
+  = lens _liRequestId (\ s a -> s{_liRequestId = a})
+
+-- | Project ID for this request.
+liProject :: Lens' LicensesInsert Text
+liProject
+  = lens _liProject (\ s a -> s{_liProject = a})
+
+-- | Multipart request metadata.
+liPayload :: Lens' LicensesInsert License
+liPayload
+  = lens _liPayload (\ s a -> s{_liPayload = a})
+
+instance GoogleRequest LicensesInsert where
+        type Rs LicensesInsert = Operation
+        type Scopes LicensesInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/devstorage.full_control",
+               "https://www.googleapis.com/auth/devstorage.read_only",
+               "https://www.googleapis.com/auth/devstorage.read_write"]
+        requestClient LicensesInsert'{..}
+          = go _liProject _liRequestId (Just AltJSON)
+              _liPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy LicensesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/List.hs b/gen/Network/Google/Resource/Compute/Licenses/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/List.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.Compute.Licenses.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)
+--
+-- Retrieves the list of licenses available in the specified project. This
+-- method does not get any licenses that belong to other projects,
+-- including licenses attached to publicly-available images, like Debian 9.
+-- If you want to get a list of publicly-available licenses, use this
+-- method to make a request to the respective image project, such as
+-- debian-cloud or windows-cloud.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.list@.
+module Network.Google.Resource.Compute.Licenses.List
+    (
+    -- * REST Resource
+      LicensesListResource
+
+    -- * Creating a Request
+    , licensesList
+    , LicensesList
+
+    -- * Request Lenses
+    , llOrderBy
+    , llProject
+    , llFilter
+    , llPageToken
+    , llMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.list@ method which the
+-- 'LicensesList' request conforms to.
+type LicensesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] LicensesListResponse
+
+-- | Retrieves the list of licenses available in the specified project. This
+-- method does not get any licenses that belong to other projects,
+-- including licenses attached to publicly-available images, like Debian 9.
+-- If you want to get a list of publicly-available licenses, use this
+-- method to make a request to the respective image project, such as
+-- debian-cloud or windows-cloud.
+--
+-- /See:/ 'licensesList' smart constructor.
+data LicensesList = LicensesList'
+    { _llOrderBy    :: !(Maybe Text)
+    , _llProject    :: !Text
+    , _llFilter     :: !(Maybe Text)
+    , _llPageToken  :: !(Maybe Text)
+    , _llMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llOrderBy'
+--
+-- * 'llProject'
+--
+-- * 'llFilter'
+--
+-- * 'llPageToken'
+--
+-- * 'llMaxResults'
+licensesList
+    :: Text -- ^ 'llProject'
+    -> LicensesList
+licensesList pLlProject_ =
+    LicensesList'
+    { _llOrderBy = Nothing
+    , _llProject = pLlProject_
+    , _llFilter = Nothing
+    , _llPageToken = Nothing
+    , _llMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+llOrderBy :: Lens' LicensesList (Maybe Text)
+llOrderBy
+  = lens _llOrderBy (\ s a -> s{_llOrderBy = a})
+
+-- | Project ID for this request.
+llProject :: Lens' LicensesList Text
+llProject
+  = lens _llProject (\ s a -> s{_llProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+llFilter :: Lens' LicensesList (Maybe Text)
+llFilter = lens _llFilter (\ s a -> s{_llFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+llPageToken :: Lens' LicensesList (Maybe Text)
+llPageToken
+  = lens _llPageToken (\ s a -> s{_llPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+llMaxResults :: Lens' LicensesList Word32
+llMaxResults
+  = lens _llMaxResults (\ s a -> s{_llMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest LicensesList where
+        type Rs LicensesList = LicensesListResponse
+        type Scopes LicensesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient LicensesList'{..}
+          = go _llProject _llOrderBy _llFilter _llPageToken
+              (Just _llMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy LicensesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Licenses.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.setIamPolicy@.
+module Network.Google.Resource.Compute.Licenses.SetIAMPolicy
+    (
+    -- * REST Resource
+      LicensesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , licensesSetIAMPolicy
+    , LicensesSetIAMPolicy
+
+    -- * Request Lenses
+    , lsipProject
+    , lsipPayload
+    , lsipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.setIamPolicy@ method which the
+-- 'LicensesSetIAMPolicy' request conforms to.
+type LicensesSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 Capture "resource" Text :>
+                   "setIamPolicy" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetPolicyRequest :>
+                         Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'licensesSetIAMPolicy' smart constructor.
+data LicensesSetIAMPolicy = LicensesSetIAMPolicy'
+    { _lsipProject  :: !Text
+    , _lsipPayload  :: !GlobalSetPolicyRequest
+    , _lsipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsipProject'
+--
+-- * 'lsipPayload'
+--
+-- * 'lsipResource'
+licensesSetIAMPolicy
+    :: Text -- ^ 'lsipProject'
+    -> GlobalSetPolicyRequest -- ^ 'lsipPayload'
+    -> Text -- ^ 'lsipResource'
+    -> LicensesSetIAMPolicy
+licensesSetIAMPolicy pLsipProject_ pLsipPayload_ pLsipResource_ =
+    LicensesSetIAMPolicy'
+    { _lsipProject = pLsipProject_
+    , _lsipPayload = pLsipPayload_
+    , _lsipResource = pLsipResource_
+    }
+
+-- | Project ID for this request.
+lsipProject :: Lens' LicensesSetIAMPolicy Text
+lsipProject
+  = lens _lsipProject (\ s a -> s{_lsipProject = a})
+
+-- | Multipart request metadata.
+lsipPayload :: Lens' LicensesSetIAMPolicy GlobalSetPolicyRequest
+lsipPayload
+  = lens _lsipPayload (\ s a -> s{_lsipPayload = a})
+
+-- | Name or id of the resource for this request.
+lsipResource :: Lens' LicensesSetIAMPolicy Text
+lsipResource
+  = lens _lsipResource (\ s a -> s{_lsipResource = a})
+
+instance GoogleRequest LicensesSetIAMPolicy where
+        type Rs LicensesSetIAMPolicy = Policy
+        type Scopes LicensesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient LicensesSetIAMPolicy'{..}
+          = go _lsipProject _lsipResource (Just AltJSON)
+              _lsipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LicensesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Licenses.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.testIamPermissions@.
+module Network.Google.Resource.Compute.Licenses.TestIAMPermissions
+    (
+    -- * REST Resource
+      LicensesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , licensesTestIAMPermissions
+    , LicensesTestIAMPermissions
+
+    -- * Request Lenses
+    , ltipProject
+    , ltipPayload
+    , ltipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.testIamPermissions@ method which the
+-- 'LicensesTestIAMPermissions' request conforms to.
+type LicensesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 Capture "resource" Text :>
+                   "testIamPermissions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TestPermissionsRequest :>
+                         Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'licensesTestIAMPermissions' smart constructor.
+data LicensesTestIAMPermissions = LicensesTestIAMPermissions'
+    { _ltipProject  :: !Text
+    , _ltipPayload  :: !TestPermissionsRequest
+    , _ltipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltipProject'
+--
+-- * 'ltipPayload'
+--
+-- * 'ltipResource'
+licensesTestIAMPermissions
+    :: Text -- ^ 'ltipProject'
+    -> TestPermissionsRequest -- ^ 'ltipPayload'
+    -> Text -- ^ 'ltipResource'
+    -> LicensesTestIAMPermissions
+licensesTestIAMPermissions pLtipProject_ pLtipPayload_ pLtipResource_ =
+    LicensesTestIAMPermissions'
+    { _ltipProject = pLtipProject_
+    , _ltipPayload = pLtipPayload_
+    , _ltipResource = pLtipResource_
+    }
+
+-- | Project ID for this request.
+ltipProject :: Lens' LicensesTestIAMPermissions Text
+ltipProject
+  = lens _ltipProject (\ s a -> s{_ltipProject = a})
+
+-- | Multipart request metadata.
+ltipPayload :: Lens' LicensesTestIAMPermissions TestPermissionsRequest
+ltipPayload
+  = lens _ltipPayload (\ s a -> s{_ltipPayload = a})
+
+-- | Name or id of the resource for this request.
+ltipResource :: Lens' LicensesTestIAMPermissions Text
+ltipResource
+  = lens _ltipResource (\ s a -> s{_ltipResource = a})
+
+instance GoogleRequest LicensesTestIAMPermissions
+         where
+        type Rs LicensesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes LicensesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient LicensesTestIAMPermissions'{..}
+          = go _ltipProject _ltipResource (Just AltJSON)
+              _ltipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy LicensesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs
@@ -112,26 +112,22 @@
 mtalProject
   = lens _mtalProject (\ s a -> s{_mtalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 mtalFilter :: Lens' MachineTypesAggregatedList (Maybe Text)
 mtalFilter
   = lens _mtalFilter (\ s a -> s{_mtalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 mtalMaxResults :: Lens' MachineTypesAggregatedList Word32
 mtalMaxResults
   = lens _mtalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs b/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs
--- a/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified machine type. Get a list of available machine
+-- Returns the specified machine type. Gets a list of available machine
 -- types by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.machineTypes.get@.
@@ -55,7 +55,7 @@
                    Capture "machineType" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] MachineType
 
--- | Returns the specified machine type. Get a list of available machine
+-- | Returns the specified machine type. Gets a list of available machine
 -- types by making a list() request.
 --
 -- /See:/ 'machineTypesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/List.hs b/gen/Network/Google/Resource/Compute/MachineTypes/List.hs
--- a/gen/Network/Google/Resource/Compute/MachineTypes/List.hs
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/List.hs
@@ -123,26 +123,22 @@
 mtlZone :: Lens' MachineTypesList Text
 mtlZone = lens _mtlZone (\ s a -> s{_mtlZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 mtlFilter :: Lens' MachineTypesList (Maybe Text)
 mtlFilter
   = lens _mtlFilter (\ s a -> s{_mtlFilter = a})
@@ -156,7 +152,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 mtlMaxResults :: Lens' MachineTypesList Word32
 mtlMaxResults
   = lens _mtlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs b/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Networks.AddPeering
+-- 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)
+--
+-- Adds a peering to the specified network.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.addPeering@.
+module Network.Google.Resource.Compute.Networks.AddPeering
+    (
+    -- * REST Resource
+      NetworksAddPeeringResource
+
+    -- * Creating a Request
+    , networksAddPeering
+    , NetworksAddPeering
+
+    -- * Request Lenses
+    , napRequestId
+    , napProject
+    , napNetwork
+    , napPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.addPeering@ method which the
+-- 'NetworksAddPeering' request conforms to.
+type NetworksAddPeeringResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 Capture "network" Text :>
+                   "addPeering" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] NetworksAddPeeringRequest :>
+                           Post '[JSON] Operation
+
+-- | Adds a peering to the specified network.
+--
+-- /See:/ 'networksAddPeering' smart constructor.
+data NetworksAddPeering = NetworksAddPeering'
+    { _napRequestId :: !(Maybe Text)
+    , _napProject   :: !Text
+    , _napNetwork   :: !Text
+    , _napPayload   :: !NetworksAddPeeringRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksAddPeering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'napRequestId'
+--
+-- * 'napProject'
+--
+-- * 'napNetwork'
+--
+-- * 'napPayload'
+networksAddPeering
+    :: Text -- ^ 'napProject'
+    -> Text -- ^ 'napNetwork'
+    -> NetworksAddPeeringRequest -- ^ 'napPayload'
+    -> NetworksAddPeering
+networksAddPeering pNapProject_ pNapNetwork_ pNapPayload_ =
+    NetworksAddPeering'
+    { _napRequestId = Nothing
+    , _napProject = pNapProject_
+    , _napNetwork = pNapNetwork_
+    , _napPayload = pNapPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+napRequestId :: Lens' NetworksAddPeering (Maybe Text)
+napRequestId
+  = lens _napRequestId (\ s a -> s{_napRequestId = a})
+
+-- | Project ID for this request.
+napProject :: Lens' NetworksAddPeering Text
+napProject
+  = lens _napProject (\ s a -> s{_napProject = a})
+
+-- | Name of the network resource to add peering to.
+napNetwork :: Lens' NetworksAddPeering Text
+napNetwork
+  = lens _napNetwork (\ s a -> s{_napNetwork = a})
+
+-- | Multipart request metadata.
+napPayload :: Lens' NetworksAddPeering NetworksAddPeeringRequest
+napPayload
+  = lens _napPayload (\ s a -> s{_napPayload = a})
+
+instance GoogleRequest NetworksAddPeering where
+        type Rs NetworksAddPeering = Operation
+        type Scopes NetworksAddPeering =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NetworksAddPeering'{..}
+          = go _napProject _napNetwork _napRequestId
+              (Just AltJSON)
+              _napPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworksAddPeeringResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/Delete.hs b/gen/Network/Google/Resource/Compute/Networks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Networks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/Delete.hs
@@ -33,6 +33,7 @@
     , NetworksDelete
 
     -- * Request Lenses
+    , ndRequestId
     , ndProject
     , ndNetwork
     ) where
@@ -50,20 +51,24 @@
              "global" :>
                "networks" :>
                  Capture "network" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified network.
 --
 -- /See:/ 'networksDelete' smart constructor.
 data NetworksDelete = NetworksDelete'
-    { _ndProject :: !Text
-    , _ndNetwork :: !Text
+    { _ndRequestId :: !(Maybe Text)
+    , _ndProject   :: !Text
+    , _ndNetwork   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NetworksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ndRequestId'
+--
 -- * 'ndProject'
 --
 -- * 'ndNetwork'
@@ -73,10 +78,25 @@
     -> NetworksDelete
 networksDelete pNdProject_ pNdNetwork_ =
     NetworksDelete'
-    { _ndProject = pNdProject_
+    { _ndRequestId = Nothing
+    , _ndProject = pNdProject_
     , _ndNetwork = pNdNetwork_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ndRequestId :: Lens' NetworksDelete (Maybe Text)
+ndRequestId
+  = lens _ndRequestId (\ s a -> s{_ndRequestId = a})
+
 -- | Project ID for this request.
 ndProject :: Lens' NetworksDelete Text
 ndProject
@@ -93,7 +113,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient NetworksDelete'{..}
-          = go _ndProject _ndNetwork (Just AltJSON)
+          = go _ndProject _ndNetwork _ndRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy NetworksDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/Networks/Get.hs b/gen/Network/Google/Resource/Compute/Networks/Get.hs
--- a/gen/Network/Google/Resource/Compute/Networks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified network. Get a list of available networks by
+-- Returns the specified network. Gets a list of available networks by
 -- making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.get@.
@@ -53,7 +53,7 @@
                  Capture "network" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Network
 
--- | Returns the specified network. Get a list of available networks by
+-- | Returns the specified network. Gets a list of available networks by
 -- making a list() request.
 --
 -- /See:/ 'networksGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Networks/Insert.hs b/gen/Network/Google/Resource/Compute/Networks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Networks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/Insert.hs
@@ -34,6 +34,7 @@
     , NetworksInsert
 
     -- * Request Lenses
+    , niRequestId
     , niProject
     , niPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "networks" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Network :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Network :> Post '[JSON] Operation
 
 -- | Creates a network in the specified project using the data included in
 -- the request.
 --
 -- /See:/ 'networksInsert' smart constructor.
 data NetworksInsert = NetworksInsert'
-    { _niProject :: !Text
-    , _niPayload :: !Network
+    { _niRequestId :: !(Maybe Text)
+    , _niProject   :: !Text
+    , _niPayload   :: !Network
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NetworksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'niRequestId'
+--
 -- * 'niProject'
 --
 -- * 'niPayload'
@@ -75,10 +80,25 @@
     -> NetworksInsert
 networksInsert pNiProject_ pNiPayload_ =
     NetworksInsert'
-    { _niProject = pNiProject_
+    { _niRequestId = Nothing
+    , _niProject = pNiProject_
     , _niPayload = pNiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+niRequestId :: Lens' NetworksInsert (Maybe Text)
+niRequestId
+  = lens _niRequestId (\ s a -> s{_niRequestId = a})
+
 -- | Project ID for this request.
 niProject :: Lens' NetworksInsert Text
 niProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient NetworksInsert'{..}
-          = go _niProject (Just AltJSON) _niPayload
+          = go _niProject _niRequestId (Just AltJSON)
+              _niPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy NetworksInsertResource)
diff --git a/gen/Network/Google/Resource/Compute/Networks/List.hs b/gen/Network/Google/Resource/Compute/Networks/List.hs
--- a/gen/Network/Google/Resource/Compute/Networks/List.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/List.hs
@@ -111,26 +111,22 @@
 nlProject
   = lens _nlProject (\ s a -> s{_nlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 nlFilter :: Lens' NetworksList (Maybe Text)
 nlFilter = lens _nlFilter (\ s a -> s{_nlFilter = a})
 
@@ -143,7 +139,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 nlMaxResults :: Lens' NetworksList Word32
 nlMaxResults
   = lens _nlMaxResults (\ s a -> s{_nlMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Networks/Patch.hs b/gen/Network/Google/Resource/Compute/Networks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/Patch.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Networks.Patch
+-- 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)
+--
+-- Patches the specified network with the data included in the request.
+-- Only the following fields can be modified: routingConfig.routingMode.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.patch@.
+module Network.Google.Resource.Compute.Networks.Patch
+    (
+    -- * REST Resource
+      NetworksPatchResource
+
+    -- * Creating a Request
+    , networksPatch
+    , NetworksPatch
+
+    -- * Request Lenses
+    , npRequestId
+    , npProject
+    , npNetwork
+    , npPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.patch@ method which the
+-- 'NetworksPatch' request conforms to.
+type NetworksPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 Capture "network" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Network :> Patch '[JSON] Operation
+
+-- | Patches the specified network with the data included in the request.
+-- Only the following fields can be modified: routingConfig.routingMode.
+--
+-- /See:/ 'networksPatch' smart constructor.
+data NetworksPatch = NetworksPatch'
+    { _npRequestId :: !(Maybe Text)
+    , _npProject   :: !Text
+    , _npNetwork   :: !Text
+    , _npPayload   :: !Network
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npRequestId'
+--
+-- * 'npProject'
+--
+-- * 'npNetwork'
+--
+-- * 'npPayload'
+networksPatch
+    :: Text -- ^ 'npProject'
+    -> Text -- ^ 'npNetwork'
+    -> Network -- ^ 'npPayload'
+    -> NetworksPatch
+networksPatch pNpProject_ pNpNetwork_ pNpPayload_ =
+    NetworksPatch'
+    { _npRequestId = Nothing
+    , _npProject = pNpProject_
+    , _npNetwork = pNpNetwork_
+    , _npPayload = pNpPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+npRequestId :: Lens' NetworksPatch (Maybe Text)
+npRequestId
+  = lens _npRequestId (\ s a -> s{_npRequestId = a})
+
+-- | Project ID for this request.
+npProject :: Lens' NetworksPatch Text
+npProject
+  = lens _npProject (\ s a -> s{_npProject = a})
+
+-- | Name of the network to update.
+npNetwork :: Lens' NetworksPatch Text
+npNetwork
+  = lens _npNetwork (\ s a -> s{_npNetwork = a})
+
+-- | Multipart request metadata.
+npPayload :: Lens' NetworksPatch Network
+npPayload
+  = lens _npPayload (\ s a -> s{_npPayload = a})
+
+instance GoogleRequest NetworksPatch where
+        type Rs NetworksPatch = Operation
+        type Scopes NetworksPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NetworksPatch'{..}
+          = go _npProject _npNetwork _npRequestId
+              (Just AltJSON)
+              _npPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NetworksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs b/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Networks.RemovePeering
+-- 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)
+--
+-- Removes a peering from the specified network.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.removePeering@.
+module Network.Google.Resource.Compute.Networks.RemovePeering
+    (
+    -- * REST Resource
+      NetworksRemovePeeringResource
+
+    -- * Creating a Request
+    , networksRemovePeering
+    , NetworksRemovePeering
+
+    -- * Request Lenses
+    , nrpRequestId
+    , nrpProject
+    , nrpNetwork
+    , nrpPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.removePeering@ method which the
+-- 'NetworksRemovePeering' request conforms to.
+type NetworksRemovePeeringResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 Capture "network" Text :>
+                   "removePeering" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] NetworksRemovePeeringRequest :>
+                           Post '[JSON] Operation
+
+-- | Removes a peering from the specified network.
+--
+-- /See:/ 'networksRemovePeering' smart constructor.
+data NetworksRemovePeering = NetworksRemovePeering'
+    { _nrpRequestId :: !(Maybe Text)
+    , _nrpProject   :: !Text
+    , _nrpNetwork   :: !Text
+    , _nrpPayload   :: !NetworksRemovePeeringRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksRemovePeering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nrpRequestId'
+--
+-- * 'nrpProject'
+--
+-- * 'nrpNetwork'
+--
+-- * 'nrpPayload'
+networksRemovePeering
+    :: Text -- ^ 'nrpProject'
+    -> Text -- ^ 'nrpNetwork'
+    -> NetworksRemovePeeringRequest -- ^ 'nrpPayload'
+    -> NetworksRemovePeering
+networksRemovePeering pNrpProject_ pNrpNetwork_ pNrpPayload_ =
+    NetworksRemovePeering'
+    { _nrpRequestId = Nothing
+    , _nrpProject = pNrpProject_
+    , _nrpNetwork = pNrpNetwork_
+    , _nrpPayload = pNrpPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+nrpRequestId :: Lens' NetworksRemovePeering (Maybe Text)
+nrpRequestId
+  = lens _nrpRequestId (\ s a -> s{_nrpRequestId = a})
+
+-- | Project ID for this request.
+nrpProject :: Lens' NetworksRemovePeering Text
+nrpProject
+  = lens _nrpProject (\ s a -> s{_nrpProject = a})
+
+-- | Name of the network resource to remove peering from.
+nrpNetwork :: Lens' NetworksRemovePeering Text
+nrpNetwork
+  = lens _nrpNetwork (\ s a -> s{_nrpNetwork = a})
+
+-- | Multipart request metadata.
+nrpPayload :: Lens' NetworksRemovePeering NetworksRemovePeeringRequest
+nrpPayload
+  = lens _nrpPayload (\ s a -> s{_nrpPayload = a})
+
+instance GoogleRequest NetworksRemovePeering where
+        type Rs NetworksRemovePeering = Operation
+        type Scopes NetworksRemovePeering =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NetworksRemovePeering'{..}
+          = go _nrpProject _nrpNetwork _nrpRequestId
+              (Just AltJSON)
+              _nrpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworksRemovePeeringResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/SwitchToCustomMode.hs b/gen/Network/Google/Resource/Compute/Networks/SwitchToCustomMode.hs
--- a/gen/Network/Google/Resource/Compute/Networks/SwitchToCustomMode.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/SwitchToCustomMode.hs
@@ -33,6 +33,7 @@
     , NetworksSwitchToCustomMode
 
     -- * Request Lenses
+    , nstcmRequestId
     , nstcmProject
     , nstcmNetwork
     ) where
@@ -51,20 +52,24 @@
                "networks" :>
                  Capture "network" Text :>
                    "switchToCustomMode" :>
-                     QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
 -- | Switches the network mode from auto subnet mode to custom subnet mode.
 --
 -- /See:/ 'networksSwitchToCustomMode' smart constructor.
 data NetworksSwitchToCustomMode = NetworksSwitchToCustomMode'
-    { _nstcmProject :: !Text
-    , _nstcmNetwork :: !Text
+    { _nstcmRequestId :: !(Maybe Text)
+    , _nstcmProject   :: !Text
+    , _nstcmNetwork   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NetworksSwitchToCustomMode' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'nstcmRequestId'
+--
 -- * 'nstcmProject'
 --
 -- * 'nstcmNetwork'
@@ -74,10 +79,26 @@
     -> NetworksSwitchToCustomMode
 networksSwitchToCustomMode pNstcmProject_ pNstcmNetwork_ =
     NetworksSwitchToCustomMode'
-    { _nstcmProject = pNstcmProject_
+    { _nstcmRequestId = Nothing
+    , _nstcmProject = pNstcmProject_
     , _nstcmNetwork = pNstcmNetwork_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+nstcmRequestId :: Lens' NetworksSwitchToCustomMode (Maybe Text)
+nstcmRequestId
+  = lens _nstcmRequestId
+      (\ s a -> s{_nstcmRequestId = a})
+
 -- | Project ID for this request.
 nstcmProject :: Lens' NetworksSwitchToCustomMode Text
 nstcmProject
@@ -95,7 +116,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient NetworksSwitchToCustomMode'{..}
-          = go _nstcmProject _nstcmNetwork (Just AltJSON)
+          = go _nstcmProject _nstcmNetwork _nstcmRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.AddNodes
+-- 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)
+--
+-- Adds specified number of nodes to the node group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.addNodes@.
+module Network.Google.Resource.Compute.NodeGroups.AddNodes
+    (
+    -- * REST Resource
+      NodeGroupsAddNodesResource
+
+    -- * Creating a Request
+    , nodeGroupsAddNodes
+    , NodeGroupsAddNodes
+
+    -- * Request Lenses
+    , nganRequestId
+    , nganNodeGroup
+    , nganProject
+    , nganZone
+    , nganPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.addNodes@ method which the
+-- 'NodeGroupsAddNodes' request conforms to.
+type NodeGroupsAddNodesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     "addNodes" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] NodeGroupsAddNodesRequest :>
+                             Post '[JSON] Operation
+
+-- | Adds specified number of nodes to the node group.
+--
+-- /See:/ 'nodeGroupsAddNodes' smart constructor.
+data NodeGroupsAddNodes = NodeGroupsAddNodes'
+    { _nganRequestId :: !(Maybe Text)
+    , _nganNodeGroup :: !Text
+    , _nganProject   :: !Text
+    , _nganZone      :: !Text
+    , _nganPayload   :: !NodeGroupsAddNodesRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsAddNodes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nganRequestId'
+--
+-- * 'nganNodeGroup'
+--
+-- * 'nganProject'
+--
+-- * 'nganZone'
+--
+-- * 'nganPayload'
+nodeGroupsAddNodes
+    :: Text -- ^ 'nganNodeGroup'
+    -> Text -- ^ 'nganProject'
+    -> Text -- ^ 'nganZone'
+    -> NodeGroupsAddNodesRequest -- ^ 'nganPayload'
+    -> NodeGroupsAddNodes
+nodeGroupsAddNodes pNganNodeGroup_ pNganProject_ pNganZone_ pNganPayload_ =
+    NodeGroupsAddNodes'
+    { _nganRequestId = Nothing
+    , _nganNodeGroup = pNganNodeGroup_
+    , _nganProject = pNganProject_
+    , _nganZone = pNganZone_
+    , _nganPayload = pNganPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+nganRequestId :: Lens' NodeGroupsAddNodes (Maybe Text)
+nganRequestId
+  = lens _nganRequestId
+      (\ s a -> s{_nganRequestId = a})
+
+-- | Name of the NodeGroup resource.
+nganNodeGroup :: Lens' NodeGroupsAddNodes Text
+nganNodeGroup
+  = lens _nganNodeGroup
+      (\ s a -> s{_nganNodeGroup = a})
+
+-- | Project ID for this request.
+nganProject :: Lens' NodeGroupsAddNodes Text
+nganProject
+  = lens _nganProject (\ s a -> s{_nganProject = a})
+
+-- | The name of the zone for this request.
+nganZone :: Lens' NodeGroupsAddNodes Text
+nganZone = lens _nganZone (\ s a -> s{_nganZone = a})
+
+-- | Multipart request metadata.
+nganPayload :: Lens' NodeGroupsAddNodes NodeGroupsAddNodesRequest
+nganPayload
+  = lens _nganPayload (\ s a -> s{_nganPayload = a})
+
+instance GoogleRequest NodeGroupsAddNodes where
+        type Rs NodeGroupsAddNodes = Operation
+        type Scopes NodeGroupsAddNodes =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsAddNodes'{..}
+          = go _nganProject _nganZone _nganNodeGroup
+              _nganRequestId
+              (Just AltJSON)
+              _nganPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsAddNodesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.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.Compute.NodeGroups.AggregatedList
+-- 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 an aggregated list of node groups. Note: use
+-- nodeGroups.listNodes for more details about each group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.aggregatedList@.
+module Network.Google.Resource.Compute.NodeGroups.AggregatedList
+    (
+    -- * REST Resource
+      NodeGroupsAggregatedListResource
+
+    -- * Creating a Request
+    , nodeGroupsAggregatedList
+    , NodeGroupsAggregatedList
+
+    -- * Request Lenses
+    , ngalOrderBy
+    , ngalProject
+    , ngalFilter
+    , ngalPageToken
+    , ngalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.aggregatedList@ method which the
+-- 'NodeGroupsAggregatedList' request conforms to.
+type NodeGroupsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "nodeGroups" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] NodeGroupAggregatedList
+
+-- | Retrieves an aggregated list of node groups. Note: use
+-- nodeGroups.listNodes for more details about each group.
+--
+-- /See:/ 'nodeGroupsAggregatedList' smart constructor.
+data NodeGroupsAggregatedList = NodeGroupsAggregatedList'
+    { _ngalOrderBy    :: !(Maybe Text)
+    , _ngalProject    :: !Text
+    , _ngalFilter     :: !(Maybe Text)
+    , _ngalPageToken  :: !(Maybe Text)
+    , _ngalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngalOrderBy'
+--
+-- * 'ngalProject'
+--
+-- * 'ngalFilter'
+--
+-- * 'ngalPageToken'
+--
+-- * 'ngalMaxResults'
+nodeGroupsAggregatedList
+    :: Text -- ^ 'ngalProject'
+    -> NodeGroupsAggregatedList
+nodeGroupsAggregatedList pNgalProject_ =
+    NodeGroupsAggregatedList'
+    { _ngalOrderBy = Nothing
+    , _ngalProject = pNgalProject_
+    , _ngalFilter = Nothing
+    , _ngalPageToken = Nothing
+    , _ngalMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ngalOrderBy :: Lens' NodeGroupsAggregatedList (Maybe Text)
+ngalOrderBy
+  = lens _ngalOrderBy (\ s a -> s{_ngalOrderBy = a})
+
+-- | Project ID for this request.
+ngalProject :: Lens' NodeGroupsAggregatedList Text
+ngalProject
+  = lens _ngalProject (\ s a -> s{_ngalProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ngalFilter :: Lens' NodeGroupsAggregatedList (Maybe Text)
+ngalFilter
+  = lens _ngalFilter (\ s a -> s{_ngalFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ngalPageToken :: Lens' NodeGroupsAggregatedList (Maybe Text)
+ngalPageToken
+  = lens _ngalPageToken
+      (\ s a -> s{_ngalPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ngalMaxResults :: Lens' NodeGroupsAggregatedList Word32
+ngalMaxResults
+  = lens _ngalMaxResults
+      (\ s a -> s{_ngalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeGroupsAggregatedList where
+        type Rs NodeGroupsAggregatedList =
+             NodeGroupAggregatedList
+        type Scopes NodeGroupsAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsAggregatedList'{..}
+          = go _ngalProject _ngalOrderBy _ngalFilter
+              _ngalPageToken
+              (Just _ngalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.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 specified NodeGroup resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.delete@.
+module Network.Google.Resource.Compute.NodeGroups.Delete
+    (
+    -- * REST Resource
+      NodeGroupsDeleteResource
+
+    -- * Creating a Request
+    , nodeGroupsDelete
+    , NodeGroupsDelete
+
+    -- * Request Lenses
+    , ngdRequestId
+    , ngdNodeGroup
+    , ngdProject
+    , ngdZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.delete@ method which the
+-- 'NodeGroupsDelete' request conforms to.
+type NodeGroupsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified NodeGroup resource.
+--
+-- /See:/ 'nodeGroupsDelete' smart constructor.
+data NodeGroupsDelete = NodeGroupsDelete'
+    { _ngdRequestId :: !(Maybe Text)
+    , _ngdNodeGroup :: !Text
+    , _ngdProject   :: !Text
+    , _ngdZone      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngdRequestId'
+--
+-- * 'ngdNodeGroup'
+--
+-- * 'ngdProject'
+--
+-- * 'ngdZone'
+nodeGroupsDelete
+    :: Text -- ^ 'ngdNodeGroup'
+    -> Text -- ^ 'ngdProject'
+    -> Text -- ^ 'ngdZone'
+    -> NodeGroupsDelete
+nodeGroupsDelete pNgdNodeGroup_ pNgdProject_ pNgdZone_ =
+    NodeGroupsDelete'
+    { _ngdRequestId = Nothing
+    , _ngdNodeGroup = pNgdNodeGroup_
+    , _ngdProject = pNgdProject_
+    , _ngdZone = pNgdZone_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ngdRequestId :: Lens' NodeGroupsDelete (Maybe Text)
+ngdRequestId
+  = lens _ngdRequestId (\ s a -> s{_ngdRequestId = a})
+
+-- | Name of the NodeGroup resource to delete.
+ngdNodeGroup :: Lens' NodeGroupsDelete Text
+ngdNodeGroup
+  = lens _ngdNodeGroup (\ s a -> s{_ngdNodeGroup = a})
+
+-- | Project ID for this request.
+ngdProject :: Lens' NodeGroupsDelete Text
+ngdProject
+  = lens _ngdProject (\ s a -> s{_ngdProject = a})
+
+-- | The name of the zone for this request.
+ngdZone :: Lens' NodeGroupsDelete Text
+ngdZone = lens _ngdZone (\ s a -> s{_ngdZone = a})
+
+instance GoogleRequest NodeGroupsDelete where
+        type Rs NodeGroupsDelete = Operation
+        type Scopes NodeGroupsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsDelete'{..}
+          = go _ngdProject _ngdZone _ngdNodeGroup _ngdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.DeleteNodes
+-- 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 specified nodes from the node group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.deleteNodes@.
+module Network.Google.Resource.Compute.NodeGroups.DeleteNodes
+    (
+    -- * REST Resource
+      NodeGroupsDeleteNodesResource
+
+    -- * Creating a Request
+    , nodeGroupsDeleteNodes
+    , NodeGroupsDeleteNodes
+
+    -- * Request Lenses
+    , ngdnRequestId
+    , ngdnNodeGroup
+    , ngdnProject
+    , ngdnZone
+    , ngdnPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.deleteNodes@ method which the
+-- 'NodeGroupsDeleteNodes' request conforms to.
+type NodeGroupsDeleteNodesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     "deleteNodes" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] NodeGroupsDeleteNodesRequest :>
+                             Post '[JSON] Operation
+
+-- | Deletes specified nodes from the node group.
+--
+-- /See:/ 'nodeGroupsDeleteNodes' smart constructor.
+data NodeGroupsDeleteNodes = NodeGroupsDeleteNodes'
+    { _ngdnRequestId :: !(Maybe Text)
+    , _ngdnNodeGroup :: !Text
+    , _ngdnProject   :: !Text
+    , _ngdnZone      :: !Text
+    , _ngdnPayload   :: !NodeGroupsDeleteNodesRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsDeleteNodes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngdnRequestId'
+--
+-- * 'ngdnNodeGroup'
+--
+-- * 'ngdnProject'
+--
+-- * 'ngdnZone'
+--
+-- * 'ngdnPayload'
+nodeGroupsDeleteNodes
+    :: Text -- ^ 'ngdnNodeGroup'
+    -> Text -- ^ 'ngdnProject'
+    -> Text -- ^ 'ngdnZone'
+    -> NodeGroupsDeleteNodesRequest -- ^ 'ngdnPayload'
+    -> NodeGroupsDeleteNodes
+nodeGroupsDeleteNodes pNgdnNodeGroup_ pNgdnProject_ pNgdnZone_ pNgdnPayload_ =
+    NodeGroupsDeleteNodes'
+    { _ngdnRequestId = Nothing
+    , _ngdnNodeGroup = pNgdnNodeGroup_
+    , _ngdnProject = pNgdnProject_
+    , _ngdnZone = pNgdnZone_
+    , _ngdnPayload = pNgdnPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ngdnRequestId :: Lens' NodeGroupsDeleteNodes (Maybe Text)
+ngdnRequestId
+  = lens _ngdnRequestId
+      (\ s a -> s{_ngdnRequestId = a})
+
+-- | Name of the NodeGroup resource to delete.
+ngdnNodeGroup :: Lens' NodeGroupsDeleteNodes Text
+ngdnNodeGroup
+  = lens _ngdnNodeGroup
+      (\ s a -> s{_ngdnNodeGroup = a})
+
+-- | Project ID for this request.
+ngdnProject :: Lens' NodeGroupsDeleteNodes Text
+ngdnProject
+  = lens _ngdnProject (\ s a -> s{_ngdnProject = a})
+
+-- | The name of the zone for this request.
+ngdnZone :: Lens' NodeGroupsDeleteNodes Text
+ngdnZone = lens _ngdnZone (\ s a -> s{_ngdnZone = a})
+
+-- | Multipart request metadata.
+ngdnPayload :: Lens' NodeGroupsDeleteNodes NodeGroupsDeleteNodesRequest
+ngdnPayload
+  = lens _ngdnPayload (\ s a -> s{_ngdnPayload = a})
+
+instance GoogleRequest NodeGroupsDeleteNodes where
+        type Rs NodeGroupsDeleteNodes = Operation
+        type Scopes NodeGroupsDeleteNodes =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsDeleteNodes'{..}
+          = go _ngdnProject _ngdnZone _ngdnNodeGroup
+              _ngdnRequestId
+              (Just AltJSON)
+              _ngdnPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsDeleteNodesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.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)
+--
+-- Returns the specified NodeGroup. Get a list of available NodeGroups by
+-- making a list() request. Note: the \"nodes\" field should not be used.
+-- Use nodeGroups.listNodes instead.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.get@.
+module Network.Google.Resource.Compute.NodeGroups.Get
+    (
+    -- * REST Resource
+      NodeGroupsGetResource
+
+    -- * Creating a Request
+    , nodeGroupsGet
+    , NodeGroupsGet
+
+    -- * Request Lenses
+    , nggNodeGroup
+    , nggProject
+    , nggZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.get@ method which the
+-- 'NodeGroupsGet' request conforms to.
+type NodeGroupsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] NodeGroup
+
+-- | Returns the specified NodeGroup. Get a list of available NodeGroups by
+-- making a list() request. Note: the \"nodes\" field should not be used.
+-- Use nodeGroups.listNodes instead.
+--
+-- /See:/ 'nodeGroupsGet' smart constructor.
+data NodeGroupsGet = NodeGroupsGet'
+    { _nggNodeGroup :: !Text
+    , _nggProject   :: !Text
+    , _nggZone      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nggNodeGroup'
+--
+-- * 'nggProject'
+--
+-- * 'nggZone'
+nodeGroupsGet
+    :: Text -- ^ 'nggNodeGroup'
+    -> Text -- ^ 'nggProject'
+    -> Text -- ^ 'nggZone'
+    -> NodeGroupsGet
+nodeGroupsGet pNggNodeGroup_ pNggProject_ pNggZone_ =
+    NodeGroupsGet'
+    { _nggNodeGroup = pNggNodeGroup_
+    , _nggProject = pNggProject_
+    , _nggZone = pNggZone_
+    }
+
+-- | Name of the node group to return.
+nggNodeGroup :: Lens' NodeGroupsGet Text
+nggNodeGroup
+  = lens _nggNodeGroup (\ s a -> s{_nggNodeGroup = a})
+
+-- | Project ID for this request.
+nggProject :: Lens' NodeGroupsGet Text
+nggProject
+  = lens _nggProject (\ s a -> s{_nggProject = a})
+
+-- | The name of the zone for this request.
+nggZone :: Lens' NodeGroupsGet Text
+nggZone = lens _nggZone (\ s a -> s{_nggZone = a})
+
+instance GoogleRequest NodeGroupsGet where
+        type Rs NodeGroupsGet = NodeGroup
+        type Scopes NodeGroupsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsGet'{..}
+          = go _nggProject _nggZone _nggNodeGroup
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NodeGroupsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.getIamPolicy@.
+module Network.Google.Resource.Compute.NodeGroups.GetIAMPolicy
+    (
+    -- * REST Resource
+      NodeGroupsGetIAMPolicyResource
+
+    -- * Creating a Request
+    , nodeGroupsGetIAMPolicy
+    , NodeGroupsGetIAMPolicy
+
+    -- * Request Lenses
+    , nggipProject
+    , nggipZone
+    , nggipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.getIamPolicy@ method which the
+-- 'NodeGroupsGetIAMPolicy' request conforms to.
+type NodeGroupsGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "resource" Text :>
+                     "getIamPolicy" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'nodeGroupsGetIAMPolicy' smart constructor.
+data NodeGroupsGetIAMPolicy = NodeGroupsGetIAMPolicy'
+    { _nggipProject  :: !Text
+    , _nggipZone     :: !Text
+    , _nggipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nggipProject'
+--
+-- * 'nggipZone'
+--
+-- * 'nggipResource'
+nodeGroupsGetIAMPolicy
+    :: Text -- ^ 'nggipProject'
+    -> Text -- ^ 'nggipZone'
+    -> Text -- ^ 'nggipResource'
+    -> NodeGroupsGetIAMPolicy
+nodeGroupsGetIAMPolicy pNggipProject_ pNggipZone_ pNggipResource_ =
+    NodeGroupsGetIAMPolicy'
+    { _nggipProject = pNggipProject_
+    , _nggipZone = pNggipZone_
+    , _nggipResource = pNggipResource_
+    }
+
+-- | Project ID for this request.
+nggipProject :: Lens' NodeGroupsGetIAMPolicy Text
+nggipProject
+  = lens _nggipProject (\ s a -> s{_nggipProject = a})
+
+-- | The name of the zone for this request.
+nggipZone :: Lens' NodeGroupsGetIAMPolicy Text
+nggipZone
+  = lens _nggipZone (\ s a -> s{_nggipZone = a})
+
+-- | Name or id of the resource for this request.
+nggipResource :: Lens' NodeGroupsGetIAMPolicy Text
+nggipResource
+  = lens _nggipResource
+      (\ s a -> s{_nggipResource = a})
+
+instance GoogleRequest NodeGroupsGetIAMPolicy where
+        type Rs NodeGroupsGetIAMPolicy = Policy
+        type Scopes NodeGroupsGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsGetIAMPolicy'{..}
+          = go _nggipProject _nggipZone _nggipResource
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.Insert
+-- 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 NodeGroup resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.insert@.
+module Network.Google.Resource.Compute.NodeGroups.Insert
+    (
+    -- * REST Resource
+      NodeGroupsInsertResource
+
+    -- * Creating a Request
+    , nodeGroupsInsert
+    , NodeGroupsInsert
+
+    -- * Request Lenses
+    , ngiRequestId
+    , ngiProject
+    , ngiInitialNodeCount
+    , ngiZone
+    , ngiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.insert@ method which the
+-- 'NodeGroupsInsert' request conforms to.
+type NodeGroupsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   QueryParam "initialNodeCount" (Textual Int32) :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] NodeGroup :> Post '[JSON] Operation
+
+-- | Creates a NodeGroup resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'nodeGroupsInsert' smart constructor.
+data NodeGroupsInsert = NodeGroupsInsert'
+    { _ngiRequestId        :: !(Maybe Text)
+    , _ngiProject          :: !Text
+    , _ngiInitialNodeCount :: !(Textual Int32)
+    , _ngiZone             :: !Text
+    , _ngiPayload          :: !NodeGroup
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngiRequestId'
+--
+-- * 'ngiProject'
+--
+-- * 'ngiInitialNodeCount'
+--
+-- * 'ngiZone'
+--
+-- * 'ngiPayload'
+nodeGroupsInsert
+    :: Text -- ^ 'ngiProject'
+    -> Int32 -- ^ 'ngiInitialNodeCount'
+    -> Text -- ^ 'ngiZone'
+    -> NodeGroup -- ^ 'ngiPayload'
+    -> NodeGroupsInsert
+nodeGroupsInsert pNgiProject_ pNgiInitialNodeCount_ pNgiZone_ pNgiPayload_ =
+    NodeGroupsInsert'
+    { _ngiRequestId = Nothing
+    , _ngiProject = pNgiProject_
+    , _ngiInitialNodeCount = _Coerce # pNgiInitialNodeCount_
+    , _ngiZone = pNgiZone_
+    , _ngiPayload = pNgiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ngiRequestId :: Lens' NodeGroupsInsert (Maybe Text)
+ngiRequestId
+  = lens _ngiRequestId (\ s a -> s{_ngiRequestId = a})
+
+-- | Project ID for this request.
+ngiProject :: Lens' NodeGroupsInsert Text
+ngiProject
+  = lens _ngiProject (\ s a -> s{_ngiProject = a})
+
+-- | Initial count of nodes in the node group.
+ngiInitialNodeCount :: Lens' NodeGroupsInsert Int32
+ngiInitialNodeCount
+  = lens _ngiInitialNodeCount
+      (\ s a -> s{_ngiInitialNodeCount = a})
+      . _Coerce
+
+-- | The name of the zone for this request.
+ngiZone :: Lens' NodeGroupsInsert Text
+ngiZone = lens _ngiZone (\ s a -> s{_ngiZone = a})
+
+-- | Multipart request metadata.
+ngiPayload :: Lens' NodeGroupsInsert NodeGroup
+ngiPayload
+  = lens _ngiPayload (\ s a -> s{_ngiPayload = a})
+
+instance GoogleRequest NodeGroupsInsert where
+        type Rs NodeGroupsInsert = Operation
+        type Scopes NodeGroupsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsInsert'{..}
+          = go _ngiProject _ngiZone (Just _ngiInitialNodeCount)
+              _ngiRequestId
+              (Just AltJSON)
+              _ngiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/List.hs b/gen/Network/Google/Resource/Compute/NodeGroups/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/List.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.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)
+--
+-- Retrieves a list of node groups available to the specified project.
+-- Note: use nodeGroups.listNodes for more details about each group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.list@.
+module Network.Google.Resource.Compute.NodeGroups.List
+    (
+    -- * REST Resource
+      NodeGroupsListResource
+
+    -- * Creating a Request
+    , nodeGroupsList
+    , NodeGroupsList
+
+    -- * Request Lenses
+    , nglOrderBy
+    , nglProject
+    , nglZone
+    , nglFilter
+    , nglPageToken
+    , nglMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.list@ method which the
+-- 'NodeGroupsList' request conforms to.
+type NodeGroupsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] NodeGroupList
+
+-- | Retrieves a list of node groups available to the specified project.
+-- Note: use nodeGroups.listNodes for more details about each group.
+--
+-- /See:/ 'nodeGroupsList' smart constructor.
+data NodeGroupsList = NodeGroupsList'
+    { _nglOrderBy    :: !(Maybe Text)
+    , _nglProject    :: !Text
+    , _nglZone       :: !Text
+    , _nglFilter     :: !(Maybe Text)
+    , _nglPageToken  :: !(Maybe Text)
+    , _nglMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglOrderBy'
+--
+-- * 'nglProject'
+--
+-- * 'nglZone'
+--
+-- * 'nglFilter'
+--
+-- * 'nglPageToken'
+--
+-- * 'nglMaxResults'
+nodeGroupsList
+    :: Text -- ^ 'nglProject'
+    -> Text -- ^ 'nglZone'
+    -> NodeGroupsList
+nodeGroupsList pNglProject_ pNglZone_ =
+    NodeGroupsList'
+    { _nglOrderBy = Nothing
+    , _nglProject = pNglProject_
+    , _nglZone = pNglZone_
+    , _nglFilter = Nothing
+    , _nglPageToken = Nothing
+    , _nglMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+nglOrderBy :: Lens' NodeGroupsList (Maybe Text)
+nglOrderBy
+  = lens _nglOrderBy (\ s a -> s{_nglOrderBy = a})
+
+-- | Project ID for this request.
+nglProject :: Lens' NodeGroupsList Text
+nglProject
+  = lens _nglProject (\ s a -> s{_nglProject = a})
+
+-- | The name of the zone for this request.
+nglZone :: Lens' NodeGroupsList Text
+nglZone = lens _nglZone (\ s a -> s{_nglZone = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+nglFilter :: Lens' NodeGroupsList (Maybe Text)
+nglFilter
+  = lens _nglFilter (\ s a -> s{_nglFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+nglPageToken :: Lens' NodeGroupsList (Maybe Text)
+nglPageToken
+  = lens _nglPageToken (\ s a -> s{_nglPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+nglMaxResults :: Lens' NodeGroupsList Word32
+nglMaxResults
+  = lens _nglMaxResults
+      (\ s a -> s{_nglMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeGroupsList where
+        type Rs NodeGroupsList = NodeGroupList
+        type Scopes NodeGroupsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsList'{..}
+          = go _nglProject _nglZone _nglOrderBy _nglFilter
+              _nglPageToken
+              (Just _nglMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NodeGroupsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.ListNodes
+-- 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 nodes in the node group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.listNodes@.
+module Network.Google.Resource.Compute.NodeGroups.ListNodes
+    (
+    -- * REST Resource
+      NodeGroupsListNodesResource
+
+    -- * Creating a Request
+    , nodeGroupsListNodes'
+    , NodeGroupsListNodes'
+
+    -- * Request Lenses
+    , nglnNodeGroup
+    , nglnOrderBy
+    , nglnProject
+    , nglnZone
+    , nglnFilter
+    , nglnPageToken
+    , nglnMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.listNodes@ method which the
+-- 'NodeGroupsListNodes'' request conforms to.
+type NodeGroupsListNodesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     "listNodes" :>
+                       QueryParam "orderBy" Text :>
+                         QueryParam "filter" Text :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "maxResults" (Textual Word32) :>
+                               QueryParam "alt" AltJSON :>
+                                 Post '[JSON] NodeGroupsListNodes
+
+-- | Lists nodes in the node group.
+--
+-- /See:/ 'nodeGroupsListNodes'' smart constructor.
+data NodeGroupsListNodes' = NodeGroupsListNodes''
+    { _nglnNodeGroup  :: !Text
+    , _nglnOrderBy    :: !(Maybe Text)
+    , _nglnProject    :: !Text
+    , _nglnZone       :: !Text
+    , _nglnFilter     :: !(Maybe Text)
+    , _nglnPageToken  :: !(Maybe Text)
+    , _nglnMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsListNodes'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nglnNodeGroup'
+--
+-- * 'nglnOrderBy'
+--
+-- * 'nglnProject'
+--
+-- * 'nglnZone'
+--
+-- * 'nglnFilter'
+--
+-- * 'nglnPageToken'
+--
+-- * 'nglnMaxResults'
+nodeGroupsListNodes'
+    :: Text -- ^ 'nglnNodeGroup'
+    -> Text -- ^ 'nglnProject'
+    -> Text -- ^ 'nglnZone'
+    -> NodeGroupsListNodes'
+nodeGroupsListNodes' pNglnNodeGroup_ pNglnProject_ pNglnZone_ =
+    NodeGroupsListNodes''
+    { _nglnNodeGroup = pNglnNodeGroup_
+    , _nglnOrderBy = Nothing
+    , _nglnProject = pNglnProject_
+    , _nglnZone = pNglnZone_
+    , _nglnFilter = Nothing
+    , _nglnPageToken = Nothing
+    , _nglnMaxResults = 500
+    }
+
+-- | Name of the NodeGroup resource whose nodes you want to list.
+nglnNodeGroup :: Lens' NodeGroupsListNodes' Text
+nglnNodeGroup
+  = lens _nglnNodeGroup
+      (\ s a -> s{_nglnNodeGroup = a})
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+nglnOrderBy :: Lens' NodeGroupsListNodes' (Maybe Text)
+nglnOrderBy
+  = lens _nglnOrderBy (\ s a -> s{_nglnOrderBy = a})
+
+-- | Project ID for this request.
+nglnProject :: Lens' NodeGroupsListNodes' Text
+nglnProject
+  = lens _nglnProject (\ s a -> s{_nglnProject = a})
+
+-- | The name of the zone for this request.
+nglnZone :: Lens' NodeGroupsListNodes' Text
+nglnZone = lens _nglnZone (\ s a -> s{_nglnZone = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+nglnFilter :: Lens' NodeGroupsListNodes' (Maybe Text)
+nglnFilter
+  = lens _nglnFilter (\ s a -> s{_nglnFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+nglnPageToken :: Lens' NodeGroupsListNodes' (Maybe Text)
+nglnPageToken
+  = lens _nglnPageToken
+      (\ s a -> s{_nglnPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+nglnMaxResults :: Lens' NodeGroupsListNodes' Word32
+nglnMaxResults
+  = lens _nglnMaxResults
+      (\ s a -> s{_nglnMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeGroupsListNodes' where
+        type Rs NodeGroupsListNodes' = NodeGroupsListNodes
+        type Scopes NodeGroupsListNodes' =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsListNodes''{..}
+          = go _nglnProject _nglnZone _nglnNodeGroup
+              _nglnOrderBy
+              _nglnFilter
+              _nglnPageToken
+              (Just _nglnMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsListNodesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.setIamPolicy@.
+module Network.Google.Resource.Compute.NodeGroups.SetIAMPolicy
+    (
+    -- * REST Resource
+      NodeGroupsSetIAMPolicyResource
+
+    -- * Creating a Request
+    , nodeGroupsSetIAMPolicy
+    , NodeGroupsSetIAMPolicy
+
+    -- * Request Lenses
+    , ngsipProject
+    , ngsipZone
+    , ngsipPayload
+    , ngsipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.setIamPolicy@ method which the
+-- 'NodeGroupsSetIAMPolicy' request conforms to.
+type NodeGroupsSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "resource" Text :>
+                     "setIamPolicy" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ZoneSetPolicyRequest :>
+                           Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'nodeGroupsSetIAMPolicy' smart constructor.
+data NodeGroupsSetIAMPolicy = NodeGroupsSetIAMPolicy'
+    { _ngsipProject  :: !Text
+    , _ngsipZone     :: !Text
+    , _ngsipPayload  :: !ZoneSetPolicyRequest
+    , _ngsipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngsipProject'
+--
+-- * 'ngsipZone'
+--
+-- * 'ngsipPayload'
+--
+-- * 'ngsipResource'
+nodeGroupsSetIAMPolicy
+    :: Text -- ^ 'ngsipProject'
+    -> Text -- ^ 'ngsipZone'
+    -> ZoneSetPolicyRequest -- ^ 'ngsipPayload'
+    -> Text -- ^ 'ngsipResource'
+    -> NodeGroupsSetIAMPolicy
+nodeGroupsSetIAMPolicy pNgsipProject_ pNgsipZone_ pNgsipPayload_ pNgsipResource_ =
+    NodeGroupsSetIAMPolicy'
+    { _ngsipProject = pNgsipProject_
+    , _ngsipZone = pNgsipZone_
+    , _ngsipPayload = pNgsipPayload_
+    , _ngsipResource = pNgsipResource_
+    }
+
+-- | Project ID for this request.
+ngsipProject :: Lens' NodeGroupsSetIAMPolicy Text
+ngsipProject
+  = lens _ngsipProject (\ s a -> s{_ngsipProject = a})
+
+-- | The name of the zone for this request.
+ngsipZone :: Lens' NodeGroupsSetIAMPolicy Text
+ngsipZone
+  = lens _ngsipZone (\ s a -> s{_ngsipZone = a})
+
+-- | Multipart request metadata.
+ngsipPayload :: Lens' NodeGroupsSetIAMPolicy ZoneSetPolicyRequest
+ngsipPayload
+  = lens _ngsipPayload (\ s a -> s{_ngsipPayload = a})
+
+-- | Name or id of the resource for this request.
+ngsipResource :: Lens' NodeGroupsSetIAMPolicy Text
+ngsipResource
+  = lens _ngsipResource
+      (\ s a -> s{_ngsipResource = a})
+
+instance GoogleRequest NodeGroupsSetIAMPolicy where
+        type Rs NodeGroupsSetIAMPolicy = Policy
+        type Scopes NodeGroupsSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsSetIAMPolicy'{..}
+          = go _ngsipProject _ngsipZone _ngsipResource
+              (Just AltJSON)
+              _ngsipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs b/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.SetNodeTemplate
+-- 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 node template of the node group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.setNodeTemplate@.
+module Network.Google.Resource.Compute.NodeGroups.SetNodeTemplate
+    (
+    -- * REST Resource
+      NodeGroupsSetNodeTemplateResource
+
+    -- * Creating a Request
+    , nodeGroupsSetNodeTemplate
+    , NodeGroupsSetNodeTemplate
+
+    -- * Request Lenses
+    , ngsntRequestId
+    , ngsntNodeGroup
+    , ngsntProject
+    , ngsntZone
+    , ngsntPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.setNodeTemplate@ method which the
+-- 'NodeGroupsSetNodeTemplate' request conforms to.
+type NodeGroupsSetNodeTemplateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "nodeGroup" Text :>
+                     "setNodeTemplate" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] NodeGroupsSetNodeTemplateRequest :>
+                             Post '[JSON] Operation
+
+-- | Updates the node template of the node group.
+--
+-- /See:/ 'nodeGroupsSetNodeTemplate' smart constructor.
+data NodeGroupsSetNodeTemplate = NodeGroupsSetNodeTemplate'
+    { _ngsntRequestId :: !(Maybe Text)
+    , _ngsntNodeGroup :: !Text
+    , _ngsntProject   :: !Text
+    , _ngsntZone      :: !Text
+    , _ngsntPayload   :: !NodeGroupsSetNodeTemplateRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsSetNodeTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngsntRequestId'
+--
+-- * 'ngsntNodeGroup'
+--
+-- * 'ngsntProject'
+--
+-- * 'ngsntZone'
+--
+-- * 'ngsntPayload'
+nodeGroupsSetNodeTemplate
+    :: Text -- ^ 'ngsntNodeGroup'
+    -> Text -- ^ 'ngsntProject'
+    -> Text -- ^ 'ngsntZone'
+    -> NodeGroupsSetNodeTemplateRequest -- ^ 'ngsntPayload'
+    -> NodeGroupsSetNodeTemplate
+nodeGroupsSetNodeTemplate pNgsntNodeGroup_ pNgsntProject_ pNgsntZone_ pNgsntPayload_ =
+    NodeGroupsSetNodeTemplate'
+    { _ngsntRequestId = Nothing
+    , _ngsntNodeGroup = pNgsntNodeGroup_
+    , _ngsntProject = pNgsntProject_
+    , _ngsntZone = pNgsntZone_
+    , _ngsntPayload = pNgsntPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ngsntRequestId :: Lens' NodeGroupsSetNodeTemplate (Maybe Text)
+ngsntRequestId
+  = lens _ngsntRequestId
+      (\ s a -> s{_ngsntRequestId = a})
+
+-- | Name of the NodeGroup resource to delete.
+ngsntNodeGroup :: Lens' NodeGroupsSetNodeTemplate Text
+ngsntNodeGroup
+  = lens _ngsntNodeGroup
+      (\ s a -> s{_ngsntNodeGroup = a})
+
+-- | Project ID for this request.
+ngsntProject :: Lens' NodeGroupsSetNodeTemplate Text
+ngsntProject
+  = lens _ngsntProject (\ s a -> s{_ngsntProject = a})
+
+-- | The name of the zone for this request.
+ngsntZone :: Lens' NodeGroupsSetNodeTemplate Text
+ngsntZone
+  = lens _ngsntZone (\ s a -> s{_ngsntZone = a})
+
+-- | Multipart request metadata.
+ngsntPayload :: Lens' NodeGroupsSetNodeTemplate NodeGroupsSetNodeTemplateRequest
+ngsntPayload
+  = lens _ngsntPayload (\ s a -> s{_ngsntPayload = a})
+
+instance GoogleRequest NodeGroupsSetNodeTemplate
+         where
+        type Rs NodeGroupsSetNodeTemplate = Operation
+        type Scopes NodeGroupsSetNodeTemplate =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeGroupsSetNodeTemplate'{..}
+          = go _ngsntProject _ngsntZone _ngsntNodeGroup
+              _ngsntRequestId
+              (Just AltJSON)
+              _ngsntPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsSetNodeTemplateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeGroups.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeGroups.testIamPermissions@.
+module Network.Google.Resource.Compute.NodeGroups.TestIAMPermissions
+    (
+    -- * REST Resource
+      NodeGroupsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , nodeGroupsTestIAMPermissions
+    , NodeGroupsTestIAMPermissions
+
+    -- * Request Lenses
+    , ngtipProject
+    , ngtipZone
+    , ngtipPayload
+    , ngtipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeGroups.testIamPermissions@ method which the
+-- 'NodeGroupsTestIAMPermissions' request conforms to.
+type NodeGroupsTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeGroups" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'nodeGroupsTestIAMPermissions' smart constructor.
+data NodeGroupsTestIAMPermissions = NodeGroupsTestIAMPermissions'
+    { _ngtipProject  :: !Text
+    , _ngtipZone     :: !Text
+    , _ngtipPayload  :: !TestPermissionsRequest
+    , _ngtipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeGroupsTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngtipProject'
+--
+-- * 'ngtipZone'
+--
+-- * 'ngtipPayload'
+--
+-- * 'ngtipResource'
+nodeGroupsTestIAMPermissions
+    :: Text -- ^ 'ngtipProject'
+    -> Text -- ^ 'ngtipZone'
+    -> TestPermissionsRequest -- ^ 'ngtipPayload'
+    -> Text -- ^ 'ngtipResource'
+    -> NodeGroupsTestIAMPermissions
+nodeGroupsTestIAMPermissions pNgtipProject_ pNgtipZone_ pNgtipPayload_ pNgtipResource_ =
+    NodeGroupsTestIAMPermissions'
+    { _ngtipProject = pNgtipProject_
+    , _ngtipZone = pNgtipZone_
+    , _ngtipPayload = pNgtipPayload_
+    , _ngtipResource = pNgtipResource_
+    }
+
+-- | Project ID for this request.
+ngtipProject :: Lens' NodeGroupsTestIAMPermissions Text
+ngtipProject
+  = lens _ngtipProject (\ s a -> s{_ngtipProject = a})
+
+-- | The name of the zone for this request.
+ngtipZone :: Lens' NodeGroupsTestIAMPermissions Text
+ngtipZone
+  = lens _ngtipZone (\ s a -> s{_ngtipZone = a})
+
+-- | Multipart request metadata.
+ngtipPayload :: Lens' NodeGroupsTestIAMPermissions TestPermissionsRequest
+ngtipPayload
+  = lens _ngtipPayload (\ s a -> s{_ngtipPayload = a})
+
+-- | Name or id of the resource for this request.
+ngtipResource :: Lens' NodeGroupsTestIAMPermissions Text
+ngtipResource
+  = lens _ngtipResource
+      (\ s a -> s{_ngtipResource = a})
+
+instance GoogleRequest NodeGroupsTestIAMPermissions
+         where
+        type Rs NodeGroupsTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes NodeGroupsTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeGroupsTestIAMPermissions'{..}
+          = go _ngtipProject _ngtipZone _ngtipResource
+              (Just AltJSON)
+              _ngtipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeGroupsTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.AggregatedList
+-- 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 an aggregated list of node templates.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.aggregatedList@.
+module Network.Google.Resource.Compute.NodeTemplates.AggregatedList
+    (
+    -- * REST Resource
+      NodeTemplatesAggregatedListResource
+
+    -- * Creating a Request
+    , nodeTemplatesAggregatedList
+    , NodeTemplatesAggregatedList
+
+    -- * Request Lenses
+    , nOrderBy
+    , nProject
+    , nFilter
+    , nPageToken
+    , nMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.aggregatedList@ method which the
+-- 'NodeTemplatesAggregatedList' request conforms to.
+type NodeTemplatesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "nodeTemplates" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] NodeTemplateAggregatedList
+
+-- | Retrieves an aggregated list of node templates.
+--
+-- /See:/ 'nodeTemplatesAggregatedList' smart constructor.
+data NodeTemplatesAggregatedList = NodeTemplatesAggregatedList'
+    { _nOrderBy    :: !(Maybe Text)
+    , _nProject    :: !Text
+    , _nFilter     :: !(Maybe Text)
+    , _nPageToken  :: !(Maybe Text)
+    , _nMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nOrderBy'
+--
+-- * 'nProject'
+--
+-- * 'nFilter'
+--
+-- * 'nPageToken'
+--
+-- * 'nMaxResults'
+nodeTemplatesAggregatedList
+    :: Text -- ^ 'nProject'
+    -> NodeTemplatesAggregatedList
+nodeTemplatesAggregatedList pNProject_ =
+    NodeTemplatesAggregatedList'
+    { _nOrderBy = Nothing
+    , _nProject = pNProject_
+    , _nFilter = Nothing
+    , _nPageToken = Nothing
+    , _nMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+nOrderBy :: Lens' NodeTemplatesAggregatedList (Maybe Text)
+nOrderBy = lens _nOrderBy (\ s a -> s{_nOrderBy = a})
+
+-- | Project ID for this request.
+nProject :: Lens' NodeTemplatesAggregatedList Text
+nProject = lens _nProject (\ s a -> s{_nProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+nFilter :: Lens' NodeTemplatesAggregatedList (Maybe Text)
+nFilter = lens _nFilter (\ s a -> s{_nFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+nPageToken :: Lens' NodeTemplatesAggregatedList (Maybe Text)
+nPageToken
+  = lens _nPageToken (\ s a -> s{_nPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+nMaxResults :: Lens' NodeTemplatesAggregatedList Word32
+nMaxResults
+  = lens _nMaxResults (\ s a -> s{_nMaxResults = a}) .
+      _Coerce
+
+instance GoogleRequest NodeTemplatesAggregatedList
+         where
+        type Rs NodeTemplatesAggregatedList =
+             NodeTemplateAggregatedList
+        type Scopes NodeTemplatesAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTemplatesAggregatedList'{..}
+          = go _nProject _nOrderBy _nFilter _nPageToken
+              (Just _nMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.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 specified NodeTemplate resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.delete@.
+module Network.Google.Resource.Compute.NodeTemplates.Delete
+    (
+    -- * REST Resource
+      NodeTemplatesDeleteResource
+
+    -- * Creating a Request
+    , nodeTemplatesDelete
+    , NodeTemplatesDelete
+
+    -- * Request Lenses
+    , ntdRequestId
+    , ntdProject
+    , ntdNodeTemplate
+    , ntdRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.delete@ method which the
+-- 'NodeTemplatesDelete' request conforms to.
+type NodeTemplatesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   Capture "nodeTemplate" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified NodeTemplate resource.
+--
+-- /See:/ 'nodeTemplatesDelete' smart constructor.
+data NodeTemplatesDelete = NodeTemplatesDelete'
+    { _ntdRequestId    :: !(Maybe Text)
+    , _ntdProject      :: !Text
+    , _ntdNodeTemplate :: !Text
+    , _ntdRegion       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntdRequestId'
+--
+-- * 'ntdProject'
+--
+-- * 'ntdNodeTemplate'
+--
+-- * 'ntdRegion'
+nodeTemplatesDelete
+    :: Text -- ^ 'ntdProject'
+    -> Text -- ^ 'ntdNodeTemplate'
+    -> Text -- ^ 'ntdRegion'
+    -> NodeTemplatesDelete
+nodeTemplatesDelete pNtdProject_ pNtdNodeTemplate_ pNtdRegion_ =
+    NodeTemplatesDelete'
+    { _ntdRequestId = Nothing
+    , _ntdProject = pNtdProject_
+    , _ntdNodeTemplate = pNtdNodeTemplate_
+    , _ntdRegion = pNtdRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ntdRequestId :: Lens' NodeTemplatesDelete (Maybe Text)
+ntdRequestId
+  = lens _ntdRequestId (\ s a -> s{_ntdRequestId = a})
+
+-- | Project ID for this request.
+ntdProject :: Lens' NodeTemplatesDelete Text
+ntdProject
+  = lens _ntdProject (\ s a -> s{_ntdProject = a})
+
+-- | Name of the NodeTemplate resource to delete.
+ntdNodeTemplate :: Lens' NodeTemplatesDelete Text
+ntdNodeTemplate
+  = lens _ntdNodeTemplate
+      (\ s a -> s{_ntdNodeTemplate = a})
+
+-- | The name of the region for this request.
+ntdRegion :: Lens' NodeTemplatesDelete Text
+ntdRegion
+  = lens _ntdRegion (\ s a -> s{_ntdRegion = a})
+
+instance GoogleRequest NodeTemplatesDelete where
+        type Rs NodeTemplatesDelete = Operation
+        type Scopes NodeTemplatesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeTemplatesDelete'{..}
+          = go _ntdProject _ntdRegion _ntdNodeTemplate
+              _ntdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.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)
+--
+-- Returns the specified node template. Gets a list of available node
+-- templates by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.get@.
+module Network.Google.Resource.Compute.NodeTemplates.Get
+    (
+    -- * REST Resource
+      NodeTemplatesGetResource
+
+    -- * Creating a Request
+    , nodeTemplatesGet
+    , NodeTemplatesGet
+
+    -- * Request Lenses
+    , nodProject
+    , nodNodeTemplate
+    , nodRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.get@ method which the
+-- 'NodeTemplatesGet' request conforms to.
+type NodeTemplatesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   Capture "nodeTemplate" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] NodeTemplate
+
+-- | Returns the specified node template. Gets a list of available node
+-- templates by making a list() request.
+--
+-- /See:/ 'nodeTemplatesGet' smart constructor.
+data NodeTemplatesGet = NodeTemplatesGet'
+    { _nodProject      :: !Text
+    , _nodNodeTemplate :: !Text
+    , _nodRegion       :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nodProject'
+--
+-- * 'nodNodeTemplate'
+--
+-- * 'nodRegion'
+nodeTemplatesGet
+    :: Text -- ^ 'nodProject'
+    -> Text -- ^ 'nodNodeTemplate'
+    -> Text -- ^ 'nodRegion'
+    -> NodeTemplatesGet
+nodeTemplatesGet pNodProject_ pNodNodeTemplate_ pNodRegion_ =
+    NodeTemplatesGet'
+    { _nodProject = pNodProject_
+    , _nodNodeTemplate = pNodNodeTemplate_
+    , _nodRegion = pNodRegion_
+    }
+
+-- | Project ID for this request.
+nodProject :: Lens' NodeTemplatesGet Text
+nodProject
+  = lens _nodProject (\ s a -> s{_nodProject = a})
+
+-- | Name of the node template to return.
+nodNodeTemplate :: Lens' NodeTemplatesGet Text
+nodNodeTemplate
+  = lens _nodNodeTemplate
+      (\ s a -> s{_nodNodeTemplate = a})
+
+-- | The name of the region for this request.
+nodRegion :: Lens' NodeTemplatesGet Text
+nodRegion
+  = lens _nodRegion (\ s a -> s{_nodRegion = a})
+
+instance GoogleRequest NodeTemplatesGet where
+        type Rs NodeTemplatesGet = NodeTemplate
+        type Scopes NodeTemplatesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTemplatesGet'{..}
+          = go _nodProject _nodRegion _nodNodeTemplate
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.getIamPolicy@.
+module Network.Google.Resource.Compute.NodeTemplates.GetIAMPolicy
+    (
+    -- * REST Resource
+      NodeTemplatesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , nodeTemplatesGetIAMPolicy
+    , NodeTemplatesGetIAMPolicy
+
+    -- * Request Lenses
+    , ntgipProject
+    , ntgipResource
+    , ntgipRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.getIamPolicy@ method which the
+-- 'NodeTemplatesGetIAMPolicy' request conforms to.
+type NodeTemplatesGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   Capture "resource" Text :>
+                     "getIamPolicy" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'nodeTemplatesGetIAMPolicy' smart constructor.
+data NodeTemplatesGetIAMPolicy = NodeTemplatesGetIAMPolicy'
+    { _ntgipProject  :: !Text
+    , _ntgipResource :: !Text
+    , _ntgipRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntgipProject'
+--
+-- * 'ntgipResource'
+--
+-- * 'ntgipRegion'
+nodeTemplatesGetIAMPolicy
+    :: Text -- ^ 'ntgipProject'
+    -> Text -- ^ 'ntgipResource'
+    -> Text -- ^ 'ntgipRegion'
+    -> NodeTemplatesGetIAMPolicy
+nodeTemplatesGetIAMPolicy pNtgipProject_ pNtgipResource_ pNtgipRegion_ =
+    NodeTemplatesGetIAMPolicy'
+    { _ntgipProject = pNtgipProject_
+    , _ntgipResource = pNtgipResource_
+    , _ntgipRegion = pNtgipRegion_
+    }
+
+-- | Project ID for this request.
+ntgipProject :: Lens' NodeTemplatesGetIAMPolicy Text
+ntgipProject
+  = lens _ntgipProject (\ s a -> s{_ntgipProject = a})
+
+-- | Name or id of the resource for this request.
+ntgipResource :: Lens' NodeTemplatesGetIAMPolicy Text
+ntgipResource
+  = lens _ntgipResource
+      (\ s a -> s{_ntgipResource = a})
+
+-- | The name of the region for this request.
+ntgipRegion :: Lens' NodeTemplatesGetIAMPolicy Text
+ntgipRegion
+  = lens _ntgipRegion (\ s a -> s{_ntgipRegion = a})
+
+instance GoogleRequest NodeTemplatesGetIAMPolicy
+         where
+        type Rs NodeTemplatesGetIAMPolicy = Policy
+        type Scopes NodeTemplatesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTemplatesGetIAMPolicy'{..}
+          = go _ntgipProject _ntgipRegion _ntgipResource
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.Insert
+-- 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 NodeTemplate resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.insert@.
+module Network.Google.Resource.Compute.NodeTemplates.Insert
+    (
+    -- * REST Resource
+      NodeTemplatesInsertResource
+
+    -- * Creating a Request
+    , nodeTemplatesInsert
+    , NodeTemplatesInsert
+
+    -- * Request Lenses
+    , ntiRequestId
+    , ntiProject
+    , ntiPayload
+    , ntiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.insert@ method which the
+-- 'NodeTemplatesInsert' request conforms to.
+type NodeTemplatesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] NodeTemplate :>
+                         Post '[JSON] Operation
+
+-- | Creates a NodeTemplate resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'nodeTemplatesInsert' smart constructor.
+data NodeTemplatesInsert = NodeTemplatesInsert'
+    { _ntiRequestId :: !(Maybe Text)
+    , _ntiProject   :: !Text
+    , _ntiPayload   :: !NodeTemplate
+    , _ntiRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntiRequestId'
+--
+-- * 'ntiProject'
+--
+-- * 'ntiPayload'
+--
+-- * 'ntiRegion'
+nodeTemplatesInsert
+    :: Text -- ^ 'ntiProject'
+    -> NodeTemplate -- ^ 'ntiPayload'
+    -> Text -- ^ 'ntiRegion'
+    -> NodeTemplatesInsert
+nodeTemplatesInsert pNtiProject_ pNtiPayload_ pNtiRegion_ =
+    NodeTemplatesInsert'
+    { _ntiRequestId = Nothing
+    , _ntiProject = pNtiProject_
+    , _ntiPayload = pNtiPayload_
+    , _ntiRegion = pNtiRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ntiRequestId :: Lens' NodeTemplatesInsert (Maybe Text)
+ntiRequestId
+  = lens _ntiRequestId (\ s a -> s{_ntiRequestId = a})
+
+-- | Project ID for this request.
+ntiProject :: Lens' NodeTemplatesInsert Text
+ntiProject
+  = lens _ntiProject (\ s a -> s{_ntiProject = a})
+
+-- | Multipart request metadata.
+ntiPayload :: Lens' NodeTemplatesInsert NodeTemplate
+ntiPayload
+  = lens _ntiPayload (\ s a -> s{_ntiPayload = a})
+
+-- | The name of the region for this request.
+ntiRegion :: Lens' NodeTemplatesInsert Text
+ntiRegion
+  = lens _ntiRegion (\ s a -> s{_ntiRegion = a})
+
+instance GoogleRequest NodeTemplatesInsert where
+        type Rs NodeTemplatesInsert = Operation
+        type Scopes NodeTemplatesInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeTemplatesInsert'{..}
+          = go _ntiProject _ntiRegion _ntiRequestId
+              (Just AltJSON)
+              _ntiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.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)
+--
+-- Retrieves a list of node templates available to the specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.list@.
+module Network.Google.Resource.Compute.NodeTemplates.List
+    (
+    -- * REST Resource
+      NodeTemplatesListResource
+
+    -- * Creating a Request
+    , nodeTemplatesList
+    , NodeTemplatesList
+
+    -- * Request Lenses
+    , ntlOrderBy
+    , ntlProject
+    , ntlFilter
+    , ntlRegion
+    , ntlPageToken
+    , ntlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.list@ method which the
+-- 'NodeTemplatesList' request conforms to.
+type NodeTemplatesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] NodeTemplateList
+
+-- | Retrieves a list of node templates available to the specified project.
+--
+-- /See:/ 'nodeTemplatesList' smart constructor.
+data NodeTemplatesList = NodeTemplatesList'
+    { _ntlOrderBy    :: !(Maybe Text)
+    , _ntlProject    :: !Text
+    , _ntlFilter     :: !(Maybe Text)
+    , _ntlRegion     :: !Text
+    , _ntlPageToken  :: !(Maybe Text)
+    , _ntlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntlOrderBy'
+--
+-- * 'ntlProject'
+--
+-- * 'ntlFilter'
+--
+-- * 'ntlRegion'
+--
+-- * 'ntlPageToken'
+--
+-- * 'ntlMaxResults'
+nodeTemplatesList
+    :: Text -- ^ 'ntlProject'
+    -> Text -- ^ 'ntlRegion'
+    -> NodeTemplatesList
+nodeTemplatesList pNtlProject_ pNtlRegion_ =
+    NodeTemplatesList'
+    { _ntlOrderBy = Nothing
+    , _ntlProject = pNtlProject_
+    , _ntlFilter = Nothing
+    , _ntlRegion = pNtlRegion_
+    , _ntlPageToken = Nothing
+    , _ntlMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ntlOrderBy :: Lens' NodeTemplatesList (Maybe Text)
+ntlOrderBy
+  = lens _ntlOrderBy (\ s a -> s{_ntlOrderBy = a})
+
+-- | Project ID for this request.
+ntlProject :: Lens' NodeTemplatesList Text
+ntlProject
+  = lens _ntlProject (\ s a -> s{_ntlProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ntlFilter :: Lens' NodeTemplatesList (Maybe Text)
+ntlFilter
+  = lens _ntlFilter (\ s a -> s{_ntlFilter = a})
+
+-- | The name of the region for this request.
+ntlRegion :: Lens' NodeTemplatesList Text
+ntlRegion
+  = lens _ntlRegion (\ s a -> s{_ntlRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ntlPageToken :: Lens' NodeTemplatesList (Maybe Text)
+ntlPageToken
+  = lens _ntlPageToken (\ s a -> s{_ntlPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ntlMaxResults :: Lens' NodeTemplatesList Word32
+ntlMaxResults
+  = lens _ntlMaxResults
+      (\ s a -> s{_ntlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeTemplatesList where
+        type Rs NodeTemplatesList = NodeTemplateList
+        type Scopes NodeTemplatesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTemplatesList'{..}
+          = go _ntlProject _ntlRegion _ntlOrderBy _ntlFilter
+              _ntlPageToken
+              (Just _ntlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.setIamPolicy@.
+module Network.Google.Resource.Compute.NodeTemplates.SetIAMPolicy
+    (
+    -- * REST Resource
+      NodeTemplatesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , nodeTemplatesSetIAMPolicy
+    , NodeTemplatesSetIAMPolicy
+
+    -- * Request Lenses
+    , ntsipProject
+    , ntsipPayload
+    , ntsipResource
+    , ntsipRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.setIamPolicy@ method which the
+-- 'NodeTemplatesSetIAMPolicy' request conforms to.
+type NodeTemplatesSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   Capture "resource" Text :>
+                     "setIamPolicy" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] RegionSetPolicyRequest :>
+                           Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'nodeTemplatesSetIAMPolicy' smart constructor.
+data NodeTemplatesSetIAMPolicy = NodeTemplatesSetIAMPolicy'
+    { _ntsipProject  :: !Text
+    , _ntsipPayload  :: !RegionSetPolicyRequest
+    , _ntsipResource :: !Text
+    , _ntsipRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntsipProject'
+--
+-- * 'ntsipPayload'
+--
+-- * 'ntsipResource'
+--
+-- * 'ntsipRegion'
+nodeTemplatesSetIAMPolicy
+    :: Text -- ^ 'ntsipProject'
+    -> RegionSetPolicyRequest -- ^ 'ntsipPayload'
+    -> Text -- ^ 'ntsipResource'
+    -> Text -- ^ 'ntsipRegion'
+    -> NodeTemplatesSetIAMPolicy
+nodeTemplatesSetIAMPolicy pNtsipProject_ pNtsipPayload_ pNtsipResource_ pNtsipRegion_ =
+    NodeTemplatesSetIAMPolicy'
+    { _ntsipProject = pNtsipProject_
+    , _ntsipPayload = pNtsipPayload_
+    , _ntsipResource = pNtsipResource_
+    , _ntsipRegion = pNtsipRegion_
+    }
+
+-- | Project ID for this request.
+ntsipProject :: Lens' NodeTemplatesSetIAMPolicy Text
+ntsipProject
+  = lens _ntsipProject (\ s a -> s{_ntsipProject = a})
+
+-- | Multipart request metadata.
+ntsipPayload :: Lens' NodeTemplatesSetIAMPolicy RegionSetPolicyRequest
+ntsipPayload
+  = lens _ntsipPayload (\ s a -> s{_ntsipPayload = a})
+
+-- | Name or id of the resource for this request.
+ntsipResource :: Lens' NodeTemplatesSetIAMPolicy Text
+ntsipResource
+  = lens _ntsipResource
+      (\ s a -> s{_ntsipResource = a})
+
+-- | The name of the region for this request.
+ntsipRegion :: Lens' NodeTemplatesSetIAMPolicy Text
+ntsipRegion
+  = lens _ntsipRegion (\ s a -> s{_ntsipRegion = a})
+
+instance GoogleRequest NodeTemplatesSetIAMPolicy
+         where
+        type Rs NodeTemplatesSetIAMPolicy = Policy
+        type Scopes NodeTemplatesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NodeTemplatesSetIAMPolicy'{..}
+          = go _ntsipProject _ntsipRegion _ntsipResource
+              (Just AltJSON)
+              _ntsipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTemplatesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTemplates.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTemplates.testIamPermissions@.
+module Network.Google.Resource.Compute.NodeTemplates.TestIAMPermissions
+    (
+    -- * REST Resource
+      NodeTemplatesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , nodeTemplatesTestIAMPermissions
+    , NodeTemplatesTestIAMPermissions
+
+    -- * Request Lenses
+    , nttipProject
+    , nttipPayload
+    , nttipResource
+    , nttipRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTemplates.testIamPermissions@ method which the
+-- 'NodeTemplatesTestIAMPermissions' request conforms to.
+type NodeTemplatesTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "nodeTemplates" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'nodeTemplatesTestIAMPermissions' smart constructor.
+data NodeTemplatesTestIAMPermissions = NodeTemplatesTestIAMPermissions'
+    { _nttipProject  :: !Text
+    , _nttipPayload  :: !TestPermissionsRequest
+    , _nttipResource :: !Text
+    , _nttipRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTemplatesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nttipProject'
+--
+-- * 'nttipPayload'
+--
+-- * 'nttipResource'
+--
+-- * 'nttipRegion'
+nodeTemplatesTestIAMPermissions
+    :: Text -- ^ 'nttipProject'
+    -> TestPermissionsRequest -- ^ 'nttipPayload'
+    -> Text -- ^ 'nttipResource'
+    -> Text -- ^ 'nttipRegion'
+    -> NodeTemplatesTestIAMPermissions
+nodeTemplatesTestIAMPermissions pNttipProject_ pNttipPayload_ pNttipResource_ pNttipRegion_ =
+    NodeTemplatesTestIAMPermissions'
+    { _nttipProject = pNttipProject_
+    , _nttipPayload = pNttipPayload_
+    , _nttipResource = pNttipResource_
+    , _nttipRegion = pNttipRegion_
+    }
+
+-- | Project ID for this request.
+nttipProject :: Lens' NodeTemplatesTestIAMPermissions Text
+nttipProject
+  = lens _nttipProject (\ s a -> s{_nttipProject = a})
+
+-- | Multipart request metadata.
+nttipPayload :: Lens' NodeTemplatesTestIAMPermissions TestPermissionsRequest
+nttipPayload
+  = lens _nttipPayload (\ s a -> s{_nttipPayload = a})
+
+-- | Name or id of the resource for this request.
+nttipResource :: Lens' NodeTemplatesTestIAMPermissions Text
+nttipResource
+  = lens _nttipResource
+      (\ s a -> s{_nttipResource = a})
+
+-- | The name of the region for this request.
+nttipRegion :: Lens' NodeTemplatesTestIAMPermissions Text
+nttipRegion
+  = lens _nttipRegion (\ s a -> s{_nttipRegion = a})
+
+instance GoogleRequest
+         NodeTemplatesTestIAMPermissions where
+        type Rs NodeTemplatesTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes NodeTemplatesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTemplatesTestIAMPermissions'{..}
+          = go _nttipProject _nttipRegion _nttipResource
+              (Just AltJSON)
+              _nttipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy NodeTemplatesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTypes.AggregatedList
+-- 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 an aggregated list of node types.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTypes.aggregatedList@.
+module Network.Google.Resource.Compute.NodeTypes.AggregatedList
+    (
+    -- * REST Resource
+      NodeTypesAggregatedListResource
+
+    -- * Creating a Request
+    , nodeTypesAggregatedList
+    , NodeTypesAggregatedList
+
+    -- * Request Lenses
+    , ntalOrderBy
+    , ntalProject
+    , ntalFilter
+    , ntalPageToken
+    , ntalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTypes.aggregatedList@ method which the
+-- 'NodeTypesAggregatedList' request conforms to.
+type NodeTypesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "nodeTypes" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] NodeTypeAggregatedList
+
+-- | Retrieves an aggregated list of node types.
+--
+-- /See:/ 'nodeTypesAggregatedList' smart constructor.
+data NodeTypesAggregatedList = NodeTypesAggregatedList'
+    { _ntalOrderBy    :: !(Maybe Text)
+    , _ntalProject    :: !Text
+    , _ntalFilter     :: !(Maybe Text)
+    , _ntalPageToken  :: !(Maybe Text)
+    , _ntalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntalOrderBy'
+--
+-- * 'ntalProject'
+--
+-- * 'ntalFilter'
+--
+-- * 'ntalPageToken'
+--
+-- * 'ntalMaxResults'
+nodeTypesAggregatedList
+    :: Text -- ^ 'ntalProject'
+    -> NodeTypesAggregatedList
+nodeTypesAggregatedList pNtalProject_ =
+    NodeTypesAggregatedList'
+    { _ntalOrderBy = Nothing
+    , _ntalProject = pNtalProject_
+    , _ntalFilter = Nothing
+    , _ntalPageToken = Nothing
+    , _ntalMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ntalOrderBy :: Lens' NodeTypesAggregatedList (Maybe Text)
+ntalOrderBy
+  = lens _ntalOrderBy (\ s a -> s{_ntalOrderBy = a})
+
+-- | Project ID for this request.
+ntalProject :: Lens' NodeTypesAggregatedList Text
+ntalProject
+  = lens _ntalProject (\ s a -> s{_ntalProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ntalFilter :: Lens' NodeTypesAggregatedList (Maybe Text)
+ntalFilter
+  = lens _ntalFilter (\ s a -> s{_ntalFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ntalPageToken :: Lens' NodeTypesAggregatedList (Maybe Text)
+ntalPageToken
+  = lens _ntalPageToken
+      (\ s a -> s{_ntalPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ntalMaxResults :: Lens' NodeTypesAggregatedList Word32
+ntalMaxResults
+  = lens _ntalMaxResults
+      (\ s a -> s{_ntalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeTypesAggregatedList where
+        type Rs NodeTypesAggregatedList =
+             NodeTypeAggregatedList
+        type Scopes NodeTypesAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTypesAggregatedList'{..}
+          = go _ntalProject _ntalOrderBy _ntalFilter
+              _ntalPageToken
+              (Just _ntalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NodeTypesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs b/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTypes.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)
+--
+-- Returns the specified node type. Gets a list of available node types by
+-- making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTypes.get@.
+module Network.Google.Resource.Compute.NodeTypes.Get
+    (
+    -- * REST Resource
+      NodeTypesGetResource
+
+    -- * Creating a Request
+    , nodeTypesGet
+    , NodeTypesGet
+
+    -- * Request Lenses
+    , ntgProject
+    , ntgZone
+    , ntgNodeType
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTypes.get@ method which the
+-- 'NodeTypesGet' request conforms to.
+type NodeTypesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeTypes" :>
+                   Capture "nodeType" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] NodeType
+
+-- | Returns the specified node type. Gets a list of available node types by
+-- making a list() request.
+--
+-- /See:/ 'nodeTypesGet' smart constructor.
+data NodeTypesGet = NodeTypesGet'
+    { _ntgProject  :: !Text
+    , _ntgZone     :: !Text
+    , _ntgNodeType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntgProject'
+--
+-- * 'ntgZone'
+--
+-- * 'ntgNodeType'
+nodeTypesGet
+    :: Text -- ^ 'ntgProject'
+    -> Text -- ^ 'ntgZone'
+    -> Text -- ^ 'ntgNodeType'
+    -> NodeTypesGet
+nodeTypesGet pNtgProject_ pNtgZone_ pNtgNodeType_ =
+    NodeTypesGet'
+    { _ntgProject = pNtgProject_
+    , _ntgZone = pNtgZone_
+    , _ntgNodeType = pNtgNodeType_
+    }
+
+-- | Project ID for this request.
+ntgProject :: Lens' NodeTypesGet Text
+ntgProject
+  = lens _ntgProject (\ s a -> s{_ntgProject = a})
+
+-- | The name of the zone for this request.
+ntgZone :: Lens' NodeTypesGet Text
+ntgZone = lens _ntgZone (\ s a -> s{_ntgZone = a})
+
+-- | Name of the node type to return.
+ntgNodeType :: Lens' NodeTypesGet Text
+ntgNodeType
+  = lens _ntgNodeType (\ s a -> s{_ntgNodeType = a})
+
+instance GoogleRequest NodeTypesGet where
+        type Rs NodeTypesGet = NodeType
+        type Scopes NodeTypesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTypesGet'{..}
+          = go _ntgProject _ntgZone _ntgNodeType (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NodeTypesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/List.hs b/gen/Network/Google/Resource/Compute/NodeTypes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/List.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.NodeTypes.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)
+--
+-- Retrieves a list of node types available to the specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.nodeTypes.list@.
+module Network.Google.Resource.Compute.NodeTypes.List
+    (
+    -- * REST Resource
+      NodeTypesListResource
+
+    -- * Creating a Request
+    , nodeTypesList
+    , NodeTypesList
+
+    -- * Request Lenses
+    , ntltOrderBy
+    , ntltProject
+    , ntltZone
+    , ntltFilter
+    , ntltPageToken
+    , ntltMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.nodeTypes.list@ method which the
+-- 'NodeTypesList' request conforms to.
+type NodeTypesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "nodeTypes" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] NodeTypeList
+
+-- | Retrieves a list of node types available to the specified project.
+--
+-- /See:/ 'nodeTypesList' smart constructor.
+data NodeTypesList = NodeTypesList'
+    { _ntltOrderBy    :: !(Maybe Text)
+    , _ntltProject    :: !Text
+    , _ntltZone       :: !Text
+    , _ntltFilter     :: !(Maybe Text)
+    , _ntltPageToken  :: !(Maybe Text)
+    , _ntltMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTypesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntltOrderBy'
+--
+-- * 'ntltProject'
+--
+-- * 'ntltZone'
+--
+-- * 'ntltFilter'
+--
+-- * 'ntltPageToken'
+--
+-- * 'ntltMaxResults'
+nodeTypesList
+    :: Text -- ^ 'ntltProject'
+    -> Text -- ^ 'ntltZone'
+    -> NodeTypesList
+nodeTypesList pNtltProject_ pNtltZone_ =
+    NodeTypesList'
+    { _ntltOrderBy = Nothing
+    , _ntltProject = pNtltProject_
+    , _ntltZone = pNtltZone_
+    , _ntltFilter = Nothing
+    , _ntltPageToken = Nothing
+    , _ntltMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ntltOrderBy :: Lens' NodeTypesList (Maybe Text)
+ntltOrderBy
+  = lens _ntltOrderBy (\ s a -> s{_ntltOrderBy = a})
+
+-- | Project ID for this request.
+ntltProject :: Lens' NodeTypesList Text
+ntltProject
+  = lens _ntltProject (\ s a -> s{_ntltProject = a})
+
+-- | The name of the zone for this request.
+ntltZone :: Lens' NodeTypesList Text
+ntltZone = lens _ntltZone (\ s a -> s{_ntltZone = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ntltFilter :: Lens' NodeTypesList (Maybe Text)
+ntltFilter
+  = lens _ntltFilter (\ s a -> s{_ntltFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ntltPageToken :: Lens' NodeTypesList (Maybe Text)
+ntltPageToken
+  = lens _ntltPageToken
+      (\ s a -> s{_ntltPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ntltMaxResults :: Lens' NodeTypesList Word32
+ntltMaxResults
+  = lens _ntltMaxResults
+      (\ s a -> s{_ntltMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NodeTypesList where
+        type Rs NodeTypesList = NodeTypeList
+        type Scopes NodeTypesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NodeTypesList'{..}
+          = go _ntltProject _ntltZone _ntltOrderBy _ntltFilter
+              _ntltPageToken
+              (Just _ntltMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NodeTypesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.DisableXpnHost
+-- 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)
+--
+-- Disable this project as a shared VPC host project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.disableXpnHost@.
+module Network.Google.Resource.Compute.Projects.DisableXpnHost
+    (
+    -- * REST Resource
+      ProjectsDisableXpnHostResource
+
+    -- * Creating a Request
+    , projectsDisableXpnHost
+    , ProjectsDisableXpnHost
+
+    -- * Request Lenses
+    , pdxhRequestId
+    , pdxhProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.disableXpnHost@ method which the
+-- 'ProjectsDisableXpnHost' request conforms to.
+type ProjectsDisableXpnHostResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "disableXpnHost" :>
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Disable this project as a shared VPC host project.
+--
+-- /See:/ 'projectsDisableXpnHost' smart constructor.
+data ProjectsDisableXpnHost = ProjectsDisableXpnHost'
+    { _pdxhRequestId :: !(Maybe Text)
+    , _pdxhProject   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsDisableXpnHost' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdxhRequestId'
+--
+-- * 'pdxhProject'
+projectsDisableXpnHost
+    :: Text -- ^ 'pdxhProject'
+    -> ProjectsDisableXpnHost
+projectsDisableXpnHost pPdxhProject_ =
+    ProjectsDisableXpnHost'
+    { _pdxhRequestId = Nothing
+    , _pdxhProject = pPdxhProject_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pdxhRequestId :: Lens' ProjectsDisableXpnHost (Maybe Text)
+pdxhRequestId
+  = lens _pdxhRequestId
+      (\ s a -> s{_pdxhRequestId = a})
+
+-- | Project ID for this request.
+pdxhProject :: Lens' ProjectsDisableXpnHost Text
+pdxhProject
+  = lens _pdxhProject (\ s a -> s{_pdxhProject = a})
+
+instance GoogleRequest ProjectsDisableXpnHost where
+        type Rs ProjectsDisableXpnHost = Operation
+        type Scopes ProjectsDisableXpnHost =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsDisableXpnHost'{..}
+          = go _pdxhProject _pdxhRequestId (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsDisableXpnHostResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs b/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.DisableXpnResource
+-- 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)
+--
+-- Disable a serivce resource (a.k.a service project) associated with this
+-- host project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.disableXpnResource@.
+module Network.Google.Resource.Compute.Projects.DisableXpnResource
+    (
+    -- * REST Resource
+      ProjectsDisableXpnResourceResource
+
+    -- * Creating a Request
+    , projectsDisableXpnResource
+    , ProjectsDisableXpnResource
+
+    -- * Request Lenses
+    , pdxrRequestId
+    , pdxrProject
+    , pdxrPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.disableXpnResource@ method which the
+-- 'ProjectsDisableXpnResource' request conforms to.
+type ProjectsDisableXpnResourceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "disableXpnResource" :>
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ProjectsDisableXpnResourceRequest :>
+                     Post '[JSON] Operation
+
+-- | Disable a serivce resource (a.k.a service project) associated with this
+-- host project.
+--
+-- /See:/ 'projectsDisableXpnResource' smart constructor.
+data ProjectsDisableXpnResource = ProjectsDisableXpnResource'
+    { _pdxrRequestId :: !(Maybe Text)
+    , _pdxrProject   :: !Text
+    , _pdxrPayload   :: !ProjectsDisableXpnResourceRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsDisableXpnResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdxrRequestId'
+--
+-- * 'pdxrProject'
+--
+-- * 'pdxrPayload'
+projectsDisableXpnResource
+    :: Text -- ^ 'pdxrProject'
+    -> ProjectsDisableXpnResourceRequest -- ^ 'pdxrPayload'
+    -> ProjectsDisableXpnResource
+projectsDisableXpnResource pPdxrProject_ pPdxrPayload_ =
+    ProjectsDisableXpnResource'
+    { _pdxrRequestId = Nothing
+    , _pdxrProject = pPdxrProject_
+    , _pdxrPayload = pPdxrPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pdxrRequestId :: Lens' ProjectsDisableXpnResource (Maybe Text)
+pdxrRequestId
+  = lens _pdxrRequestId
+      (\ s a -> s{_pdxrRequestId = a})
+
+-- | Project ID for this request.
+pdxrProject :: Lens' ProjectsDisableXpnResource Text
+pdxrProject
+  = lens _pdxrProject (\ s a -> s{_pdxrProject = a})
+
+-- | Multipart request metadata.
+pdxrPayload :: Lens' ProjectsDisableXpnResource ProjectsDisableXpnResourceRequest
+pdxrPayload
+  = lens _pdxrPayload (\ s a -> s{_pdxrPayload = a})
+
+instance GoogleRequest ProjectsDisableXpnResource
+         where
+        type Rs ProjectsDisableXpnResource = Operation
+        type Scopes ProjectsDisableXpnResource =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsDisableXpnResource'{..}
+          = go _pdxrProject _pdxrRequestId (Just AltJSON)
+              _pdxrPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsDisableXpnResourceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.EnableXpnHost
+-- 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)
+--
+-- Enable this project as a shared VPC host project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.enableXpnHost@.
+module Network.Google.Resource.Compute.Projects.EnableXpnHost
+    (
+    -- * REST Resource
+      ProjectsEnableXpnHostResource
+
+    -- * Creating a Request
+    , projectsEnableXpnHost
+    , ProjectsEnableXpnHost
+
+    -- * Request Lenses
+    , pexhRequestId
+    , pexhProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.enableXpnHost@ method which the
+-- 'ProjectsEnableXpnHost' request conforms to.
+type ProjectsEnableXpnHostResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "enableXpnHost" :>
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Enable this project as a shared VPC host project.
+--
+-- /See:/ 'projectsEnableXpnHost' smart constructor.
+data ProjectsEnableXpnHost = ProjectsEnableXpnHost'
+    { _pexhRequestId :: !(Maybe Text)
+    , _pexhProject   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsEnableXpnHost' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pexhRequestId'
+--
+-- * 'pexhProject'
+projectsEnableXpnHost
+    :: Text -- ^ 'pexhProject'
+    -> ProjectsEnableXpnHost
+projectsEnableXpnHost pPexhProject_ =
+    ProjectsEnableXpnHost'
+    { _pexhRequestId = Nothing
+    , _pexhProject = pPexhProject_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pexhRequestId :: Lens' ProjectsEnableXpnHost (Maybe Text)
+pexhRequestId
+  = lens _pexhRequestId
+      (\ s a -> s{_pexhRequestId = a})
+
+-- | Project ID for this request.
+pexhProject :: Lens' ProjectsEnableXpnHost Text
+pexhProject
+  = lens _pexhProject (\ s a -> s{_pexhProject = a})
+
+instance GoogleRequest ProjectsEnableXpnHost where
+        type Rs ProjectsEnableXpnHost = Operation
+        type Scopes ProjectsEnableXpnHost =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsEnableXpnHost'{..}
+          = go _pexhProject _pexhRequestId (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsEnableXpnHostResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs b/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.EnableXpnResource
+-- 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)
+--
+-- Enable service resource (a.k.a service project) for a host project, so
+-- that subnets in the host project can be used by instances in the service
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.enableXpnResource@.
+module Network.Google.Resource.Compute.Projects.EnableXpnResource
+    (
+    -- * REST Resource
+      ProjectsEnableXpnResourceResource
+
+    -- * Creating a Request
+    , projectsEnableXpnResource
+    , ProjectsEnableXpnResource
+
+    -- * Request Lenses
+    , pexrRequestId
+    , pexrProject
+    , pexrPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.enableXpnResource@ method which the
+-- 'ProjectsEnableXpnResource' request conforms to.
+type ProjectsEnableXpnResourceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "enableXpnResource" :>
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ProjectsEnableXpnResourceRequest :>
+                     Post '[JSON] Operation
+
+-- | Enable service resource (a.k.a service project) for a host project, so
+-- that subnets in the host project can be used by instances in the service
+-- project.
+--
+-- /See:/ 'projectsEnableXpnResource' smart constructor.
+data ProjectsEnableXpnResource = ProjectsEnableXpnResource'
+    { _pexrRequestId :: !(Maybe Text)
+    , _pexrProject   :: !Text
+    , _pexrPayload   :: !ProjectsEnableXpnResourceRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsEnableXpnResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pexrRequestId'
+--
+-- * 'pexrProject'
+--
+-- * 'pexrPayload'
+projectsEnableXpnResource
+    :: Text -- ^ 'pexrProject'
+    -> ProjectsEnableXpnResourceRequest -- ^ 'pexrPayload'
+    -> ProjectsEnableXpnResource
+projectsEnableXpnResource pPexrProject_ pPexrPayload_ =
+    ProjectsEnableXpnResource'
+    { _pexrRequestId = Nothing
+    , _pexrProject = pPexrProject_
+    , _pexrPayload = pPexrPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pexrRequestId :: Lens' ProjectsEnableXpnResource (Maybe Text)
+pexrRequestId
+  = lens _pexrRequestId
+      (\ s a -> s{_pexrRequestId = a})
+
+-- | Project ID for this request.
+pexrProject :: Lens' ProjectsEnableXpnResource Text
+pexrProject
+  = lens _pexrProject (\ s a -> s{_pexrProject = a})
+
+-- | Multipart request metadata.
+pexrPayload :: Lens' ProjectsEnableXpnResource ProjectsEnableXpnResourceRequest
+pexrPayload
+  = lens _pexrPayload (\ s a -> s{_pexrPayload = a})
+
+instance GoogleRequest ProjectsEnableXpnResource
+         where
+        type Rs ProjectsEnableXpnResource = Operation
+        type Scopes ProjectsEnableXpnResource =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsEnableXpnResource'{..}
+          = go _pexrProject _pexrRequestId (Just AltJSON)
+              _pexrPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsEnableXpnResourceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.GetXpnHost
+-- 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 shared VPC host project that this project links to. May be
+-- empty if no link exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.getXpnHost@.
+module Network.Google.Resource.Compute.Projects.GetXpnHost
+    (
+    -- * REST Resource
+      ProjectsGetXpnHostResource
+
+    -- * Creating a Request
+    , projectsGetXpnHost
+    , ProjectsGetXpnHost
+
+    -- * Request Lenses
+    , pgxhProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.getXpnHost@ method which the
+-- 'ProjectsGetXpnHost' request conforms to.
+type ProjectsGetXpnHostResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "getXpnHost" :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Project
+
+-- | Gets the shared VPC host project that this project links to. May be
+-- empty if no link exists.
+--
+-- /See:/ 'projectsGetXpnHost' smart constructor.
+newtype ProjectsGetXpnHost = ProjectsGetXpnHost'
+    { _pgxhProject :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsGetXpnHost' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgxhProject'
+projectsGetXpnHost
+    :: Text -- ^ 'pgxhProject'
+    -> ProjectsGetXpnHost
+projectsGetXpnHost pPgxhProject_ =
+    ProjectsGetXpnHost'
+    { _pgxhProject = pPgxhProject_
+    }
+
+-- | Project ID for this request.
+pgxhProject :: Lens' ProjectsGetXpnHost Text
+pgxhProject
+  = lens _pgxhProject (\ s a -> s{_pgxhProject = a})
+
+instance GoogleRequest ProjectsGetXpnHost where
+        type Rs ProjectsGetXpnHost = Project
+        type Scopes ProjectsGetXpnHost =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsGetXpnHost'{..}
+          = go _pgxhProject (Just AltJSON) computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsGetXpnHostResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs b/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.GetXpnResources
+-- 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 service resources (a.k.a service project) associated with this host
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.getXpnResources@.
+module Network.Google.Resource.Compute.Projects.GetXpnResources
+    (
+    -- * REST Resource
+      ProjectsGetXpnResourcesResource
+
+    -- * Creating a Request
+    , projectsGetXpnResources'
+    , ProjectsGetXpnResources'
+
+    -- * Request Lenses
+    , pgxrProject
+    , pgxrOrderBy
+    , pgxrFilter
+    , pgxrPageToken
+    , pgxrMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.getXpnResources@ method which the
+-- 'ProjectsGetXpnResources'' request conforms to.
+type ProjectsGetXpnResourcesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "getXpnResources" :>
+               QueryParam "order_by" Text :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ProjectsGetXpnResources
+
+-- | Gets service resources (a.k.a service project) associated with this host
+-- project.
+--
+-- /See:/ 'projectsGetXpnResources'' smart constructor.
+data ProjectsGetXpnResources' = ProjectsGetXpnResources''
+    { _pgxrProject    :: !Text
+    , _pgxrOrderBy    :: !(Maybe Text)
+    , _pgxrFilter     :: !(Maybe Text)
+    , _pgxrPageToken  :: !(Maybe Text)
+    , _pgxrMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsGetXpnResources'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgxrProject'
+--
+-- * 'pgxrOrderBy'
+--
+-- * 'pgxrFilter'
+--
+-- * 'pgxrPageToken'
+--
+-- * 'pgxrMaxResults'
+projectsGetXpnResources'
+    :: Text -- ^ 'pgxrProject'
+    -> ProjectsGetXpnResources'
+projectsGetXpnResources' pPgxrProject_ =
+    ProjectsGetXpnResources''
+    { _pgxrProject = pPgxrProject_
+    , _pgxrOrderBy = Nothing
+    , _pgxrFilter = Nothing
+    , _pgxrPageToken = Nothing
+    , _pgxrMaxResults = 500
+    }
+
+-- | Project ID for this request.
+pgxrProject :: Lens' ProjectsGetXpnResources' Text
+pgxrProject
+  = lens _pgxrProject (\ s a -> s{_pgxrProject = a})
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+pgxrOrderBy :: Lens' ProjectsGetXpnResources' (Maybe Text)
+pgxrOrderBy
+  = lens _pgxrOrderBy (\ s a -> s{_pgxrOrderBy = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+pgxrFilter :: Lens' ProjectsGetXpnResources' (Maybe Text)
+pgxrFilter
+  = lens _pgxrFilter (\ s a -> s{_pgxrFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+pgxrPageToken :: Lens' ProjectsGetXpnResources' (Maybe Text)
+pgxrPageToken
+  = lens _pgxrPageToken
+      (\ s a -> s{_pgxrPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+pgxrMaxResults :: Lens' ProjectsGetXpnResources' Word32
+pgxrMaxResults
+  = lens _pgxrMaxResults
+      (\ s a -> s{_pgxrMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ProjectsGetXpnResources' where
+        type Rs ProjectsGetXpnResources' =
+             ProjectsGetXpnResources
+        type Scopes ProjectsGetXpnResources' =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsGetXpnResources''{..}
+          = go _pgxrProject _pgxrOrderBy _pgxrFilter
+              _pgxrPageToken
+              (Just _pgxrMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsGetXpnResourcesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs b/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.ListXpnHosts
+-- 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 shared VPC host projects visible to the user in an
+-- organization.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.listXpnHosts@.
+module Network.Google.Resource.Compute.Projects.ListXpnHosts
+    (
+    -- * REST Resource
+      ProjectsListXpnHostsResource
+
+    -- * Creating a Request
+    , projectsListXpnHosts
+    , ProjectsListXpnHosts
+
+    -- * Request Lenses
+    , plxhProject
+    , plxhPayload
+    , plxhOrderBy
+    , plxhFilter
+    , plxhPageToken
+    , plxhMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.listXpnHosts@ method which the
+-- 'ProjectsListXpnHosts' request conforms to.
+type ProjectsListXpnHostsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "listXpnHosts" :>
+               QueryParam "order_by" Text :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] ProjectsListXpnHostsRequest :>
+                           Post '[JSON] XpnHostList
+
+-- | Lists all shared VPC host projects visible to the user in an
+-- organization.
+--
+-- /See:/ 'projectsListXpnHosts' smart constructor.
+data ProjectsListXpnHosts = ProjectsListXpnHosts'
+    { _plxhProject    :: !Text
+    , _plxhPayload    :: !ProjectsListXpnHostsRequest
+    , _plxhOrderBy    :: !(Maybe Text)
+    , _plxhFilter     :: !(Maybe Text)
+    , _plxhPageToken  :: !(Maybe Text)
+    , _plxhMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsListXpnHosts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plxhProject'
+--
+-- * 'plxhPayload'
+--
+-- * 'plxhOrderBy'
+--
+-- * 'plxhFilter'
+--
+-- * 'plxhPageToken'
+--
+-- * 'plxhMaxResults'
+projectsListXpnHosts
+    :: Text -- ^ 'plxhProject'
+    -> ProjectsListXpnHostsRequest -- ^ 'plxhPayload'
+    -> ProjectsListXpnHosts
+projectsListXpnHosts pPlxhProject_ pPlxhPayload_ =
+    ProjectsListXpnHosts'
+    { _plxhProject = pPlxhProject_
+    , _plxhPayload = pPlxhPayload_
+    , _plxhOrderBy = Nothing
+    , _plxhFilter = Nothing
+    , _plxhPageToken = Nothing
+    , _plxhMaxResults = 500
+    }
+
+-- | Project ID for this request.
+plxhProject :: Lens' ProjectsListXpnHosts Text
+plxhProject
+  = lens _plxhProject (\ s a -> s{_plxhProject = a})
+
+-- | Multipart request metadata.
+plxhPayload :: Lens' ProjectsListXpnHosts ProjectsListXpnHostsRequest
+plxhPayload
+  = lens _plxhPayload (\ s a -> s{_plxhPayload = a})
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+plxhOrderBy :: Lens' ProjectsListXpnHosts (Maybe Text)
+plxhOrderBy
+  = lens _plxhOrderBy (\ s a -> s{_plxhOrderBy = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+plxhFilter :: Lens' ProjectsListXpnHosts (Maybe Text)
+plxhFilter
+  = lens _plxhFilter (\ s a -> s{_plxhFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+plxhPageToken :: Lens' ProjectsListXpnHosts (Maybe Text)
+plxhPageToken
+  = lens _plxhPageToken
+      (\ s a -> s{_plxhPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+plxhMaxResults :: Lens' ProjectsListXpnHosts Word32
+plxhMaxResults
+  = lens _plxhMaxResults
+      (\ s a -> s{_plxhMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ProjectsListXpnHosts where
+        type Rs ProjectsListXpnHosts = XpnHostList
+        type Scopes ProjectsListXpnHosts =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsListXpnHosts'{..}
+          = go _plxhProject _plxhOrderBy _plxhFilter
+              _plxhPageToken
+              (Just _plxhMaxResults)
+              (Just AltJSON)
+              _plxhPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsListXpnHostsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs b/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs
--- a/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs
@@ -33,6 +33,7 @@
     , ProjectsMoveDisk
 
     -- * Request Lenses
+    , pmdRequestId
     , pmdProject
     , pmdPayload
     ) where
@@ -48,22 +49,26 @@
          "projects" :>
            Capture "project" Text :>
              "moveDisk" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] DiskMoveRequest :>
-                   Post '[JSON] Operation
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] DiskMoveRequest :>
+                     Post '[JSON] Operation
 
 -- | Moves a persistent disk from one zone to another.
 --
 -- /See:/ 'projectsMoveDisk' smart constructor.
 data ProjectsMoveDisk = ProjectsMoveDisk'
-    { _pmdProject :: !Text
-    , _pmdPayload :: !DiskMoveRequest
+    { _pmdRequestId :: !(Maybe Text)
+    , _pmdProject   :: !Text
+    , _pmdPayload   :: !DiskMoveRequest
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsMoveDisk' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pmdRequestId'
+--
 -- * 'pmdProject'
 --
 -- * 'pmdPayload'
@@ -73,10 +78,25 @@
     -> ProjectsMoveDisk
 projectsMoveDisk pPmdProject_ pPmdPayload_ =
     ProjectsMoveDisk'
-    { _pmdProject = pPmdProject_
+    { _pmdRequestId = Nothing
+    , _pmdProject = pPmdProject_
     , _pmdPayload = pPmdPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pmdRequestId :: Lens' ProjectsMoveDisk (Maybe Text)
+pmdRequestId
+  = lens _pmdRequestId (\ s a -> s{_pmdRequestId = a})
+
 -- | Project ID for this request.
 pmdProject :: Lens' ProjectsMoveDisk Text
 pmdProject
@@ -93,7 +113,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ProjectsMoveDisk'{..}
-          = go _pmdProject (Just AltJSON) _pmdPayload
+          = go _pmdProject _pmdRequestId (Just AltJSON)
+              _pmdPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs b/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs
--- a/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs
@@ -34,6 +34,7 @@
     , ProjectsMoveInstance
 
     -- * Request Lenses
+    , pmiRequestId
     , pmiProject
     , pmiPayload
     ) where
@@ -49,23 +50,27 @@
          "projects" :>
            Capture "project" Text :>
              "moveInstance" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] InstanceMoveRequest :>
-                   Post '[JSON] Operation
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] InstanceMoveRequest :>
+                     Post '[JSON] Operation
 
 -- | Moves an instance and its attached persistent disks from one zone to
 -- another.
 --
 -- /See:/ 'projectsMoveInstance' smart constructor.
 data ProjectsMoveInstance = ProjectsMoveInstance'
-    { _pmiProject :: !Text
-    , _pmiPayload :: !InstanceMoveRequest
+    { _pmiRequestId :: !(Maybe Text)
+    , _pmiProject   :: !Text
+    , _pmiPayload   :: !InstanceMoveRequest
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsMoveInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pmiRequestId'
+--
 -- * 'pmiProject'
 --
 -- * 'pmiPayload'
@@ -75,10 +80,25 @@
     -> ProjectsMoveInstance
 projectsMoveInstance pPmiProject_ pPmiPayload_ =
     ProjectsMoveInstance'
-    { _pmiProject = pPmiProject_
+    { _pmiRequestId = Nothing
+    , _pmiProject = pPmiProject_
     , _pmiPayload = pPmiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pmiRequestId :: Lens' ProjectsMoveInstance (Maybe Text)
+pmiRequestId
+  = lens _pmiRequestId (\ s a -> s{_pmiRequestId = a})
+
 -- | Project ID for this request.
 pmiProject :: Lens' ProjectsMoveInstance Text
 pmiProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ProjectsMoveInstance'{..}
-          = go _pmiProject (Just AltJSON) _pmiPayload
+          = go _pmiProject _pmiRequestId (Just AltJSON)
+              _pmiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs b/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs
--- a/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs
@@ -34,6 +34,7 @@
     , ProjectsSetCommonInstanceMetadata
 
     -- * Request Lenses
+    , pscimRequestId
     , pscimProject
     , pscimPayload
     ) where
@@ -49,22 +50,26 @@
          "projects" :>
            Capture "project" Text :>
              "setCommonInstanceMetadata" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] Metadata :> Post '[JSON] Operation
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Metadata :> Post '[JSON] Operation
 
 -- | Sets metadata common to all instances within the specified project using
 -- the data included in the request.
 --
 -- /See:/ 'projectsSetCommonInstanceMetadata' smart constructor.
 data ProjectsSetCommonInstanceMetadata = ProjectsSetCommonInstanceMetadata'
-    { _pscimProject :: !Text
-    , _pscimPayload :: !Metadata
+    { _pscimRequestId :: !(Maybe Text)
+    , _pscimProject   :: !Text
+    , _pscimPayload   :: !Metadata
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsSetCommonInstanceMetadata' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pscimRequestId'
+--
 -- * 'pscimProject'
 --
 -- * 'pscimPayload'
@@ -74,10 +79,26 @@
     -> ProjectsSetCommonInstanceMetadata
 projectsSetCommonInstanceMetadata pPscimProject_ pPscimPayload_ =
     ProjectsSetCommonInstanceMetadata'
-    { _pscimProject = pPscimProject_
+    { _pscimRequestId = Nothing
+    , _pscimProject = pPscimProject_
     , _pscimPayload = pPscimPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+pscimRequestId :: Lens' ProjectsSetCommonInstanceMetadata (Maybe Text)
+pscimRequestId
+  = lens _pscimRequestId
+      (\ s a -> s{_pscimRequestId = a})
+
 -- | Project ID for this request.
 pscimProject :: Lens' ProjectsSetCommonInstanceMetadata Text
 pscimProject
@@ -95,7 +116,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient ProjectsSetCommonInstanceMetadata'{..}
-          = go _pscimProject (Just AltJSON) _pscimPayload
+          = go _pscimProject _pscimRequestId (Just AltJSON)
+              _pscimPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs b/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Projects.SetDefaultNetworkTier
+-- 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 default network tier of the project. The default network tier
+-- is used when an address\/forwardingRule\/instance is created without
+-- specifying the network tier field.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.setDefaultNetworkTier@.
+module Network.Google.Resource.Compute.Projects.SetDefaultNetworkTier
+    (
+    -- * REST Resource
+      ProjectsSetDefaultNetworkTierResource
+
+    -- * Creating a Request
+    , projectsSetDefaultNetworkTier
+    , ProjectsSetDefaultNetworkTier
+
+    -- * Request Lenses
+    , psdntRequestId
+    , psdntProject
+    , psdntPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.setDefaultNetworkTier@ method which the
+-- 'ProjectsSetDefaultNetworkTier' request conforms to.
+type ProjectsSetDefaultNetworkTierResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "setDefaultNetworkTier" :>
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ProjectsSetDefaultNetworkTierRequest
+                     :> Post '[JSON] Operation
+
+-- | Sets the default network tier of the project. The default network tier
+-- is used when an address\/forwardingRule\/instance is created without
+-- specifying the network tier field.
+--
+-- /See:/ 'projectsSetDefaultNetworkTier' smart constructor.
+data ProjectsSetDefaultNetworkTier = ProjectsSetDefaultNetworkTier'
+    { _psdntRequestId :: !(Maybe Text)
+    , _psdntProject   :: !Text
+    , _psdntPayload   :: !ProjectsSetDefaultNetworkTierRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsSetDefaultNetworkTier' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psdntRequestId'
+--
+-- * 'psdntProject'
+--
+-- * 'psdntPayload'
+projectsSetDefaultNetworkTier
+    :: Text -- ^ 'psdntProject'
+    -> ProjectsSetDefaultNetworkTierRequest -- ^ 'psdntPayload'
+    -> ProjectsSetDefaultNetworkTier
+projectsSetDefaultNetworkTier pPsdntProject_ pPsdntPayload_ =
+    ProjectsSetDefaultNetworkTier'
+    { _psdntRequestId = Nothing
+    , _psdntProject = pPsdntProject_
+    , _psdntPayload = pPsdntPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+psdntRequestId :: Lens' ProjectsSetDefaultNetworkTier (Maybe Text)
+psdntRequestId
+  = lens _psdntRequestId
+      (\ s a -> s{_psdntRequestId = a})
+
+-- | Project ID for this request.
+psdntProject :: Lens' ProjectsSetDefaultNetworkTier Text
+psdntProject
+  = lens _psdntProject (\ s a -> s{_psdntProject = a})
+
+-- | Multipart request metadata.
+psdntPayload :: Lens' ProjectsSetDefaultNetworkTier ProjectsSetDefaultNetworkTierRequest
+psdntPayload
+  = lens _psdntPayload (\ s a -> s{_psdntPayload = a})
+
+instance GoogleRequest ProjectsSetDefaultNetworkTier
+         where
+        type Rs ProjectsSetDefaultNetworkTier = Operation
+        type Scopes ProjectsSetDefaultNetworkTier =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient ProjectsSetDefaultNetworkTier'{..}
+          = go _psdntProject _psdntRequestId (Just AltJSON)
+              _psdntPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsSetDefaultNetworkTierResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs b/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs
--- a/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs
@@ -35,6 +35,7 @@
     , ProjectsSetUsageExportBucket
 
     -- * Request Lenses
+    , psuebRequestId
     , psuebProject
     , psuebPayload
     ) where
@@ -50,9 +51,10 @@
          "projects" :>
            Capture "project" Text :>
              "setUsageExportBucket" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] UsageExportLocation :>
-                   Post '[JSON] Operation
+               QueryParam "requestId" Text :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] UsageExportLocation :>
+                     Post '[JSON] Operation
 
 -- | Enables the usage export feature and sets the usage export bucket where
 -- reports are stored. If you provide an empty request body using this
@@ -60,14 +62,17 @@
 --
 -- /See:/ 'projectsSetUsageExportBucket' smart constructor.
 data ProjectsSetUsageExportBucket = ProjectsSetUsageExportBucket'
-    { _psuebProject :: !Text
-    , _psuebPayload :: !UsageExportLocation
+    { _psuebRequestId :: !(Maybe Text)
+    , _psuebProject   :: !Text
+    , _psuebPayload   :: !UsageExportLocation
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsSetUsageExportBucket' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'psuebRequestId'
+--
 -- * 'psuebProject'
 --
 -- * 'psuebPayload'
@@ -77,10 +82,26 @@
     -> ProjectsSetUsageExportBucket
 projectsSetUsageExportBucket pPsuebProject_ pPsuebPayload_ =
     ProjectsSetUsageExportBucket'
-    { _psuebProject = pPsuebProject_
+    { _psuebRequestId = Nothing
+    , _psuebProject = pPsuebProject_
     , _psuebPayload = pPsuebPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+psuebRequestId :: Lens' ProjectsSetUsageExportBucket (Maybe Text)
+psuebRequestId
+  = lens _psuebRequestId
+      (\ s a -> s{_psuebRequestId = a})
+
 -- | Project ID for this request.
 psuebProject :: Lens' ProjectsSetUsageExportBucket Text
 psuebProject
@@ -101,7 +122,8 @@
                "https://www.googleapis.com/auth/devstorage.read_only",
                "https://www.googleapis.com/auth/devstorage.read_write"]
         requestClient ProjectsSetUsageExportBucket'{..}
-          = go _psuebProject (Just AltJSON) _psuebPayload
+          = go _psuebProject _psuebRequestId (Just AltJSON)
+              _psuebPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Delete.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Delete.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Delete.hs
@@ -33,6 +33,7 @@
     , RegionAutoscalersDelete
 
     -- * Request Lenses
+    , radRequestId
     , radProject
     , radAutoscaler
     , radRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "autoscalers" :>
                    Capture "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified autoscaler.
 --
 -- /See:/ 'regionAutoscalersDelete' smart constructor.
 data RegionAutoscalersDelete = RegionAutoscalersDelete'
-    { _radProject    :: !Text
+    { _radRequestId  :: !(Maybe Text)
+    , _radProject    :: !Text
     , _radAutoscaler :: !Text
     , _radRegion     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'radRequestId'
+--
 -- * 'radProject'
 --
 -- * 'radAutoscaler'
@@ -79,11 +84,26 @@
     -> RegionAutoscalersDelete
 regionAutoscalersDelete pRadProject_ pRadAutoscaler_ pRadRegion_ =
     RegionAutoscalersDelete'
-    { _radProject = pRadProject_
+    { _radRequestId = Nothing
+    , _radProject = pRadProject_
     , _radAutoscaler = pRadAutoscaler_
     , _radRegion = pRadRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+radRequestId :: Lens' RegionAutoscalersDelete (Maybe Text)
+radRequestId
+  = lens _radRequestId (\ s a -> s{_radRequestId = a})
+
 -- | Project ID for this request.
 radProject :: Lens' RegionAutoscalersDelete Text
 radProject
@@ -107,6 +127,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionAutoscalersDelete'{..}
           = go _radProject _radRegion _radAutoscaler
+              _radRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Insert.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Insert.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Insert.hs
@@ -34,6 +34,7 @@
     , RegionAutoscalersInsert
 
     -- * Request Lenses
+    , raiRequestId
     , raiProject
     , raiPayload
     , raiRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "autoscalers" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
 
 -- | Creates an autoscaler in the specified project using the data included
 -- in the request.
 --
 -- /See:/ 'regionAutoscalersInsert' smart constructor.
 data RegionAutoscalersInsert = RegionAutoscalersInsert'
-    { _raiProject :: !Text
-    , _raiPayload :: !Autoscaler
-    , _raiRegion  :: !Text
+    { _raiRequestId :: !(Maybe Text)
+    , _raiProject   :: !Text
+    , _raiPayload   :: !Autoscaler
+    , _raiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RegionAutoscalersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'raiRequestId'
+--
 -- * 'raiProject'
 --
 -- * 'raiPayload'
@@ -81,11 +86,26 @@
     -> RegionAutoscalersInsert
 regionAutoscalersInsert pRaiProject_ pRaiPayload_ pRaiRegion_ =
     RegionAutoscalersInsert'
-    { _raiProject = pRaiProject_
+    { _raiRequestId = Nothing
+    , _raiProject = pRaiProject_
     , _raiPayload = pRaiPayload_
     , _raiRegion = pRaiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+raiRequestId :: Lens' RegionAutoscalersInsert (Maybe Text)
+raiRequestId
+  = lens _raiRequestId (\ s a -> s{_raiRequestId = a})
+
 -- | Project ID for this request.
 raiProject :: Lens' RegionAutoscalersInsert Text
 raiProject
@@ -107,7 +127,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionAutoscalersInsert'{..}
-          = go _raiProject _raiRegion (Just AltJSON)
+          = go _raiProject _raiRegion _raiRequestId
+              (Just AltJSON)
               _raiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/List.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/List.hs
@@ -119,26 +119,22 @@
 ralProject
   = lens _ralProject (\ s a -> s{_ralProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 ralFilter :: Lens' RegionAutoscalersList (Maybe Text)
 ralFilter
   = lens _ralFilter (\ s a -> s{_ralFilter = a})
@@ -157,7 +153,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 ralMaxResults :: Lens' RegionAutoscalersList Word32
 ralMaxResults
   = lens _ralMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Patch.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Patch.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Patch.hs
@@ -21,7 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Updates an autoscaler in the specified project using the data included
--- in the request. This method supports patch semantics.
+-- in the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionAutoscalers.patch@.
 module Network.Google.Resource.Compute.RegionAutoscalers.Patch
@@ -34,6 +35,7 @@
     , RegionAutoscalersPatch
 
     -- * Request Lenses
+    , rapRequestId
     , rapProject
     , rapPayload
     , rapAutoscaler
@@ -53,18 +55,21 @@
              "regions" :>
                Capture "region" Text :>
                  "autoscalers" :>
-                   QueryParam "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "autoscaler" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
 
 -- | Updates an autoscaler in the specified project using the data included
--- in the request. This method supports patch semantics.
+-- in the request. This method supports PATCH semantics and uses the JSON
+-- merge patch format and processing rules.
 --
 -- /See:/ 'regionAutoscalersPatch' smart constructor.
 data RegionAutoscalersPatch = RegionAutoscalersPatch'
-    { _rapProject    :: !Text
+    { _rapRequestId  :: !(Maybe Text)
+    , _rapProject    :: !Text
     , _rapPayload    :: !Autoscaler
-    , _rapAutoscaler :: !Text
+    , _rapAutoscaler :: !(Maybe Text)
     , _rapRegion     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -72,6 +77,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rapRequestId'
+--
 -- * 'rapProject'
 --
 -- * 'rapPayload'
@@ -82,17 +89,31 @@
 regionAutoscalersPatch
     :: Text -- ^ 'rapProject'
     -> Autoscaler -- ^ 'rapPayload'
-    -> Text -- ^ 'rapAutoscaler'
     -> Text -- ^ 'rapRegion'
     -> RegionAutoscalersPatch
-regionAutoscalersPatch pRapProject_ pRapPayload_ pRapAutoscaler_ pRapRegion_ =
+regionAutoscalersPatch pRapProject_ pRapPayload_ pRapRegion_ =
     RegionAutoscalersPatch'
-    { _rapProject = pRapProject_
+    { _rapRequestId = Nothing
+    , _rapProject = pRapProject_
     , _rapPayload = pRapPayload_
-    , _rapAutoscaler = pRapAutoscaler_
+    , _rapAutoscaler = Nothing
     , _rapRegion = pRapRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rapRequestId :: Lens' RegionAutoscalersPatch (Maybe Text)
+rapRequestId
+  = lens _rapRequestId (\ s a -> s{_rapRequestId = a})
+
 -- | Project ID for this request.
 rapProject :: Lens' RegionAutoscalersPatch Text
 rapProject
@@ -103,8 +124,8 @@
 rapPayload
   = lens _rapPayload (\ s a -> s{_rapPayload = a})
 
--- | Name of the autoscaler to update.
-rapAutoscaler :: Lens' RegionAutoscalersPatch Text
+-- | Name of the autoscaler to patch.
+rapAutoscaler :: Lens' RegionAutoscalersPatch (Maybe Text)
 rapAutoscaler
   = lens _rapAutoscaler
       (\ s a -> s{_rapAutoscaler = a})
@@ -120,7 +141,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionAutoscalersPatch'{..}
-          = go _rapProject _rapRegion (Just _rapAutoscaler)
+          = go _rapProject _rapRegion _rapRequestId
+              _rapAutoscaler
               (Just AltJSON)
               _rapPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Update.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Update.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Update.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Update.hs
@@ -34,6 +34,7 @@
     , RegionAutoscalersUpdate
 
     -- * Request Lenses
+    , rauRequestId
     , rauProject
     , rauPayload
     , rauAutoscaler
@@ -53,16 +54,18 @@
              "regions" :>
                Capture "region" Text :>
                  "autoscalers" :>
-                   QueryParam "autoscaler" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "autoscaler" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
 
 -- | Updates an autoscaler in the specified project using the data included
 -- in the request.
 --
 -- /See:/ 'regionAutoscalersUpdate' smart constructor.
 data RegionAutoscalersUpdate = RegionAutoscalersUpdate'
-    { _rauProject    :: !Text
+    { _rauRequestId  :: !(Maybe Text)
+    , _rauProject    :: !Text
     , _rauPayload    :: !Autoscaler
     , _rauAutoscaler :: !(Maybe Text)
     , _rauRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rauRequestId'
+--
 -- * 'rauProject'
 --
 -- * 'rauPayload'
@@ -86,12 +91,27 @@
     -> RegionAutoscalersUpdate
 regionAutoscalersUpdate pRauProject_ pRauPayload_ pRauRegion_ =
     RegionAutoscalersUpdate'
-    { _rauProject = pRauProject_
+    { _rauRequestId = Nothing
+    , _rauProject = pRauProject_
     , _rauPayload = pRauPayload_
     , _rauAutoscaler = Nothing
     , _rauRegion = pRauRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rauRequestId :: Lens' RegionAutoscalersUpdate (Maybe Text)
+rauRequestId
+  = lens _rauRequestId (\ s a -> s{_rauRequestId = a})
+
 -- | Project ID for this request.
 rauProject :: Lens' RegionAutoscalersUpdate Text
 rauProject
@@ -119,7 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionAutoscalersUpdate'{..}
-          = go _rauProject _rauRegion _rauAutoscaler
+          = go _rauProject _rauRegion _rauRequestId
+              _rauAutoscaler
               (Just AltJSON)
               _rauPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/Delete.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/Delete.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/Delete.hs
@@ -33,6 +33,7 @@
     , RegionBackendServicesDelete
 
     -- * Request Lenses
+    , rbsdRequestId
     , rbsdProject
     , rbsdRegion
     , rbsdBackendService
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "backendServices" :>
                    Capture "backendService" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified regional BackendService resource.
 --
 -- /See:/ 'regionBackendServicesDelete' smart constructor.
 data RegionBackendServicesDelete = RegionBackendServicesDelete'
-    { _rbsdProject        :: !Text
+    { _rbsdRequestId      :: !(Maybe Text)
+    , _rbsdProject        :: !Text
     , _rbsdRegion         :: !Text
     , _rbsdBackendService :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rbsdRequestId'
+--
 -- * 'rbsdProject'
 --
 -- * 'rbsdRegion'
@@ -79,11 +84,27 @@
     -> RegionBackendServicesDelete
 regionBackendServicesDelete pRbsdProject_ pRbsdRegion_ pRbsdBackendService_ =
     RegionBackendServicesDelete'
-    { _rbsdProject = pRbsdProject_
+    { _rbsdRequestId = Nothing
+    , _rbsdProject = pRbsdProject_
     , _rbsdRegion = pRbsdRegion_
     , _rbsdBackendService = pRbsdBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rbsdRequestId :: Lens' RegionBackendServicesDelete (Maybe Text)
+rbsdRequestId
+  = lens _rbsdRequestId
+      (\ s a -> s{_rbsdRequestId = a})
+
 -- | Project ID for this request.
 rbsdProject :: Lens' RegionBackendServicesDelete Text
 rbsdProject
@@ -108,6 +129,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionBackendServicesDelete'{..}
           = go _rbsdProject _rbsdRegion _rbsdBackendService
+              _rbsdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/GetHealth.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/GetHealth.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/GetHealth.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/GetHealth.hs
@@ -109,8 +109,7 @@
 rbsghRegion
   = lens _rbsghRegion (\ s a -> s{_rbsghRegion = a})
 
--- | Name of the BackendService resource to which the queried instance
--- belongs.
+-- | Name of the BackendService resource for which to get health.
 rbsghBackendService :: Lens' RegionBackendServicesGetHealth Text
 rbsghBackendService
   = lens _rbsghBackendService
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/Insert.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/Insert.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/Insert.hs
@@ -36,6 +36,7 @@
     , RegionBackendServicesInsert
 
     -- * Request Lenses
+    , rbsiRequestId
     , rbsiProject
     , rbsiPayload
     , rbsiRegion
@@ -54,9 +55,10 @@
              "regions" :>
                Capture "region" Text :>
                  "backendServices" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] BackendService :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BackendService :>
+                         Post '[JSON] Operation
 
 -- | Creates a regional BackendService resource in the specified project
 -- using the data included in the request. There are several restrictions
@@ -65,15 +67,18 @@
 --
 -- /See:/ 'regionBackendServicesInsert' smart constructor.
 data RegionBackendServicesInsert = RegionBackendServicesInsert'
-    { _rbsiProject :: !Text
-    , _rbsiPayload :: !BackendService
-    , _rbsiRegion  :: !Text
+    { _rbsiRequestId :: !(Maybe Text)
+    , _rbsiProject   :: !Text
+    , _rbsiPayload   :: !BackendService
+    , _rbsiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RegionBackendServicesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rbsiRequestId'
+--
 -- * 'rbsiProject'
 --
 -- * 'rbsiPayload'
@@ -86,11 +91,27 @@
     -> RegionBackendServicesInsert
 regionBackendServicesInsert pRbsiProject_ pRbsiPayload_ pRbsiRegion_ =
     RegionBackendServicesInsert'
-    { _rbsiProject = pRbsiProject_
+    { _rbsiRequestId = Nothing
+    , _rbsiProject = pRbsiProject_
     , _rbsiPayload = pRbsiPayload_
     , _rbsiRegion = pRbsiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rbsiRequestId :: Lens' RegionBackendServicesInsert (Maybe Text)
+rbsiRequestId
+  = lens _rbsiRequestId
+      (\ s a -> s{_rbsiRequestId = a})
+
 -- | Project ID for this request.
 rbsiProject :: Lens' RegionBackendServicesInsert Text
 rbsiProject
@@ -113,7 +134,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionBackendServicesInsert'{..}
-          = go _rbsiProject _rbsiRegion (Just AltJSON)
+          = go _rbsiProject _rbsiRegion _rbsiRequestId
+              (Just AltJSON)
               _rbsiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/List.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/List.hs
@@ -121,26 +121,22 @@
 rbslProject
   = lens _rbslProject (\ s a -> s{_rbslProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rbslFilter :: Lens' RegionBackendServicesList (Maybe Text)
 rbslFilter
   = lens _rbslFilter (\ s a -> s{_rbslFilter = a})
@@ -160,7 +156,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rbslMaxResults :: Lens' RegionBackendServicesList Word32
 rbslMaxResults
   = lens _rbslMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/Patch.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/Patch.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/Patch.hs
@@ -23,7 +23,8 @@
 -- Updates the specified regional BackendService resource with the data
 -- included in the request. There are several restrictions and guidelines
 -- to keep in mind when updating a backend service. Read Restrictions and
--- Guidelines for more information. This method supports patch semantics.
+-- Guidelines for more information. This method supports PATCH semantics
+-- and uses the JSON merge patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionBackendServices.patch@.
 module Network.Google.Resource.Compute.RegionBackendServices.Patch
@@ -36,6 +37,7 @@
     , RegionBackendServicesPatch
 
     -- * Request Lenses
+    , rbspRequestId
     , rbspProject
     , rbspPayload
     , rbspRegion
@@ -56,18 +58,21 @@
                Capture "region" Text :>
                  "backendServices" :>
                    Capture "backendService" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] BackendService :>
-                         Patch '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] BackendService :>
+                           Patch '[JSON] Operation
 
 -- | Updates the specified regional BackendService resource with the data
 -- included in the request. There are several restrictions and guidelines
 -- to keep in mind when updating a backend service. Read Restrictions and
--- Guidelines for more information. This method supports patch semantics.
+-- Guidelines for more information. This method supports PATCH semantics
+-- and uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'regionBackendServicesPatch' smart constructor.
 data RegionBackendServicesPatch = RegionBackendServicesPatch'
-    { _rbspProject        :: !Text
+    { _rbspRequestId      :: !(Maybe Text)
+    , _rbspProject        :: !Text
     , _rbspPayload        :: !BackendService
     , _rbspRegion         :: !Text
     , _rbspBackendService :: !Text
@@ -77,6 +82,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rbspRequestId'
+--
 -- * 'rbspProject'
 --
 -- * 'rbspPayload'
@@ -92,12 +99,28 @@
     -> RegionBackendServicesPatch
 regionBackendServicesPatch pRbspProject_ pRbspPayload_ pRbspRegion_ pRbspBackendService_ =
     RegionBackendServicesPatch'
-    { _rbspProject = pRbspProject_
+    { _rbspRequestId = Nothing
+    , _rbspProject = pRbspProject_
     , _rbspPayload = pRbspPayload_
     , _rbspRegion = pRbspRegion_
     , _rbspBackendService = pRbspBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rbspRequestId :: Lens' RegionBackendServicesPatch (Maybe Text)
+rbspRequestId
+  = lens _rbspRequestId
+      (\ s a -> s{_rbspRequestId = a})
+
 -- | Project ID for this request.
 rbspProject :: Lens' RegionBackendServicesPatch Text
 rbspProject
@@ -113,7 +136,7 @@
 rbspRegion
   = lens _rbspRegion (\ s a -> s{_rbspRegion = a})
 
--- | Name of the BackendService resource to update.
+-- | Name of the BackendService resource to patch.
 rbspBackendService :: Lens' RegionBackendServicesPatch Text
 rbspBackendService
   = lens _rbspBackendService
@@ -127,6 +150,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionBackendServicesPatch'{..}
           = go _rbspProject _rbspRegion _rbspBackendService
+              _rbspRequestId
               (Just AltJSON)
               _rbspPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/Update.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/Update.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/Update.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/Update.hs
@@ -36,6 +36,7 @@
     , RegionBackendServicesUpdate
 
     -- * Request Lenses
+    , rbsuRequestId
     , rbsuProject
     , rbsuPayload
     , rbsuRegion
@@ -56,9 +57,10 @@
                Capture "region" Text :>
                  "backendServices" :>
                    Capture "backendService" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] BackendService :>
-                         Put '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] BackendService :>
+                           Put '[JSON] Operation
 
 -- | Updates the specified regional BackendService resource with the data
 -- included in the request. There are several restrictions and guidelines
@@ -67,7 +69,8 @@
 --
 -- /See:/ 'regionBackendServicesUpdate' smart constructor.
 data RegionBackendServicesUpdate = RegionBackendServicesUpdate'
-    { _rbsuProject        :: !Text
+    { _rbsuRequestId      :: !(Maybe Text)
+    , _rbsuProject        :: !Text
     , _rbsuPayload        :: !BackendService
     , _rbsuRegion         :: !Text
     , _rbsuBackendService :: !Text
@@ -77,6 +80,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rbsuRequestId'
+--
 -- * 'rbsuProject'
 --
 -- * 'rbsuPayload'
@@ -92,12 +97,28 @@
     -> RegionBackendServicesUpdate
 regionBackendServicesUpdate pRbsuProject_ pRbsuPayload_ pRbsuRegion_ pRbsuBackendService_ =
     RegionBackendServicesUpdate'
-    { _rbsuProject = pRbsuProject_
+    { _rbsuRequestId = Nothing
+    , _rbsuProject = pRbsuProject_
     , _rbsuPayload = pRbsuPayload_
     , _rbsuRegion = pRbsuRegion_
     , _rbsuBackendService = pRbsuBackendService_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rbsuRequestId :: Lens' RegionBackendServicesUpdate (Maybe Text)
+rbsuRequestId
+  = lens _rbsuRequestId
+      (\ s a -> s{_rbsuRequestId = a})
+
 -- | Project ID for this request.
 rbsuProject :: Lens' RegionBackendServicesUpdate Text
 rbsuProject
@@ -127,6 +148,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionBackendServicesUpdate'{..}
           = go _rbsuProject _rbsuRegion _rbsuBackendService
+              _rbsuRequestId
               (Just AltJSON)
               _rbsuPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.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.Compute.RegionCommitments.AggregatedList
+-- 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 an aggregated list of commitments.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionCommitments.aggregatedList@.
+module Network.Google.Resource.Compute.RegionCommitments.AggregatedList
+    (
+    -- * REST Resource
+      RegionCommitmentsAggregatedListResource
+
+    -- * Creating a Request
+    , regionCommitmentsAggregatedList
+    , RegionCommitmentsAggregatedList
+
+    -- * Request Lenses
+    , rcalOrderBy
+    , rcalProject
+    , rcalFilter
+    , rcalPageToken
+    , rcalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionCommitments.aggregatedList@ method which the
+-- 'RegionCommitmentsAggregatedList' request conforms to.
+type RegionCommitmentsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "commitments" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] CommitmentAggregatedList
+
+-- | Retrieves an aggregated list of commitments.
+--
+-- /See:/ 'regionCommitmentsAggregatedList' smart constructor.
+data RegionCommitmentsAggregatedList = RegionCommitmentsAggregatedList'
+    { _rcalOrderBy    :: !(Maybe Text)
+    , _rcalProject    :: !Text
+    , _rcalFilter     :: !(Maybe Text)
+    , _rcalPageToken  :: !(Maybe Text)
+    , _rcalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionCommitmentsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcalOrderBy'
+--
+-- * 'rcalProject'
+--
+-- * 'rcalFilter'
+--
+-- * 'rcalPageToken'
+--
+-- * 'rcalMaxResults'
+regionCommitmentsAggregatedList
+    :: Text -- ^ 'rcalProject'
+    -> RegionCommitmentsAggregatedList
+regionCommitmentsAggregatedList pRcalProject_ =
+    RegionCommitmentsAggregatedList'
+    { _rcalOrderBy = Nothing
+    , _rcalProject = pRcalProject_
+    , _rcalFilter = Nothing
+    , _rcalPageToken = Nothing
+    , _rcalMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+rcalOrderBy :: Lens' RegionCommitmentsAggregatedList (Maybe Text)
+rcalOrderBy
+  = lens _rcalOrderBy (\ s a -> s{_rcalOrderBy = a})
+
+-- | Project ID for this request.
+rcalProject :: Lens' RegionCommitmentsAggregatedList Text
+rcalProject
+  = lens _rcalProject (\ s a -> s{_rcalProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+rcalFilter :: Lens' RegionCommitmentsAggregatedList (Maybe Text)
+rcalFilter
+  = lens _rcalFilter (\ s a -> s{_rcalFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+rcalPageToken :: Lens' RegionCommitmentsAggregatedList (Maybe Text)
+rcalPageToken
+  = lens _rcalPageToken
+      (\ s a -> s{_rcalPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+rcalMaxResults :: Lens' RegionCommitmentsAggregatedList Word32
+rcalMaxResults
+  = lens _rcalMaxResults
+      (\ s a -> s{_rcalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+         RegionCommitmentsAggregatedList where
+        type Rs RegionCommitmentsAggregatedList =
+             CommitmentAggregatedList
+        type Scopes RegionCommitmentsAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionCommitmentsAggregatedList'{..}
+          = go _rcalProject _rcalOrderBy _rcalFilter
+              _rcalPageToken
+              (Just _rcalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RegionCommitmentsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionCommitments.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)
+--
+-- Returns the specified commitment resource. Gets a list of available
+-- commitments by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionCommitments.get@.
+module Network.Google.Resource.Compute.RegionCommitments.Get
+    (
+    -- * REST Resource
+      RegionCommitmentsGetResource
+
+    -- * Creating a Request
+    , regionCommitmentsGet
+    , RegionCommitmentsGet
+
+    -- * Request Lenses
+    , rcgProject
+    , rcgRegion
+    , rcgCommitment
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionCommitments.get@ method which the
+-- 'RegionCommitmentsGet' request conforms to.
+type RegionCommitmentsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "commitments" :>
+                   Capture "commitment" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Commitment
+
+-- | Returns the specified commitment resource. Gets a list of available
+-- commitments by making a list() request.
+--
+-- /See:/ 'regionCommitmentsGet' smart constructor.
+data RegionCommitmentsGet = RegionCommitmentsGet'
+    { _rcgProject    :: !Text
+    , _rcgRegion     :: !Text
+    , _rcgCommitment :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionCommitmentsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcgProject'
+--
+-- * 'rcgRegion'
+--
+-- * 'rcgCommitment'
+regionCommitmentsGet
+    :: Text -- ^ 'rcgProject'
+    -> Text -- ^ 'rcgRegion'
+    -> Text -- ^ 'rcgCommitment'
+    -> RegionCommitmentsGet
+regionCommitmentsGet pRcgProject_ pRcgRegion_ pRcgCommitment_ =
+    RegionCommitmentsGet'
+    { _rcgProject = pRcgProject_
+    , _rcgRegion = pRcgRegion_
+    , _rcgCommitment = pRcgCommitment_
+    }
+
+-- | Project ID for this request.
+rcgProject :: Lens' RegionCommitmentsGet Text
+rcgProject
+  = lens _rcgProject (\ s a -> s{_rcgProject = a})
+
+-- | Name of the region for this request.
+rcgRegion :: Lens' RegionCommitmentsGet Text
+rcgRegion
+  = lens _rcgRegion (\ s a -> s{_rcgRegion = a})
+
+-- | Name of the commitment to return.
+rcgCommitment :: Lens' RegionCommitmentsGet Text
+rcgCommitment
+  = lens _rcgCommitment
+      (\ s a -> s{_rcgCommitment = a})
+
+instance GoogleRequest RegionCommitmentsGet where
+        type Rs RegionCommitmentsGet = Commitment
+        type Scopes RegionCommitmentsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionCommitmentsGet'{..}
+          = go _rcgProject _rcgRegion _rcgCommitment
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionCommitmentsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionCommitments.Insert
+-- 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 commitment in the specified project using the data included in
+-- the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionCommitments.insert@.
+module Network.Google.Resource.Compute.RegionCommitments.Insert
+    (
+    -- * REST Resource
+      RegionCommitmentsInsertResource
+
+    -- * Creating a Request
+    , regionCommitmentsInsert
+    , RegionCommitmentsInsert
+
+    -- * Request Lenses
+    , rciRequestId
+    , rciProject
+    , rciPayload
+    , rciRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionCommitments.insert@ method which the
+-- 'RegionCommitmentsInsert' request conforms to.
+type RegionCommitmentsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "commitments" :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Commitment :> Post '[JSON] Operation
+
+-- | Creates a commitment in the specified project using the data included in
+-- the request.
+--
+-- /See:/ 'regionCommitmentsInsert' smart constructor.
+data RegionCommitmentsInsert = RegionCommitmentsInsert'
+    { _rciRequestId :: !(Maybe Text)
+    , _rciProject   :: !Text
+    , _rciPayload   :: !Commitment
+    , _rciRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionCommitmentsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rciRequestId'
+--
+-- * 'rciProject'
+--
+-- * 'rciPayload'
+--
+-- * 'rciRegion'
+regionCommitmentsInsert
+    :: Text -- ^ 'rciProject'
+    -> Commitment -- ^ 'rciPayload'
+    -> Text -- ^ 'rciRegion'
+    -> RegionCommitmentsInsert
+regionCommitmentsInsert pRciProject_ pRciPayload_ pRciRegion_ =
+    RegionCommitmentsInsert'
+    { _rciRequestId = Nothing
+    , _rciProject = pRciProject_
+    , _rciPayload = pRciPayload_
+    , _rciRegion = pRciRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rciRequestId :: Lens' RegionCommitmentsInsert (Maybe Text)
+rciRequestId
+  = lens _rciRequestId (\ s a -> s{_rciRequestId = a})
+
+-- | Project ID for this request.
+rciProject :: Lens' RegionCommitmentsInsert Text
+rciProject
+  = lens _rciProject (\ s a -> s{_rciProject = a})
+
+-- | Multipart request metadata.
+rciPayload :: Lens' RegionCommitmentsInsert Commitment
+rciPayload
+  = lens _rciPayload (\ s a -> s{_rciPayload = a})
+
+-- | Name of the region for this request.
+rciRegion :: Lens' RegionCommitmentsInsert Text
+rciRegion
+  = lens _rciRegion (\ s a -> s{_rciRegion = a})
+
+instance GoogleRequest RegionCommitmentsInsert where
+        type Rs RegionCommitmentsInsert = Operation
+        type Scopes RegionCommitmentsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionCommitmentsInsert'{..}
+          = go _rciProject _rciRegion _rciRequestId
+              (Just AltJSON)
+              _rciPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionCommitmentsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionCommitments.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)
+--
+-- Retrieves a list of commitments contained within the specified region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionCommitments.list@.
+module Network.Google.Resource.Compute.RegionCommitments.List
+    (
+    -- * REST Resource
+      RegionCommitmentsListResource
+
+    -- * Creating a Request
+    , regionCommitmentsList
+    , RegionCommitmentsList
+
+    -- * Request Lenses
+    , rclOrderBy
+    , rclProject
+    , rclFilter
+    , rclRegion
+    , rclPageToken
+    , rclMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionCommitments.list@ method which the
+-- 'RegionCommitmentsList' request conforms to.
+type RegionCommitmentsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "commitments" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] CommitmentList
+
+-- | Retrieves a list of commitments contained within the specified region.
+--
+-- /See:/ 'regionCommitmentsList' smart constructor.
+data RegionCommitmentsList = RegionCommitmentsList'
+    { _rclOrderBy    :: !(Maybe Text)
+    , _rclProject    :: !Text
+    , _rclFilter     :: !(Maybe Text)
+    , _rclRegion     :: !Text
+    , _rclPageToken  :: !(Maybe Text)
+    , _rclMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionCommitmentsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rclOrderBy'
+--
+-- * 'rclProject'
+--
+-- * 'rclFilter'
+--
+-- * 'rclRegion'
+--
+-- * 'rclPageToken'
+--
+-- * 'rclMaxResults'
+regionCommitmentsList
+    :: Text -- ^ 'rclProject'
+    -> Text -- ^ 'rclRegion'
+    -> RegionCommitmentsList
+regionCommitmentsList pRclProject_ pRclRegion_ =
+    RegionCommitmentsList'
+    { _rclOrderBy = Nothing
+    , _rclProject = pRclProject_
+    , _rclFilter = Nothing
+    , _rclRegion = pRclRegion_
+    , _rclPageToken = Nothing
+    , _rclMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+rclOrderBy :: Lens' RegionCommitmentsList (Maybe Text)
+rclOrderBy
+  = lens _rclOrderBy (\ s a -> s{_rclOrderBy = a})
+
+-- | Project ID for this request.
+rclProject :: Lens' RegionCommitmentsList Text
+rclProject
+  = lens _rclProject (\ s a -> s{_rclProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+rclFilter :: Lens' RegionCommitmentsList (Maybe Text)
+rclFilter
+  = lens _rclFilter (\ s a -> s{_rclFilter = a})
+
+-- | Name of the region for this request.
+rclRegion :: Lens' RegionCommitmentsList Text
+rclRegion
+  = lens _rclRegion (\ s a -> s{_rclRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+rclPageToken :: Lens' RegionCommitmentsList (Maybe Text)
+rclPageToken
+  = lens _rclPageToken (\ s a -> s{_rclPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+rclMaxResults :: Lens' RegionCommitmentsList Word32
+rclMaxResults
+  = lens _rclMaxResults
+      (\ s a -> s{_rclMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RegionCommitmentsList where
+        type Rs RegionCommitmentsList = CommitmentList
+        type Scopes RegionCommitmentsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionCommitmentsList'{..}
+          = go _rclProject _rclRegion _rclOrderBy _rclFilter
+              _rclPageToken
+              (Just _rclMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionCommitmentsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs b/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDiskTypes.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)
+--
+-- Returns the specified regional disk type. Gets a list of available disk
+-- types by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDiskTypes.get@.
+module Network.Google.Resource.Compute.RegionDiskTypes.Get
+    (
+    -- * REST Resource
+      RegionDiskTypesGetResource
+
+    -- * Creating a Request
+    , regionDiskTypesGet
+    , RegionDiskTypesGet
+
+    -- * Request Lenses
+    , rdtgProject
+    , rdtgDiskType
+    , rdtgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDiskTypes.get@ method which the
+-- 'RegionDiskTypesGet' request conforms to.
+type RegionDiskTypesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "diskTypes" :>
+                   Capture "diskType" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] DiskType
+
+-- | Returns the specified regional disk type. Gets a list of available disk
+-- types by making a list() request.
+--
+-- /See:/ 'regionDiskTypesGet' smart constructor.
+data RegionDiskTypesGet = RegionDiskTypesGet'
+    { _rdtgProject  :: !Text
+    , _rdtgDiskType :: !Text
+    , _rdtgRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDiskTypesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtgProject'
+--
+-- * 'rdtgDiskType'
+--
+-- * 'rdtgRegion'
+regionDiskTypesGet
+    :: Text -- ^ 'rdtgProject'
+    -> Text -- ^ 'rdtgDiskType'
+    -> Text -- ^ 'rdtgRegion'
+    -> RegionDiskTypesGet
+regionDiskTypesGet pRdtgProject_ pRdtgDiskType_ pRdtgRegion_ =
+    RegionDiskTypesGet'
+    { _rdtgProject = pRdtgProject_
+    , _rdtgDiskType = pRdtgDiskType_
+    , _rdtgRegion = pRdtgRegion_
+    }
+
+-- | Project ID for this request.
+rdtgProject :: Lens' RegionDiskTypesGet Text
+rdtgProject
+  = lens _rdtgProject (\ s a -> s{_rdtgProject = a})
+
+-- | Name of the disk type to return.
+rdtgDiskType :: Lens' RegionDiskTypesGet Text
+rdtgDiskType
+  = lens _rdtgDiskType (\ s a -> s{_rdtgDiskType = a})
+
+-- | The name of the region for this request.
+rdtgRegion :: Lens' RegionDiskTypesGet Text
+rdtgRegion
+  = lens _rdtgRegion (\ s a -> s{_rdtgRegion = a})
+
+instance GoogleRequest RegionDiskTypesGet where
+        type Rs RegionDiskTypesGet = DiskType
+        type Scopes RegionDiskTypesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionDiskTypesGet'{..}
+          = go _rdtgProject _rdtgRegion _rdtgDiskType
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDiskTypesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs b/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDiskTypes.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)
+--
+-- Retrieves a list of regional disk types available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDiskTypes.list@.
+module Network.Google.Resource.Compute.RegionDiskTypes.List
+    (
+    -- * REST Resource
+      RegionDiskTypesListResource
+
+    -- * Creating a Request
+    , regionDiskTypesList
+    , RegionDiskTypesList
+
+    -- * Request Lenses
+    , rdtlOrderBy
+    , rdtlProject
+    , rdtlFilter
+    , rdtlRegion
+    , rdtlPageToken
+    , rdtlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDiskTypes.list@ method which the
+-- 'RegionDiskTypesList' request conforms to.
+type RegionDiskTypesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "diskTypes" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] RegionDiskTypeList
+
+-- | Retrieves a list of regional disk types available to the specified
+-- project.
+--
+-- /See:/ 'regionDiskTypesList' smart constructor.
+data RegionDiskTypesList = RegionDiskTypesList'
+    { _rdtlOrderBy    :: !(Maybe Text)
+    , _rdtlProject    :: !Text
+    , _rdtlFilter     :: !(Maybe Text)
+    , _rdtlRegion     :: !Text
+    , _rdtlPageToken  :: !(Maybe Text)
+    , _rdtlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDiskTypesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtlOrderBy'
+--
+-- * 'rdtlProject'
+--
+-- * 'rdtlFilter'
+--
+-- * 'rdtlRegion'
+--
+-- * 'rdtlPageToken'
+--
+-- * 'rdtlMaxResults'
+regionDiskTypesList
+    :: Text -- ^ 'rdtlProject'
+    -> Text -- ^ 'rdtlRegion'
+    -> RegionDiskTypesList
+regionDiskTypesList pRdtlProject_ pRdtlRegion_ =
+    RegionDiskTypesList'
+    { _rdtlOrderBy = Nothing
+    , _rdtlProject = pRdtlProject_
+    , _rdtlFilter = Nothing
+    , _rdtlRegion = pRdtlRegion_
+    , _rdtlPageToken = Nothing
+    , _rdtlMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+rdtlOrderBy :: Lens' RegionDiskTypesList (Maybe Text)
+rdtlOrderBy
+  = lens _rdtlOrderBy (\ s a -> s{_rdtlOrderBy = a})
+
+-- | Project ID for this request.
+rdtlProject :: Lens' RegionDiskTypesList Text
+rdtlProject
+  = lens _rdtlProject (\ s a -> s{_rdtlProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+rdtlFilter :: Lens' RegionDiskTypesList (Maybe Text)
+rdtlFilter
+  = lens _rdtlFilter (\ s a -> s{_rdtlFilter = a})
+
+-- | The name of the region for this request.
+rdtlRegion :: Lens' RegionDiskTypesList Text
+rdtlRegion
+  = lens _rdtlRegion (\ s a -> s{_rdtlRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+rdtlPageToken :: Lens' RegionDiskTypesList (Maybe Text)
+rdtlPageToken
+  = lens _rdtlPageToken
+      (\ s a -> s{_rdtlPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+rdtlMaxResults :: Lens' RegionDiskTypesList Word32
+rdtlMaxResults
+  = lens _rdtlMaxResults
+      (\ s a -> s{_rdtlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RegionDiskTypesList where
+        type Rs RegionDiskTypesList = RegionDiskTypeList
+        type Scopes RegionDiskTypesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionDiskTypesList'{..}
+          = go _rdtlProject _rdtlRegion _rdtlOrderBy
+              _rdtlFilter
+              _rdtlPageToken
+              (Just _rdtlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDiskTypesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs b/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.CreateSnapshot
+-- 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 snapshot of this regional disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.createSnapshot@.
+module Network.Google.Resource.Compute.RegionDisks.CreateSnapshot
+    (
+    -- * REST Resource
+      RegionDisksCreateSnapshotResource
+
+    -- * Creating a Request
+    , regionDisksCreateSnapshot
+    , RegionDisksCreateSnapshot
+
+    -- * Request Lenses
+    , rdcsRequestId
+    , rdcsProject
+    , rdcsDisk
+    , rdcsPayload
+    , rdcsRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.createSnapshot@ method which the
+-- 'RegionDisksCreateSnapshot' request conforms to.
+type RegionDisksCreateSnapshotResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     "createSnapshot" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] Snapshot :> Post '[JSON] Operation
+
+-- | Creates a snapshot of this regional disk.
+--
+-- /See:/ 'regionDisksCreateSnapshot' smart constructor.
+data RegionDisksCreateSnapshot = RegionDisksCreateSnapshot'
+    { _rdcsRequestId :: !(Maybe Text)
+    , _rdcsProject   :: !Text
+    , _rdcsDisk      :: !Text
+    , _rdcsPayload   :: !Snapshot
+    , _rdcsRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksCreateSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdcsRequestId'
+--
+-- * 'rdcsProject'
+--
+-- * 'rdcsDisk'
+--
+-- * 'rdcsPayload'
+--
+-- * 'rdcsRegion'
+regionDisksCreateSnapshot
+    :: Text -- ^ 'rdcsProject'
+    -> Text -- ^ 'rdcsDisk'
+    -> Snapshot -- ^ 'rdcsPayload'
+    -> Text -- ^ 'rdcsRegion'
+    -> RegionDisksCreateSnapshot
+regionDisksCreateSnapshot pRdcsProject_ pRdcsDisk_ pRdcsPayload_ pRdcsRegion_ =
+    RegionDisksCreateSnapshot'
+    { _rdcsRequestId = Nothing
+    , _rdcsProject = pRdcsProject_
+    , _rdcsDisk = pRdcsDisk_
+    , _rdcsPayload = pRdcsPayload_
+    , _rdcsRegion = pRdcsRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rdcsRequestId :: Lens' RegionDisksCreateSnapshot (Maybe Text)
+rdcsRequestId
+  = lens _rdcsRequestId
+      (\ s a -> s{_rdcsRequestId = a})
+
+-- | Project ID for this request.
+rdcsProject :: Lens' RegionDisksCreateSnapshot Text
+rdcsProject
+  = lens _rdcsProject (\ s a -> s{_rdcsProject = a})
+
+-- | Name of the regional persistent disk to snapshot.
+rdcsDisk :: Lens' RegionDisksCreateSnapshot Text
+rdcsDisk = lens _rdcsDisk (\ s a -> s{_rdcsDisk = a})
+
+-- | Multipart request metadata.
+rdcsPayload :: Lens' RegionDisksCreateSnapshot Snapshot
+rdcsPayload
+  = lens _rdcsPayload (\ s a -> s{_rdcsPayload = a})
+
+-- | Name of the region for this request.
+rdcsRegion :: Lens' RegionDisksCreateSnapshot Text
+rdcsRegion
+  = lens _rdcsRegion (\ s a -> s{_rdcsRegion = a})
+
+instance GoogleRequest RegionDisksCreateSnapshot
+         where
+        type Rs RegionDisksCreateSnapshot = Operation
+        type Scopes RegionDisksCreateSnapshot =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionDisksCreateSnapshot'{..}
+          = go _rdcsProject _rdcsRegion _rdcsDisk
+              _rdcsRequestId
+              (Just AltJSON)
+              _rdcsPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksCreateSnapshotResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.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 specified regional persistent disk. Deleting a regional disk
+-- removes all the replicas of its data permanently and is irreversible.
+-- However, deleting a disk does not delete any snapshots previously made
+-- from the disk. You must separately delete snapshots.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.delete@.
+module Network.Google.Resource.Compute.RegionDisks.Delete
+    (
+    -- * REST Resource
+      RegionDisksDeleteResource
+
+    -- * Creating a Request
+    , regionDisksDelete
+    , RegionDisksDelete
+
+    -- * Request Lenses
+    , rddRequestId
+    , rddProject
+    , rddDisk
+    , rddRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.delete@ method which the
+-- 'RegionDisksDelete' request conforms to.
+type RegionDisksDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified regional persistent disk. Deleting a regional disk
+-- removes all the replicas of its data permanently and is irreversible.
+-- However, deleting a disk does not delete any snapshots previously made
+-- from the disk. You must separately delete snapshots.
+--
+-- /See:/ 'regionDisksDelete' smart constructor.
+data RegionDisksDelete = RegionDisksDelete'
+    { _rddRequestId :: !(Maybe Text)
+    , _rddProject   :: !Text
+    , _rddDisk      :: !Text
+    , _rddRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rddRequestId'
+--
+-- * 'rddProject'
+--
+-- * 'rddDisk'
+--
+-- * 'rddRegion'
+regionDisksDelete
+    :: Text -- ^ 'rddProject'
+    -> Text -- ^ 'rddDisk'
+    -> Text -- ^ 'rddRegion'
+    -> RegionDisksDelete
+regionDisksDelete pRddProject_ pRddDisk_ pRddRegion_ =
+    RegionDisksDelete'
+    { _rddRequestId = Nothing
+    , _rddProject = pRddProject_
+    , _rddDisk = pRddDisk_
+    , _rddRegion = pRddRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rddRequestId :: Lens' RegionDisksDelete (Maybe Text)
+rddRequestId
+  = lens _rddRequestId (\ s a -> s{_rddRequestId = a})
+
+-- | Project ID for this request.
+rddProject :: Lens' RegionDisksDelete Text
+rddProject
+  = lens _rddProject (\ s a -> s{_rddProject = a})
+
+-- | Name of the regional persistent disk to delete.
+rddDisk :: Lens' RegionDisksDelete Text
+rddDisk = lens _rddDisk (\ s a -> s{_rddDisk = a})
+
+-- | Name of the region for this request.
+rddRegion :: Lens' RegionDisksDelete Text
+rddRegion
+  = lens _rddRegion (\ s a -> s{_rddRegion = a})
+
+instance GoogleRequest RegionDisksDelete where
+        type Rs RegionDisksDelete = Operation
+        type Scopes RegionDisksDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionDisksDelete'{..}
+          = go _rddProject _rddRegion _rddDisk _rddRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.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)
+--
+-- Returns a specified regional persistent disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.get@.
+module Network.Google.Resource.Compute.RegionDisks.Get
+    (
+    -- * REST Resource
+      RegionDisksGetResource
+
+    -- * Creating a Request
+    , regionDisksGet
+    , RegionDisksGet
+
+    -- * Request Lenses
+    , rdgProject
+    , rdgDisk
+    , rdgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.get@ method which the
+-- 'RegionDisksGet' request conforms to.
+type RegionDisksGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Disk
+
+-- | Returns a specified regional persistent disk.
+--
+-- /See:/ 'regionDisksGet' smart constructor.
+data RegionDisksGet = RegionDisksGet'
+    { _rdgProject :: !Text
+    , _rdgDisk    :: !Text
+    , _rdgRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdgProject'
+--
+-- * 'rdgDisk'
+--
+-- * 'rdgRegion'
+regionDisksGet
+    :: Text -- ^ 'rdgProject'
+    -> Text -- ^ 'rdgDisk'
+    -> Text -- ^ 'rdgRegion'
+    -> RegionDisksGet
+regionDisksGet pRdgProject_ pRdgDisk_ pRdgRegion_ =
+    RegionDisksGet'
+    { _rdgProject = pRdgProject_
+    , _rdgDisk = pRdgDisk_
+    , _rdgRegion = pRdgRegion_
+    }
+
+-- | Project ID for this request.
+rdgProject :: Lens' RegionDisksGet Text
+rdgProject
+  = lens _rdgProject (\ s a -> s{_rdgProject = a})
+
+-- | Name of the regional persistent disk to return.
+rdgDisk :: Lens' RegionDisksGet Text
+rdgDisk = lens _rdgDisk (\ s a -> s{_rdgDisk = a})
+
+-- | Name of the region for this request.
+rdgRegion :: Lens' RegionDisksGet Text
+rdgRegion
+  = lens _rdgRegion (\ s a -> s{_rdgRegion = a})
+
+instance GoogleRequest RegionDisksGet where
+        type Rs RegionDisksGet = Disk
+        type Scopes RegionDisksGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionDisksGet'{..}
+          = go _rdgProject _rdgRegion _rdgDisk (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RegionDisksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.Insert
+-- 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 persistent regional disk in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.insert@.
+module Network.Google.Resource.Compute.RegionDisks.Insert
+    (
+    -- * REST Resource
+      RegionDisksInsertResource
+
+    -- * Creating a Request
+    , regionDisksInsert
+    , RegionDisksInsert
+
+    -- * Request Lenses
+    , rdiRequestId
+    , rdiSourceImage
+    , rdiProject
+    , rdiPayload
+    , rdiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.insert@ method which the
+-- 'RegionDisksInsert' request conforms to.
+type RegionDisksInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "sourceImage" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Disk :> Post '[JSON] Operation
+
+-- | Creates a persistent regional disk in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'regionDisksInsert' smart constructor.
+data RegionDisksInsert = RegionDisksInsert'
+    { _rdiRequestId   :: !(Maybe Text)
+    , _rdiSourceImage :: !(Maybe Text)
+    , _rdiProject     :: !Text
+    , _rdiPayload     :: !Disk
+    , _rdiRegion      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdiRequestId'
+--
+-- * 'rdiSourceImage'
+--
+-- * 'rdiProject'
+--
+-- * 'rdiPayload'
+--
+-- * 'rdiRegion'
+regionDisksInsert
+    :: Text -- ^ 'rdiProject'
+    -> Disk -- ^ 'rdiPayload'
+    -> Text -- ^ 'rdiRegion'
+    -> RegionDisksInsert
+regionDisksInsert pRdiProject_ pRdiPayload_ pRdiRegion_ =
+    RegionDisksInsert'
+    { _rdiRequestId = Nothing
+    , _rdiSourceImage = Nothing
+    , _rdiProject = pRdiProject_
+    , _rdiPayload = pRdiPayload_
+    , _rdiRegion = pRdiRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rdiRequestId :: Lens' RegionDisksInsert (Maybe Text)
+rdiRequestId
+  = lens _rdiRequestId (\ s a -> s{_rdiRequestId = a})
+
+-- | Optional. Source image to restore onto a disk.
+rdiSourceImage :: Lens' RegionDisksInsert (Maybe Text)
+rdiSourceImage
+  = lens _rdiSourceImage
+      (\ s a -> s{_rdiSourceImage = a})
+
+-- | Project ID for this request.
+rdiProject :: Lens' RegionDisksInsert Text
+rdiProject
+  = lens _rdiProject (\ s a -> s{_rdiProject = a})
+
+-- | Multipart request metadata.
+rdiPayload :: Lens' RegionDisksInsert Disk
+rdiPayload
+  = lens _rdiPayload (\ s a -> s{_rdiPayload = a})
+
+-- | Name of the region for this request.
+rdiRegion :: Lens' RegionDisksInsert Text
+rdiRegion
+  = lens _rdiRegion (\ s a -> s{_rdiRegion = a})
+
+instance GoogleRequest RegionDisksInsert where
+        type Rs RegionDisksInsert = Operation
+        type Scopes RegionDisksInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionDisksInsert'{..}
+          = go _rdiProject _rdiRegion _rdiRequestId
+              _rdiSourceImage
+              (Just AltJSON)
+              _rdiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/List.hs b/gen/Network/Google/Resource/Compute/RegionDisks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/List.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.Compute.RegionDisks.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)
+--
+-- Retrieves the list of persistent disks contained within the specified
+-- region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.list@.
+module Network.Google.Resource.Compute.RegionDisks.List
+    (
+    -- * REST Resource
+      RegionDisksListResource
+
+    -- * Creating a Request
+    , regionDisksList
+    , RegionDisksList
+
+    -- * Request Lenses
+    , rdlOrderBy
+    , rdlProject
+    , rdlFilter
+    , rdlRegion
+    , rdlPageToken
+    , rdlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.list@ method which the
+-- 'RegionDisksList' request conforms to.
+type RegionDisksListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] DiskList
+
+-- | Retrieves the list of persistent disks contained within the specified
+-- region.
+--
+-- /See:/ 'regionDisksList' smart constructor.
+data RegionDisksList = RegionDisksList'
+    { _rdlOrderBy    :: !(Maybe Text)
+    , _rdlProject    :: !Text
+    , _rdlFilter     :: !(Maybe Text)
+    , _rdlRegion     :: !Text
+    , _rdlPageToken  :: !(Maybe Text)
+    , _rdlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdlOrderBy'
+--
+-- * 'rdlProject'
+--
+-- * 'rdlFilter'
+--
+-- * 'rdlRegion'
+--
+-- * 'rdlPageToken'
+--
+-- * 'rdlMaxResults'
+regionDisksList
+    :: Text -- ^ 'rdlProject'
+    -> Text -- ^ 'rdlRegion'
+    -> RegionDisksList
+regionDisksList pRdlProject_ pRdlRegion_ =
+    RegionDisksList'
+    { _rdlOrderBy = Nothing
+    , _rdlProject = pRdlProject_
+    , _rdlFilter = Nothing
+    , _rdlRegion = pRdlRegion_
+    , _rdlPageToken = Nothing
+    , _rdlMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+rdlOrderBy :: Lens' RegionDisksList (Maybe Text)
+rdlOrderBy
+  = lens _rdlOrderBy (\ s a -> s{_rdlOrderBy = a})
+
+-- | Project ID for this request.
+rdlProject :: Lens' RegionDisksList Text
+rdlProject
+  = lens _rdlProject (\ s a -> s{_rdlProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+rdlFilter :: Lens' RegionDisksList (Maybe Text)
+rdlFilter
+  = lens _rdlFilter (\ s a -> s{_rdlFilter = a})
+
+-- | Name of the region for this request.
+rdlRegion :: Lens' RegionDisksList Text
+rdlRegion
+  = lens _rdlRegion (\ s a -> s{_rdlRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+rdlPageToken :: Lens' RegionDisksList (Maybe Text)
+rdlPageToken
+  = lens _rdlPageToken (\ s a -> s{_rdlPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+rdlMaxResults :: Lens' RegionDisksList Word32
+rdlMaxResults
+  = lens _rdlMaxResults
+      (\ s a -> s{_rdlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RegionDisksList where
+        type Rs RegionDisksList = DiskList
+        type Scopes RegionDisksList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionDisksList'{..}
+          = go _rdlProject _rdlRegion _rdlOrderBy _rdlFilter
+              _rdlPageToken
+              (Just _rdlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.Resize
+-- 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)
+--
+-- Resizes the specified regional persistent disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.resize@.
+module Network.Google.Resource.Compute.RegionDisks.Resize
+    (
+    -- * REST Resource
+      RegionDisksResizeResource
+
+    -- * Creating a Request
+    , regionDisksResize
+    , RegionDisksResize
+
+    -- * Request Lenses
+    , rdrRequestId
+    , rdrProject
+    , rdrDisk
+    , rdrPayload
+    , rdrRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.resize@ method which the
+-- 'RegionDisksResize' request conforms to.
+type RegionDisksResizeResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     "resize" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] RegionDisksResizeRequest :>
+                             Post '[JSON] Operation
+
+-- | Resizes the specified regional persistent disk.
+--
+-- /See:/ 'regionDisksResize' smart constructor.
+data RegionDisksResize = RegionDisksResize'
+    { _rdrRequestId :: !(Maybe Text)
+    , _rdrProject   :: !Text
+    , _rdrDisk      :: !Text
+    , _rdrPayload   :: !RegionDisksResizeRequest
+    , _rdrRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksResize' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdrRequestId'
+--
+-- * 'rdrProject'
+--
+-- * 'rdrDisk'
+--
+-- * 'rdrPayload'
+--
+-- * 'rdrRegion'
+regionDisksResize
+    :: Text -- ^ 'rdrProject'
+    -> Text -- ^ 'rdrDisk'
+    -> RegionDisksResizeRequest -- ^ 'rdrPayload'
+    -> Text -- ^ 'rdrRegion'
+    -> RegionDisksResize
+regionDisksResize pRdrProject_ pRdrDisk_ pRdrPayload_ pRdrRegion_ =
+    RegionDisksResize'
+    { _rdrRequestId = Nothing
+    , _rdrProject = pRdrProject_
+    , _rdrDisk = pRdrDisk_
+    , _rdrPayload = pRdrPayload_
+    , _rdrRegion = pRdrRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rdrRequestId :: Lens' RegionDisksResize (Maybe Text)
+rdrRequestId
+  = lens _rdrRequestId (\ s a -> s{_rdrRequestId = a})
+
+-- | The project ID for this request.
+rdrProject :: Lens' RegionDisksResize Text
+rdrProject
+  = lens _rdrProject (\ s a -> s{_rdrProject = a})
+
+-- | Name of the regional persistent disk.
+rdrDisk :: Lens' RegionDisksResize Text
+rdrDisk = lens _rdrDisk (\ s a -> s{_rdrDisk = a})
+
+-- | Multipart request metadata.
+rdrPayload :: Lens' RegionDisksResize RegionDisksResizeRequest
+rdrPayload
+  = lens _rdrPayload (\ s a -> s{_rdrPayload = a})
+
+-- | Name of the region for this request.
+rdrRegion :: Lens' RegionDisksResize Text
+rdrRegion
+  = lens _rdrRegion (\ s a -> s{_rdrRegion = a})
+
+instance GoogleRequest RegionDisksResize where
+        type Rs RegionDisksResize = Operation
+        type Scopes RegionDisksResize =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionDisksResize'{..}
+          = go _rdrProject _rdrRegion _rdrDisk _rdrRequestId
+              (Just AltJSON)
+              _rdrPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksResizeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs b/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.SetLabels
+-- 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 labels on the target regional disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.setLabels@.
+module Network.Google.Resource.Compute.RegionDisks.SetLabels
+    (
+    -- * REST Resource
+      RegionDisksSetLabelsResource
+
+    -- * Creating a Request
+    , regionDisksSetLabels
+    , RegionDisksSetLabels
+
+    -- * Request Lenses
+    , rdslRequestId
+    , rdslProject
+    , rdslPayload
+    , rdslResource
+    , rdslRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.setLabels@ method which the
+-- 'RegionDisksSetLabels' request conforms to.
+type RegionDisksSetLabelsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "setLabels" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] RegionSetLabelsRequest :>
+                             Post '[JSON] Operation
+
+-- | Sets the labels on the target regional disk.
+--
+-- /See:/ 'regionDisksSetLabels' smart constructor.
+data RegionDisksSetLabels = RegionDisksSetLabels'
+    { _rdslRequestId :: !(Maybe Text)
+    , _rdslProject   :: !Text
+    , _rdslPayload   :: !RegionSetLabelsRequest
+    , _rdslResource  :: !Text
+    , _rdslRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksSetLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdslRequestId'
+--
+-- * 'rdslProject'
+--
+-- * 'rdslPayload'
+--
+-- * 'rdslResource'
+--
+-- * 'rdslRegion'
+regionDisksSetLabels
+    :: Text -- ^ 'rdslProject'
+    -> RegionSetLabelsRequest -- ^ 'rdslPayload'
+    -> Text -- ^ 'rdslResource'
+    -> Text -- ^ 'rdslRegion'
+    -> RegionDisksSetLabels
+regionDisksSetLabels pRdslProject_ pRdslPayload_ pRdslResource_ pRdslRegion_ =
+    RegionDisksSetLabels'
+    { _rdslRequestId = Nothing
+    , _rdslProject = pRdslProject_
+    , _rdslPayload = pRdslPayload_
+    , _rdslResource = pRdslResource_
+    , _rdslRegion = pRdslRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rdslRequestId :: Lens' RegionDisksSetLabels (Maybe Text)
+rdslRequestId
+  = lens _rdslRequestId
+      (\ s a -> s{_rdslRequestId = a})
+
+-- | Project ID for this request.
+rdslProject :: Lens' RegionDisksSetLabels Text
+rdslProject
+  = lens _rdslProject (\ s a -> s{_rdslProject = a})
+
+-- | Multipart request metadata.
+rdslPayload :: Lens' RegionDisksSetLabels RegionSetLabelsRequest
+rdslPayload
+  = lens _rdslPayload (\ s a -> s{_rdslPayload = a})
+
+-- | Name or id of the resource for this request.
+rdslResource :: Lens' RegionDisksSetLabels Text
+rdslResource
+  = lens _rdslResource (\ s a -> s{_rdslResource = a})
+
+-- | The region for this request.
+rdslRegion :: Lens' RegionDisksSetLabels Text
+rdslRegion
+  = lens _rdslRegion (\ s a -> s{_rdslRegion = a})
+
+instance GoogleRequest RegionDisksSetLabels where
+        type Rs RegionDisksSetLabels = Operation
+        type Scopes RegionDisksSetLabels =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionDisksSetLabels'{..}
+          = go _rdslProject _rdslRegion _rdslResource
+              _rdslRequestId
+              (Just AltJSON)
+              _rdslPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionDisksSetLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.RegionDisks.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionDisks.testIamPermissions@.
+module Network.Google.Resource.Compute.RegionDisks.TestIAMPermissions
+    (
+    -- * REST Resource
+      RegionDisksTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , regionDisksTestIAMPermissions
+    , RegionDisksTestIAMPermissions
+
+    -- * Request Lenses
+    , rdtipProject
+    , rdtipPayload
+    , rdtipResource
+    , rdtipRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionDisks.testIamPermissions@ method which the
+-- 'RegionDisksTestIAMPermissions' request conforms to.
+type RegionDisksTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "disks" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'regionDisksTestIAMPermissions' smart constructor.
+data RegionDisksTestIAMPermissions = RegionDisksTestIAMPermissions'
+    { _rdtipProject  :: !Text
+    , _rdtipPayload  :: !TestPermissionsRequest
+    , _rdtipResource :: !Text
+    , _rdtipRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionDisksTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdtipProject'
+--
+-- * 'rdtipPayload'
+--
+-- * 'rdtipResource'
+--
+-- * 'rdtipRegion'
+regionDisksTestIAMPermissions
+    :: Text -- ^ 'rdtipProject'
+    -> TestPermissionsRequest -- ^ 'rdtipPayload'
+    -> Text -- ^ 'rdtipResource'
+    -> Text -- ^ 'rdtipRegion'
+    -> RegionDisksTestIAMPermissions
+regionDisksTestIAMPermissions pRdtipProject_ pRdtipPayload_ pRdtipResource_ pRdtipRegion_ =
+    RegionDisksTestIAMPermissions'
+    { _rdtipProject = pRdtipProject_
+    , _rdtipPayload = pRdtipPayload_
+    , _rdtipResource = pRdtipResource_
+    , _rdtipRegion = pRdtipRegion_
+    }
+
+-- | Project ID for this request.
+rdtipProject :: Lens' RegionDisksTestIAMPermissions Text
+rdtipProject
+  = lens _rdtipProject (\ s a -> s{_rdtipProject = a})
+
+-- | Multipart request metadata.
+rdtipPayload :: Lens' RegionDisksTestIAMPermissions TestPermissionsRequest
+rdtipPayload
+  = lens _rdtipPayload (\ s a -> s{_rdtipPayload = a})
+
+-- | Name or id of the resource for this request.
+rdtipResource :: Lens' RegionDisksTestIAMPermissions Text
+rdtipResource
+  = lens _rdtipResource
+      (\ s a -> s{_rdtipResource = a})
+
+-- | The name of the region for this request.
+rdtipRegion :: Lens' RegionDisksTestIAMPermissions Text
+rdtipRegion
+  = lens _rdtipRegion (\ s a -> s{_rdtipRegion = a})
+
+instance GoogleRequest RegionDisksTestIAMPermissions
+         where
+        type Rs RegionDisksTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes RegionDisksTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RegionDisksTestIAMPermissions'{..}
+          = go _rdtipProject _rdtipRegion _rdtipResource
+              (Just AltJSON)
+              _rdtipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RegionDisksTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/AbandonInstances.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/AbandonInstances.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/AbandonInstances.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/AbandonInstances.hs
@@ -20,15 +20,19 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to remove the specified instances from the
--- managed instance group. Abandoning an instance does not delete the
--- instance, but it does remove the instance from any target pools that are
--- applied by the managed instance group. This method reduces the
--- targetSize of the managed instance group by the number of instances that
--- you abandon. This operation is marked as DONE when the action is
--- scheduled even if the instances have not yet been removed from the
--- group. You must separately verify the status of the abandoning action
--- with the listmanagedinstances method.
+-- Flags the specified instances to be immediately removed from the managed
+-- instance group. Abandoning an instance does not delete the instance, but
+-- it does remove the instance from any target pools that are applied by
+-- the managed instance group. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you abandon. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been removed from the group. You must separately
+-- verify the status of the abandoning action with the listmanagedinstances
+-- method. If the group is part of a backend service that has enabled
+-- connection draining, it can take up to 60 seconds after the connection
+-- draining duration has elapsed before the VM instance is removed or
+-- deleted. You can specify a maximum of 1000 instances with this method
+-- per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.abandonInstances@.
 module Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
@@ -41,6 +45,7 @@
     , RegionInstanceGroupManagersAbandonInstances
 
     -- * Request Lenses
+    , rigmaiRequestId
     , rigmaiProject
     , rigmaiInstanceGroupManager
     , rigmaiPayload
@@ -63,24 +68,30 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "abandonInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupManagersAbandonInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupManagersAbandonInstancesRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to remove the specified instances from the
--- managed instance group. Abandoning an instance does not delete the
--- instance, but it does remove the instance from any target pools that are
--- applied by the managed instance group. This method reduces the
--- targetSize of the managed instance group by the number of instances that
--- you abandon. This operation is marked as DONE when the action is
--- scheduled even if the instances have not yet been removed from the
--- group. You must separately verify the status of the abandoning action
--- with the listmanagedinstances method.
+-- | Flags the specified instances to be immediately removed from the managed
+-- instance group. Abandoning an instance does not delete the instance, but
+-- it does remove the instance from any target pools that are applied by
+-- the managed instance group. This method reduces the targetSize of the
+-- managed instance group by the number of instances that you abandon. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been removed from the group. You must separately
+-- verify the status of the abandoning action with the listmanagedinstances
+-- method. If the group is part of a backend service that has enabled
+-- connection draining, it can take up to 60 seconds after the connection
+-- draining duration has elapsed before the VM instance is removed or
+-- deleted. You can specify a maximum of 1000 instances with this method
+-- per request.
 --
 -- /See:/ 'regionInstanceGroupManagersAbandonInstances' smart constructor.
 data RegionInstanceGroupManagersAbandonInstances = RegionInstanceGroupManagersAbandonInstances'
-    { _rigmaiProject              :: !Text
+    { _rigmaiRequestId            :: !(Maybe Text)
+    , _rigmaiProject              :: !Text
     , _rigmaiInstanceGroupManager :: !Text
     , _rigmaiPayload              :: !RegionInstanceGroupManagersAbandonInstancesRequest
     , _rigmaiRegion               :: !Text
@@ -90,6 +101,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmaiRequestId'
+--
 -- * 'rigmaiProject'
 --
 -- * 'rigmaiInstanceGroupManager'
@@ -105,12 +118,28 @@
     -> RegionInstanceGroupManagersAbandonInstances
 regionInstanceGroupManagersAbandonInstances pRigmaiProject_ pRigmaiInstanceGroupManager_ pRigmaiPayload_ pRigmaiRegion_ =
     RegionInstanceGroupManagersAbandonInstances'
-    { _rigmaiProject = pRigmaiProject_
+    { _rigmaiRequestId = Nothing
+    , _rigmaiProject = pRigmaiProject_
     , _rigmaiInstanceGroupManager = pRigmaiInstanceGroupManager_
     , _rigmaiPayload = pRigmaiPayload_
     , _rigmaiRegion = pRigmaiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmaiRequestId :: Lens' RegionInstanceGroupManagersAbandonInstances (Maybe Text)
+rigmaiRequestId
+  = lens _rigmaiRequestId
+      (\ s a -> s{_rigmaiRequestId = a})
+
 -- | Project ID for this request.
 rigmaiProject :: Lens' RegionInstanceGroupManagersAbandonInstances Text
 rigmaiProject
@@ -147,6 +176,7 @@
           RegionInstanceGroupManagersAbandonInstances'{..}
           = go _rigmaiProject _rigmaiRegion
               _rigmaiInstanceGroupManager
+              _rigmaiRequestId
               (Just AltJSON)
               _rigmaiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Delete.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Delete.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Delete.hs
@@ -34,6 +34,7 @@
     , RegionInstanceGroupManagersDelete
 
     -- * Request Lenses
+    , rigmdRequestId
     , rigmdProject
     , rigmdInstanceGroupManager
     , rigmdRegion
@@ -53,14 +54,16 @@
                Capture "region" Text :>
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified managed instance group and all of the instances in
 -- that group.
 --
 -- /See:/ 'regionInstanceGroupManagersDelete' smart constructor.
 data RegionInstanceGroupManagersDelete = RegionInstanceGroupManagersDelete'
-    { _rigmdProject              :: !Text
+    { _rigmdRequestId            :: !(Maybe Text)
+    , _rigmdProject              :: !Text
     , _rigmdInstanceGroupManager :: !Text
     , _rigmdRegion               :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -69,6 +72,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmdRequestId'
+--
 -- * 'rigmdProject'
 --
 -- * 'rigmdInstanceGroupManager'
@@ -81,11 +86,27 @@
     -> RegionInstanceGroupManagersDelete
 regionInstanceGroupManagersDelete pRigmdProject_ pRigmdInstanceGroupManager_ pRigmdRegion_ =
     RegionInstanceGroupManagersDelete'
-    { _rigmdProject = pRigmdProject_
+    { _rigmdRequestId = Nothing
+    , _rigmdProject = pRigmdProject_
     , _rigmdInstanceGroupManager = pRigmdInstanceGroupManager_
     , _rigmdRegion = pRigmdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmdRequestId :: Lens' RegionInstanceGroupManagersDelete (Maybe Text)
+rigmdRequestId
+  = lens _rigmdRequestId
+      (\ s a -> s{_rigmdRequestId = a})
+
 -- | Project ID for this request.
 rigmdProject :: Lens' RegionInstanceGroupManagersDelete Text
 rigmdProject
@@ -111,6 +132,7 @@
         requestClient RegionInstanceGroupManagersDelete'{..}
           = go _rigmdProject _rigmdRegion
               _rigmdInstanceGroupManager
+              _rigmdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/DeleteInstances.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/DeleteInstances.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/DeleteInstances.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/DeleteInstances.hs
@@ -20,13 +20,18 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to delete the specified instances in the
--- managed instance group. The instances are also removed from any target
+-- Flags the specified instances in the managed instance group to be
+-- immediately deleted. The instances are also removed from any target
 -- pools of which they were a member. This method reduces the targetSize of
 -- the managed instance group by the number of instances that you delete.
--- This operation is marked as DONE when the action is scheduled even if
--- the instances are still being deleted. You must separately verify the
--- status of the deleting action with the listmanagedinstances method.
+-- The deleteInstances operation is marked DONE if the deleteInstances
+-- request is successful. The underlying actions take additional time. You
+-- must separately verify the status of the deleting action with the
+-- listmanagedinstances method. If the group is part of a backend service
+-- that has enabled connection draining, it can take up to 60 seconds after
+-- the connection draining duration has elapsed before the VM instance is
+-- removed or deleted. You can specify a maximum of 1000 instances with
+-- this method per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.deleteInstances@.
 module Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
@@ -39,6 +44,7 @@
     , RegionInstanceGroupManagersDeleteInstances
 
     -- * Request Lenses
+    , rigmdiRequestId
     , rigmdiProject
     , rigmdiInstanceGroupManager
     , rigmdiPayload
@@ -61,22 +67,29 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "deleteInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupManagersDeleteInstancesRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupManagersDeleteInstancesRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to delete the specified instances in the
--- managed instance group. The instances are also removed from any target
+-- | Flags the specified instances in the managed instance group to be
+-- immediately deleted. The instances are also removed from any target
 -- pools of which they were a member. This method reduces the targetSize of
 -- the managed instance group by the number of instances that you delete.
--- This operation is marked as DONE when the action is scheduled even if
--- the instances are still being deleted. You must separately verify the
--- status of the deleting action with the listmanagedinstances method.
+-- The deleteInstances operation is marked DONE if the deleteInstances
+-- request is successful. The underlying actions take additional time. You
+-- must separately verify the status of the deleting action with the
+-- listmanagedinstances method. If the group is part of a backend service
+-- that has enabled connection draining, it can take up to 60 seconds after
+-- the connection draining duration has elapsed before the VM instance is
+-- removed or deleted. You can specify a maximum of 1000 instances with
+-- this method per request.
 --
 -- /See:/ 'regionInstanceGroupManagersDeleteInstances' smart constructor.
 data RegionInstanceGroupManagersDeleteInstances = RegionInstanceGroupManagersDeleteInstances'
-    { _rigmdiProject              :: !Text
+    { _rigmdiRequestId            :: !(Maybe Text)
+    , _rigmdiProject              :: !Text
     , _rigmdiInstanceGroupManager :: !Text
     , _rigmdiPayload              :: !RegionInstanceGroupManagersDeleteInstancesRequest
     , _rigmdiRegion               :: !Text
@@ -86,6 +99,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmdiRequestId'
+--
 -- * 'rigmdiProject'
 --
 -- * 'rigmdiInstanceGroupManager'
@@ -101,12 +116,28 @@
     -> RegionInstanceGroupManagersDeleteInstances
 regionInstanceGroupManagersDeleteInstances pRigmdiProject_ pRigmdiInstanceGroupManager_ pRigmdiPayload_ pRigmdiRegion_ =
     RegionInstanceGroupManagersDeleteInstances'
-    { _rigmdiProject = pRigmdiProject_
+    { _rigmdiRequestId = Nothing
+    , _rigmdiProject = pRigmdiProject_
     , _rigmdiInstanceGroupManager = pRigmdiInstanceGroupManager_
     , _rigmdiPayload = pRigmdiPayload_
     , _rigmdiRegion = pRigmdiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmdiRequestId :: Lens' RegionInstanceGroupManagersDeleteInstances (Maybe Text)
+rigmdiRequestId
+  = lens _rigmdiRequestId
+      (\ s a -> s{_rigmdiRequestId = a})
+
 -- | Project ID for this request.
 rigmdiProject :: Lens' RegionInstanceGroupManagersDeleteInstances Text
 rigmdiProject
@@ -143,6 +174,7 @@
           RegionInstanceGroupManagersDeleteInstances'{..}
           = go _rigmdiProject _rigmdiRegion
               _rigmdiInstanceGroupManager
+              _rigmdiRequestId
               (Just AltJSON)
               _rigmdiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Insert.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Insert.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Insert.hs
@@ -21,12 +21,12 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a managed instance group using the information that you specify
--- in the request. After the group is created, it schedules an action to
--- create instances in the group using the specified instance template.
--- This operation is marked as DONE when the group is created even if the
--- instances in the group have not yet been created. You must separately
--- verify the status of the individual instances with the
--- listmanagedinstances method.
+-- in the request. After the group is created, instances in the group are
+-- created using the specified instance template. This operation is marked
+-- as DONE when the group is created even if the instances in the group
+-- have not yet been created. You must separately verify the status of the
+-- individual instances with the listmanagedinstances method. A regional
+-- managed instance group can contain up to 2000 instances.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.insert@.
 module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
@@ -39,6 +39,7 @@
     , RegionInstanceGroupManagersInsert
 
     -- * Request Lenses
+    , rigmiRequestId
     , rigmiProject
     , rigmiPayload
     , rigmiRegion
@@ -57,29 +58,33 @@
              "regions" :>
                Capture "region" Text :>
                  "instanceGroupManagers" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] InstanceGroupManager :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] InstanceGroupManager :>
+                         Post '[JSON] Operation
 
 -- | Creates a managed instance group using the information that you specify
--- in the request. After the group is created, it schedules an action to
--- create instances in the group using the specified instance template.
--- This operation is marked as DONE when the group is created even if the
--- instances in the group have not yet been created. You must separately
--- verify the status of the individual instances with the
--- listmanagedinstances method.
+-- in the request. After the group is created, instances in the group are
+-- created using the specified instance template. This operation is marked
+-- as DONE when the group is created even if the instances in the group
+-- have not yet been created. You must separately verify the status of the
+-- individual instances with the listmanagedinstances method. A regional
+-- managed instance group can contain up to 2000 instances.
 --
 -- /See:/ 'regionInstanceGroupManagersInsert' smart constructor.
 data RegionInstanceGroupManagersInsert = RegionInstanceGroupManagersInsert'
-    { _rigmiProject :: !Text
-    , _rigmiPayload :: !InstanceGroupManager
-    , _rigmiRegion  :: !Text
+    { _rigmiRequestId :: !(Maybe Text)
+    , _rigmiProject   :: !Text
+    , _rigmiPayload   :: !InstanceGroupManager
+    , _rigmiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RegionInstanceGroupManagersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmiRequestId'
+--
 -- * 'rigmiProject'
 --
 -- * 'rigmiPayload'
@@ -92,11 +97,27 @@
     -> RegionInstanceGroupManagersInsert
 regionInstanceGroupManagersInsert pRigmiProject_ pRigmiPayload_ pRigmiRegion_ =
     RegionInstanceGroupManagersInsert'
-    { _rigmiProject = pRigmiProject_
+    { _rigmiRequestId = Nothing
+    , _rigmiProject = pRigmiProject_
     , _rigmiPayload = pRigmiPayload_
     , _rigmiRegion = pRigmiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmiRequestId :: Lens' RegionInstanceGroupManagersInsert (Maybe Text)
+rigmiRequestId
+  = lens _rigmiRequestId
+      (\ s a -> s{_rigmiRequestId = a})
+
 -- | Project ID for this request.
 rigmiProject :: Lens' RegionInstanceGroupManagersInsert Text
 rigmiProject
@@ -119,7 +140,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RegionInstanceGroupManagersInsert'{..}
-          = go _rigmiProject _rigmiRegion (Just AltJSON)
+          = go _rigmiProject _rigmiRegion _rigmiRequestId
+              (Just AltJSON)
               _rigmiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/List.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/List.hs
@@ -121,26 +121,22 @@
 rigmlProject
   = lens _rigmlProject (\ s a -> s{_rigmlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rigmlFilter :: Lens' RegionInstanceGroupManagersList (Maybe Text)
 rigmlFilter
   = lens _rigmlFilter (\ s a -> s{_rigmlFilter = a})
@@ -160,7 +156,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rigmlMaxResults :: Lens' RegionInstanceGroupManagersList Word32
 rigmlMaxResults
   = lens _rigmlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/ListManagedInstances.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/ListManagedInstances.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/ListManagedInstances.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/ListManagedInstances.hs
@@ -128,11 +128,35 @@
   = lens _rigmlmiInstanceGroupManager
       (\ s a -> s{_rigmlmiInstanceGroupManager = a})
 
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
 rigmlmiOrderBy :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)
 rigmlmiOrderBy
   = lens _rigmlmiOrderBy
       (\ s a -> s{_rigmlmiOrderBy = a})
 
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rigmlmiFilter :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)
 rigmlmiFilter
   = lens _rigmlmiFilter
@@ -144,11 +168,18 @@
   = lens _rigmlmiRegion
       (\ s a -> s{_rigmlmiRegion = a})
 
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
 rigmlmiPageToken :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)
 rigmlmiPageToken
   = lens _rigmlmiPageToken
       (\ s a -> s{_rigmlmiPageToken = a})
 
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rigmlmiMaxResults :: Lens' RegionInstanceGroupManagersListManagedInstances Word32
 rigmlmiMaxResults
   = lens _rigmlmiMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.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.Compute.RegionInstanceGroupManagers.Patch
+-- 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 a managed instance group using the information that you specify
+-- in the request. This operation is marked as DONE when the group is
+-- patched even if the instances in the group are still in the process of
+-- being patched. You must separately verify the status of the individual
+-- instances with the listmanagedinstances method. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.patch@.
+module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Patch
+    (
+    -- * REST Resource
+      RegionInstanceGroupManagersPatchResource
+
+    -- * Creating a Request
+    , regionInstanceGroupManagersPatch
+    , RegionInstanceGroupManagersPatch
+
+    -- * Request Lenses
+    , rigmpRequestId
+    , rigmpProject
+    , rigmpInstanceGroupManager
+    , rigmpPayload
+    , rigmpRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionInstanceGroupManagers.patch@ method which the
+-- 'RegionInstanceGroupManagersPatch' request conforms to.
+type RegionInstanceGroupManagersPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceGroupManager :>
+                           Patch '[JSON] Operation
+
+-- | Updates a managed instance group using the information that you specify
+-- in the request. This operation is marked as DONE when the group is
+-- patched even if the instances in the group are still in the process of
+-- being patched. You must separately verify the status of the individual
+-- instances with the listmanagedinstances method. This method supports
+-- PATCH semantics and uses the JSON merge patch format and processing
+-- rules.
+--
+-- /See:/ 'regionInstanceGroupManagersPatch' smart constructor.
+data RegionInstanceGroupManagersPatch = RegionInstanceGroupManagersPatch'
+    { _rigmpRequestId            :: !(Maybe Text)
+    , _rigmpProject              :: !Text
+    , _rigmpInstanceGroupManager :: !Text
+    , _rigmpPayload              :: !InstanceGroupManager
+    , _rigmpRegion               :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionInstanceGroupManagersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rigmpRequestId'
+--
+-- * 'rigmpProject'
+--
+-- * 'rigmpInstanceGroupManager'
+--
+-- * 'rigmpPayload'
+--
+-- * 'rigmpRegion'
+regionInstanceGroupManagersPatch
+    :: Text -- ^ 'rigmpProject'
+    -> Text -- ^ 'rigmpInstanceGroupManager'
+    -> InstanceGroupManager -- ^ 'rigmpPayload'
+    -> Text -- ^ 'rigmpRegion'
+    -> RegionInstanceGroupManagersPatch
+regionInstanceGroupManagersPatch pRigmpProject_ pRigmpInstanceGroupManager_ pRigmpPayload_ pRigmpRegion_ =
+    RegionInstanceGroupManagersPatch'
+    { _rigmpRequestId = Nothing
+    , _rigmpProject = pRigmpProject_
+    , _rigmpInstanceGroupManager = pRigmpInstanceGroupManager_
+    , _rigmpPayload = pRigmpPayload_
+    , _rigmpRegion = pRigmpRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmpRequestId :: Lens' RegionInstanceGroupManagersPatch (Maybe Text)
+rigmpRequestId
+  = lens _rigmpRequestId
+      (\ s a -> s{_rigmpRequestId = a})
+
+-- | Project ID for this request.
+rigmpProject :: Lens' RegionInstanceGroupManagersPatch Text
+rigmpProject
+  = lens _rigmpProject (\ s a -> s{_rigmpProject = a})
+
+-- | The name of the instance group manager.
+rigmpInstanceGroupManager :: Lens' RegionInstanceGroupManagersPatch Text
+rigmpInstanceGroupManager
+  = lens _rigmpInstanceGroupManager
+      (\ s a -> s{_rigmpInstanceGroupManager = a})
+
+-- | Multipart request metadata.
+rigmpPayload :: Lens' RegionInstanceGroupManagersPatch InstanceGroupManager
+rigmpPayload
+  = lens _rigmpPayload (\ s a -> s{_rigmpPayload = a})
+
+-- | Name of the region scoping this request.
+rigmpRegion :: Lens' RegionInstanceGroupManagersPatch Text
+rigmpRegion
+  = lens _rigmpRegion (\ s a -> s{_rigmpRegion = a})
+
+instance GoogleRequest
+         RegionInstanceGroupManagersPatch where
+        type Rs RegionInstanceGroupManagersPatch = Operation
+        type Scopes RegionInstanceGroupManagersPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient RegionInstanceGroupManagersPatch'{..}
+          = go _rigmpProject _rigmpRegion
+              _rigmpInstanceGroupManager
+              _rigmpRequestId
+              (Just AltJSON)
+              _rigmpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy RegionInstanceGroupManagersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/RecreateInstances.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/RecreateInstances.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/RecreateInstances.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/RecreateInstances.hs
@@ -20,12 +20,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Schedules a group action to recreate the specified instances in the
--- managed instance group. The instances are deleted and recreated using
--- the current instance template for the managed instance group. This
--- operation is marked as DONE when the action is scheduled even if the
--- instances have not yet been recreated. You must separately verify the
--- status of the recreating action with the listmanagedinstances method.
+-- Flags the specified instances in the managed instance group to be
+-- immediately recreated. The instances are deleted and recreated using the
+-- current instance template for the managed instance group. This operation
+-- is marked as DONE when the flag is set even if the instances have not
+-- yet been recreated. You must separately verify the status of the
+-- recreating action with the listmanagedinstances method. If the group is
+-- part of a backend service that has enabled connection draining, it can
+-- take up to 60 seconds after the connection draining duration has elapsed
+-- before the VM instance is removed or deleted. You can specify a maximum
+-- of 1000 instances with this method per request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.recreateInstances@.
 module Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
@@ -38,6 +42,7 @@
     , RegionInstanceGroupManagersRecreateInstances
 
     -- * Request Lenses
+    , rigmriRequestId
     , rigmriProject
     , rigmriInstanceGroupManager
     , rigmriPayload
@@ -60,21 +65,27 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "recreateInstances" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupManagersRecreateRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupManagersRecreateRequest
+                             :> Post '[JSON] Operation
 
--- | Schedules a group action to recreate the specified instances in the
--- managed instance group. The instances are deleted and recreated using
--- the current instance template for the managed instance group. This
--- operation is marked as DONE when the action is scheduled even if the
--- instances have not yet been recreated. You must separately verify the
--- status of the recreating action with the listmanagedinstances method.
+-- | Flags the specified instances in the managed instance group to be
+-- immediately recreated. The instances are deleted and recreated using the
+-- current instance template for the managed instance group. This operation
+-- is marked as DONE when the flag is set even if the instances have not
+-- yet been recreated. You must separately verify the status of the
+-- recreating action with the listmanagedinstances method. If the group is
+-- part of a backend service that has enabled connection draining, it can
+-- take up to 60 seconds after the connection draining duration has elapsed
+-- before the VM instance is removed or deleted. You can specify a maximum
+-- of 1000 instances with this method per request.
 --
 -- /See:/ 'regionInstanceGroupManagersRecreateInstances' smart constructor.
 data RegionInstanceGroupManagersRecreateInstances = RegionInstanceGroupManagersRecreateInstances'
-    { _rigmriProject              :: !Text
+    { _rigmriRequestId            :: !(Maybe Text)
+    , _rigmriProject              :: !Text
     , _rigmriInstanceGroupManager :: !Text
     , _rigmriPayload              :: !RegionInstanceGroupManagersRecreateRequest
     , _rigmriRegion               :: !Text
@@ -84,6 +95,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmriRequestId'
+--
 -- * 'rigmriProject'
 --
 -- * 'rigmriInstanceGroupManager'
@@ -99,12 +112,28 @@
     -> RegionInstanceGroupManagersRecreateInstances
 regionInstanceGroupManagersRecreateInstances pRigmriProject_ pRigmriInstanceGroupManager_ pRigmriPayload_ pRigmriRegion_ =
     RegionInstanceGroupManagersRecreateInstances'
-    { _rigmriProject = pRigmriProject_
+    { _rigmriRequestId = Nothing
+    , _rigmriProject = pRigmriProject_
     , _rigmriInstanceGroupManager = pRigmriInstanceGroupManager_
     , _rigmriPayload = pRigmriPayload_
     , _rigmriRegion = pRigmriRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmriRequestId :: Lens' RegionInstanceGroupManagersRecreateInstances (Maybe Text)
+rigmriRequestId
+  = lens _rigmriRequestId
+      (\ s a -> s{_rigmriRequestId = a})
+
 -- | Project ID for this request.
 rigmriProject :: Lens' RegionInstanceGroupManagersRecreateInstances Text
 rigmriProject
@@ -141,6 +170,7 @@
           RegionInstanceGroupManagersRecreateInstances'{..}
           = go _rigmriProject _rigmriRegion
               _rigmriInstanceGroupManager
+              _rigmriRequestId
               (Just AltJSON)
               _rigmriPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Resize.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Resize.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Resize.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Resize.hs
@@ -20,14 +20,16 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Changes the intended size for the managed instance group. If you
--- increase the size, the group schedules actions to create new instances
--- using the current instance template. If you decrease the size, the group
--- schedules delete actions on one or more instances. The resize operation
--- is marked DONE when the resize actions are scheduled even if the group
--- has not yet added or deleted any instances. You must separately verify
--- the status of the creating or deleting actions with the
--- listmanagedinstances method.
+-- Changes the intended size of the managed instance group. If you increase
+-- the size, the group creates new instances using the current instance
+-- template. If you decrease the size, the group deletes one or more
+-- instances. The resize operation is marked DONE if the resize request is
+-- successful. The underlying actions take additional time. You must
+-- separately verify the status of the creating or deleting actions with
+-- the listmanagedinstances method. If the group is part of a backend
+-- service that has enabled connection draining, it can take up to 60
+-- seconds after the connection draining duration has elapsed before the VM
+-- instance is removed or deleted.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionInstanceGroupManagers.resize@.
 module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
@@ -40,6 +42,7 @@
     , RegionInstanceGroupManagersResize
 
     -- * Request Lenses
+    , rigmrRequestId
     , rigmrProject
     , rigmrSize
     , rigmrInstanceGroupManager
@@ -62,20 +65,24 @@
                    Capture "instanceGroupManager" Text :>
                      "resize" :>
                        QueryParam "size" (Textual Int32) :>
-                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+                         QueryParam "requestId" Text :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
--- | Changes the intended size for the managed instance group. If you
--- increase the size, the group schedules actions to create new instances
--- using the current instance template. If you decrease the size, the group
--- schedules delete actions on one or more instances. The resize operation
--- is marked DONE when the resize actions are scheduled even if the group
--- has not yet added or deleted any instances. You must separately verify
--- the status of the creating or deleting actions with the
--- listmanagedinstances method.
+-- | Changes the intended size of the managed instance group. If you increase
+-- the size, the group creates new instances using the current instance
+-- template. If you decrease the size, the group deletes one or more
+-- instances. The resize operation is marked DONE if the resize request is
+-- successful. The underlying actions take additional time. You must
+-- separately verify the status of the creating or deleting actions with
+-- the listmanagedinstances method. If the group is part of a backend
+-- service that has enabled connection draining, it can take up to 60
+-- seconds after the connection draining duration has elapsed before the VM
+-- instance is removed or deleted.
 --
 -- /See:/ 'regionInstanceGroupManagersResize' smart constructor.
 data RegionInstanceGroupManagersResize = RegionInstanceGroupManagersResize'
-    { _rigmrProject              :: !Text
+    { _rigmrRequestId            :: !(Maybe Text)
+    , _rigmrProject              :: !Text
     , _rigmrSize                 :: !(Textual Int32)
     , _rigmrInstanceGroupManager :: !Text
     , _rigmrRegion               :: !Text
@@ -85,6 +92,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmrRequestId'
+--
 -- * 'rigmrProject'
 --
 -- * 'rigmrSize'
@@ -100,12 +109,28 @@
     -> RegionInstanceGroupManagersResize
 regionInstanceGroupManagersResize pRigmrProject_ pRigmrSize_ pRigmrInstanceGroupManager_ pRigmrRegion_ =
     RegionInstanceGroupManagersResize'
-    { _rigmrProject = pRigmrProject_
+    { _rigmrRequestId = Nothing
+    , _rigmrProject = pRigmrProject_
     , _rigmrSize = _Coerce # pRigmrSize_
     , _rigmrInstanceGroupManager = pRigmrInstanceGroupManager_
     , _rigmrRegion = pRigmrRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmrRequestId :: Lens' RegionInstanceGroupManagersResize (Maybe Text)
+rigmrRequestId
+  = lens _rigmrRequestId
+      (\ s a -> s{_rigmrRequestId = a})
+
 -- | Project ID for this request.
 rigmrProject :: Lens' RegionInstanceGroupManagersResize Text
 rigmrProject
@@ -138,6 +163,7 @@
           = go _rigmrProject _rigmrRegion
               _rigmrInstanceGroupManager
               (Just _rigmrSize)
+              _rigmrRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetInstanceTemplate.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetInstanceTemplate.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetInstanceTemplate.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetInstanceTemplate.hs
@@ -34,6 +34,7 @@
     , RegionInstanceGroupManagersSetInstanceTemplate
 
     -- * Request Lenses
+    , rigmsitRequestId
     , rigmsitProject
     , rigmsitInstanceGroupManager
     , rigmsitPayload
@@ -56,17 +57,19 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "setInstanceTemplate" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupManagersSetTemplateRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupManagersSetTemplateRequest
+                             :> Post '[JSON] Operation
 
 -- | Sets the instance template to use when creating new instances or
 -- recreating instances in this group. Existing instances are not affected.
 --
 -- /See:/ 'regionInstanceGroupManagersSetInstanceTemplate' smart constructor.
 data RegionInstanceGroupManagersSetInstanceTemplate = RegionInstanceGroupManagersSetInstanceTemplate'
-    { _rigmsitProject              :: !Text
+    { _rigmsitRequestId            :: !(Maybe Text)
+    , _rigmsitProject              :: !Text
     , _rigmsitInstanceGroupManager :: !Text
     , _rigmsitPayload              :: !RegionInstanceGroupManagersSetTemplateRequest
     , _rigmsitRegion               :: !Text
@@ -76,6 +79,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmsitRequestId'
+--
 -- * 'rigmsitProject'
 --
 -- * 'rigmsitInstanceGroupManager'
@@ -91,12 +96,28 @@
     -> RegionInstanceGroupManagersSetInstanceTemplate
 regionInstanceGroupManagersSetInstanceTemplate pRigmsitProject_ pRigmsitInstanceGroupManager_ pRigmsitPayload_ pRigmsitRegion_ =
     RegionInstanceGroupManagersSetInstanceTemplate'
-    { _rigmsitProject = pRigmsitProject_
+    { _rigmsitRequestId = Nothing
+    , _rigmsitProject = pRigmsitProject_
     , _rigmsitInstanceGroupManager = pRigmsitInstanceGroupManager_
     , _rigmsitPayload = pRigmsitPayload_
     , _rigmsitRegion = pRigmsitRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmsitRequestId :: Lens' RegionInstanceGroupManagersSetInstanceTemplate (Maybe Text)
+rigmsitRequestId
+  = lens _rigmsitRequestId
+      (\ s a -> s{_rigmsitRequestId = a})
+
 -- | Project ID for this request.
 rigmsitProject :: Lens' RegionInstanceGroupManagersSetInstanceTemplate Text
 rigmsitProject
@@ -135,6 +156,7 @@
           RegionInstanceGroupManagersSetInstanceTemplate'{..}
           = go _rigmsitProject _rigmsitRegion
               _rigmsitInstanceGroupManager
+              _rigmsitRequestId
               (Just AltJSON)
               _rigmsitPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetTargetPools.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetTargetPools.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetTargetPools.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/SetTargetPools.hs
@@ -34,6 +34,7 @@
     , RegionInstanceGroupManagersSetTargetPools
 
     -- * Request Lenses
+    , rigmstpRequestId
     , rigmstpProject
     , rigmstpInstanceGroupManager
     , rigmstpPayload
@@ -56,17 +57,19 @@
                  "instanceGroupManagers" :>
                    Capture "instanceGroupManager" Text :>
                      "setTargetPools" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupManagersSetTargetPoolsRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupManagersSetTargetPoolsRequest
+                             :> Post '[JSON] Operation
 
 -- | Modifies the target pools to which all new instances in this group are
 -- assigned. Existing instances in the group are not affected.
 --
 -- /See:/ 'regionInstanceGroupManagersSetTargetPools' smart constructor.
 data RegionInstanceGroupManagersSetTargetPools = RegionInstanceGroupManagersSetTargetPools'
-    { _rigmstpProject              :: !Text
+    { _rigmstpRequestId            :: !(Maybe Text)
+    , _rigmstpProject              :: !Text
     , _rigmstpInstanceGroupManager :: !Text
     , _rigmstpPayload              :: !RegionInstanceGroupManagersSetTargetPoolsRequest
     , _rigmstpRegion               :: !Text
@@ -76,6 +79,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigmstpRequestId'
+--
 -- * 'rigmstpProject'
 --
 -- * 'rigmstpInstanceGroupManager'
@@ -91,12 +96,28 @@
     -> RegionInstanceGroupManagersSetTargetPools
 regionInstanceGroupManagersSetTargetPools pRigmstpProject_ pRigmstpInstanceGroupManager_ pRigmstpPayload_ pRigmstpRegion_ =
     RegionInstanceGroupManagersSetTargetPools'
-    { _rigmstpProject = pRigmstpProject_
+    { _rigmstpRequestId = Nothing
+    , _rigmstpProject = pRigmstpProject_
     , _rigmstpInstanceGroupManager = pRigmstpInstanceGroupManager_
     , _rigmstpPayload = pRigmstpPayload_
     , _rigmstpRegion = pRigmstpRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigmstpRequestId :: Lens' RegionInstanceGroupManagersSetTargetPools (Maybe Text)
+rigmstpRequestId
+  = lens _rigmstpRequestId
+      (\ s a -> s{_rigmstpRequestId = a})
+
 -- | Project ID for this request.
 rigmstpProject :: Lens' RegionInstanceGroupManagersSetTargetPools Text
 rigmstpProject
@@ -133,6 +154,7 @@
           RegionInstanceGroupManagersSetTargetPools'{..}
           = go _rigmstpProject _rigmstpRegion
               _rigmstpInstanceGroupManager
+              _rigmstpRequestId
               (Just AltJSON)
               _rigmstpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/List.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/List.hs
@@ -121,26 +121,22 @@
 riglProject
   = lens _riglProject (\ s a -> s{_riglProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 riglFilter :: Lens' RegionInstanceGroupsList (Maybe Text)
 riglFilter
   = lens _riglFilter (\ s a -> s{_riglFilter = a})
@@ -160,7 +156,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 riglMaxResults :: Lens' RegionInstanceGroupsList Word32
 riglMaxResults
   = lens _riglMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/ListInstances.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/ListInstances.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/ListInstances.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/ListInstances.hs
@@ -148,26 +148,22 @@
 rigliPayload
   = lens _rigliPayload (\ s a -> s{_rigliPayload = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rigliFilter :: Lens' RegionInstanceGroupsListInstances' (Maybe Text)
 rigliFilter
   = lens _rigliFilter (\ s a -> s{_rigliFilter = a})
@@ -194,7 +190,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rigliMaxResults :: Lens' RegionInstanceGroupsListInstances' Word32
 rigliMaxResults
   = lens _rigliMaxResults
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/SetNamedPorts.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/SetNamedPorts.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/SetNamedPorts.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/SetNamedPorts.hs
@@ -33,6 +33,7 @@
     , RegionInstanceGroupsSetNamedPorts
 
     -- * Request Lenses
+    , rigsnpRequestId
     , rigsnpProject
     , rigsnpPayload
     , rigsnpRegion
@@ -54,16 +55,18 @@
                  "instanceGroups" :>
                    Capture "instanceGroup" Text :>
                      "setNamedPorts" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON]
-                           RegionInstanceGroupsSetNamedPortsRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             RegionInstanceGroupsSetNamedPortsRequest
+                             :> Post '[JSON] Operation
 
 -- | Sets the named ports for the specified regional instance group.
 --
 -- /See:/ 'regionInstanceGroupsSetNamedPorts' smart constructor.
 data RegionInstanceGroupsSetNamedPorts = RegionInstanceGroupsSetNamedPorts'
-    { _rigsnpProject       :: !Text
+    { _rigsnpRequestId     :: !(Maybe Text)
+    , _rigsnpProject       :: !Text
     , _rigsnpPayload       :: !RegionInstanceGroupsSetNamedPortsRequest
     , _rigsnpRegion        :: !Text
     , _rigsnpInstanceGroup :: !Text
@@ -73,6 +76,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rigsnpRequestId'
+--
 -- * 'rigsnpProject'
 --
 -- * 'rigsnpPayload'
@@ -88,12 +93,28 @@
     -> RegionInstanceGroupsSetNamedPorts
 regionInstanceGroupsSetNamedPorts pRigsnpProject_ pRigsnpPayload_ pRigsnpRegion_ pRigsnpInstanceGroup_ =
     RegionInstanceGroupsSetNamedPorts'
-    { _rigsnpProject = pRigsnpProject_
+    { _rigsnpRequestId = Nothing
+    , _rigsnpProject = pRigsnpProject_
     , _rigsnpPayload = pRigsnpPayload_
     , _rigsnpRegion = pRigsnpRegion_
     , _rigsnpInstanceGroup = pRigsnpInstanceGroup_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rigsnpRequestId :: Lens' RegionInstanceGroupsSetNamedPorts (Maybe Text)
+rigsnpRequestId
+  = lens _rigsnpRequestId
+      (\ s a -> s{_rigsnpRequestId = a})
+
 -- | Project ID for this request.
 rigsnpProject :: Lens' RegionInstanceGroupsSetNamedPorts Text
 rigsnpProject
@@ -127,6 +148,7 @@
         requestClient RegionInstanceGroupsSetNamedPorts'{..}
           = go _rigsnpProject _rigsnpRegion
               _rigsnpInstanceGroup
+              _rigsnpRequestId
               (Just AltJSON)
               _rigsnpPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/List.hs b/gen/Network/Google/Resource/Compute/RegionOperations/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionOperations/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/List.hs
@@ -120,26 +120,22 @@
 rolProject
   = lens _rolProject (\ s a -> s{_rolProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rolFilter :: Lens' RegionOperationsList (Maybe Text)
 rolFilter
   = lens _rolFilter (\ s a -> s{_rolFilter = a})
@@ -158,7 +154,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rolMaxResults :: Lens' RegionOperationsList Word32
 rolMaxResults
   = lens _rolMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Regions/Get.hs b/gen/Network/Google/Resource/Compute/Regions/Get.hs
--- a/gen/Network/Google/Resource/Compute/Regions/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Regions/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Region resource. Get a list of available regions
+-- Returns the specified Region resource. Gets a list of available regions
 -- by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regions.get@.
@@ -52,7 +52,7 @@
                Capture "region" Text :>
                  QueryParam "alt" AltJSON :> Get '[JSON] Region
 
--- | Returns the specified Region resource. Get a list of available regions
+-- | Returns the specified Region resource. Gets a list of available regions
 -- by making a list() request.
 --
 -- /See:/ 'regionsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Regions/List.hs b/gen/Network/Google/Resource/Compute/Regions/List.hs
--- a/gen/Network/Google/Resource/Compute/Regions/List.hs
+++ b/gen/Network/Google/Resource/Compute/Regions/List.hs
@@ -112,26 +112,22 @@
 regProject
   = lens _regProject (\ s a -> s{_regProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 regFilter :: Lens' RegionsList (Maybe Text)
 regFilter
   = lens _regFilter (\ s a -> s{_regFilter = a})
@@ -145,7 +141,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 regMaxResults :: Lens' RegionsList Word32
 regMaxResults
   = lens _regMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Routers/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Routers/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Routers/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/AggregatedList.hs
@@ -110,26 +110,22 @@
 rProject :: Lens' RoutersAggregatedList Text
 rProject = lens _rProject (\ s a -> s{_rProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rFilter :: Lens' RoutersAggregatedList (Maybe Text)
 rFilter = lens _rFilter (\ s a -> s{_rFilter = a})
 
@@ -142,7 +138,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rMaxResults :: Lens' RoutersAggregatedList Word32
 rMaxResults
   = lens _rMaxResults (\ s a -> s{_rMaxResults = a}) .
diff --git a/gen/Network/Google/Resource/Compute/Routers/Delete.hs b/gen/Network/Google/Resource/Compute/Routers/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Delete.hs
@@ -33,9 +33,10 @@
     , RoutersDelete
 
     -- * Request Lenses
-    , rddProject
-    , rddRouter
-    , rddRegion
+    , rouoRequestId
+    , rouoProject
+    , rouoRouter
+    , rouoRegion
     ) where
 
 import           Network.Google.Compute.Types
@@ -52,52 +53,72 @@
                Capture "region" Text :>
                  "routers" :>
                    Capture "router" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified Router resource.
 --
 -- /See:/ 'routersDelete' smart constructor.
 data RoutersDelete = RoutersDelete'
-    { _rddProject :: !Text
-    , _rddRouter  :: !Text
-    , _rddRegion  :: !Text
+    { _rouoRequestId :: !(Maybe Text)
+    , _rouoProject   :: !Text
+    , _rouoRouter    :: !Text
+    , _rouoRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rddProject'
+-- * 'rouoRequestId'
 --
--- * 'rddRouter'
+-- * 'rouoProject'
 --
--- * 'rddRegion'
+-- * 'rouoRouter'
+--
+-- * 'rouoRegion'
 routersDelete
-    :: Text -- ^ 'rddProject'
-    -> Text -- ^ 'rddRouter'
-    -> Text -- ^ 'rddRegion'
+    :: Text -- ^ 'rouoProject'
+    -> Text -- ^ 'rouoRouter'
+    -> Text -- ^ 'rouoRegion'
     -> RoutersDelete
-routersDelete pRddProject_ pRddRouter_ pRddRegion_ =
+routersDelete pRouoProject_ pRouoRouter_ pRouoRegion_ =
     RoutersDelete'
-    { _rddProject = pRddProject_
-    , _rddRouter = pRddRouter_
-    , _rddRegion = pRddRegion_
+    { _rouoRequestId = Nothing
+    , _rouoProject = pRouoProject_
+    , _rouoRouter = pRouoRouter_
+    , _rouoRegion = pRouoRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rouoRequestId :: Lens' RoutersDelete (Maybe Text)
+rouoRequestId
+  = lens _rouoRequestId
+      (\ s a -> s{_rouoRequestId = a})
+
 -- | Project ID for this request.
-rddProject :: Lens' RoutersDelete Text
-rddProject
-  = lens _rddProject (\ s a -> s{_rddProject = a})
+rouoProject :: Lens' RoutersDelete Text
+rouoProject
+  = lens _rouoProject (\ s a -> s{_rouoProject = a})
 
 -- | Name of the Router resource to delete.
-rddRouter :: Lens' RoutersDelete Text
-rddRouter
-  = lens _rddRouter (\ s a -> s{_rddRouter = a})
+rouoRouter :: Lens' RoutersDelete Text
+rouoRouter
+  = lens _rouoRouter (\ s a -> s{_rouoRouter = a})
 
 -- | Name of the region for this request.
-rddRegion :: Lens' RoutersDelete Text
-rddRegion
-  = lens _rddRegion (\ s a -> s{_rddRegion = a})
+rouoRegion :: Lens' RoutersDelete Text
+rouoRegion
+  = lens _rouoRegion (\ s a -> s{_rouoRegion = a})
 
 instance GoogleRequest RoutersDelete where
         type Rs RoutersDelete = Operation
@@ -105,7 +126,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutersDelete'{..}
-          = go _rddProject _rddRegion _rddRouter (Just AltJSON)
+          = go _rouoProject _rouoRegion _rouoRouter
+              _rouoRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy RoutersDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/Routers/Get.hs b/gen/Network/Google/Resource/Compute/Routers/Get.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Router resource. Get a list of available routers
+-- Returns the specified Router resource. Gets a list of available routers
 -- by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.get@.
@@ -55,7 +55,7 @@
                    Capture "router" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Router
 
--- | Returns the specified Router resource. Get a list of available routers
+-- | Returns the specified Router resource. Gets a list of available routers
 -- by making a list() request.
 --
 -- /See:/ 'routersGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs b/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.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.Compute.Routers.GetNATMAppingInfo
+-- 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 runtime Nat mapping information of VM endpoints.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.getNatMappingInfo@.
+module Network.Google.Resource.Compute.Routers.GetNATMAppingInfo
+    (
+    -- * REST Resource
+      RoutersGetNATMAppingInfoResource
+
+    -- * Creating a Request
+    , routersGetNATMAppingInfo
+    , RoutersGetNATMAppingInfo
+
+    -- * Request Lenses
+    , rgnatmaiOrderBy
+    , rgnatmaiProject
+    , rgnatmaiRouter
+    , rgnatmaiFilter
+    , rgnatmaiRegion
+    , rgnatmaiPageToken
+    , rgnatmaiMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.routers.getNatMappingInfo@ method which the
+-- 'RoutersGetNATMAppingInfo' request conforms to.
+type RoutersGetNATMAppingInfoResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "routers" :>
+                   Capture "router" Text :>
+                     "getNatMappingInfo" :>
+                       QueryParam "orderBy" Text :>
+                         QueryParam "filter" Text :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "maxResults" (Textual Word32) :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] VMEndpointNATMAppingsList
+
+-- | Retrieves runtime Nat mapping information of VM endpoints.
+--
+-- /See:/ 'routersGetNATMAppingInfo' smart constructor.
+data RoutersGetNATMAppingInfo = RoutersGetNATMAppingInfo'
+    { _rgnatmaiOrderBy    :: !(Maybe Text)
+    , _rgnatmaiProject    :: !Text
+    , _rgnatmaiRouter     :: !Text
+    , _rgnatmaiFilter     :: !(Maybe Text)
+    , _rgnatmaiRegion     :: !Text
+    , _rgnatmaiPageToken  :: !(Maybe Text)
+    , _rgnatmaiMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutersGetNATMAppingInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgnatmaiOrderBy'
+--
+-- * 'rgnatmaiProject'
+--
+-- * 'rgnatmaiRouter'
+--
+-- * 'rgnatmaiFilter'
+--
+-- * 'rgnatmaiRegion'
+--
+-- * 'rgnatmaiPageToken'
+--
+-- * 'rgnatmaiMaxResults'
+routersGetNATMAppingInfo
+    :: Text -- ^ 'rgnatmaiProject'
+    -> Text -- ^ 'rgnatmaiRouter'
+    -> Text -- ^ 'rgnatmaiRegion'
+    -> RoutersGetNATMAppingInfo
+routersGetNATMAppingInfo pRgnatmaiProject_ pRgnatmaiRouter_ pRgnatmaiRegion_ =
+    RoutersGetNATMAppingInfo'
+    { _rgnatmaiOrderBy = Nothing
+    , _rgnatmaiProject = pRgnatmaiProject_
+    , _rgnatmaiRouter = pRgnatmaiRouter_
+    , _rgnatmaiFilter = Nothing
+    , _rgnatmaiRegion = pRgnatmaiRegion_
+    , _rgnatmaiPageToken = Nothing
+    , _rgnatmaiMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+rgnatmaiOrderBy :: Lens' RoutersGetNATMAppingInfo (Maybe Text)
+rgnatmaiOrderBy
+  = lens _rgnatmaiOrderBy
+      (\ s a -> s{_rgnatmaiOrderBy = a})
+
+-- | Project ID for this request.
+rgnatmaiProject :: Lens' RoutersGetNATMAppingInfo Text
+rgnatmaiProject
+  = lens _rgnatmaiProject
+      (\ s a -> s{_rgnatmaiProject = a})
+
+-- | Name of the Router resource to query for Nat Mapping information of VM
+-- endpoints.
+rgnatmaiRouter :: Lens' RoutersGetNATMAppingInfo Text
+rgnatmaiRouter
+  = lens _rgnatmaiRouter
+      (\ s a -> s{_rgnatmaiRouter = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+rgnatmaiFilter :: Lens' RoutersGetNATMAppingInfo (Maybe Text)
+rgnatmaiFilter
+  = lens _rgnatmaiFilter
+      (\ s a -> s{_rgnatmaiFilter = a})
+
+-- | Name of the region for this request.
+rgnatmaiRegion :: Lens' RoutersGetNATMAppingInfo Text
+rgnatmaiRegion
+  = lens _rgnatmaiRegion
+      (\ s a -> s{_rgnatmaiRegion = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+rgnatmaiPageToken :: Lens' RoutersGetNATMAppingInfo (Maybe Text)
+rgnatmaiPageToken
+  = lens _rgnatmaiPageToken
+      (\ s a -> s{_rgnatmaiPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+rgnatmaiMaxResults :: Lens' RoutersGetNATMAppingInfo Word32
+rgnatmaiMaxResults
+  = lens _rgnatmaiMaxResults
+      (\ s a -> s{_rgnatmaiMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RoutersGetNATMAppingInfo where
+        type Rs RoutersGetNATMAppingInfo =
+             VMEndpointNATMAppingsList
+        type Scopes RoutersGetNATMAppingInfo =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient RoutersGetNATMAppingInfo'{..}
+          = go _rgnatmaiProject _rgnatmaiRegion _rgnatmaiRouter
+              _rgnatmaiOrderBy
+              _rgnatmaiFilter
+              _rgnatmaiPageToken
+              (Just _rgnatmaiMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RoutersGetNATMAppingInfoResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Routers/Insert.hs b/gen/Network/Google/Resource/Compute/Routers/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Insert.hs
@@ -34,6 +34,7 @@
     , RoutersInsert
 
     -- * Request Lenses
+    , riRequestId
     , riProject
     , riPayload
     , riRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "routers" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Router :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Router :> Post '[JSON] Operation
 
 -- | Creates a Router resource in the specified project and region using the
 -- data included in the request.
 --
 -- /See:/ 'routersInsert' smart constructor.
 data RoutersInsert = RoutersInsert'
-    { _riProject :: !Text
-    , _riPayload :: !Router
-    , _riRegion  :: !Text
+    { _riRequestId :: !(Maybe Text)
+    , _riProject   :: !Text
+    , _riPayload   :: !Router
+    , _riRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'riRequestId'
+--
 -- * 'riProject'
 --
 -- * 'riPayload'
@@ -81,11 +86,26 @@
     -> RoutersInsert
 routersInsert pRiProject_ pRiPayload_ pRiRegion_ =
     RoutersInsert'
-    { _riProject = pRiProject_
+    { _riRequestId = Nothing
+    , _riProject = pRiProject_
     , _riPayload = pRiPayload_
     , _riRegion = pRiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+riRequestId :: Lens' RoutersInsert (Maybe Text)
+riRequestId
+  = lens _riRequestId (\ s a -> s{_riRequestId = a})
+
 -- | Project ID for this request.
 riProject :: Lens' RoutersInsert Text
 riProject
@@ -106,7 +126,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutersInsert'{..}
-          = go _riProject _riRegion (Just AltJSON) _riPayload
+          = go _riProject _riRegion _riRequestId (Just AltJSON)
+              _riPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy RoutersInsertResource)
diff --git a/gen/Network/Google/Resource/Compute/Routers/List.hs b/gen/Network/Google/Resource/Compute/Routers/List.hs
--- a/gen/Network/Google/Resource/Compute/Routers/List.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/List.hs
@@ -118,26 +118,22 @@
 rlProject
   = lens _rlProject (\ s a -> s{_rlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rlFilter :: Lens' RoutersList (Maybe Text)
 rlFilter = lens _rlFilter (\ s a -> s{_rlFilter = a})
 
@@ -154,7 +150,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rlMaxResults :: Lens' RoutersList Word32
 rlMaxResults
   = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Routers/Patch.hs b/gen/Network/Google/Resource/Compute/Routers/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Patch.hs
@@ -20,8 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the specified Router resource with the data included in the
--- request. This method supports patch semantics.
+-- Patches the specified Router resource with the data included in the
+-- request. This method supports PATCH semantics and uses JSON merge patch
+-- format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.patch@.
 module Network.Google.Resource.Compute.Routers.Patch
@@ -34,6 +35,7 @@
     , RoutersPatch
 
     -- * Request Lenses
+    , rpRequestId
     , rpProject
     , rpRouter
     , rpPayload
@@ -54,24 +56,29 @@
                Capture "region" Text :>
                  "routers" :>
                    Capture "router" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Router :> Patch '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Router :> Patch '[JSON] Operation
 
--- | Updates the specified Router resource with the data included in the
--- request. This method supports patch semantics.
+-- | Patches the specified Router resource with the data included in the
+-- request. This method supports PATCH semantics and uses JSON merge patch
+-- format and processing rules.
 --
 -- /See:/ 'routersPatch' smart constructor.
 data RoutersPatch = RoutersPatch'
-    { _rpProject :: !Text
-    , _rpRouter  :: !Text
-    , _rpPayload :: !Router
-    , _rpRegion  :: !Text
+    { _rpRequestId :: !(Maybe Text)
+    , _rpProject   :: !Text
+    , _rpRouter    :: !Text
+    , _rpPayload   :: !Router
+    , _rpRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rpRequestId'
+--
 -- * 'rpProject'
 --
 -- * 'rpRouter'
@@ -87,18 +94,33 @@
     -> RoutersPatch
 routersPatch pRpProject_ pRpRouter_ pRpPayload_ pRpRegion_ =
     RoutersPatch'
-    { _rpProject = pRpProject_
+    { _rpRequestId = Nothing
+    , _rpProject = pRpProject_
     , _rpRouter = pRpRouter_
     , _rpPayload = pRpPayload_
     , _rpRegion = pRpRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rpRequestId :: Lens' RoutersPatch (Maybe Text)
+rpRequestId
+  = lens _rpRequestId (\ s a -> s{_rpRequestId = a})
+
 -- | Project ID for this request.
 rpProject :: Lens' RoutersPatch Text
 rpProject
   = lens _rpProject (\ s a -> s{_rpProject = a})
 
--- | Name of the Router resource to update.
+-- | Name of the Router resource to patch.
 rpRouter :: Lens' RoutersPatch Text
 rpRouter = lens _rpRouter (\ s a -> s{_rpRouter = a})
 
@@ -117,7 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutersPatch'{..}
-          = go _rpProject _rpRegion _rpRouter (Just AltJSON)
+          = go _rpProject _rpRegion _rpRouter _rpRequestId
+              (Just AltJSON)
               _rpPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Routers/Update.hs b/gen/Network/Google/Resource/Compute/Routers/Update.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Update.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Update.hs
@@ -34,6 +34,7 @@
     , RoutersUpdate
 
     -- * Request Lenses
+    , ruRequestId
     , ruProject
     , ruRouter
     , ruPayload
@@ -54,24 +55,28 @@
                Capture "region" Text :>
                  "routers" :>
                    Capture "router" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Router :> Put '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Router :> Put '[JSON] Operation
 
 -- | Updates the specified Router resource with the data included in the
 -- request.
 --
 -- /See:/ 'routersUpdate' smart constructor.
 data RoutersUpdate = RoutersUpdate'
-    { _ruProject :: !Text
-    , _ruRouter  :: !Text
-    , _ruPayload :: !Router
-    , _ruRegion  :: !Text
+    { _ruRequestId :: !(Maybe Text)
+    , _ruProject   :: !Text
+    , _ruRouter    :: !Text
+    , _ruPayload   :: !Router
+    , _ruRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'ruRequestId'
+--
 -- * 'ruProject'
 --
 -- * 'ruRouter'
@@ -87,12 +92,27 @@
     -> RoutersUpdate
 routersUpdate pRuProject_ pRuRouter_ pRuPayload_ pRuRegion_ =
     RoutersUpdate'
-    { _ruProject = pRuProject_
+    { _ruRequestId = Nothing
+    , _ruProject = pRuProject_
     , _ruRouter = pRuRouter_
     , _ruPayload = pRuPayload_
     , _ruRegion = pRuRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ruRequestId :: Lens' RoutersUpdate (Maybe Text)
+ruRequestId
+  = lens _ruRequestId (\ s a -> s{_ruRequestId = a})
+
 -- | Project ID for this request.
 ruProject :: Lens' RoutersUpdate Text
 ruProject
@@ -117,7 +137,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutersUpdate'{..}
-          = go _ruProject _ruRegion _ruRouter (Just AltJSON)
+          = go _ruProject _ruRegion _ruRouter _ruRequestId
+              (Just AltJSON)
               _ruPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Routes/Delete.hs b/gen/Network/Google/Resource/Compute/Routes/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Routes/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Routes/Delete.hs
@@ -33,6 +33,7 @@
     , RoutesDelete
 
     -- * Request Lenses
+    , rdRequestId
     , rdProject
     , rdRoute
     ) where
@@ -50,20 +51,24 @@
              "global" :>
                "routes" :>
                  Capture "route" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified Route resource.
 --
 -- /See:/ 'routesDelete' smart constructor.
 data RoutesDelete = RoutesDelete'
-    { _rdProject :: !Text
-    , _rdRoute   :: !Text
+    { _rdRequestId :: !(Maybe Text)
+    , _rdProject   :: !Text
+    , _rdRoute     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rdRequestId'
+--
 -- * 'rdProject'
 --
 -- * 'rdRoute'
@@ -73,10 +78,25 @@
     -> RoutesDelete
 routesDelete pRdProject_ pRdRoute_ =
     RoutesDelete'
-    { _rdProject = pRdProject_
+    { _rdRequestId = Nothing
+    , _rdProject = pRdProject_
     , _rdRoute = pRdRoute_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rdRequestId :: Lens' RoutesDelete (Maybe Text)
+rdRequestId
+  = lens _rdRequestId (\ s a -> s{_rdRequestId = a})
+
 -- | Project ID for this request.
 rdProject :: Lens' RoutesDelete Text
 rdProject
@@ -92,7 +112,7 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutesDelete'{..}
-          = go _rdProject _rdRoute (Just AltJSON)
+          = go _rdProject _rdRoute _rdRequestId (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy RoutesDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/Routes/Get.hs b/gen/Network/Google/Resource/Compute/Routes/Get.hs
--- a/gen/Network/Google/Resource/Compute/Routes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Routes/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Route resource. Get a list of available routes by
+-- Returns the specified Route resource. Gets a list of available routes by
 -- making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routes.get@.
@@ -53,7 +53,7 @@
                  Capture "route" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Route
 
--- | Returns the specified Route resource. Get a list of available routes by
+-- | Returns the specified Route resource. Gets a list of available routes by
 -- making a list() request.
 --
 -- /See:/ 'routesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Routes/Insert.hs b/gen/Network/Google/Resource/Compute/Routes/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Routes/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Routes/Insert.hs
@@ -34,6 +34,7 @@
     , RoutesInsert
 
     -- * Request Lenses
+    , rouRequestId
     , rouProject
     , rouPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "routes" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Route :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Route :> Post '[JSON] Operation
 
 -- | Creates a Route resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'routesInsert' smart constructor.
 data RoutesInsert = RoutesInsert'
-    { _rouProject :: !Text
-    , _rouPayload :: !Route
+    { _rouRequestId :: !(Maybe Text)
+    , _rouProject   :: !Text
+    , _rouPayload   :: !Route
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'RoutesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rouRequestId'
+--
 -- * 'rouProject'
 --
 -- * 'rouPayload'
@@ -75,10 +80,25 @@
     -> RoutesInsert
 routesInsert pRouProject_ pRouPayload_ =
     RoutesInsert'
-    { _rouProject = pRouProject_
+    { _rouRequestId = Nothing
+    , _rouProject = pRouProject_
     , _rouPayload = pRouPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+rouRequestId :: Lens' RoutesInsert (Maybe Text)
+rouRequestId
+  = lens _rouRequestId (\ s a -> s{_rouRequestId = a})
+
 -- | Project ID for this request.
 rouProject :: Lens' RoutesInsert Text
 rouProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient RoutesInsert'{..}
-          = go _rouProject (Just AltJSON) _rouPayload
+          = go _rouProject _rouRequestId (Just AltJSON)
+              _rouPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy RoutesInsertResource)
diff --git a/gen/Network/Google/Resource/Compute/Routes/List.hs b/gen/Network/Google/Resource/Compute/Routes/List.hs
--- a/gen/Network/Google/Resource/Compute/Routes/List.hs
+++ b/gen/Network/Google/Resource/Compute/Routes/List.hs
@@ -113,26 +113,22 @@
 rllProject
   = lens _rllProject (\ s a -> s{_rllProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 rllFilter :: Lens' RoutesList (Maybe Text)
 rllFilter
   = lens _rllFilter (\ s a -> s{_rllFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 rllMaxResults :: Lens' RoutesList Word32
 rllMaxResults
   = lens _rllMaxResults
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs
--- a/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs
@@ -33,6 +33,7 @@
     , SSLCertificatesDelete
 
     -- * Request Lenses
+    , scdRequestId
     , scdProject
     , scdSSLCertificate
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "sslCertificates" :>
                  Capture "sslCertificate" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified SslCertificate resource.
 --
 -- /See:/ 'sslCertificatesDelete' smart constructor.
 data SSLCertificatesDelete = SSLCertificatesDelete'
-    { _scdProject        :: !Text
+    { _scdRequestId      :: !(Maybe Text)
+    , _scdProject        :: !Text
     , _scdSSLCertificate :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'scdRequestId'
+--
 -- * 'scdProject'
 --
 -- * 'scdSSLCertificate'
@@ -73,10 +78,25 @@
     -> SSLCertificatesDelete
 sslCertificatesDelete pScdProject_ pScdSSLCertificate_ =
     SSLCertificatesDelete'
-    { _scdProject = pScdProject_
+    { _scdRequestId = Nothing
+    , _scdProject = pScdProject_
     , _scdSSLCertificate = pScdSSLCertificate_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+scdRequestId :: Lens' SSLCertificatesDelete (Maybe Text)
+scdRequestId
+  = lens _scdRequestId (\ s a -> s{_scdRequestId = a})
+
 -- | Project ID for this request.
 scdProject :: Lens' SSLCertificatesDelete Text
 scdProject
@@ -94,7 +114,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient SSLCertificatesDelete'{..}
-          = go _scdProject _scdSSLCertificate (Just AltJSON)
+          = go _scdProject _scdSSLCertificate _scdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs
--- a/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified SslCertificate resource. Get a list of available
+-- Returns the specified SslCertificate resource. Gets a list of available
 -- SSL certificates by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslCertificates.get@.
@@ -54,7 +54,7 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] SSLCertificate
 
--- | Returns the specified SslCertificate resource. Get a list of available
+-- | Returns the specified SslCertificate resource. Gets a list of available
 -- SSL certificates by making a list() request.
 --
 -- /See:/ 'sslCertificatesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs
--- a/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs
@@ -34,6 +34,7 @@
     , SSLCertificatesInsert
 
     -- * Request Lenses
+    , sciRequestId
     , sciProject
     , sciPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "sslCertificates" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] SSLCertificate :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SSLCertificate :>
+                       Post '[JSON] Operation
 
 -- | Creates a SslCertificate resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'sslCertificatesInsert' smart constructor.
 data SSLCertificatesInsert = SSLCertificatesInsert'
-    { _sciProject :: !Text
-    , _sciPayload :: !SSLCertificate
+    { _sciRequestId :: !(Maybe Text)
+    , _sciProject   :: !Text
+    , _sciPayload   :: !SSLCertificate
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'SSLCertificatesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'sciRequestId'
+--
 -- * 'sciProject'
 --
 -- * 'sciPayload'
@@ -76,10 +81,25 @@
     -> SSLCertificatesInsert
 sslCertificatesInsert pSciProject_ pSciPayload_ =
     SSLCertificatesInsert'
-    { _sciProject = pSciProject_
+    { _sciRequestId = Nothing
+    , _sciProject = pSciProject_
     , _sciPayload = pSciPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sciRequestId :: Lens' SSLCertificatesInsert (Maybe Text)
+sciRequestId
+  = lens _sciRequestId (\ s a -> s{_sciRequestId = a})
+
 -- | Project ID for this request.
 sciProject :: Lens' SSLCertificatesInsert Text
 sciProject
@@ -96,7 +116,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient SSLCertificatesInsert'{..}
-          = go _sciProject (Just AltJSON) _sciPayload
+          = go _sciProject _sciRequestId (Just AltJSON)
+              _sciPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs
--- a/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs
@@ -114,26 +114,22 @@
 sclProject
   = lens _sclProject (\ s a -> s{_sclProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 sclFilter :: Lens' SSLCertificatesList (Maybe Text)
 sclFilter
   = lens _sclFilter (\ s a -> s{_sclFilter = a})
@@ -147,7 +143,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 sclMaxResults :: Lens' SSLCertificatesList Word32
 sclMaxResults
   = lens _sclMaxResults
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SSLPolicies.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 specified SSL policy. The SSL policy resource can be deleted
+-- only if it is not in use by any TargetHttpsProxy or TargetSslProxy
+-- resources.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.delete@.
+module Network.Google.Resource.Compute.SSLPolicies.Delete
+    (
+    -- * REST Resource
+      SSLPoliciesDeleteResource
+
+    -- * Creating a Request
+    , sslPoliciesDelete
+    , SSLPoliciesDelete
+
+    -- * Request Lenses
+    , spdSSLPolicy
+    , spdRequestId
+    , spdProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.delete@ method which the
+-- 'SSLPoliciesDelete' request conforms to.
+type SSLPoliciesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 Capture "sslPolicy" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified SSL policy. The SSL policy resource can be deleted
+-- only if it is not in use by any TargetHttpsProxy or TargetSslProxy
+-- resources.
+--
+-- /See:/ 'sslPoliciesDelete' smart constructor.
+data SSLPoliciesDelete = SSLPoliciesDelete'
+    { _spdSSLPolicy :: !Text
+    , _spdRequestId :: !(Maybe Text)
+    , _spdProject   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdSSLPolicy'
+--
+-- * 'spdRequestId'
+--
+-- * 'spdProject'
+sslPoliciesDelete
+    :: Text -- ^ 'spdSSLPolicy'
+    -> Text -- ^ 'spdProject'
+    -> SSLPoliciesDelete
+sslPoliciesDelete pSpdSSLPolicy_ pSpdProject_ =
+    SSLPoliciesDelete'
+    { _spdSSLPolicy = pSpdSSLPolicy_
+    , _spdRequestId = Nothing
+    , _spdProject = pSpdProject_
+    }
+
+-- | Name of the SSL policy to delete. The name must be 1-63 characters long,
+-- and comply with RFC1035.
+spdSSLPolicy :: Lens' SSLPoliciesDelete Text
+spdSSLPolicy
+  = lens _spdSSLPolicy (\ s a -> s{_spdSSLPolicy = a})
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+spdRequestId :: Lens' SSLPoliciesDelete (Maybe Text)
+spdRequestId
+  = lens _spdRequestId (\ s a -> s{_spdRequestId = a})
+
+-- | Project ID for this request.
+spdProject :: Lens' SSLPoliciesDelete Text
+spdProject
+  = lens _spdProject (\ s a -> s{_spdProject = a})
+
+instance GoogleRequest SSLPoliciesDelete where
+        type Rs SSLPoliciesDelete = Operation
+        type Scopes SSLPoliciesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SSLPoliciesDelete'{..}
+          = go _spdProject _spdSSLPolicy _spdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLPoliciesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SSLPolicies.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)
+--
+-- Lists all of the ordered rules present in a single specified policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.get@.
+module Network.Google.Resource.Compute.SSLPolicies.Get
+    (
+    -- * REST Resource
+      SSLPoliciesGetResource
+
+    -- * Creating a Request
+    , sslPoliciesGet
+    , SSLPoliciesGet
+
+    -- * Request Lenses
+    , spgSSLPolicy
+    , spgProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.get@ method which the
+-- 'SSLPoliciesGet' request conforms to.
+type SSLPoliciesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 Capture "sslPolicy" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] SSLPolicy
+
+-- | Lists all of the ordered rules present in a single specified policy.
+--
+-- /See:/ 'sslPoliciesGet' smart constructor.
+data SSLPoliciesGet = SSLPoliciesGet'
+    { _spgSSLPolicy :: !Text
+    , _spgProject   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spgSSLPolicy'
+--
+-- * 'spgProject'
+sslPoliciesGet
+    :: Text -- ^ 'spgSSLPolicy'
+    -> Text -- ^ 'spgProject'
+    -> SSLPoliciesGet
+sslPoliciesGet pSpgSSLPolicy_ pSpgProject_ =
+    SSLPoliciesGet'
+    { _spgSSLPolicy = pSpgSSLPolicy_
+    , _spgProject = pSpgProject_
+    }
+
+-- | Name of the SSL policy to update. The name must be 1-63 characters long,
+-- and comply with RFC1035.
+spgSSLPolicy :: Lens' SSLPoliciesGet Text
+spgSSLPolicy
+  = lens _spgSSLPolicy (\ s a -> s{_spgSSLPolicy = a})
+
+-- | Project ID for this request.
+spgProject :: Lens' SSLPoliciesGet Text
+spgProject
+  = lens _spgProject (\ s a -> s{_spgProject = a})
+
+instance GoogleRequest SSLPoliciesGet where
+        type Rs SSLPoliciesGet = SSLPolicy
+        type Scopes SSLPoliciesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SSLPoliciesGet'{..}
+          = go _spgProject _spgSSLPolicy (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy SSLPoliciesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SSLPolicies.Insert
+-- 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 the specified SSL policy resource. Gets a list of available SSL
+-- policies by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.insert@.
+module Network.Google.Resource.Compute.SSLPolicies.Insert
+    (
+    -- * REST Resource
+      SSLPoliciesInsertResource
+
+    -- * Creating a Request
+    , sslPoliciesInsert
+    , SSLPoliciesInsert
+
+    -- * Request Lenses
+    , sslpiRequestId
+    , sslpiProject
+    , sslpiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.insert@ method which the
+-- 'SSLPoliciesInsert' request conforms to.
+type SSLPoliciesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SSLPolicy :> Post '[JSON] Operation
+
+-- | Returns the specified SSL policy resource. Gets a list of available SSL
+-- policies by making a list() request.
+--
+-- /See:/ 'sslPoliciesInsert' smart constructor.
+data SSLPoliciesInsert = SSLPoliciesInsert'
+    { _sslpiRequestId :: !(Maybe Text)
+    , _sslpiProject   :: !Text
+    , _sslpiPayload   :: !SSLPolicy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslpiRequestId'
+--
+-- * 'sslpiProject'
+--
+-- * 'sslpiPayload'
+sslPoliciesInsert
+    :: Text -- ^ 'sslpiProject'
+    -> SSLPolicy -- ^ 'sslpiPayload'
+    -> SSLPoliciesInsert
+sslPoliciesInsert pSslpiProject_ pSslpiPayload_ =
+    SSLPoliciesInsert'
+    { _sslpiRequestId = Nothing
+    , _sslpiProject = pSslpiProject_
+    , _sslpiPayload = pSslpiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sslpiRequestId :: Lens' SSLPoliciesInsert (Maybe Text)
+sslpiRequestId
+  = lens _sslpiRequestId
+      (\ s a -> s{_sslpiRequestId = a})
+
+-- | Project ID for this request.
+sslpiProject :: Lens' SSLPoliciesInsert Text
+sslpiProject
+  = lens _sslpiProject (\ s a -> s{_sslpiProject = a})
+
+-- | Multipart request metadata.
+sslpiPayload :: Lens' SSLPoliciesInsert SSLPolicy
+sslpiPayload
+  = lens _sslpiPayload (\ s a -> s{_sslpiPayload = a})
+
+instance GoogleRequest SSLPoliciesInsert where
+        type Rs SSLPoliciesInsert = Operation
+        type Scopes SSLPoliciesInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SSLPoliciesInsert'{..}
+          = go _sslpiProject _sslpiRequestId (Just AltJSON)
+              _sslpiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLPoliciesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/List.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.Compute.SSLPolicies.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 the SSL policies that have been configured for the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.list@.
+module Network.Google.Resource.Compute.SSLPolicies.List
+    (
+    -- * REST Resource
+      SSLPoliciesListResource
+
+    -- * Creating a Request
+    , sslPoliciesList'
+    , SSLPoliciesList'
+
+    -- * Request Lenses
+    , sslplOrderBy
+    , sslplProject
+    , sslplFilter
+    , sslplPageToken
+    , sslplMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.list@ method which the
+-- 'SSLPoliciesList'' request conforms to.
+type SSLPoliciesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] SSLPoliciesList
+
+-- | Lists all the SSL policies that have been configured for the specified
+-- project.
+--
+-- /See:/ 'sslPoliciesList'' smart constructor.
+data SSLPoliciesList' = SSLPoliciesList''
+    { _sslplOrderBy    :: !(Maybe Text)
+    , _sslplProject    :: !Text
+    , _sslplFilter     :: !(Maybe Text)
+    , _sslplPageToken  :: !(Maybe Text)
+    , _sslplMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesList'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslplOrderBy'
+--
+-- * 'sslplProject'
+--
+-- * 'sslplFilter'
+--
+-- * 'sslplPageToken'
+--
+-- * 'sslplMaxResults'
+sslPoliciesList'
+    :: Text -- ^ 'sslplProject'
+    -> SSLPoliciesList'
+sslPoliciesList' pSslplProject_ =
+    SSLPoliciesList''
+    { _sslplOrderBy = Nothing
+    , _sslplProject = pSslplProject_
+    , _sslplFilter = Nothing
+    , _sslplPageToken = Nothing
+    , _sslplMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+sslplOrderBy :: Lens' SSLPoliciesList' (Maybe Text)
+sslplOrderBy
+  = lens _sslplOrderBy (\ s a -> s{_sslplOrderBy = a})
+
+-- | Project ID for this request.
+sslplProject :: Lens' SSLPoliciesList' Text
+sslplProject
+  = lens _sslplProject (\ s a -> s{_sslplProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+sslplFilter :: Lens' SSLPoliciesList' (Maybe Text)
+sslplFilter
+  = lens _sslplFilter (\ s a -> s{_sslplFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+sslplPageToken :: Lens' SSLPoliciesList' (Maybe Text)
+sslplPageToken
+  = lens _sslplPageToken
+      (\ s a -> s{_sslplPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+sslplMaxResults :: Lens' SSLPoliciesList' Word32
+sslplMaxResults
+  = lens _sslplMaxResults
+      (\ s a -> s{_sslplMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest SSLPoliciesList' where
+        type Rs SSLPoliciesList' = SSLPoliciesList
+        type Scopes SSLPoliciesList' =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SSLPoliciesList''{..}
+          = go _sslplProject _sslplOrderBy _sslplFilter
+              _sslplPageToken
+              (Just _sslplMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLPoliciesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SSLPolicies.ListAvailableFeatures
+-- 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 features that can be specified in the SSL policy when using
+-- custom profile.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.listAvailableFeatures@.
+module Network.Google.Resource.Compute.SSLPolicies.ListAvailableFeatures
+    (
+    -- * REST Resource
+      SSLPoliciesListAvailableFeaturesResource
+
+    -- * Creating a Request
+    , sslPoliciesListAvailableFeatures
+    , SSLPoliciesListAvailableFeatures
+
+    -- * Request Lenses
+    , splafOrderBy
+    , splafProject
+    , splafFilter
+    , splafPageToken
+    , splafMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.listAvailableFeatures@ method which the
+-- 'SSLPoliciesListAvailableFeatures' request conforms to.
+type SSLPoliciesListAvailableFeaturesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 "listAvailableFeatures" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON]
+                               SSLPoliciesListAvailableFeaturesResponse
+
+-- | Lists all features that can be specified in the SSL policy when using
+-- custom profile.
+--
+-- /See:/ 'sslPoliciesListAvailableFeatures' smart constructor.
+data SSLPoliciesListAvailableFeatures = SSLPoliciesListAvailableFeatures'
+    { _splafOrderBy    :: !(Maybe Text)
+    , _splafProject    :: !Text
+    , _splafFilter     :: !(Maybe Text)
+    , _splafPageToken  :: !(Maybe Text)
+    , _splafMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesListAvailableFeatures' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splafOrderBy'
+--
+-- * 'splafProject'
+--
+-- * 'splafFilter'
+--
+-- * 'splafPageToken'
+--
+-- * 'splafMaxResults'
+sslPoliciesListAvailableFeatures
+    :: Text -- ^ 'splafProject'
+    -> SSLPoliciesListAvailableFeatures
+sslPoliciesListAvailableFeatures pSplafProject_ =
+    SSLPoliciesListAvailableFeatures'
+    { _splafOrderBy = Nothing
+    , _splafProject = pSplafProject_
+    , _splafFilter = Nothing
+    , _splafPageToken = Nothing
+    , _splafMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+splafOrderBy :: Lens' SSLPoliciesListAvailableFeatures (Maybe Text)
+splafOrderBy
+  = lens _splafOrderBy (\ s a -> s{_splafOrderBy = a})
+
+-- | Project ID for this request.
+splafProject :: Lens' SSLPoliciesListAvailableFeatures Text
+splafProject
+  = lens _splafProject (\ s a -> s{_splafProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+splafFilter :: Lens' SSLPoliciesListAvailableFeatures (Maybe Text)
+splafFilter
+  = lens _splafFilter (\ s a -> s{_splafFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+splafPageToken :: Lens' SSLPoliciesListAvailableFeatures (Maybe Text)
+splafPageToken
+  = lens _splafPageToken
+      (\ s a -> s{_splafPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+splafMaxResults :: Lens' SSLPoliciesListAvailableFeatures Word32
+splafMaxResults
+  = lens _splafMaxResults
+      (\ s a -> s{_splafMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+         SSLPoliciesListAvailableFeatures where
+        type Rs SSLPoliciesListAvailableFeatures =
+             SSLPoliciesListAvailableFeaturesResponse
+        type Scopes SSLPoliciesListAvailableFeatures =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SSLPoliciesListAvailableFeatures'{..}
+          = go _splafProject _splafOrderBy _splafFilter
+              _splafPageToken
+              (Just _splafMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy SSLPoliciesListAvailableFeaturesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SSLPolicies.Patch
+-- 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)
+--
+-- Patches the specified SSL policy with the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslPolicies.patch@.
+module Network.Google.Resource.Compute.SSLPolicies.Patch
+    (
+    -- * REST Resource
+      SSLPoliciesPatchResource
+
+    -- * Creating a Request
+    , sslPoliciesPatch
+    , SSLPoliciesPatch
+
+    -- * Request Lenses
+    , sppSSLPolicy
+    , sppRequestId
+    , sppProject
+    , sppPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslPolicies.patch@ method which the
+-- 'SSLPoliciesPatch' request conforms to.
+type SSLPoliciesPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslPolicies" :>
+                 Capture "sslPolicy" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] SSLPolicy :> Patch '[JSON] Operation
+
+-- | Patches the specified SSL policy with the data included in the request.
+--
+-- /See:/ 'sslPoliciesPatch' smart constructor.
+data SSLPoliciesPatch = SSLPoliciesPatch'
+    { _sppSSLPolicy :: !Text
+    , _sppRequestId :: !(Maybe Text)
+    , _sppProject   :: !Text
+    , _sppPayload   :: !SSLPolicy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLPoliciesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sppSSLPolicy'
+--
+-- * 'sppRequestId'
+--
+-- * 'sppProject'
+--
+-- * 'sppPayload'
+sslPoliciesPatch
+    :: Text -- ^ 'sppSSLPolicy'
+    -> Text -- ^ 'sppProject'
+    -> SSLPolicy -- ^ 'sppPayload'
+    -> SSLPoliciesPatch
+sslPoliciesPatch pSppSSLPolicy_ pSppProject_ pSppPayload_ =
+    SSLPoliciesPatch'
+    { _sppSSLPolicy = pSppSSLPolicy_
+    , _sppRequestId = Nothing
+    , _sppProject = pSppProject_
+    , _sppPayload = pSppPayload_
+    }
+
+-- | Name of the SSL policy to update. The name must be 1-63 characters long,
+-- and comply with RFC1035.
+sppSSLPolicy :: Lens' SSLPoliciesPatch Text
+sppSSLPolicy
+  = lens _sppSSLPolicy (\ s a -> s{_sppSSLPolicy = a})
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sppRequestId :: Lens' SSLPoliciesPatch (Maybe Text)
+sppRequestId
+  = lens _sppRequestId (\ s a -> s{_sppRequestId = a})
+
+-- | Project ID for this request.
+sppProject :: Lens' SSLPoliciesPatch Text
+sppProject
+  = lens _sppProject (\ s a -> s{_sppProject = a})
+
+-- | Multipart request metadata.
+sppPayload :: Lens' SSLPoliciesPatch SSLPolicy
+sppPayload
+  = lens _sppPayload (\ s a -> s{_sppPayload = a})
+
+instance GoogleRequest SSLPoliciesPatch where
+        type Rs SSLPoliciesPatch = Operation
+        type Scopes SSLPoliciesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SSLPoliciesPatch'{..}
+          = go _sppProject _sppSSLPolicy _sppRequestId
+              (Just AltJSON)
+              _sppPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLPoliciesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.AddRule
+-- 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)
+--
+-- Inserts a rule into a security policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.addRule@.
+module Network.Google.Resource.Compute.SecurityPolicies.AddRule
+    (
+    -- * REST Resource
+      SecurityPoliciesAddRuleResource
+
+    -- * Creating a Request
+    , securityPoliciesAddRule
+    , SecurityPoliciesAddRule
+
+    -- * Request Lenses
+    , sparProject
+    , sparPayload
+    , sparSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.addRule@ method which the
+-- 'SecurityPoliciesAddRule' request conforms to.
+type SecurityPoliciesAddRuleResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   "addRule" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] SecurityPolicyRule :>
+                         Post '[JSON] Operation
+
+-- | Inserts a rule into a security policy.
+--
+-- /See:/ 'securityPoliciesAddRule' smart constructor.
+data SecurityPoliciesAddRule = SecurityPoliciesAddRule'
+    { _sparProject        :: !Text
+    , _sparPayload        :: !SecurityPolicyRule
+    , _sparSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesAddRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sparProject'
+--
+-- * 'sparPayload'
+--
+-- * 'sparSecurityPolicy'
+securityPoliciesAddRule
+    :: Text -- ^ 'sparProject'
+    -> SecurityPolicyRule -- ^ 'sparPayload'
+    -> Text -- ^ 'sparSecurityPolicy'
+    -> SecurityPoliciesAddRule
+securityPoliciesAddRule pSparProject_ pSparPayload_ pSparSecurityPolicy_ =
+    SecurityPoliciesAddRule'
+    { _sparProject = pSparProject_
+    , _sparPayload = pSparPayload_
+    , _sparSecurityPolicy = pSparSecurityPolicy_
+    }
+
+-- | Project ID for this request.
+sparProject :: Lens' SecurityPoliciesAddRule Text
+sparProject
+  = lens _sparProject (\ s a -> s{_sparProject = a})
+
+-- | Multipart request metadata.
+sparPayload :: Lens' SecurityPoliciesAddRule SecurityPolicyRule
+sparPayload
+  = lens _sparPayload (\ s a -> s{_sparPayload = a})
+
+-- | Name of the security policy to update.
+sparSecurityPolicy :: Lens' SecurityPoliciesAddRule Text
+sparSecurityPolicy
+  = lens _sparSecurityPolicy
+      (\ s a -> s{_sparSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesAddRule where
+        type Rs SecurityPoliciesAddRule = Operation
+        type Scopes SecurityPoliciesAddRule =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesAddRule'{..}
+          = go _sparProject _sparSecurityPolicy (Just AltJSON)
+              _sparPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesAddRuleResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.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 specified policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.delete@.
+module Network.Google.Resource.Compute.SecurityPolicies.Delete
+    (
+    -- * REST Resource
+      SecurityPoliciesDeleteResource
+
+    -- * Creating a Request
+    , securityPoliciesDelete
+    , SecurityPoliciesDelete
+
+    -- * Request Lenses
+    , spdpRequestId
+    , spdpProject
+    , spdpSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.delete@ method which the
+-- 'SecurityPoliciesDelete' request conforms to.
+type SecurityPoliciesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified policy.
+--
+-- /See:/ 'securityPoliciesDelete' smart constructor.
+data SecurityPoliciesDelete = SecurityPoliciesDelete'
+    { _spdpRequestId      :: !(Maybe Text)
+    , _spdpProject        :: !Text
+    , _spdpSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spdpRequestId'
+--
+-- * 'spdpProject'
+--
+-- * 'spdpSecurityPolicy'
+securityPoliciesDelete
+    :: Text -- ^ 'spdpProject'
+    -> Text -- ^ 'spdpSecurityPolicy'
+    -> SecurityPoliciesDelete
+securityPoliciesDelete pSpdpProject_ pSpdpSecurityPolicy_ =
+    SecurityPoliciesDelete'
+    { _spdpRequestId = Nothing
+    , _spdpProject = pSpdpProject_
+    , _spdpSecurityPolicy = pSpdpSecurityPolicy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+spdpRequestId :: Lens' SecurityPoliciesDelete (Maybe Text)
+spdpRequestId
+  = lens _spdpRequestId
+      (\ s a -> s{_spdpRequestId = a})
+
+-- | Project ID for this request.
+spdpProject :: Lens' SecurityPoliciesDelete Text
+spdpProject
+  = lens _spdpProject (\ s a -> s{_spdpProject = a})
+
+-- | Name of the security policy to delete.
+spdpSecurityPolicy :: Lens' SecurityPoliciesDelete Text
+spdpSecurityPolicy
+  = lens _spdpSecurityPolicy
+      (\ s a -> s{_spdpSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesDelete where
+        type Rs SecurityPoliciesDelete = Operation
+        type Scopes SecurityPoliciesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesDelete'{..}
+          = go _spdpProject _spdpSecurityPolicy _spdpRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.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)
+--
+-- List all of the ordered rules present in a single specified policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.get@.
+module Network.Google.Resource.Compute.SecurityPolicies.Get
+    (
+    -- * REST Resource
+      SecurityPoliciesGetResource
+
+    -- * Creating a Request
+    , securityPoliciesGet
+    , SecurityPoliciesGet
+
+    -- * Request Lenses
+    , secProject
+    , secSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.get@ method which the
+-- 'SecurityPoliciesGet' request conforms to.
+type SecurityPoliciesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] SecurityPolicy
+
+-- | List all of the ordered rules present in a single specified policy.
+--
+-- /See:/ 'securityPoliciesGet' smart constructor.
+data SecurityPoliciesGet = SecurityPoliciesGet'
+    { _secProject        :: !Text
+    , _secSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secProject'
+--
+-- * 'secSecurityPolicy'
+securityPoliciesGet
+    :: Text -- ^ 'secProject'
+    -> Text -- ^ 'secSecurityPolicy'
+    -> SecurityPoliciesGet
+securityPoliciesGet pSecProject_ pSecSecurityPolicy_ =
+    SecurityPoliciesGet'
+    { _secProject = pSecProject_
+    , _secSecurityPolicy = pSecSecurityPolicy_
+    }
+
+-- | Project ID for this request.
+secProject :: Lens' SecurityPoliciesGet Text
+secProject
+  = lens _secProject (\ s a -> s{_secProject = a})
+
+-- | Name of the security policy to get.
+secSecurityPolicy :: Lens' SecurityPoliciesGet Text
+secSecurityPolicy
+  = lens _secSecurityPolicy
+      (\ s a -> s{_secSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesGet where
+        type Rs SecurityPoliciesGet = SecurityPolicy
+        type Scopes SecurityPoliciesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SecurityPoliciesGet'{..}
+          = go _secProject _secSecurityPolicy (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.GetRule
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a rule at the specified priority.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.getRule@.
+module Network.Google.Resource.Compute.SecurityPolicies.GetRule
+    (
+    -- * REST Resource
+      SecurityPoliciesGetRuleResource
+
+    -- * Creating a Request
+    , securityPoliciesGetRule
+    , SecurityPoliciesGetRule
+
+    -- * Request Lenses
+    , spgrPriority
+    , spgrProject
+    , spgrSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.getRule@ method which the
+-- 'SecurityPoliciesGetRule' request conforms to.
+type SecurityPoliciesGetRuleResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   "getRule" :>
+                     QueryParam "priority" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] SecurityPolicyRule
+
+-- | Gets a rule at the specified priority.
+--
+-- /See:/ 'securityPoliciesGetRule' smart constructor.
+data SecurityPoliciesGetRule = SecurityPoliciesGetRule'
+    { _spgrPriority       :: !(Maybe (Textual Int32))
+    , _spgrProject        :: !Text
+    , _spgrSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesGetRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spgrPriority'
+--
+-- * 'spgrProject'
+--
+-- * 'spgrSecurityPolicy'
+securityPoliciesGetRule
+    :: Text -- ^ 'spgrProject'
+    -> Text -- ^ 'spgrSecurityPolicy'
+    -> SecurityPoliciesGetRule
+securityPoliciesGetRule pSpgrProject_ pSpgrSecurityPolicy_ =
+    SecurityPoliciesGetRule'
+    { _spgrPriority = Nothing
+    , _spgrProject = pSpgrProject_
+    , _spgrSecurityPolicy = pSpgrSecurityPolicy_
+    }
+
+-- | The priority of the rule to get from the security policy.
+spgrPriority :: Lens' SecurityPoliciesGetRule (Maybe Int32)
+spgrPriority
+  = lens _spgrPriority (\ s a -> s{_spgrPriority = a})
+      . mapping _Coerce
+
+-- | Project ID for this request.
+spgrProject :: Lens' SecurityPoliciesGetRule Text
+spgrProject
+  = lens _spgrProject (\ s a -> s{_spgrProject = a})
+
+-- | Name of the security policy to which the queried rule belongs.
+spgrSecurityPolicy :: Lens' SecurityPoliciesGetRule Text
+spgrSecurityPolicy
+  = lens _spgrSecurityPolicy
+      (\ s a -> s{_spgrSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesGetRule where
+        type Rs SecurityPoliciesGetRule = SecurityPolicyRule
+        type Scopes SecurityPoliciesGetRule =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SecurityPoliciesGetRule'{..}
+          = go _spgrProject _spgrSecurityPolicy _spgrPriority
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesGetRuleResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.Insert
+-- 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 new policy in the specified project using the data included in
+-- the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.insert@.
+module Network.Google.Resource.Compute.SecurityPolicies.Insert
+    (
+    -- * REST Resource
+      SecurityPoliciesInsertResource
+
+    -- * Creating a Request
+    , securityPoliciesInsert
+    , SecurityPoliciesInsert
+
+    -- * Request Lenses
+    , spiRequestId
+    , spiProject
+    , spiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.insert@ method which the
+-- 'SecurityPoliciesInsert' request conforms to.
+type SecurityPoliciesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SecurityPolicy :>
+                       Post '[JSON] Operation
+
+-- | Creates a new policy in the specified project using the data included in
+-- the request.
+--
+-- /See:/ 'securityPoliciesInsert' smart constructor.
+data SecurityPoliciesInsert = SecurityPoliciesInsert'
+    { _spiRequestId :: !(Maybe Text)
+    , _spiProject   :: !Text
+    , _spiPayload   :: !SecurityPolicy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spiRequestId'
+--
+-- * 'spiProject'
+--
+-- * 'spiPayload'
+securityPoliciesInsert
+    :: Text -- ^ 'spiProject'
+    -> SecurityPolicy -- ^ 'spiPayload'
+    -> SecurityPoliciesInsert
+securityPoliciesInsert pSpiProject_ pSpiPayload_ =
+    SecurityPoliciesInsert'
+    { _spiRequestId = Nothing
+    , _spiProject = pSpiProject_
+    , _spiPayload = pSpiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+spiRequestId :: Lens' SecurityPoliciesInsert (Maybe Text)
+spiRequestId
+  = lens _spiRequestId (\ s a -> s{_spiRequestId = a})
+
+-- | Project ID for this request.
+spiProject :: Lens' SecurityPoliciesInsert Text
+spiProject
+  = lens _spiProject (\ s a -> s{_spiProject = a})
+
+-- | Multipart request metadata.
+spiPayload :: Lens' SecurityPoliciesInsert SecurityPolicy
+spiPayload
+  = lens _spiPayload (\ s a -> s{_spiPayload = a})
+
+instance GoogleRequest SecurityPoliciesInsert where
+        type Rs SecurityPoliciesInsert = Operation
+        type Scopes SecurityPoliciesInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesInsert'{..}
+          = go _spiProject _spiRequestId (Just AltJSON)
+              _spiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/List.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.Compute.SecurityPolicies.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)
+--
+-- List all the policies that have been configured for the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.list@.
+module Network.Google.Resource.Compute.SecurityPolicies.List
+    (
+    -- * REST Resource
+      SecurityPoliciesListResource
+
+    -- * Creating a Request
+    , securityPoliciesList
+    , SecurityPoliciesList
+
+    -- * Request Lenses
+    , splOrderBy
+    , splProject
+    , splFilter
+    , splPageToken
+    , splMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.list@ method which the
+-- 'SecurityPoliciesList' request conforms to.
+type SecurityPoliciesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] SecurityPolicyList
+
+-- | List all the policies that have been configured for the specified
+-- project.
+--
+-- /See:/ 'securityPoliciesList' smart constructor.
+data SecurityPoliciesList = SecurityPoliciesList'
+    { _splOrderBy    :: !(Maybe Text)
+    , _splProject    :: !Text
+    , _splFilter     :: !(Maybe Text)
+    , _splPageToken  :: !(Maybe Text)
+    , _splMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'splOrderBy'
+--
+-- * 'splProject'
+--
+-- * 'splFilter'
+--
+-- * 'splPageToken'
+--
+-- * 'splMaxResults'
+securityPoliciesList
+    :: Text -- ^ 'splProject'
+    -> SecurityPoliciesList
+securityPoliciesList pSplProject_ =
+    SecurityPoliciesList'
+    { _splOrderBy = Nothing
+    , _splProject = pSplProject_
+    , _splFilter = Nothing
+    , _splPageToken = Nothing
+    , _splMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+splOrderBy :: Lens' SecurityPoliciesList (Maybe Text)
+splOrderBy
+  = lens _splOrderBy (\ s a -> s{_splOrderBy = a})
+
+-- | Project ID for this request.
+splProject :: Lens' SecurityPoliciesList Text
+splProject
+  = lens _splProject (\ s a -> s{_splProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+splFilter :: Lens' SecurityPoliciesList (Maybe Text)
+splFilter
+  = lens _splFilter (\ s a -> s{_splFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+splPageToken :: Lens' SecurityPoliciesList (Maybe Text)
+splPageToken
+  = lens _splPageToken (\ s a -> s{_splPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+splMaxResults :: Lens' SecurityPoliciesList Word32
+splMaxResults
+  = lens _splMaxResults
+      (\ s a -> s{_splMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest SecurityPoliciesList where
+        type Rs SecurityPoliciesList = SecurityPolicyList
+        type Scopes SecurityPoliciesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SecurityPoliciesList'{..}
+          = go _splProject _splOrderBy _splFilter _splPageToken
+              (Just _splMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.Patch
+-- 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)
+--
+-- Patches the specified policy with the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.patch@.
+module Network.Google.Resource.Compute.SecurityPolicies.Patch
+    (
+    -- * REST Resource
+      SecurityPoliciesPatchResource
+
+    -- * Creating a Request
+    , securityPoliciesPatch
+    , SecurityPoliciesPatch
+
+    -- * Request Lenses
+    , sRequestId
+    , sProject
+    , sPayload
+    , sSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.patch@ method which the
+-- 'SecurityPoliciesPatch' request conforms to.
+type SecurityPoliciesPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] SecurityPolicy :>
+                         Patch '[JSON] Operation
+
+-- | Patches the specified policy with the data included in the request.
+--
+-- /See:/ 'securityPoliciesPatch' smart constructor.
+data SecurityPoliciesPatch = SecurityPoliciesPatch'
+    { _sRequestId      :: !(Maybe Text)
+    , _sProject        :: !Text
+    , _sPayload        :: !SecurityPolicy
+    , _sSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sRequestId'
+--
+-- * 'sProject'
+--
+-- * 'sPayload'
+--
+-- * 'sSecurityPolicy'
+securityPoliciesPatch
+    :: Text -- ^ 'sProject'
+    -> SecurityPolicy -- ^ 'sPayload'
+    -> Text -- ^ 'sSecurityPolicy'
+    -> SecurityPoliciesPatch
+securityPoliciesPatch pSProject_ pSPayload_ pSSecurityPolicy_ =
+    SecurityPoliciesPatch'
+    { _sRequestId = Nothing
+    , _sProject = pSProject_
+    , _sPayload = pSPayload_
+    , _sSecurityPolicy = pSSecurityPolicy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sRequestId :: Lens' SecurityPoliciesPatch (Maybe Text)
+sRequestId
+  = lens _sRequestId (\ s a -> s{_sRequestId = a})
+
+-- | Project ID for this request.
+sProject :: Lens' SecurityPoliciesPatch Text
+sProject = lens _sProject (\ s a -> s{_sProject = a})
+
+-- | Multipart request metadata.
+sPayload :: Lens' SecurityPoliciesPatch SecurityPolicy
+sPayload = lens _sPayload (\ s a -> s{_sPayload = a})
+
+-- | Name of the security policy to update.
+sSecurityPolicy :: Lens' SecurityPoliciesPatch Text
+sSecurityPolicy
+  = lens _sSecurityPolicy
+      (\ s a -> s{_sSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesPatch where
+        type Rs SecurityPoliciesPatch = Operation
+        type Scopes SecurityPoliciesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesPatch'{..}
+          = go _sProject _sSecurityPolicy _sRequestId
+              (Just AltJSON)
+              _sPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.PatchRule
+-- 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)
+--
+-- Patches a rule at the specified priority.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.patchRule@.
+module Network.Google.Resource.Compute.SecurityPolicies.PatchRule
+    (
+    -- * REST Resource
+      SecurityPoliciesPatchRuleResource
+
+    -- * Creating a Request
+    , securityPoliciesPatchRule
+    , SecurityPoliciesPatchRule
+
+    -- * Request Lenses
+    , spprPriority
+    , spprProject
+    , spprPayload
+    , spprSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.patchRule@ method which the
+-- 'SecurityPoliciesPatchRule' request conforms to.
+type SecurityPoliciesPatchRuleResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   "patchRule" :>
+                     QueryParam "priority" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SecurityPolicyRule :>
+                           Post '[JSON] Operation
+
+-- | Patches a rule at the specified priority.
+--
+-- /See:/ 'securityPoliciesPatchRule' smart constructor.
+data SecurityPoliciesPatchRule = SecurityPoliciesPatchRule'
+    { _spprPriority       :: !(Maybe (Textual Int32))
+    , _spprProject        :: !Text
+    , _spprPayload        :: !SecurityPolicyRule
+    , _spprSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesPatchRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spprPriority'
+--
+-- * 'spprProject'
+--
+-- * 'spprPayload'
+--
+-- * 'spprSecurityPolicy'
+securityPoliciesPatchRule
+    :: Text -- ^ 'spprProject'
+    -> SecurityPolicyRule -- ^ 'spprPayload'
+    -> Text -- ^ 'spprSecurityPolicy'
+    -> SecurityPoliciesPatchRule
+securityPoliciesPatchRule pSpprProject_ pSpprPayload_ pSpprSecurityPolicy_ =
+    SecurityPoliciesPatchRule'
+    { _spprPriority = Nothing
+    , _spprProject = pSpprProject_
+    , _spprPayload = pSpprPayload_
+    , _spprSecurityPolicy = pSpprSecurityPolicy_
+    }
+
+-- | The priority of the rule to patch.
+spprPriority :: Lens' SecurityPoliciesPatchRule (Maybe Int32)
+spprPriority
+  = lens _spprPriority (\ s a -> s{_spprPriority = a})
+      . mapping _Coerce
+
+-- | Project ID for this request.
+spprProject :: Lens' SecurityPoliciesPatchRule Text
+spprProject
+  = lens _spprProject (\ s a -> s{_spprProject = a})
+
+-- | Multipart request metadata.
+spprPayload :: Lens' SecurityPoliciesPatchRule SecurityPolicyRule
+spprPayload
+  = lens _spprPayload (\ s a -> s{_spprPayload = a})
+
+-- | Name of the security policy to update.
+spprSecurityPolicy :: Lens' SecurityPoliciesPatchRule Text
+spprSecurityPolicy
+  = lens _spprSecurityPolicy
+      (\ s a -> s{_spprSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesPatchRule
+         where
+        type Rs SecurityPoliciesPatchRule = Operation
+        type Scopes SecurityPoliciesPatchRule =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesPatchRule'{..}
+          = go _spprProject _spprSecurityPolicy _spprPriority
+              (Just AltJSON)
+              _spprPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesPatchRuleResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.SecurityPolicies.RemoveRule
+-- 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 rule at the specified priority.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.securityPolicies.removeRule@.
+module Network.Google.Resource.Compute.SecurityPolicies.RemoveRule
+    (
+    -- * REST Resource
+      SecurityPoliciesRemoveRuleResource
+
+    -- * Creating a Request
+    , securityPoliciesRemoveRule
+    , SecurityPoliciesRemoveRule
+
+    -- * Request Lenses
+    , sprrPriority
+    , sprrProject
+    , sprrSecurityPolicy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.securityPolicies.removeRule@ method which the
+-- 'SecurityPoliciesRemoveRule' request conforms to.
+type SecurityPoliciesRemoveRuleResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "securityPolicies" :>
+                 Capture "securityPolicy" Text :>
+                   "removeRule" :>
+                     QueryParam "priority" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Deletes a rule at the specified priority.
+--
+-- /See:/ 'securityPoliciesRemoveRule' smart constructor.
+data SecurityPoliciesRemoveRule = SecurityPoliciesRemoveRule'
+    { _sprrPriority       :: !(Maybe (Textual Int32))
+    , _sprrProject        :: !Text
+    , _sprrSecurityPolicy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SecurityPoliciesRemoveRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sprrPriority'
+--
+-- * 'sprrProject'
+--
+-- * 'sprrSecurityPolicy'
+securityPoliciesRemoveRule
+    :: Text -- ^ 'sprrProject'
+    -> Text -- ^ 'sprrSecurityPolicy'
+    -> SecurityPoliciesRemoveRule
+securityPoliciesRemoveRule pSprrProject_ pSprrSecurityPolicy_ =
+    SecurityPoliciesRemoveRule'
+    { _sprrPriority = Nothing
+    , _sprrProject = pSprrProject_
+    , _sprrSecurityPolicy = pSprrSecurityPolicy_
+    }
+
+-- | The priority of the rule to remove from the security policy.
+sprrPriority :: Lens' SecurityPoliciesRemoveRule (Maybe Int32)
+sprrPriority
+  = lens _sprrPriority (\ s a -> s{_sprrPriority = a})
+      . mapping _Coerce
+
+-- | Project ID for this request.
+sprrProject :: Lens' SecurityPoliciesRemoveRule Text
+sprrProject
+  = lens _sprrProject (\ s a -> s{_sprrProject = a})
+
+-- | Name of the security policy to update.
+sprrSecurityPolicy :: Lens' SecurityPoliciesRemoveRule Text
+sprrSecurityPolicy
+  = lens _sprrSecurityPolicy
+      (\ s a -> s{_sprrSecurityPolicy = a})
+
+instance GoogleRequest SecurityPoliciesRemoveRule
+         where
+        type Rs SecurityPoliciesRemoveRule = Operation
+        type Scopes SecurityPoliciesRemoveRule =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SecurityPoliciesRemoveRule'{..}
+          = go _sprrProject _sprrSecurityPolicy _sprrPriority
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SecurityPoliciesRemoveRuleResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs b/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs
@@ -24,7 +24,7 @@
 -- single snapshot might not necessarily delete all the data on that
 -- snapshot. If any data on the snapshot that is marked for deletion is
 -- needed for subsequent snapshots, the data will be moved to the next
--- corresponding snapshot. For more information, see Deleting snaphots.
+-- corresponding snapshot. For more information, see Deleting snapshots.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.delete@.
 module Network.Google.Resource.Compute.Snapshots.Delete
@@ -37,8 +37,9 @@
     , SnapshotsDelete
 
     -- * Request Lenses
-    , snaSnapshot
-    , snaProject
+    , sddRequestId
+    , sddSnapshot
+    , sddProject
     ) where
 
 import           Network.Google.Compute.Types
@@ -54,46 +55,65 @@
              "global" :>
                "snapshots" :>
                  Capture "snapshot" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified Snapshot resource. Keep in mind that deleting a
 -- single snapshot might not necessarily delete all the data on that
 -- snapshot. If any data on the snapshot that is marked for deletion is
 -- needed for subsequent snapshots, the data will be moved to the next
--- corresponding snapshot. For more information, see Deleting snaphots.
+-- corresponding snapshot. For more information, see Deleting snapshots.
 --
 -- /See:/ 'snapshotsDelete' smart constructor.
 data SnapshotsDelete = SnapshotsDelete'
-    { _snaSnapshot :: !Text
-    , _snaProject  :: !Text
+    { _sddRequestId :: !(Maybe Text)
+    , _sddSnapshot  :: !Text
+    , _sddProject   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'SnapshotsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'snaSnapshot'
+-- * 'sddRequestId'
 --
--- * 'snaProject'
+-- * 'sddSnapshot'
+--
+-- * 'sddProject'
 snapshotsDelete
-    :: Text -- ^ 'snaSnapshot'
-    -> Text -- ^ 'snaProject'
+    :: Text -- ^ 'sddSnapshot'
+    -> Text -- ^ 'sddProject'
     -> SnapshotsDelete
-snapshotsDelete pSnaSnapshot_ pSnaProject_ =
+snapshotsDelete pSddSnapshot_ pSddProject_ =
     SnapshotsDelete'
-    { _snaSnapshot = pSnaSnapshot_
-    , _snaProject = pSnaProject_
+    { _sddRequestId = Nothing
+    , _sddSnapshot = pSddSnapshot_
+    , _sddProject = pSddProject_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sddRequestId :: Lens' SnapshotsDelete (Maybe Text)
+sddRequestId
+  = lens _sddRequestId (\ s a -> s{_sddRequestId = a})
+
 -- | Name of the Snapshot resource to delete.
-snaSnapshot :: Lens' SnapshotsDelete Text
-snaSnapshot
-  = lens _snaSnapshot (\ s a -> s{_snaSnapshot = a})
+sddSnapshot :: Lens' SnapshotsDelete Text
+sddSnapshot
+  = lens _sddSnapshot (\ s a -> s{_sddSnapshot = a})
 
 -- | Project ID for this request.
-snaProject :: Lens' SnapshotsDelete Text
-snaProject
-  = lens _snaProject (\ s a -> s{_snaProject = a})
+sddProject :: Lens' SnapshotsDelete Text
+sddProject
+  = lens _sddProject (\ s a -> s{_sddProject = a})
 
 instance GoogleRequest SnapshotsDelete where
         type Rs SnapshotsDelete = Operation
@@ -101,7 +121,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient SnapshotsDelete'{..}
-          = go _snaProject _snaSnapshot (Just AltJSON)
+          = go _sddProject _sddSnapshot _sddRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/Get.hs b/gen/Network/Google/Resource/Compute/Snapshots/Get.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Snapshot resource. Get a list of available
+-- Returns the specified Snapshot resource. Gets a list of available
 -- snapshots by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.get@.
@@ -53,7 +53,7 @@
                  Capture "snapshot" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] Snapshot
 
--- | Returns the specified Snapshot resource. Get a list of available
+-- | Returns the specified Snapshot resource. Gets a list of available
 -- snapshots by making a list() request.
 --
 -- /See:/ 'snapshotsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Snapshots.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.getIamPolicy@.
+module Network.Google.Resource.Compute.Snapshots.GetIAMPolicy
+    (
+    -- * REST Resource
+      SnapshotsGetIAMPolicyResource
+
+    -- * Creating a Request
+    , snapshotsGetIAMPolicy
+    , SnapshotsGetIAMPolicy
+
+    -- * Request Lenses
+    , sgiampProject
+    , sgiampResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.getIamPolicy@ method which the
+-- 'SnapshotsGetIAMPolicy' request conforms to.
+type SnapshotsGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "resource" Text :>
+                   "getIamPolicy" :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'snapshotsGetIAMPolicy' smart constructor.
+data SnapshotsGetIAMPolicy = SnapshotsGetIAMPolicy'
+    { _sgiampProject  :: !Text
+    , _sgiampResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgiampProject'
+--
+-- * 'sgiampResource'
+snapshotsGetIAMPolicy
+    :: Text -- ^ 'sgiampProject'
+    -> Text -- ^ 'sgiampResource'
+    -> SnapshotsGetIAMPolicy
+snapshotsGetIAMPolicy pSgiampProject_ pSgiampResource_ =
+    SnapshotsGetIAMPolicy'
+    { _sgiampProject = pSgiampProject_
+    , _sgiampResource = pSgiampResource_
+    }
+
+-- | Project ID for this request.
+sgiampProject :: Lens' SnapshotsGetIAMPolicy Text
+sgiampProject
+  = lens _sgiampProject
+      (\ s a -> s{_sgiampProject = a})
+
+-- | Name or id of the resource for this request.
+sgiampResource :: Lens' SnapshotsGetIAMPolicy Text
+sgiampResource
+  = lens _sgiampResource
+      (\ s a -> s{_sgiampResource = a})
+
+instance GoogleRequest SnapshotsGetIAMPolicy where
+        type Rs SnapshotsGetIAMPolicy = Policy
+        type Scopes SnapshotsGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SnapshotsGetIAMPolicy'{..}
+          = go _sgiampProject _sgiampResource (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SnapshotsGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/List.hs b/gen/Network/Google/Resource/Compute/Snapshots/List.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/List.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/List.hs
@@ -34,11 +34,11 @@
     , SnapshotsList
 
     -- * Request Lenses
-    , sOrderBy
-    , sProject
-    , sFilter
-    , sPageToken
-    , sMaxResults
+    , snaOrderBy
+    , snaProject
+    , snaFilter
+    , snaPageToken
+    , snaMaxResults
     ) where
 
 import           Network.Google.Compute.Types
@@ -64,36 +64,36 @@
 --
 -- /See:/ 'snapshotsList' smart constructor.
 data SnapshotsList = SnapshotsList'
-    { _sOrderBy    :: !(Maybe Text)
-    , _sProject    :: !Text
-    , _sFilter     :: !(Maybe Text)
-    , _sPageToken  :: !(Maybe Text)
-    , _sMaxResults :: !(Textual Word32)
+    { _snaOrderBy    :: !(Maybe Text)
+    , _snaProject    :: !Text
+    , _snaFilter     :: !(Maybe Text)
+    , _snaPageToken  :: !(Maybe Text)
+    , _snaMaxResults :: !(Textual Word32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'SnapshotsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'sOrderBy'
+-- * 'snaOrderBy'
 --
--- * 'sProject'
+-- * 'snaProject'
 --
--- * 'sFilter'
+-- * 'snaFilter'
 --
--- * 'sPageToken'
+-- * 'snaPageToken'
 --
--- * 'sMaxResults'
+-- * 'snaMaxResults'
 snapshotsList
-    :: Text -- ^ 'sProject'
+    :: Text -- ^ 'snaProject'
     -> SnapshotsList
-snapshotsList pSProject_ =
+snapshotsList pSnaProject_ =
     SnapshotsList'
-    { _sOrderBy = Nothing
-    , _sProject = pSProject_
-    , _sFilter = Nothing
-    , _sPageToken = Nothing
-    , _sMaxResults = 500
+    { _snaOrderBy = Nothing
+    , _snaProject = pSnaProject_
+    , _snaFilter = Nothing
+    , _snaPageToken = Nothing
+    , _snaMaxResults = 500
     }
 
 -- | Sorts list results by a certain order. By default, results are returned
@@ -104,50 +104,51 @@
 -- first). Use this to sort resources like operations so that the newest
 -- operation is returned first. Currently, only sorting by name or
 -- creationTimestamp desc is supported.
-sOrderBy :: Lens' SnapshotsList (Maybe Text)
-sOrderBy = lens _sOrderBy (\ s a -> s{_sOrderBy = a})
+snaOrderBy :: Lens' SnapshotsList (Maybe Text)
+snaOrderBy
+  = lens _snaOrderBy (\ s a -> s{_snaOrderBy = a})
 
 -- | Project ID for this request.
-sProject :: Lens' SnapshotsList Text
-sProject = lens _sProject (\ s a -> s{_sProject = a})
+snaProject :: Lens' SnapshotsList Text
+snaProject
+  = lens _snaProject (\ s a -> s{_snaProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
-sFilter :: Lens' SnapshotsList (Maybe Text)
-sFilter = lens _sFilter (\ s a -> s{_sFilter = a})
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+snaFilter :: Lens' SnapshotsList (Maybe Text)
+snaFilter
+  = lens _snaFilter (\ s a -> s{_snaFilter = a})
 
 -- | Specifies a page token to use. Set pageToken to the nextPageToken
 -- returned by a previous list request to get the next page of results.
-sPageToken :: Lens' SnapshotsList (Maybe Text)
-sPageToken
-  = lens _sPageToken (\ s a -> s{_sPageToken = a})
+snaPageToken :: Lens' SnapshotsList (Maybe Text)
+snaPageToken
+  = lens _snaPageToken (\ s a -> s{_snaPageToken = a})
 
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
-sMaxResults :: Lens' SnapshotsList Word32
-sMaxResults
-  = lens _sMaxResults (\ s a -> s{_sMaxResults = a}) .
-      _Coerce
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+snaMaxResults :: Lens' SnapshotsList Word32
+snaMaxResults
+  = lens _snaMaxResults
+      (\ s a -> s{_snaMaxResults = a})
+      . _Coerce
 
 instance GoogleRequest SnapshotsList where
         type Rs SnapshotsList = SnapshotList
@@ -156,8 +157,8 @@
                "https://www.googleapis.com/auth/compute",
                "https://www.googleapis.com/auth/compute.readonly"]
         requestClient SnapshotsList'{..}
-          = go _sProject _sOrderBy _sFilter _sPageToken
-              (Just _sMaxResults)
+          = go _snaProject _snaOrderBy _snaFilter _snaPageToken
+              (Just _snaMaxResults)
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Snapshots.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.setIamPolicy@.
+module Network.Google.Resource.Compute.Snapshots.SetIAMPolicy
+    (
+    -- * REST Resource
+      SnapshotsSetIAMPolicyResource
+
+    -- * Creating a Request
+    , snapshotsSetIAMPolicy
+    , SnapshotsSetIAMPolicy
+
+    -- * Request Lenses
+    , ssipProject
+    , ssipPayload
+    , ssipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.setIamPolicy@ method which the
+-- 'SnapshotsSetIAMPolicy' request conforms to.
+type SnapshotsSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "resource" Text :>
+                   "setIamPolicy" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetPolicyRequest :>
+                         Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'snapshotsSetIAMPolicy' smart constructor.
+data SnapshotsSetIAMPolicy = SnapshotsSetIAMPolicy'
+    { _ssipProject  :: !Text
+    , _ssipPayload  :: !GlobalSetPolicyRequest
+    , _ssipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssipProject'
+--
+-- * 'ssipPayload'
+--
+-- * 'ssipResource'
+snapshotsSetIAMPolicy
+    :: Text -- ^ 'ssipProject'
+    -> GlobalSetPolicyRequest -- ^ 'ssipPayload'
+    -> Text -- ^ 'ssipResource'
+    -> SnapshotsSetIAMPolicy
+snapshotsSetIAMPolicy pSsipProject_ pSsipPayload_ pSsipResource_ =
+    SnapshotsSetIAMPolicy'
+    { _ssipProject = pSsipProject_
+    , _ssipPayload = pSsipPayload_
+    , _ssipResource = pSsipResource_
+    }
+
+-- | Project ID for this request.
+ssipProject :: Lens' SnapshotsSetIAMPolicy Text
+ssipProject
+  = lens _ssipProject (\ s a -> s{_ssipProject = a})
+
+-- | Multipart request metadata.
+ssipPayload :: Lens' SnapshotsSetIAMPolicy GlobalSetPolicyRequest
+ssipPayload
+  = lens _ssipPayload (\ s a -> s{_ssipPayload = a})
+
+-- | Name or id of the resource for this request.
+ssipResource :: Lens' SnapshotsSetIAMPolicy Text
+ssipResource
+  = lens _ssipResource (\ s a -> s{_ssipResource = a})
+
+instance GoogleRequest SnapshotsSetIAMPolicy where
+        type Rs SnapshotsSetIAMPolicy = Policy
+        type Scopes SnapshotsSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SnapshotsSetIAMPolicy'{..}
+          = go _ssipProject _ssipResource (Just AltJSON)
+              _ssipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SnapshotsSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs b/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Snapshots.SetLabels
+-- 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 labels on a snapshot. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.setLabels@.
+module Network.Google.Resource.Compute.Snapshots.SetLabels
+    (
+    -- * REST Resource
+      SnapshotsSetLabelsResource
+
+    -- * Creating a Request
+    , snapshotsSetLabels
+    , SnapshotsSetLabels
+
+    -- * Request Lenses
+    , sslProject
+    , sslPayload
+    , sslResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.setLabels@ method which the
+-- 'SnapshotsSetLabels' request conforms to.
+type SnapshotsSetLabelsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "resource" Text :>
+                   "setLabels" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] GlobalSetLabelsRequest :>
+                         Post '[JSON] Operation
+
+-- | Sets the labels on a snapshot. To learn more about labels, read the
+-- Labeling Resources documentation.
+--
+-- /See:/ 'snapshotsSetLabels' smart constructor.
+data SnapshotsSetLabels = SnapshotsSetLabels'
+    { _sslProject  :: !Text
+    , _sslPayload  :: !GlobalSetLabelsRequest
+    , _sslResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsSetLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sslProject'
+--
+-- * 'sslPayload'
+--
+-- * 'sslResource'
+snapshotsSetLabels
+    :: Text -- ^ 'sslProject'
+    -> GlobalSetLabelsRequest -- ^ 'sslPayload'
+    -> Text -- ^ 'sslResource'
+    -> SnapshotsSetLabels
+snapshotsSetLabels pSslProject_ pSslPayload_ pSslResource_ =
+    SnapshotsSetLabels'
+    { _sslProject = pSslProject_
+    , _sslPayload = pSslPayload_
+    , _sslResource = pSslResource_
+    }
+
+-- | Project ID for this request.
+sslProject :: Lens' SnapshotsSetLabels Text
+sslProject
+  = lens _sslProject (\ s a -> s{_sslProject = a})
+
+-- | Multipart request metadata.
+sslPayload :: Lens' SnapshotsSetLabels GlobalSetLabelsRequest
+sslPayload
+  = lens _sslPayload (\ s a -> s{_sslPayload = a})
+
+-- | Name or id of the resource for this request.
+sslResource :: Lens' SnapshotsSetLabels Text
+sslResource
+  = lens _sslResource (\ s a -> s{_sslResource = a})
+
+instance GoogleRequest SnapshotsSetLabels where
+        type Rs SnapshotsSetLabels = Operation
+        type Scopes SnapshotsSetLabels =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SnapshotsSetLabels'{..}
+          = go _sslProject _sslResource (Just AltJSON)
+              _sslPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SnapshotsSetLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Snapshots.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.testIamPermissions@.
+module Network.Google.Resource.Compute.Snapshots.TestIAMPermissions
+    (
+    -- * REST Resource
+      SnapshotsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , snapshotsTestIAMPermissions
+    , SnapshotsTestIAMPermissions
+
+    -- * Request Lenses
+    , stipProject
+    , stipPayload
+    , stipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.testIamPermissions@ method which the
+-- 'SnapshotsTestIAMPermissions' request conforms to.
+type SnapshotsTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "resource" Text :>
+                   "testIamPermissions" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TestPermissionsRequest :>
+                         Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'snapshotsTestIAMPermissions' smart constructor.
+data SnapshotsTestIAMPermissions = SnapshotsTestIAMPermissions'
+    { _stipProject  :: !Text
+    , _stipPayload  :: !TestPermissionsRequest
+    , _stipResource :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stipProject'
+--
+-- * 'stipPayload'
+--
+-- * 'stipResource'
+snapshotsTestIAMPermissions
+    :: Text -- ^ 'stipProject'
+    -> TestPermissionsRequest -- ^ 'stipPayload'
+    -> Text -- ^ 'stipResource'
+    -> SnapshotsTestIAMPermissions
+snapshotsTestIAMPermissions pStipProject_ pStipPayload_ pStipResource_ =
+    SnapshotsTestIAMPermissions'
+    { _stipProject = pStipProject_
+    , _stipPayload = pStipPayload_
+    , _stipResource = pStipResource_
+    }
+
+-- | Project ID for this request.
+stipProject :: Lens' SnapshotsTestIAMPermissions Text
+stipProject
+  = lens _stipProject (\ s a -> s{_stipProject = a})
+
+-- | Multipart request metadata.
+stipPayload :: Lens' SnapshotsTestIAMPermissions TestPermissionsRequest
+stipPayload
+  = lens _stipPayload (\ s a -> s{_stipPayload = a})
+
+-- | Name or id of the resource for this request.
+stipResource :: Lens' SnapshotsTestIAMPermissions Text
+stipResource
+  = lens _stipResource (\ s a -> s{_stipResource = a})
+
+instance GoogleRequest SnapshotsTestIAMPermissions
+         where
+        type Rs SnapshotsTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes SnapshotsTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SnapshotsTestIAMPermissions'{..}
+          = go _stipProject _stipResource (Just AltJSON)
+              _stipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SnapshotsTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Subnetworks/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/AggregatedList.hs
@@ -112,26 +112,22 @@
 salProject
   = lens _salProject (\ s a -> s{_salProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 salFilter :: Lens' SubnetworksAggregatedList (Maybe Text)
 salFilter
   = lens _salFilter (\ s a -> s{_salFilter = a})
@@ -145,7 +141,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 salMaxResults :: Lens' SubnetworksAggregatedList Word32
 salMaxResults
   = lens _salMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/Delete.hs b/gen/Network/Google/Resource/Compute/Subnetworks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/Delete.hs
@@ -33,6 +33,7 @@
     , SubnetworksDelete
 
     -- * Request Lenses
+    , sdRequestId
     , sdProject
     , sdSubnetwork
     , sdRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "subnetworks" :>
                    Capture "subnetwork" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified subnetwork.
 --
 -- /See:/ 'subnetworksDelete' smart constructor.
 data SubnetworksDelete = SubnetworksDelete'
-    { _sdProject    :: !Text
+    { _sdRequestId  :: !(Maybe Text)
+    , _sdProject    :: !Text
     , _sdSubnetwork :: !Text
     , _sdRegion     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'sdRequestId'
+--
 -- * 'sdProject'
 --
 -- * 'sdSubnetwork'
@@ -79,11 +84,26 @@
     -> SubnetworksDelete
 subnetworksDelete pSdProject_ pSdSubnetwork_ pSdRegion_ =
     SubnetworksDelete'
-    { _sdProject = pSdProject_
+    { _sdRequestId = Nothing
+    , _sdProject = pSdProject_
     , _sdSubnetwork = pSdSubnetwork_
     , _sdRegion = pSdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sdRequestId :: Lens' SubnetworksDelete (Maybe Text)
+sdRequestId
+  = lens _sdRequestId (\ s a -> s{_sdRequestId = a})
+
 -- | Project ID for this request.
 sdProject :: Lens' SubnetworksDelete Text
 sdProject
@@ -104,7 +124,7 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient SubnetworksDelete'{..}
-          = go _sdProject _sdRegion _sdSubnetwork
+          = go _sdProject _sdRegion _sdSubnetwork _sdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/ExpandIPCIdRRange.hs b/gen/Network/Google/Resource/Compute/Subnetworks/ExpandIPCIdRRange.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/ExpandIPCIdRRange.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/ExpandIPCIdRRange.hs
@@ -33,6 +33,7 @@
     , SubnetworksExpandIPCIdRRange
 
     -- * Request Lenses
+    , seicirrRequestId
     , seicirrProject
     , seicirrPayload
     , seicirrSubnetwork
@@ -54,15 +55,17 @@
                  "subnetworks" :>
                    Capture "subnetwork" Text :>
                      "expandIpCidrRange" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] SubnetworksExpandIPCIdRRangeRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] SubnetworksExpandIPCIdRRangeRequest
+                             :> Post '[JSON] Operation
 
 -- | Expands the IP CIDR range of the subnetwork to a specified value.
 --
 -- /See:/ 'subnetworksExpandIPCIdRRange' smart constructor.
 data SubnetworksExpandIPCIdRRange = SubnetworksExpandIPCIdRRange'
-    { _seicirrProject    :: !Text
+    { _seicirrRequestId  :: !(Maybe Text)
+    , _seicirrProject    :: !Text
     , _seicirrPayload    :: !SubnetworksExpandIPCIdRRangeRequest
     , _seicirrSubnetwork :: !Text
     , _seicirrRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'seicirrRequestId'
+--
 -- * 'seicirrProject'
 --
 -- * 'seicirrPayload'
@@ -87,12 +92,28 @@
     -> SubnetworksExpandIPCIdRRange
 subnetworksExpandIPCIdRRange pSeicirrProject_ pSeicirrPayload_ pSeicirrSubnetwork_ pSeicirrRegion_ =
     SubnetworksExpandIPCIdRRange'
-    { _seicirrProject = pSeicirrProject_
+    { _seicirrRequestId = Nothing
+    , _seicirrProject = pSeicirrProject_
     , _seicirrPayload = pSeicirrPayload_
     , _seicirrSubnetwork = pSeicirrSubnetwork_
     , _seicirrRegion = pSeicirrRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+seicirrRequestId :: Lens' SubnetworksExpandIPCIdRRange (Maybe Text)
+seicirrRequestId
+  = lens _seicirrRequestId
+      (\ s a -> s{_seicirrRequestId = a})
+
 -- | Project ID for this request.
 seicirrProject :: Lens' SubnetworksExpandIPCIdRRange Text
 seicirrProject
@@ -126,6 +147,7 @@
         requestClient SubnetworksExpandIPCIdRRange'{..}
           = go _seicirrProject _seicirrRegion
               _seicirrSubnetwork
+              _seicirrRequestId
               (Just AltJSON)
               _seicirrPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/Get.hs b/gen/Network/Google/Resource/Compute/Subnetworks/Get.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified subnetwork. Get a list of available subnetworks
+-- Returns the specified subnetwork. Gets a list of available subnetworks
 -- list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.get@.
@@ -55,7 +55,7 @@
                    Capture "subnetwork" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] Subnetwork
 
--- | Returns the specified subnetwork. Get a list of available subnetworks
+-- | Returns the specified subnetwork. Gets a list of available subnetworks
 -- list() request.
 --
 -- /See:/ 'subnetworksGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Subnetworks.GetIAMPolicy
+-- 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 access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.getIamPolicy@.
+module Network.Google.Resource.Compute.Subnetworks.GetIAMPolicy
+    (
+    -- * REST Resource
+      SubnetworksGetIAMPolicyResource
+
+    -- * Creating a Request
+    , subnetworksGetIAMPolicy
+    , SubnetworksGetIAMPolicy
+
+    -- * Request Lenses
+    , sgipProject
+    , sgipResource
+    , sgipRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.getIamPolicy@ method which the
+-- 'SubnetworksGetIAMPolicy' request conforms to.
+type SubnetworksGetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "subnetworks" :>
+                   Capture "resource" Text :>
+                     "getIamPolicy" :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. May be empty if no such
+-- policy or resource exists.
+--
+-- /See:/ 'subnetworksGetIAMPolicy' smart constructor.
+data SubnetworksGetIAMPolicy = SubnetworksGetIAMPolicy'
+    { _sgipProject  :: !Text
+    , _sgipResource :: !Text
+    , _sgipRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgipProject'
+--
+-- * 'sgipResource'
+--
+-- * 'sgipRegion'
+subnetworksGetIAMPolicy
+    :: Text -- ^ 'sgipProject'
+    -> Text -- ^ 'sgipResource'
+    -> Text -- ^ 'sgipRegion'
+    -> SubnetworksGetIAMPolicy
+subnetworksGetIAMPolicy pSgipProject_ pSgipResource_ pSgipRegion_ =
+    SubnetworksGetIAMPolicy'
+    { _sgipProject = pSgipProject_
+    , _sgipResource = pSgipResource_
+    , _sgipRegion = pSgipRegion_
+    }
+
+-- | Project ID for this request.
+sgipProject :: Lens' SubnetworksGetIAMPolicy Text
+sgipProject
+  = lens _sgipProject (\ s a -> s{_sgipProject = a})
+
+-- | Name or id of the resource for this request.
+sgipResource :: Lens' SubnetworksGetIAMPolicy Text
+sgipResource
+  = lens _sgipResource (\ s a -> s{_sgipResource = a})
+
+-- | The name of the region for this request.
+sgipRegion :: Lens' SubnetworksGetIAMPolicy Text
+sgipRegion
+  = lens _sgipRegion (\ s a -> s{_sgipRegion = a})
+
+instance GoogleRequest SubnetworksGetIAMPolicy where
+        type Rs SubnetworksGetIAMPolicy = Policy
+        type Scopes SubnetworksGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SubnetworksGetIAMPolicy'{..}
+          = go _sgipProject _sgipRegion _sgipResource
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SubnetworksGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/Insert.hs b/gen/Network/Google/Resource/Compute/Subnetworks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/Insert.hs
@@ -34,6 +34,7 @@
     , SubnetworksInsert
 
     -- * Request Lenses
+    , siRequestId
     , siProject
     , siPayload
     , siRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "subnetworks" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Subnetwork :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Subnetwork :> Post '[JSON] Operation
 
 -- | Creates a subnetwork in the specified project using the data included in
 -- the request.
 --
 -- /See:/ 'subnetworksInsert' smart constructor.
 data SubnetworksInsert = SubnetworksInsert'
-    { _siProject :: !Text
-    , _siPayload :: !Subnetwork
-    , _siRegion  :: !Text
+    { _siRequestId :: !(Maybe Text)
+    , _siProject   :: !Text
+    , _siPayload   :: !Subnetwork
+    , _siRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'SubnetworksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'siRequestId'
+--
 -- * 'siProject'
 --
 -- * 'siPayload'
@@ -81,11 +86,26 @@
     -> SubnetworksInsert
 subnetworksInsert pSiProject_ pSiPayload_ pSiRegion_ =
     SubnetworksInsert'
-    { _siProject = pSiProject_
+    { _siRequestId = Nothing
+    , _siProject = pSiProject_
     , _siPayload = pSiPayload_
     , _siRegion = pSiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+siRequestId :: Lens' SubnetworksInsert (Maybe Text)
+siRequestId
+  = lens _siRequestId (\ s a -> s{_siRequestId = a})
+
 -- | Project ID for this request.
 siProject :: Lens' SubnetworksInsert Text
 siProject
@@ -106,7 +126,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient SubnetworksInsert'{..}
-          = go _siProject _siRegion (Just AltJSON) _siPayload
+          = go _siProject _siRegion _siRequestId (Just AltJSON)
+              _siPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/List.hs b/gen/Network/Google/Resource/Compute/Subnetworks/List.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/List.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/List.hs
@@ -119,26 +119,22 @@
 slProject
   = lens _slProject (\ s a -> s{_slProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 slFilter :: Lens' SubnetworksList (Maybe Text)
 slFilter = lens _slFilter (\ s a -> s{_slFilter = a})
 
@@ -155,7 +151,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 slMaxResults :: Lens' SubnetworksList Word32
 slMaxResults
   = lens _slMaxResults (\ s a -> s{_slMaxResults = a})
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs b/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.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.Compute.Subnetworks.ListUsable
+-- 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 an aggregated list of usable subnetworks.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.listUsable@.
+module Network.Google.Resource.Compute.Subnetworks.ListUsable
+    (
+    -- * REST Resource
+      SubnetworksListUsableResource
+
+    -- * Creating a Request
+    , subnetworksListUsable
+    , SubnetworksListUsable
+
+    -- * Request Lenses
+    , sluOrderBy
+    , sluProject
+    , sluFilter
+    , sluPageToken
+    , sluMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.listUsable@ method which the
+-- 'SubnetworksListUsable' request conforms to.
+type SubnetworksListUsableResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "subnetworks" :>
+                 "listUsable" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] UsableSubnetworksAggregatedList
+
+-- | Retrieves an aggregated list of usable subnetworks.
+--
+-- /See:/ 'subnetworksListUsable' smart constructor.
+data SubnetworksListUsable = SubnetworksListUsable'
+    { _sluOrderBy    :: !(Maybe Text)
+    , _sluProject    :: !Text
+    , _sluFilter     :: !(Maybe Text)
+    , _sluPageToken  :: !(Maybe Text)
+    , _sluMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksListUsable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sluOrderBy'
+--
+-- * 'sluProject'
+--
+-- * 'sluFilter'
+--
+-- * 'sluPageToken'
+--
+-- * 'sluMaxResults'
+subnetworksListUsable
+    :: Text -- ^ 'sluProject'
+    -> SubnetworksListUsable
+subnetworksListUsable pSluProject_ =
+    SubnetworksListUsable'
+    { _sluOrderBy = Nothing
+    , _sluProject = pSluProject_
+    , _sluFilter = Nothing
+    , _sluPageToken = Nothing
+    , _sluMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+sluOrderBy :: Lens' SubnetworksListUsable (Maybe Text)
+sluOrderBy
+  = lens _sluOrderBy (\ s a -> s{_sluOrderBy = a})
+
+-- | Project ID for this request.
+sluProject :: Lens' SubnetworksListUsable Text
+sluProject
+  = lens _sluProject (\ s a -> s{_sluProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+sluFilter :: Lens' SubnetworksListUsable (Maybe Text)
+sluFilter
+  = lens _sluFilter (\ s a -> s{_sluFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+sluPageToken :: Lens' SubnetworksListUsable (Maybe Text)
+sluPageToken
+  = lens _sluPageToken (\ s a -> s{_sluPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+sluMaxResults :: Lens' SubnetworksListUsable Word32
+sluMaxResults
+  = lens _sluMaxResults
+      (\ s a -> s{_sluMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest SubnetworksListUsable where
+        type Rs SubnetworksListUsable =
+             UsableSubnetworksAggregatedList
+        type Scopes SubnetworksListUsable =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SubnetworksListUsable'{..}
+          = go _sluProject _sluOrderBy _sluFilter _sluPageToken
+              (Just _sluMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SubnetworksListUsableResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs b/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Subnetworks.Patch
+-- 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)
+--
+-- Patches the specified subnetwork with the data included in the request.
+-- Only certain fields can up updated with a patch request as indicated in
+-- the field descriptions. You must specify the current fingeprint of the
+-- subnetwork resource being patched.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.patch@.
+module Network.Google.Resource.Compute.Subnetworks.Patch
+    (
+    -- * REST Resource
+      SubnetworksPatchResource
+
+    -- * Creating a Request
+    , subnetworksPatch
+    , SubnetworksPatch
+
+    -- * Request Lenses
+    , spRequestId
+    , spProject
+    , spPayload
+    , spSubnetwork
+    , spRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.patch@ method which the
+-- 'SubnetworksPatch' request conforms to.
+type SubnetworksPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "subnetworks" :>
+                   Capture "subnetwork" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Subnetwork :> Patch '[JSON] Operation
+
+-- | Patches the specified subnetwork with the data included in the request.
+-- Only certain fields can up updated with a patch request as indicated in
+-- the field descriptions. You must specify the current fingeprint of the
+-- subnetwork resource being patched.
+--
+-- /See:/ 'subnetworksPatch' smart constructor.
+data SubnetworksPatch = SubnetworksPatch'
+    { _spRequestId  :: !(Maybe Text)
+    , _spProject    :: !Text
+    , _spPayload    :: !Subnetwork
+    , _spSubnetwork :: !Text
+    , _spRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spRequestId'
+--
+-- * 'spProject'
+--
+-- * 'spPayload'
+--
+-- * 'spSubnetwork'
+--
+-- * 'spRegion'
+subnetworksPatch
+    :: Text -- ^ 'spProject'
+    -> Subnetwork -- ^ 'spPayload'
+    -> Text -- ^ 'spSubnetwork'
+    -> Text -- ^ 'spRegion'
+    -> SubnetworksPatch
+subnetworksPatch pSpProject_ pSpPayload_ pSpSubnetwork_ pSpRegion_ =
+    SubnetworksPatch'
+    { _spRequestId = Nothing
+    , _spProject = pSpProject_
+    , _spPayload = pSpPayload_
+    , _spSubnetwork = pSpSubnetwork_
+    , _spRegion = pSpRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+spRequestId :: Lens' SubnetworksPatch (Maybe Text)
+spRequestId
+  = lens _spRequestId (\ s a -> s{_spRequestId = a})
+
+-- | Project ID for this request.
+spProject :: Lens' SubnetworksPatch Text
+spProject
+  = lens _spProject (\ s a -> s{_spProject = a})
+
+-- | Multipart request metadata.
+spPayload :: Lens' SubnetworksPatch Subnetwork
+spPayload
+  = lens _spPayload (\ s a -> s{_spPayload = a})
+
+-- | Name of the Subnetwork resource to patch.
+spSubnetwork :: Lens' SubnetworksPatch Text
+spSubnetwork
+  = lens _spSubnetwork (\ s a -> s{_spSubnetwork = a})
+
+-- | Name of the region scoping this request.
+spRegion :: Lens' SubnetworksPatch Text
+spRegion = lens _spRegion (\ s a -> s{_spRegion = a})
+
+instance GoogleRequest SubnetworksPatch where
+        type Rs SubnetworksPatch = Operation
+        type Scopes SubnetworksPatch =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SubnetworksPatch'{..}
+          = go _spProject _spRegion _spSubnetwork _spRequestId
+              (Just AltJSON)
+              _spPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SubnetworksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Subnetworks.SetIAMPolicy
+-- 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 access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.setIamPolicy@.
+module Network.Google.Resource.Compute.Subnetworks.SetIAMPolicy
+    (
+    -- * REST Resource
+      SubnetworksSetIAMPolicyResource
+
+    -- * Creating a Request
+    , subnetworksSetIAMPolicy
+    , SubnetworksSetIAMPolicy
+
+    -- * Request Lenses
+    , ssiampProject
+    , ssiampPayload
+    , ssiampResource
+    , ssiampRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.setIamPolicy@ method which the
+-- 'SubnetworksSetIAMPolicy' request conforms to.
+type SubnetworksSetIAMPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "subnetworks" :>
+                   Capture "resource" Text :>
+                     "setIamPolicy" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] RegionSetPolicyRequest :>
+                           Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'subnetworksSetIAMPolicy' smart constructor.
+data SubnetworksSetIAMPolicy = SubnetworksSetIAMPolicy'
+    { _ssiampProject  :: !Text
+    , _ssiampPayload  :: !RegionSetPolicyRequest
+    , _ssiampResource :: !Text
+    , _ssiampRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssiampProject'
+--
+-- * 'ssiampPayload'
+--
+-- * 'ssiampResource'
+--
+-- * 'ssiampRegion'
+subnetworksSetIAMPolicy
+    :: Text -- ^ 'ssiampProject'
+    -> RegionSetPolicyRequest -- ^ 'ssiampPayload'
+    -> Text -- ^ 'ssiampResource'
+    -> Text -- ^ 'ssiampRegion'
+    -> SubnetworksSetIAMPolicy
+subnetworksSetIAMPolicy pSsiampProject_ pSsiampPayload_ pSsiampResource_ pSsiampRegion_ =
+    SubnetworksSetIAMPolicy'
+    { _ssiampProject = pSsiampProject_
+    , _ssiampPayload = pSsiampPayload_
+    , _ssiampResource = pSsiampResource_
+    , _ssiampRegion = pSsiampRegion_
+    }
+
+-- | Project ID for this request.
+ssiampProject :: Lens' SubnetworksSetIAMPolicy Text
+ssiampProject
+  = lens _ssiampProject
+      (\ s a -> s{_ssiampProject = a})
+
+-- | Multipart request metadata.
+ssiampPayload :: Lens' SubnetworksSetIAMPolicy RegionSetPolicyRequest
+ssiampPayload
+  = lens _ssiampPayload
+      (\ s a -> s{_ssiampPayload = a})
+
+-- | Name or id of the resource for this request.
+ssiampResource :: Lens' SubnetworksSetIAMPolicy Text
+ssiampResource
+  = lens _ssiampResource
+      (\ s a -> s{_ssiampResource = a})
+
+-- | The name of the region for this request.
+ssiampRegion :: Lens' SubnetworksSetIAMPolicy Text
+ssiampRegion
+  = lens _ssiampRegion (\ s a -> s{_ssiampRegion = a})
+
+instance GoogleRequest SubnetworksSetIAMPolicy where
+        type Rs SubnetworksSetIAMPolicy = Policy
+        type Scopes SubnetworksSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient SubnetworksSetIAMPolicy'{..}
+          = go _ssiampProject _ssiampRegion _ssiampResource
+              (Just AltJSON)
+              _ssiampPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SubnetworksSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs b/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Subnetworks.SetPrivateIPGoogleAccess
+-- 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)
+--
+-- Set whether VMs in this subnet can access Google services without
+-- assigning external IP addresses through Private Google Access.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.setPrivateIpGoogleAccess@.
+module Network.Google.Resource.Compute.Subnetworks.SetPrivateIPGoogleAccess
+    (
+    -- * REST Resource
+      SubnetworksSetPrivateIPGoogleAccessResource
+
+    -- * Creating a Request
+    , subnetworksSetPrivateIPGoogleAccess
+    , SubnetworksSetPrivateIPGoogleAccess
+
+    -- * Request Lenses
+    , sspigaRequestId
+    , sspigaProject
+    , sspigaPayload
+    , sspigaSubnetwork
+    , sspigaRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.setPrivateIpGoogleAccess@ method which the
+-- 'SubnetworksSetPrivateIPGoogleAccess' request conforms to.
+type SubnetworksSetPrivateIPGoogleAccessResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "subnetworks" :>
+                   Capture "subnetwork" Text :>
+                     "setPrivateIpGoogleAccess" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             SubnetworksSetPrivateIPGoogleAccessRequest
+                             :> Post '[JSON] Operation
+
+-- | Set whether VMs in this subnet can access Google services without
+-- assigning external IP addresses through Private Google Access.
+--
+-- /See:/ 'subnetworksSetPrivateIPGoogleAccess' smart constructor.
+data SubnetworksSetPrivateIPGoogleAccess = SubnetworksSetPrivateIPGoogleAccess'
+    { _sspigaRequestId  :: !(Maybe Text)
+    , _sspigaProject    :: !Text
+    , _sspigaPayload    :: !SubnetworksSetPrivateIPGoogleAccessRequest
+    , _sspigaSubnetwork :: !Text
+    , _sspigaRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksSetPrivateIPGoogleAccess' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sspigaRequestId'
+--
+-- * 'sspigaProject'
+--
+-- * 'sspigaPayload'
+--
+-- * 'sspigaSubnetwork'
+--
+-- * 'sspigaRegion'
+subnetworksSetPrivateIPGoogleAccess
+    :: Text -- ^ 'sspigaProject'
+    -> SubnetworksSetPrivateIPGoogleAccessRequest -- ^ 'sspigaPayload'
+    -> Text -- ^ 'sspigaSubnetwork'
+    -> Text -- ^ 'sspigaRegion'
+    -> SubnetworksSetPrivateIPGoogleAccess
+subnetworksSetPrivateIPGoogleAccess pSspigaProject_ pSspigaPayload_ pSspigaSubnetwork_ pSspigaRegion_ =
+    SubnetworksSetPrivateIPGoogleAccess'
+    { _sspigaRequestId = Nothing
+    , _sspigaProject = pSspigaProject_
+    , _sspigaPayload = pSspigaPayload_
+    , _sspigaSubnetwork = pSspigaSubnetwork_
+    , _sspigaRegion = pSspigaRegion_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+sspigaRequestId :: Lens' SubnetworksSetPrivateIPGoogleAccess (Maybe Text)
+sspigaRequestId
+  = lens _sspigaRequestId
+      (\ s a -> s{_sspigaRequestId = a})
+
+-- | Project ID for this request.
+sspigaProject :: Lens' SubnetworksSetPrivateIPGoogleAccess Text
+sspigaProject
+  = lens _sspigaProject
+      (\ s a -> s{_sspigaProject = a})
+
+-- | Multipart request metadata.
+sspigaPayload :: Lens' SubnetworksSetPrivateIPGoogleAccess SubnetworksSetPrivateIPGoogleAccessRequest
+sspigaPayload
+  = lens _sspigaPayload
+      (\ s a -> s{_sspigaPayload = a})
+
+-- | Name of the Subnetwork resource.
+sspigaSubnetwork :: Lens' SubnetworksSetPrivateIPGoogleAccess Text
+sspigaSubnetwork
+  = lens _sspigaSubnetwork
+      (\ s a -> s{_sspigaSubnetwork = a})
+
+-- | Name of the region scoping this request.
+sspigaRegion :: Lens' SubnetworksSetPrivateIPGoogleAccess Text
+sspigaRegion
+  = lens _sspigaRegion (\ s a -> s{_sspigaRegion = a})
+
+instance GoogleRequest
+         SubnetworksSetPrivateIPGoogleAccess where
+        type Rs SubnetworksSetPrivateIPGoogleAccess =
+             Operation
+        type Scopes SubnetworksSetPrivateIPGoogleAccess =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient
+          SubnetworksSetPrivateIPGoogleAccess'{..}
+          = go _sspigaProject _sspigaRegion _sspigaSubnetwork
+              _sspigaRequestId
+              (Just AltJSON)
+              _sspigaPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy SubnetworksSetPrivateIPGoogleAccessResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Subnetworks.TestIAMPermissions
+-- 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 permissions that a caller has on the specified resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.subnetworks.testIamPermissions@.
+module Network.Google.Resource.Compute.Subnetworks.TestIAMPermissions
+    (
+    -- * REST Resource
+      SubnetworksTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , subnetworksTestIAMPermissions
+    , SubnetworksTestIAMPermissions
+
+    -- * Request Lenses
+    , stiampProject
+    , stiampPayload
+    , stiampResource
+    , stiampRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.subnetworks.testIamPermissions@ method which the
+-- 'SubnetworksTestIAMPermissions' request conforms to.
+type SubnetworksTestIAMPermissionsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "subnetworks" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'subnetworksTestIAMPermissions' smart constructor.
+data SubnetworksTestIAMPermissions = SubnetworksTestIAMPermissions'
+    { _stiampProject  :: !Text
+    , _stiampPayload  :: !TestPermissionsRequest
+    , _stiampResource :: !Text
+    , _stiampRegion   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SubnetworksTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'stiampProject'
+--
+-- * 'stiampPayload'
+--
+-- * 'stiampResource'
+--
+-- * 'stiampRegion'
+subnetworksTestIAMPermissions
+    :: Text -- ^ 'stiampProject'
+    -> TestPermissionsRequest -- ^ 'stiampPayload'
+    -> Text -- ^ 'stiampResource'
+    -> Text -- ^ 'stiampRegion'
+    -> SubnetworksTestIAMPermissions
+subnetworksTestIAMPermissions pStiampProject_ pStiampPayload_ pStiampResource_ pStiampRegion_ =
+    SubnetworksTestIAMPermissions'
+    { _stiampProject = pStiampProject_
+    , _stiampPayload = pStiampPayload_
+    , _stiampResource = pStiampResource_
+    , _stiampRegion = pStiampRegion_
+    }
+
+-- | Project ID for this request.
+stiampProject :: Lens' SubnetworksTestIAMPermissions Text
+stiampProject
+  = lens _stiampProject
+      (\ s a -> s{_stiampProject = a})
+
+-- | Multipart request metadata.
+stiampPayload :: Lens' SubnetworksTestIAMPermissions TestPermissionsRequest
+stiampPayload
+  = lens _stiampPayload
+      (\ s a -> s{_stiampPayload = a})
+
+-- | Name or id of the resource for this request.
+stiampResource :: Lens' SubnetworksTestIAMPermissions Text
+stiampResource
+  = lens _stiampResource
+      (\ s a -> s{_stiampResource = a})
+
+-- | The name of the region for this request.
+stiampRegion :: Lens' SubnetworksTestIAMPermissions Text
+stiampRegion
+  = lens _stiampRegion (\ s a -> s{_stiampRegion = a})
+
+instance GoogleRequest SubnetworksTestIAMPermissions
+         where
+        type Rs SubnetworksTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes SubnetworksTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient SubnetworksTestIAMPermissions'{..}
+          = go _stiampProject _stiampRegion _stiampResource
+              (Just AltJSON)
+              _stiampPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy SubnetworksTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs
@@ -33,6 +33,7 @@
     , TargetHTTPProxiesDelete
 
     -- * Request Lenses
+    , thttppdRequestId
     , thttppdProject
     , thttppdTargetHTTPProxy
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "targetHttpProxies" :>
                  Capture "targetHttpProxy" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified TargetHttpProxy resource.
 --
 -- /See:/ 'targetHTTPProxiesDelete' smart constructor.
 data TargetHTTPProxiesDelete = TargetHTTPProxiesDelete'
-    { _thttppdProject         :: !Text
+    { _thttppdRequestId       :: !(Maybe Text)
+    , _thttppdProject         :: !Text
     , _thttppdTargetHTTPProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thttppdRequestId'
+--
 -- * 'thttppdProject'
 --
 -- * 'thttppdTargetHTTPProxy'
@@ -73,10 +78,26 @@
     -> TargetHTTPProxiesDelete
 targetHTTPProxiesDelete pThttppdProject_ pThttppdTargetHTTPProxy_ =
     TargetHTTPProxiesDelete'
-    { _thttppdProject = pThttppdProject_
+    { _thttppdRequestId = Nothing
+    , _thttppdProject = pThttppdProject_
     , _thttppdTargetHTTPProxy = pThttppdTargetHTTPProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thttppdRequestId :: Lens' TargetHTTPProxiesDelete (Maybe Text)
+thttppdRequestId
+  = lens _thttppdRequestId
+      (\ s a -> s{_thttppdRequestId = a})
+
 -- | Project ID for this request.
 thttppdProject :: Lens' TargetHTTPProxiesDelete Text
 thttppdProject
@@ -96,6 +117,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPProxiesDelete'{..}
           = go _thttppdProject _thttppdTargetHTTPProxy
+              _thttppdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified TargetHttpProxy resource. Get a list of available
+-- Returns the specified TargetHttpProxy resource. Gets a list of available
 -- target HTTP proxies by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.get@.
@@ -54,7 +54,7 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] TargetHTTPProxy
 
--- | Returns the specified TargetHttpProxy resource. Get a list of available
+-- | Returns the specified TargetHttpProxy resource. Gets a list of available
 -- target HTTP proxies by making a list() request.
 --
 -- /See:/ 'targetHTTPProxiesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs
@@ -34,6 +34,7 @@
     , TargetHTTPProxiesInsert
 
     -- * Request Lenses
+    , thttppiRequestId
     , thttppiProject
     , thttppiPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "targetHttpProxies" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] TargetHTTPProxy :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetHTTPProxy :>
+                       Post '[JSON] Operation
 
 -- | Creates a TargetHttpProxy resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'targetHTTPProxiesInsert' smart constructor.
 data TargetHTTPProxiesInsert = TargetHTTPProxiesInsert'
-    { _thttppiProject :: !Text
-    , _thttppiPayload :: !TargetHTTPProxy
+    { _thttppiRequestId :: !(Maybe Text)
+    , _thttppiProject   :: !Text
+    , _thttppiPayload   :: !TargetHTTPProxy
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetHTTPProxiesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thttppiRequestId'
+--
 -- * 'thttppiProject'
 --
 -- * 'thttppiPayload'
@@ -76,10 +81,26 @@
     -> TargetHTTPProxiesInsert
 targetHTTPProxiesInsert pThttppiProject_ pThttppiPayload_ =
     TargetHTTPProxiesInsert'
-    { _thttppiProject = pThttppiProject_
+    { _thttppiRequestId = Nothing
+    , _thttppiProject = pThttppiProject_
     , _thttppiPayload = pThttppiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thttppiRequestId :: Lens' TargetHTTPProxiesInsert (Maybe Text)
+thttppiRequestId
+  = lens _thttppiRequestId
+      (\ s a -> s{_thttppiRequestId = a})
+
 -- | Project ID for this request.
 thttppiProject :: Lens' TargetHTTPProxiesInsert Text
 thttppiProject
@@ -98,7 +119,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPProxiesInsert'{..}
-          = go _thttppiProject (Just AltJSON) _thttppiPayload
+          = go _thttppiProject _thttppiRequestId (Just AltJSON)
+              _thttppiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs
@@ -116,26 +116,22 @@
   = lens _thttpplProject
       (\ s a -> s{_thttpplProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 thttpplFilter :: Lens' TargetHTTPProxiesList (Maybe Text)
 thttpplFilter
   = lens _thttpplFilter
@@ -151,7 +147,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 thttpplMaxResults :: Lens' TargetHTTPProxiesList Word32
 thttpplMaxResults
   = lens _thttpplMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs
@@ -33,6 +33,7 @@
     , TargetHTTPProxiesSetURLMap
 
     -- * Request Lenses
+    , thttppsumRequestId
     , thttppsumProject
     , thttppsumPayload
     , thttppsumTargetHTTPProxy
@@ -51,15 +52,17 @@
              "targetHttpProxies" :>
                Capture "targetHttpProxy" Text :>
                  "setUrlMap" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] URLMapReference :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] URLMapReference :>
+                         Post '[JSON] Operation
 
 -- | Changes the URL map for TargetHttpProxy.
 --
 -- /See:/ 'targetHTTPProxiesSetURLMap' smart constructor.
 data TargetHTTPProxiesSetURLMap = TargetHTTPProxiesSetURLMap'
-    { _thttppsumProject         :: !Text
+    { _thttppsumRequestId       :: !(Maybe Text)
+    , _thttppsumProject         :: !Text
     , _thttppsumPayload         :: !URLMapReference
     , _thttppsumTargetHTTPProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -68,6 +71,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thttppsumRequestId'
+--
 -- * 'thttppsumProject'
 --
 -- * 'thttppsumPayload'
@@ -80,11 +85,27 @@
     -> TargetHTTPProxiesSetURLMap
 targetHTTPProxiesSetURLMap pThttppsumProject_ pThttppsumPayload_ pThttppsumTargetHTTPProxy_ =
     TargetHTTPProxiesSetURLMap'
-    { _thttppsumProject = pThttppsumProject_
+    { _thttppsumRequestId = Nothing
+    , _thttppsumProject = pThttppsumProject_
     , _thttppsumPayload = pThttppsumPayload_
     , _thttppsumTargetHTTPProxy = pThttppsumTargetHTTPProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thttppsumRequestId :: Lens' TargetHTTPProxiesSetURLMap (Maybe Text)
+thttppsumRequestId
+  = lens _thttppsumRequestId
+      (\ s a -> s{_thttppsumRequestId = a})
+
 -- | Project ID for this request.
 thttppsumProject :: Lens' TargetHTTPProxiesSetURLMap Text
 thttppsumProject
@@ -111,6 +132,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPProxiesSetURLMap'{..}
           = go _thttppsumProject _thttppsumTargetHTTPProxy
+              _thttppsumRequestId
               (Just AltJSON)
               _thttppsumPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs
@@ -33,6 +33,7 @@
     , TargetHTTPSProxiesDelete
 
     -- * Request Lenses
+    , thpdRequestId
     , thpdProject
     , thpdTargetHTTPSProxy
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "targetHttpsProxies" :>
                  Capture "targetHttpsProxy" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified TargetHttpsProxy resource.
 --
 -- /See:/ 'targetHTTPSProxiesDelete' smart constructor.
 data TargetHTTPSProxiesDelete = TargetHTTPSProxiesDelete'
-    { _thpdProject          :: !Text
+    { _thpdRequestId        :: !(Maybe Text)
+    , _thpdProject          :: !Text
     , _thpdTargetHTTPSProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thpdRequestId'
+--
 -- * 'thpdProject'
 --
 -- * 'thpdTargetHTTPSProxy'
@@ -73,10 +78,26 @@
     -> TargetHTTPSProxiesDelete
 targetHTTPSProxiesDelete pThpdProject_ pThpdTargetHTTPSProxy_ =
     TargetHTTPSProxiesDelete'
-    { _thpdProject = pThpdProject_
+    { _thpdRequestId = Nothing
+    , _thpdProject = pThpdProject_
     , _thpdTargetHTTPSProxy = pThpdTargetHTTPSProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpdRequestId :: Lens' TargetHTTPSProxiesDelete (Maybe Text)
+thpdRequestId
+  = lens _thpdRequestId
+      (\ s a -> s{_thpdRequestId = a})
+
 -- | Project ID for this request.
 thpdProject :: Lens' TargetHTTPSProxiesDelete Text
 thpdProject
@@ -95,6 +116,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPSProxiesDelete'{..}
           = go _thpdProject _thpdTargetHTTPSProxy
+              _thpdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified TargetHttpsProxy resource. Get a list of available
--- target HTTPS proxies by making a list() request.
+-- Returns the specified TargetHttpsProxy resource. Gets a list of
+-- available target HTTPS proxies by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.get@.
 module Network.Google.Resource.Compute.TargetHTTPSProxies.Get
@@ -54,8 +54,8 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] TargetHTTPSProxy
 
--- | Returns the specified TargetHttpsProxy resource. Get a list of available
--- target HTTPS proxies by making a list() request.
+-- | Returns the specified TargetHttpsProxy resource. Gets a list of
+-- available target HTTPS proxies by making a list() request.
 --
 -- /See:/ 'targetHTTPSProxiesGet' smart constructor.
 data TargetHTTPSProxiesGet = TargetHTTPSProxiesGet'
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs
@@ -34,6 +34,7 @@
     , TargetHTTPSProxiesInsert
 
     -- * Request Lenses
+    , thpiRequestId
     , thpiProject
     , thpiPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "targetHttpsProxies" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] TargetHTTPSProxy :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetHTTPSProxy :>
+                       Post '[JSON] Operation
 
 -- | Creates a TargetHttpsProxy resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'targetHTTPSProxiesInsert' smart constructor.
 data TargetHTTPSProxiesInsert = TargetHTTPSProxiesInsert'
-    { _thpiProject :: !Text
-    , _thpiPayload :: !TargetHTTPSProxy
+    { _thpiRequestId :: !(Maybe Text)
+    , _thpiProject   :: !Text
+    , _thpiPayload   :: !TargetHTTPSProxy
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetHTTPSProxiesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thpiRequestId'
+--
 -- * 'thpiProject'
 --
 -- * 'thpiPayload'
@@ -76,10 +81,26 @@
     -> TargetHTTPSProxiesInsert
 targetHTTPSProxiesInsert pThpiProject_ pThpiPayload_ =
     TargetHTTPSProxiesInsert'
-    { _thpiProject = pThpiProject_
+    { _thpiRequestId = Nothing
+    , _thpiProject = pThpiProject_
     , _thpiPayload = pThpiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpiRequestId :: Lens' TargetHTTPSProxiesInsert (Maybe Text)
+thpiRequestId
+  = lens _thpiRequestId
+      (\ s a -> s{_thpiRequestId = a})
+
 -- | Project ID for this request.
 thpiProject :: Lens' TargetHTTPSProxiesInsert Text
 thpiProject
@@ -96,7 +117,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPSProxiesInsert'{..}
-          = go _thpiProject (Just AltJSON) _thpiPayload
+          = go _thpiProject _thpiRequestId (Just AltJSON)
+              _thpiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs
@@ -114,26 +114,22 @@
 thplProject
   = lens _thplProject (\ s a -> s{_thplProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 thplFilter :: Lens' TargetHTTPSProxiesList (Maybe Text)
 thplFilter
   = lens _thplFilter (\ s a -> s{_thplFilter = a})
@@ -148,7 +144,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 thplMaxResults :: Lens' TargetHTTPSProxiesList Word32
 thplMaxResults
   = lens _thplMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetHTTPSProxies.SetQuicOverride
+-- 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 QUIC override policy for TargetHttpsProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.setQuicOverride@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.SetQuicOverride
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesSetQuicOverrideResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesSetQuicOverride
+    , TargetHTTPSProxiesSetQuicOverride
+
+    -- * Request Lenses
+    , thpsqoRequestId
+    , thpsqoProject
+    , thpsqoPayload
+    , thpsqoTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.setQuicOverride@ method which the
+-- 'TargetHTTPSProxiesSetQuicOverride' request conforms to.
+type TargetHTTPSProxiesSetQuicOverrideResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 Capture "targetHttpsProxy" Text :>
+                   "setQuicOverride" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           TargetHTTPSProxiesSetQuicOverrideRequest
+                           :> Post '[JSON] Operation
+
+-- | Sets the QUIC override policy for TargetHttpsProxy.
+--
+-- /See:/ 'targetHTTPSProxiesSetQuicOverride' smart constructor.
+data TargetHTTPSProxiesSetQuicOverride = TargetHTTPSProxiesSetQuicOverride'
+    { _thpsqoRequestId        :: !(Maybe Text)
+    , _thpsqoProject          :: !Text
+    , _thpsqoPayload          :: !TargetHTTPSProxiesSetQuicOverrideRequest
+    , _thpsqoTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetQuicOverride' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsqoRequestId'
+--
+-- * 'thpsqoProject'
+--
+-- * 'thpsqoPayload'
+--
+-- * 'thpsqoTargetHTTPSProxy'
+targetHTTPSProxiesSetQuicOverride
+    :: Text -- ^ 'thpsqoProject'
+    -> TargetHTTPSProxiesSetQuicOverrideRequest -- ^ 'thpsqoPayload'
+    -> Text -- ^ 'thpsqoTargetHTTPSProxy'
+    -> TargetHTTPSProxiesSetQuicOverride
+targetHTTPSProxiesSetQuicOverride pThpsqoProject_ pThpsqoPayload_ pThpsqoTargetHTTPSProxy_ =
+    TargetHTTPSProxiesSetQuicOverride'
+    { _thpsqoRequestId = Nothing
+    , _thpsqoProject = pThpsqoProject_
+    , _thpsqoPayload = pThpsqoPayload_
+    , _thpsqoTargetHTTPSProxy = pThpsqoTargetHTTPSProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpsqoRequestId :: Lens' TargetHTTPSProxiesSetQuicOverride (Maybe Text)
+thpsqoRequestId
+  = lens _thpsqoRequestId
+      (\ s a -> s{_thpsqoRequestId = a})
+
+-- | Project ID for this request.
+thpsqoProject :: Lens' TargetHTTPSProxiesSetQuicOverride Text
+thpsqoProject
+  = lens _thpsqoProject
+      (\ s a -> s{_thpsqoProject = a})
+
+-- | Multipart request metadata.
+thpsqoPayload :: Lens' TargetHTTPSProxiesSetQuicOverride TargetHTTPSProxiesSetQuicOverrideRequest
+thpsqoPayload
+  = lens _thpsqoPayload
+      (\ s a -> s{_thpsqoPayload = a})
+
+-- | Name of the TargetHttpsProxy resource to set the QUIC override policy
+-- for. The name should conform to RFC1035.
+thpsqoTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetQuicOverride Text
+thpsqoTargetHTTPSProxy
+  = lens _thpsqoTargetHTTPSProxy
+      (\ s a -> s{_thpsqoTargetHTTPSProxy = a})
+
+instance GoogleRequest
+         TargetHTTPSProxiesSetQuicOverride where
+        type Rs TargetHTTPSProxiesSetQuicOverride = Operation
+        type Scopes TargetHTTPSProxiesSetQuicOverride =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetHTTPSProxiesSetQuicOverride'{..}
+          = go _thpsqoProject _thpsqoTargetHTTPSProxy
+              _thpsqoRequestId
+              (Just AltJSON)
+              _thpsqoPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetHTTPSProxiesSetQuicOverrideResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs
@@ -33,6 +33,7 @@
     , TargetHTTPSProxiesSetSSLCertificates
 
     -- * Request Lenses
+    , thpsscRequestId
     , thpsscProject
     , thpsscPayload
     , thpsscTargetHTTPSProxy
@@ -51,16 +52,18 @@
              "targetHttpsProxies" :>
                Capture "targetHttpsProxy" Text :>
                  "setSslCertificates" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON]
-                       TargetHTTPSProxiesSetSSLCertificatesRequest
-                       :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON]
+                         TargetHTTPSProxiesSetSSLCertificatesRequest
+                         :> Post '[JSON] Operation
 
 -- | Replaces SslCertificates for TargetHttpsProxy.
 --
 -- /See:/ 'targetHTTPSProxiesSetSSLCertificates' smart constructor.
 data TargetHTTPSProxiesSetSSLCertificates = TargetHTTPSProxiesSetSSLCertificates'
-    { _thpsscProject          :: !Text
+    { _thpsscRequestId        :: !(Maybe Text)
+    , _thpsscProject          :: !Text
     , _thpsscPayload          :: !TargetHTTPSProxiesSetSSLCertificatesRequest
     , _thpsscTargetHTTPSProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -69,6 +72,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thpsscRequestId'
+--
 -- * 'thpsscProject'
 --
 -- * 'thpsscPayload'
@@ -81,11 +86,27 @@
     -> TargetHTTPSProxiesSetSSLCertificates
 targetHTTPSProxiesSetSSLCertificates pThpsscProject_ pThpsscPayload_ pThpsscTargetHTTPSProxy_ =
     TargetHTTPSProxiesSetSSLCertificates'
-    { _thpsscProject = pThpsscProject_
+    { _thpsscRequestId = Nothing
+    , _thpsscProject = pThpsscProject_
     , _thpsscPayload = pThpsscPayload_
     , _thpsscTargetHTTPSProxy = pThpsscTargetHTTPSProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpsscRequestId :: Lens' TargetHTTPSProxiesSetSSLCertificates (Maybe Text)
+thpsscRequestId
+  = lens _thpsscRequestId
+      (\ s a -> s{_thpsscRequestId = a})
+
 -- | Project ID for this request.
 thpsscProject :: Lens' TargetHTTPSProxiesSetSSLCertificates Text
 thpsscProject
@@ -115,6 +136,7 @@
         requestClient
           TargetHTTPSProxiesSetSSLCertificates'{..}
           = go _thpsscProject _thpsscTargetHTTPSProxy
+              _thpsscRequestId
               (Just AltJSON)
               _thpsscPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLPolicy
+-- 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 SSL policy for TargetHttpsProxy. The SSL policy specifies the
+-- server-side support for SSL features. This affects connections between
+-- clients and the HTTPS proxy load balancer. They do not affect the
+-- connection between the load balancer and the backends.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.setSslPolicy@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLPolicy
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesSetSSLPolicyResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesSetSSLPolicy
+    , TargetHTTPSProxiesSetSSLPolicy
+
+    -- * Request Lenses
+    , thpsspRequestId
+    , thpsspProject
+    , thpsspPayload
+    , thpsspTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.setSslPolicy@ method which the
+-- 'TargetHTTPSProxiesSetSSLPolicy' request conforms to.
+type TargetHTTPSProxiesSetSSLPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 Capture "targetHttpsProxy" Text :>
+                   "setSslPolicy" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SSLPolicyReference :>
+                           Post '[JSON] Operation
+
+-- | Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the
+-- server-side support for SSL features. This affects connections between
+-- clients and the HTTPS proxy load balancer. They do not affect the
+-- connection between the load balancer and the backends.
+--
+-- /See:/ 'targetHTTPSProxiesSetSSLPolicy' smart constructor.
+data TargetHTTPSProxiesSetSSLPolicy = TargetHTTPSProxiesSetSSLPolicy'
+    { _thpsspRequestId        :: !(Maybe Text)
+    , _thpsspProject          :: !Text
+    , _thpsspPayload          :: !SSLPolicyReference
+    , _thpsspTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetSSLPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsspRequestId'
+--
+-- * 'thpsspProject'
+--
+-- * 'thpsspPayload'
+--
+-- * 'thpsspTargetHTTPSProxy'
+targetHTTPSProxiesSetSSLPolicy
+    :: Text -- ^ 'thpsspProject'
+    -> SSLPolicyReference -- ^ 'thpsspPayload'
+    -> Text -- ^ 'thpsspTargetHTTPSProxy'
+    -> TargetHTTPSProxiesSetSSLPolicy
+targetHTTPSProxiesSetSSLPolicy pThpsspProject_ pThpsspPayload_ pThpsspTargetHTTPSProxy_ =
+    TargetHTTPSProxiesSetSSLPolicy'
+    { _thpsspRequestId = Nothing
+    , _thpsspProject = pThpsspProject_
+    , _thpsspPayload = pThpsspPayload_
+    , _thpsspTargetHTTPSProxy = pThpsspTargetHTTPSProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpsspRequestId :: Lens' TargetHTTPSProxiesSetSSLPolicy (Maybe Text)
+thpsspRequestId
+  = lens _thpsspRequestId
+      (\ s a -> s{_thpsspRequestId = a})
+
+-- | Project ID for this request.
+thpsspProject :: Lens' TargetHTTPSProxiesSetSSLPolicy Text
+thpsspProject
+  = lens _thpsspProject
+      (\ s a -> s{_thpsspProject = a})
+
+-- | Multipart request metadata.
+thpsspPayload :: Lens' TargetHTTPSProxiesSetSSLPolicy SSLPolicyReference
+thpsspPayload
+  = lens _thpsspPayload
+      (\ s a -> s{_thpsspPayload = a})
+
+-- | Name of the TargetHttpsProxy resource whose SSL policy is to be set. The
+-- name must be 1-63 characters long, and comply with RFC1035.
+thpsspTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetSSLPolicy Text
+thpsspTargetHTTPSProxy
+  = lens _thpsspTargetHTTPSProxy
+      (\ s a -> s{_thpsspTargetHTTPSProxy = a})
+
+instance GoogleRequest TargetHTTPSProxiesSetSSLPolicy
+         where
+        type Rs TargetHTTPSProxiesSetSSLPolicy = Operation
+        type Scopes TargetHTTPSProxiesSetSSLPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetHTTPSProxiesSetSSLPolicy'{..}
+          = go _thpsspProject _thpsspTargetHTTPSProxy
+              _thpsspRequestId
+              (Just AltJSON)
+              _thpsspPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetHTTPSProxiesSetSSLPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs
@@ -33,6 +33,7 @@
     , TargetHTTPSProxiesSetURLMap
 
     -- * Request Lenses
+    , thpsumRequestId
     , thpsumProject
     , thpsumPayload
     , thpsumTargetHTTPSProxy
@@ -51,15 +52,17 @@
              "targetHttpsProxies" :>
                Capture "targetHttpsProxy" Text :>
                  "setUrlMap" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] URLMapReference :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] URLMapReference :>
+                         Post '[JSON] Operation
 
 -- | Changes the URL map for TargetHttpsProxy.
 --
 -- /See:/ 'targetHTTPSProxiesSetURLMap' smart constructor.
 data TargetHTTPSProxiesSetURLMap = TargetHTTPSProxiesSetURLMap'
-    { _thpsumProject          :: !Text
+    { _thpsumRequestId        :: !(Maybe Text)
+    , _thpsumProject          :: !Text
     , _thpsumPayload          :: !URLMapReference
     , _thpsumTargetHTTPSProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -68,6 +71,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'thpsumRequestId'
+--
 -- * 'thpsumProject'
 --
 -- * 'thpsumPayload'
@@ -80,11 +85,27 @@
     -> TargetHTTPSProxiesSetURLMap
 targetHTTPSProxiesSetURLMap pThpsumProject_ pThpsumPayload_ pThpsumTargetHTTPSProxy_ =
     TargetHTTPSProxiesSetURLMap'
-    { _thpsumProject = pThpsumProject_
+    { _thpsumRequestId = Nothing
+    , _thpsumProject = pThpsumProject_
     , _thpsumPayload = pThpsumPayload_
     , _thpsumTargetHTTPSProxy = pThpsumTargetHTTPSProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+thpsumRequestId :: Lens' TargetHTTPSProxiesSetURLMap (Maybe Text)
+thpsumRequestId
+  = lens _thpsumRequestId
+      (\ s a -> s{_thpsumRequestId = a})
+
 -- | Project ID for this request.
 thpsumProject :: Lens' TargetHTTPSProxiesSetURLMap Text
 thpsumProject
@@ -111,6 +132,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetHTTPSProxiesSetURLMap'{..}
           = go _thpsumProject _thpsumTargetHTTPSProxy
+              _thpsumRequestId
               (Just AltJSON)
               _thpsumPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs
@@ -112,26 +112,22 @@
 tialProject
   = lens _tialProject (\ s a -> s{_tialProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tialFilter :: Lens' TargetInstancesAggregatedList (Maybe Text)
 tialFilter
   = lens _tialFilter (\ s a -> s{_tialFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tialMaxResults :: Lens' TargetInstancesAggregatedList Word32
 tialMaxResults
   = lens _tialMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs
@@ -33,6 +33,7 @@
     , TargetInstancesDelete
 
     -- * Request Lenses
+    , tidRequestId
     , tidProject
     , tidTargetInstance
     , tidZone
@@ -52,13 +53,15 @@
                Capture "zone" Text :>
                  "targetInstances" :>
                    Capture "targetInstance" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified TargetInstance resource.
 --
 -- /See:/ 'targetInstancesDelete' smart constructor.
 data TargetInstancesDelete = TargetInstancesDelete'
-    { _tidProject        :: !Text
+    { _tidRequestId      :: !(Maybe Text)
+    , _tidProject        :: !Text
     , _tidTargetInstance :: !Text
     , _tidZone           :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tidRequestId'
+--
 -- * 'tidProject'
 --
 -- * 'tidTargetInstance'
@@ -79,11 +84,26 @@
     -> TargetInstancesDelete
 targetInstancesDelete pTidProject_ pTidTargetInstance_ pTidZone_ =
     TargetInstancesDelete'
-    { _tidProject = pTidProject_
+    { _tidRequestId = Nothing
+    , _tidProject = pTidProject_
     , _tidTargetInstance = pTidTargetInstance_
     , _tidZone = pTidZone_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tidRequestId :: Lens' TargetInstancesDelete (Maybe Text)
+tidRequestId
+  = lens _tidRequestId (\ s a -> s{_tidRequestId = a})
+
 -- | Project ID for this request.
 tidProject :: Lens' TargetInstancesDelete Text
 tidProject
@@ -106,6 +126,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetInstancesDelete'{..}
           = go _tidProject _tidZone _tidTargetInstance
+              _tidRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified TargetInstance resource. Get a list of available
+-- Returns the specified TargetInstance resource. Gets a list of available
 -- target instances by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.get@.
@@ -56,7 +56,7 @@
                      QueryParam "alt" AltJSON :>
                        Get '[JSON] TargetInstance
 
--- | Returns the specified TargetInstance resource. Get a list of available
+-- | Returns the specified TargetInstance resource. Gets a list of available
 -- target instances by making a list() request.
 --
 -- /See:/ 'targetInstancesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs
@@ -34,6 +34,7 @@
     , TargetInstancesInsert
 
     -- * Request Lenses
+    , tiiRequestId
     , tiiProject
     , tiiZone
     , tiiPayload
@@ -52,24 +53,28 @@
              "zones" :>
                Capture "zone" Text :>
                  "targetInstances" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] TargetInstance :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TargetInstance :>
+                         Post '[JSON] Operation
 
 -- | Creates a TargetInstance resource in the specified project and zone
 -- using the data included in the request.
 --
 -- /See:/ 'targetInstancesInsert' smart constructor.
 data TargetInstancesInsert = TargetInstancesInsert'
-    { _tiiProject :: !Text
-    , _tiiZone    :: !Text
-    , _tiiPayload :: !TargetInstance
+    { _tiiRequestId :: !(Maybe Text)
+    , _tiiProject   :: !Text
+    , _tiiZone      :: !Text
+    , _tiiPayload   :: !TargetInstance
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetInstancesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tiiRequestId'
+--
 -- * 'tiiProject'
 --
 -- * 'tiiZone'
@@ -82,11 +87,26 @@
     -> TargetInstancesInsert
 targetInstancesInsert pTiiProject_ pTiiZone_ pTiiPayload_ =
     TargetInstancesInsert'
-    { _tiiProject = pTiiProject_
+    { _tiiRequestId = Nothing
+    , _tiiProject = pTiiProject_
     , _tiiZone = pTiiZone_
     , _tiiPayload = pTiiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tiiRequestId :: Lens' TargetInstancesInsert (Maybe Text)
+tiiRequestId
+  = lens _tiiRequestId (\ s a -> s{_tiiRequestId = a})
+
 -- | Project ID for this request.
 tiiProject :: Lens' TargetInstancesInsert Text
 tiiProject
@@ -107,7 +127,9 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetInstancesInsert'{..}
-          = go _tiiProject _tiiZone (Just AltJSON) _tiiPayload
+          = go _tiiProject _tiiZone _tiiRequestId
+              (Just AltJSON)
+              _tiiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/List.hs b/gen/Network/Google/Resource/Compute/TargetInstances/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetInstances/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/List.hs
@@ -125,26 +125,22 @@
 tilZone :: Lens' TargetInstancesList Text
 tilZone = lens _tilZone (\ s a -> s{_tilZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tilFilter :: Lens' TargetInstancesList (Maybe Text)
 tilFilter
   = lens _tilFilter (\ s a -> s{_tilFilter = a})
@@ -158,7 +154,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tilMaxResults :: Lens' TargetInstancesList Word32
 tilMaxResults
   = lens _tilMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs b/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs
@@ -33,6 +33,7 @@
     , TargetPoolsAddHealthCheck
 
     -- * Request Lenses
+    , tpahcRequestId
     , tpahcProject
     , tpahcTargetPool
     , tpahcPayload
@@ -54,15 +55,17 @@
                  "targetPools" :>
                    Capture "targetPool" Text :>
                      "addHealthCheck" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TargetPoolsAddHealthCheckRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetPoolsAddHealthCheckRequest :>
+                             Post '[JSON] Operation
 
 -- | Adds health check URLs to a target pool.
 --
 -- /See:/ 'targetPoolsAddHealthCheck' smart constructor.
 data TargetPoolsAddHealthCheck = TargetPoolsAddHealthCheck'
-    { _tpahcProject    :: !Text
+    { _tpahcRequestId  :: !(Maybe Text)
+    , _tpahcProject    :: !Text
     , _tpahcTargetPool :: !Text
     , _tpahcPayload    :: !TargetPoolsAddHealthCheckRequest
     , _tpahcRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpahcRequestId'
+--
 -- * 'tpahcProject'
 --
 -- * 'tpahcTargetPool'
@@ -87,12 +92,28 @@
     -> TargetPoolsAddHealthCheck
 targetPoolsAddHealthCheck pTpahcProject_ pTpahcTargetPool_ pTpahcPayload_ pTpahcRegion_ =
     TargetPoolsAddHealthCheck'
-    { _tpahcProject = pTpahcProject_
+    { _tpahcRequestId = Nothing
+    , _tpahcProject = pTpahcProject_
     , _tpahcTargetPool = pTpahcTargetPool_
     , _tpahcPayload = pTpahcPayload_
     , _tpahcRegion = pTpahcRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpahcRequestId :: Lens' TargetPoolsAddHealthCheck (Maybe Text)
+tpahcRequestId
+  = lens _tpahcRequestId
+      (\ s a -> s{_tpahcRequestId = a})
+
 -- | Project ID for this request.
 tpahcProject :: Lens' TargetPoolsAddHealthCheck Text
 tpahcProject
@@ -122,6 +143,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsAddHealthCheck'{..}
           = go _tpahcProject _tpahcRegion _tpahcTargetPool
+              _tpahcRequestId
               (Just AltJSON)
               _tpahcPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs b/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs
@@ -33,6 +33,7 @@
     , TargetPoolsAddInstance
 
     -- * Request Lenses
+    , tpaiRequestId
     , tpaiProject
     , tpaiTargetPool
     , tpaiPayload
@@ -54,15 +55,17 @@
                  "targetPools" :>
                    Capture "targetPool" Text :>
                      "addInstance" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TargetPoolsAddInstanceRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetPoolsAddInstanceRequest :>
+                             Post '[JSON] Operation
 
 -- | Adds an instance to a target pool.
 --
 -- /See:/ 'targetPoolsAddInstance' smart constructor.
 data TargetPoolsAddInstance = TargetPoolsAddInstance'
-    { _tpaiProject    :: !Text
+    { _tpaiRequestId  :: !(Maybe Text)
+    , _tpaiProject    :: !Text
     , _tpaiTargetPool :: !Text
     , _tpaiPayload    :: !TargetPoolsAddInstanceRequest
     , _tpaiRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpaiRequestId'
+--
 -- * 'tpaiProject'
 --
 -- * 'tpaiTargetPool'
@@ -87,12 +92,28 @@
     -> TargetPoolsAddInstance
 targetPoolsAddInstance pTpaiProject_ pTpaiTargetPool_ pTpaiPayload_ pTpaiRegion_ =
     TargetPoolsAddInstance'
-    { _tpaiProject = pTpaiProject_
+    { _tpaiRequestId = Nothing
+    , _tpaiProject = pTpaiProject_
     , _tpaiTargetPool = pTpaiTargetPool_
     , _tpaiPayload = pTpaiPayload_
     , _tpaiRegion = pTpaiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpaiRequestId :: Lens' TargetPoolsAddInstance (Maybe Text)
+tpaiRequestId
+  = lens _tpaiRequestId
+      (\ s a -> s{_tpaiRequestId = a})
+
 -- | Project ID for this request.
 tpaiProject :: Lens' TargetPoolsAddInstance Text
 tpaiProject
@@ -121,6 +142,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsAddInstance'{..}
           = go _tpaiProject _tpaiRegion _tpaiTargetPool
+              _tpaiRequestId
               (Just AltJSON)
               _tpaiPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs
@@ -112,26 +112,22 @@
 tpalProject
   = lens _tpalProject (\ s a -> s{_tpalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tpalFilter :: Lens' TargetPoolsAggregatedList (Maybe Text)
 tpalFilter
   = lens _tpalFilter (\ s a -> s{_tpalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tpalMaxResults :: Lens' TargetPoolsAggregatedList Word32
 tpalMaxResults
   = lens _tpalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs b/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs
@@ -33,6 +33,7 @@
     , TargetPoolsDelete
 
     -- * Request Lenses
+    , tpdRequestId
     , tpdProject
     , tpdTargetPool
     , tpdRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "targetPools" :>
                    Capture "targetPool" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified target pool.
 --
 -- /See:/ 'targetPoolsDelete' smart constructor.
 data TargetPoolsDelete = TargetPoolsDelete'
-    { _tpdProject    :: !Text
+    { _tpdRequestId  :: !(Maybe Text)
+    , _tpdProject    :: !Text
     , _tpdTargetPool :: !Text
     , _tpdRegion     :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpdRequestId'
+--
 -- * 'tpdProject'
 --
 -- * 'tpdTargetPool'
@@ -79,11 +84,26 @@
     -> TargetPoolsDelete
 targetPoolsDelete pTpdProject_ pTpdTargetPool_ pTpdRegion_ =
     TargetPoolsDelete'
-    { _tpdProject = pTpdProject_
+    { _tpdRequestId = Nothing
+    , _tpdProject = pTpdProject_
     , _tpdTargetPool = pTpdTargetPool_
     , _tpdRegion = pTpdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpdRequestId :: Lens' TargetPoolsDelete (Maybe Text)
+tpdRequestId
+  = lens _tpdRequestId (\ s a -> s{_tpdRequestId = a})
+
 -- | Project ID for this request.
 tpdProject :: Lens' TargetPoolsDelete Text
 tpdProject
@@ -107,6 +127,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsDelete'{..}
           = go _tpdProject _tpdRegion _tpdTargetPool
+              _tpdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Get.hs b/gen/Network/Google/Resource/Compute/TargetPools/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified target pool. Get a list of available target pools
+-- Returns the specified target pool. Gets a list of available target pools
 -- by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.get@.
@@ -55,7 +55,7 @@
                    Capture "targetPool" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] TargetPool
 
--- | Returns the specified target pool. Get a list of available target pools
+-- | Returns the specified target pool. Gets a list of available target pools
 -- by making a list() request.
 --
 -- /See:/ 'targetPoolsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs b/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs
@@ -34,6 +34,7 @@
     , TargetPoolsInsert
 
     -- * Request Lenses
+    , tpiRequestId
     , tpiProject
     , tpiPayload
     , tpiRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "targetPools" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] TargetPool :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TargetPool :> Post '[JSON] Operation
 
 -- | Creates a target pool in the specified project and region using the data
 -- included in the request.
 --
 -- /See:/ 'targetPoolsInsert' smart constructor.
 data TargetPoolsInsert = TargetPoolsInsert'
-    { _tpiProject :: !Text
-    , _tpiPayload :: !TargetPool
-    , _tpiRegion  :: !Text
+    { _tpiRequestId :: !(Maybe Text)
+    , _tpiProject   :: !Text
+    , _tpiPayload   :: !TargetPool
+    , _tpiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetPoolsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpiRequestId'
+--
 -- * 'tpiProject'
 --
 -- * 'tpiPayload'
@@ -81,11 +86,26 @@
     -> TargetPoolsInsert
 targetPoolsInsert pTpiProject_ pTpiPayload_ pTpiRegion_ =
     TargetPoolsInsert'
-    { _tpiProject = pTpiProject_
+    { _tpiRequestId = Nothing
+    , _tpiProject = pTpiProject_
     , _tpiPayload = pTpiPayload_
     , _tpiRegion = pTpiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpiRequestId :: Lens' TargetPoolsInsert (Maybe Text)
+tpiRequestId
+  = lens _tpiRequestId (\ s a -> s{_tpiRequestId = a})
+
 -- | Project ID for this request.
 tpiProject :: Lens' TargetPoolsInsert Text
 tpiProject
@@ -107,7 +127,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsInsert'{..}
-          = go _tpiProject _tpiRegion (Just AltJSON)
+          = go _tpiProject _tpiRegion _tpiRequestId
+              (Just AltJSON)
               _tpiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/List.hs b/gen/Network/Google/Resource/Compute/TargetPools/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/List.hs
@@ -121,26 +121,22 @@
 tplProject
   = lens _tplProject (\ s a -> s{_tplProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tplFilter :: Lens' TargetPoolsList (Maybe Text)
 tplFilter
   = lens _tplFilter (\ s a -> s{_tplFilter = a})
@@ -159,7 +155,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tplMaxResults :: Lens' TargetPoolsList Word32
 tplMaxResults
   = lens _tplMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs b/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs
@@ -33,6 +33,7 @@
     , TargetPoolsRemoveHealthCheck
 
     -- * Request Lenses
+    , tprhcRequestId
     , tprhcProject
     , tprhcTargetPool
     , tprhcPayload
@@ -54,15 +55,17 @@
                  "targetPools" :>
                    Capture "targetPool" Text :>
                      "removeHealthCheck" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TargetPoolsRemoveHealthCheckRequest
-                           :> Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetPoolsRemoveHealthCheckRequest
+                             :> Post '[JSON] Operation
 
 -- | Removes health check URL from a target pool.
 --
 -- /See:/ 'targetPoolsRemoveHealthCheck' smart constructor.
 data TargetPoolsRemoveHealthCheck = TargetPoolsRemoveHealthCheck'
-    { _tprhcProject    :: !Text
+    { _tprhcRequestId  :: !(Maybe Text)
+    , _tprhcProject    :: !Text
     , _tprhcTargetPool :: !Text
     , _tprhcPayload    :: !TargetPoolsRemoveHealthCheckRequest
     , _tprhcRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tprhcRequestId'
+--
 -- * 'tprhcProject'
 --
 -- * 'tprhcTargetPool'
@@ -87,12 +92,28 @@
     -> TargetPoolsRemoveHealthCheck
 targetPoolsRemoveHealthCheck pTprhcProject_ pTprhcTargetPool_ pTprhcPayload_ pTprhcRegion_ =
     TargetPoolsRemoveHealthCheck'
-    { _tprhcProject = pTprhcProject_
+    { _tprhcRequestId = Nothing
+    , _tprhcProject = pTprhcProject_
     , _tprhcTargetPool = pTprhcTargetPool_
     , _tprhcPayload = pTprhcPayload_
     , _tprhcRegion = pTprhcRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tprhcRequestId :: Lens' TargetPoolsRemoveHealthCheck (Maybe Text)
+tprhcRequestId
+  = lens _tprhcRequestId
+      (\ s a -> s{_tprhcRequestId = a})
+
 -- | Project ID for this request.
 tprhcProject :: Lens' TargetPoolsRemoveHealthCheck Text
 tprhcProject
@@ -122,6 +143,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsRemoveHealthCheck'{..}
           = go _tprhcProject _tprhcRegion _tprhcTargetPool
+              _tprhcRequestId
               (Just AltJSON)
               _tprhcPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs b/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs
@@ -33,6 +33,7 @@
     , TargetPoolsRemoveInstance
 
     -- * Request Lenses
+    , tpriRequestId
     , tpriProject
     , tpriTargetPool
     , tpriPayload
@@ -54,15 +55,17 @@
                  "targetPools" :>
                    Capture "targetPool" Text :>
                      "removeInstance" :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] TargetPoolsRemoveInstanceRequest :>
-                           Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetPoolsRemoveInstanceRequest :>
+                             Post '[JSON] Operation
 
 -- | Removes instance URL from a target pool.
 --
 -- /See:/ 'targetPoolsRemoveInstance' smart constructor.
 data TargetPoolsRemoveInstance = TargetPoolsRemoveInstance'
-    { _tpriProject    :: !Text
+    { _tpriRequestId  :: !(Maybe Text)
+    , _tpriProject    :: !Text
     , _tpriTargetPool :: !Text
     , _tpriPayload    :: !TargetPoolsRemoveInstanceRequest
     , _tpriRegion     :: !Text
@@ -72,6 +75,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpriRequestId'
+--
 -- * 'tpriProject'
 --
 -- * 'tpriTargetPool'
@@ -87,12 +92,28 @@
     -> TargetPoolsRemoveInstance
 targetPoolsRemoveInstance pTpriProject_ pTpriTargetPool_ pTpriPayload_ pTpriRegion_ =
     TargetPoolsRemoveInstance'
-    { _tpriProject = pTpriProject_
+    { _tpriRequestId = Nothing
+    , _tpriProject = pTpriProject_
     , _tpriTargetPool = pTpriTargetPool_
     , _tpriPayload = pTpriPayload_
     , _tpriRegion = pTpriRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpriRequestId :: Lens' TargetPoolsRemoveInstance (Maybe Text)
+tpriRequestId
+  = lens _tpriRequestId
+      (\ s a -> s{_tpriRequestId = a})
+
 -- | Project ID for this request.
 tpriProject :: Lens' TargetPoolsRemoveInstance Text
 tpriProject
@@ -122,6 +143,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsRemoveInstance'{..}
           = go _tpriProject _tpriRegion _tpriTargetPool
+              _tpriRequestId
               (Just AltJSON)
               _tpriPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs b/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs
@@ -33,6 +33,7 @@
     , TargetPoolsSetBackup
 
     -- * Request Lenses
+    , tpsbRequestId
     , tpsbProject
     , tpsbTargetPool
     , tpsbPayload
@@ -55,16 +56,18 @@
                  "targetPools" :>
                    Capture "targetPool" Text :>
                      "setBackup" :>
-                       QueryParam "failoverRatio" (Textual Double) :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] TargetReference :>
-                             Post '[JSON] Operation
+                       QueryParam "requestId" Text :>
+                         QueryParam "failoverRatio" (Textual Double) :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] TargetReference :>
+                               Post '[JSON] Operation
 
 -- | Changes a backup target pool\'s configurations.
 --
 -- /See:/ 'targetPoolsSetBackup' smart constructor.
 data TargetPoolsSetBackup = TargetPoolsSetBackup'
-    { _tpsbProject       :: !Text
+    { _tpsbRequestId     :: !(Maybe Text)
+    , _tpsbProject       :: !Text
     , _tpsbTargetPool    :: !Text
     , _tpsbPayload       :: !TargetReference
     , _tpsbFailoverRatio :: !(Maybe (Textual Double))
@@ -75,6 +78,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tpsbRequestId'
+--
 -- * 'tpsbProject'
 --
 -- * 'tpsbTargetPool'
@@ -92,13 +97,29 @@
     -> TargetPoolsSetBackup
 targetPoolsSetBackup pTpsbProject_ pTpsbTargetPool_ pTpsbPayload_ pTpsbRegion_ =
     TargetPoolsSetBackup'
-    { _tpsbProject = pTpsbProject_
+    { _tpsbRequestId = Nothing
+    , _tpsbProject = pTpsbProject_
     , _tpsbTargetPool = pTpsbTargetPool_
     , _tpsbPayload = pTpsbPayload_
     , _tpsbFailoverRatio = Nothing
     , _tpsbRegion = pTpsbRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tpsbRequestId :: Lens' TargetPoolsSetBackup (Maybe Text)
+tpsbRequestId
+  = lens _tpsbRequestId
+      (\ s a -> s{_tpsbRequestId = a})
+
 -- | Project ID for this request.
 tpsbProject :: Lens' TargetPoolsSetBackup Text
 tpsbProject
@@ -134,6 +155,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetPoolsSetBackup'{..}
           = go _tpsbProject _tpsbRegion _tpsbTargetPool
+              _tpsbRequestId
               _tpsbFailoverRatio
               (Just AltJSON)
               _tpsbPayload
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Delete.hs
@@ -33,6 +33,7 @@
     , TargetSSLProxiesDelete
 
     -- * Request Lenses
+    , tspdRequestId
     , tspdProject
     , tspdTargetSSLProxy
     ) where
@@ -50,13 +51,15 @@
              "global" :>
                "targetSslProxies" :>
                  Capture "targetSslProxy" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified TargetSslProxy resource.
 --
 -- /See:/ 'targetSSLProxiesDelete' smart constructor.
 data TargetSSLProxiesDelete = TargetSSLProxiesDelete'
-    { _tspdProject        :: !Text
+    { _tspdRequestId      :: !(Maybe Text)
+    , _tspdProject        :: !Text
     , _tspdTargetSSLProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -64,6 +67,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tspdRequestId'
+--
 -- * 'tspdProject'
 --
 -- * 'tspdTargetSSLProxy'
@@ -73,10 +78,26 @@
     -> TargetSSLProxiesDelete
 targetSSLProxiesDelete pTspdProject_ pTspdTargetSSLProxy_ =
     TargetSSLProxiesDelete'
-    { _tspdProject = pTspdProject_
+    { _tspdRequestId = Nothing
+    , _tspdProject = pTspdProject_
     , _tspdTargetSSLProxy = pTspdTargetSSLProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspdRequestId :: Lens' TargetSSLProxiesDelete (Maybe Text)
+tspdRequestId
+  = lens _tspdRequestId
+      (\ s a -> s{_tspdRequestId = a})
+
 -- | Project ID for this request.
 tspdProject :: Lens' TargetSSLProxiesDelete Text
 tspdProject
@@ -94,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetSSLProxiesDelete'{..}
-          = go _tspdProject _tspdTargetSSLProxy (Just AltJSON)
+          = go _tspdProject _tspdTargetSSLProxy _tspdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified TargetSslProxy resource. Get a list of available
+-- Returns the specified TargetSslProxy resource. Gets a list of available
 -- target SSL proxies by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.get@.
@@ -54,7 +54,7 @@
                    QueryParam "alt" AltJSON :>
                      Get '[JSON] TargetSSLProxy
 
--- | Returns the specified TargetSslProxy resource. Get a list of available
+-- | Returns the specified TargetSslProxy resource. Gets a list of available
 -- target SSL proxies by making a list() request.
 --
 -- /See:/ 'targetSSLProxiesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/Insert.hs
@@ -34,6 +34,7 @@
     , TargetSSLProxiesInsert
 
     -- * Request Lenses
+    , tspiRequestId
     , tspiProject
     , tspiPayload
     ) where
@@ -50,23 +51,27 @@
            Capture "project" Text :>
              "global" :>
                "targetSslProxies" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] TargetSSLProxy :>
-                     Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetSSLProxy :>
+                       Post '[JSON] Operation
 
 -- | Creates a TargetSslProxy resource in the specified project using the
 -- data included in the request.
 --
 -- /See:/ 'targetSSLProxiesInsert' smart constructor.
 data TargetSSLProxiesInsert = TargetSSLProxiesInsert'
-    { _tspiProject :: !Text
-    , _tspiPayload :: !TargetSSLProxy
+    { _tspiRequestId :: !(Maybe Text)
+    , _tspiProject   :: !Text
+    , _tspiPayload   :: !TargetSSLProxy
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetSSLProxiesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tspiRequestId'
+--
 -- * 'tspiProject'
 --
 -- * 'tspiPayload'
@@ -76,10 +81,26 @@
     -> TargetSSLProxiesInsert
 targetSSLProxiesInsert pTspiProject_ pTspiPayload_ =
     TargetSSLProxiesInsert'
-    { _tspiProject = pTspiProject_
+    { _tspiRequestId = Nothing
+    , _tspiProject = pTspiProject_
     , _tspiPayload = pTspiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspiRequestId :: Lens' TargetSSLProxiesInsert (Maybe Text)
+tspiRequestId
+  = lens _tspiRequestId
+      (\ s a -> s{_tspiRequestId = a})
+
 -- | Project ID for this request.
 tspiProject :: Lens' TargetSSLProxiesInsert Text
 tspiProject
@@ -96,7 +117,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetSSLProxiesInsert'{..}
-          = go _tspiProject (Just AltJSON) _tspiPayload
+          = go _tspiProject _tspiRequestId (Just AltJSON)
+              _tspiPayload
               computeService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/List.hs
@@ -114,26 +114,22 @@
 tsplProject
   = lens _tsplProject (\ s a -> s{_tsplProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tsplFilter :: Lens' TargetSSLProxiesList (Maybe Text)
 tsplFilter
   = lens _tsplFilter (\ s a -> s{_tsplFilter = a})
@@ -148,7 +144,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tsplMaxResults :: Lens' TargetSSLProxiesList Word32
 tsplMaxResults
   = lens _tsplMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetBackendService.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetBackendService.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetBackendService.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetBackendService.hs
@@ -33,6 +33,7 @@
     , TargetSSLProxiesSetBackendService
 
     -- * Request Lenses
+    , tspsbsRequestId
     , tspsbsProject
     , tspsbsPayload
     , tspsbsTargetSSLProxy
@@ -52,16 +53,18 @@
                "targetSslProxies" :>
                  Capture "targetSslProxy" Text :>
                    "setBackendService" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON]
-                         TargetSSLProxiesSetBackendServiceRequest
-                         :> Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           TargetSSLProxiesSetBackendServiceRequest
+                           :> Post '[JSON] Operation
 
 -- | Changes the BackendService for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetBackendService' smart constructor.
 data TargetSSLProxiesSetBackendService = TargetSSLProxiesSetBackendService'
-    { _tspsbsProject        :: !Text
+    { _tspsbsRequestId      :: !(Maybe Text)
+    , _tspsbsProject        :: !Text
     , _tspsbsPayload        :: !TargetSSLProxiesSetBackendServiceRequest
     , _tspsbsTargetSSLProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +73,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tspsbsRequestId'
+--
 -- * 'tspsbsProject'
 --
 -- * 'tspsbsPayload'
@@ -82,11 +87,27 @@
     -> TargetSSLProxiesSetBackendService
 targetSSLProxiesSetBackendService pTspsbsProject_ pTspsbsPayload_ pTspsbsTargetSSLProxy_ =
     TargetSSLProxiesSetBackendService'
-    { _tspsbsProject = pTspsbsProject_
+    { _tspsbsRequestId = Nothing
+    , _tspsbsProject = pTspsbsProject_
     , _tspsbsPayload = pTspsbsPayload_
     , _tspsbsTargetSSLProxy = pTspsbsTargetSSLProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspsbsRequestId :: Lens' TargetSSLProxiesSetBackendService (Maybe Text)
+tspsbsRequestId
+  = lens _tspsbsRequestId
+      (\ s a -> s{_tspsbsRequestId = a})
+
 -- | Project ID for this request.
 tspsbsProject :: Lens' TargetSSLProxiesSetBackendService Text
 tspsbsProject
@@ -114,6 +135,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetSSLProxiesSetBackendService'{..}
           = go _tspsbsProject _tspsbsTargetSSLProxy
+              _tspsbsRequestId
               (Just AltJSON)
               _tspsbsPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetProxyHeader.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetProxyHeader.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetProxyHeader.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetProxyHeader.hs
@@ -33,6 +33,7 @@
     , TargetSSLProxiesSetProxyHeader
 
     -- * Request Lenses
+    , tspsphRequestId
     , tspsphProject
     , tspsphPayload
     , tspsphTargetSSLProxy
@@ -52,15 +53,17 @@
                "targetSslProxies" :>
                  Capture "targetSslProxy" Text :>
                    "setProxyHeader" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] TargetSSLProxiesSetProxyHeaderRequest
-                         :> Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetSSLProxiesSetProxyHeaderRequest
+                           :> Post '[JSON] Operation
 
 -- | Changes the ProxyHeaderType for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetProxyHeader' smart constructor.
 data TargetSSLProxiesSetProxyHeader = TargetSSLProxiesSetProxyHeader'
-    { _tspsphProject        :: !Text
+    { _tspsphRequestId      :: !(Maybe Text)
+    , _tspsphProject        :: !Text
     , _tspsphPayload        :: !TargetSSLProxiesSetProxyHeaderRequest
     , _tspsphTargetSSLProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -69,6 +72,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tspsphRequestId'
+--
 -- * 'tspsphProject'
 --
 -- * 'tspsphPayload'
@@ -81,11 +86,27 @@
     -> TargetSSLProxiesSetProxyHeader
 targetSSLProxiesSetProxyHeader pTspsphProject_ pTspsphPayload_ pTspsphTargetSSLProxy_ =
     TargetSSLProxiesSetProxyHeader'
-    { _tspsphProject = pTspsphProject_
+    { _tspsphRequestId = Nothing
+    , _tspsphProject = pTspsphProject_
     , _tspsphPayload = pTspsphPayload_
     , _tspsphTargetSSLProxy = pTspsphTargetSSLProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspsphRequestId :: Lens' TargetSSLProxiesSetProxyHeader (Maybe Text)
+tspsphRequestId
+  = lens _tspsphRequestId
+      (\ s a -> s{_tspsphRequestId = a})
+
 -- | Project ID for this request.
 tspsphProject :: Lens' TargetSSLProxiesSetProxyHeader Text
 tspsphProject
@@ -112,6 +133,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetSSLProxiesSetProxyHeader'{..}
           = go _tspsphProject _tspsphTargetSSLProxy
+              _tspsphRequestId
               (Just AltJSON)
               _tspsphPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLCertificates.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLCertificates.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLCertificates.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLCertificates.hs
@@ -33,6 +33,7 @@
     , TargetSSLProxiesSetSSLCertificates
 
     -- * Request Lenses
+    , tspsscRequestId
     , tspsscProject
     , tspsscPayload
     , tspsscTargetSSLProxy
@@ -52,16 +53,18 @@
                "targetSslProxies" :>
                  Capture "targetSslProxy" Text :>
                    "setSslCertificates" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON]
-                         TargetSSLProxiesSetSSLCertificatesRequest
-                         :> Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           TargetSSLProxiesSetSSLCertificatesRequest
+                           :> Post '[JSON] Operation
 
 -- | Changes SslCertificates for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetSSLCertificates' smart constructor.
 data TargetSSLProxiesSetSSLCertificates = TargetSSLProxiesSetSSLCertificates'
-    { _tspsscProject        :: !Text
+    { _tspsscRequestId      :: !(Maybe Text)
+    , _tspsscProject        :: !Text
     , _tspsscPayload        :: !TargetSSLProxiesSetSSLCertificatesRequest
     , _tspsscTargetSSLProxy :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -70,6 +73,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tspsscRequestId'
+--
 -- * 'tspsscProject'
 --
 -- * 'tspsscPayload'
@@ -82,11 +87,27 @@
     -> TargetSSLProxiesSetSSLCertificates
 targetSSLProxiesSetSSLCertificates pTspsscProject_ pTspsscPayload_ pTspsscTargetSSLProxy_ =
     TargetSSLProxiesSetSSLCertificates'
-    { _tspsscProject = pTspsscProject_
+    { _tspsscRequestId = Nothing
+    , _tspsscProject = pTspsscProject_
     , _tspsscPayload = pTspsscPayload_
     , _tspsscTargetSSLProxy = pTspsscTargetSSLProxy_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspsscRequestId :: Lens' TargetSSLProxiesSetSSLCertificates (Maybe Text)
+tspsscRequestId
+  = lens _tspsscRequestId
+      (\ s a -> s{_tspsscRequestId = a})
+
 -- | Project ID for this request.
 tspsscProject :: Lens' TargetSSLProxiesSetSSLCertificates Text
 tspsscProject
@@ -115,6 +136,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetSSLProxiesSetSSLCertificates'{..}
           = go _tspsscProject _tspsscTargetSSLProxy
+              _tspsscRequestId
               (Just AltJSON)
               _tspsscPayload
               computeService
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.SetSSLPolicy
+-- 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 SSL policy for TargetSslProxy. The SSL policy specifies the
+-- server-side support for SSL features. This affects connections between
+-- clients and the SSL proxy load balancer. They do not affect the
+-- connection between the load balancer and the backends.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.setSslPolicy@.
+module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLPolicy
+    (
+    -- * REST Resource
+      TargetSSLProxiesSetSSLPolicyResource
+
+    -- * Creating a Request
+    , targetSSLProxiesSetSSLPolicy
+    , TargetSSLProxiesSetSSLPolicy
+
+    -- * Request Lenses
+    , tspsspRequestId
+    , tspsspProject
+    , tspsspPayload
+    , tspsspTargetSSLProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetSslProxies.setSslPolicy@ method which the
+-- 'TargetSSLProxiesSetSSLPolicy' request conforms to.
+type TargetSSLProxiesSetSSLPolicyResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetSslProxies" :>
+                 Capture "targetSslProxy" Text :>
+                   "setSslPolicy" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] SSLPolicyReference :>
+                           Post '[JSON] Operation
+
+-- | Sets the SSL policy for TargetSslProxy. The SSL policy specifies the
+-- server-side support for SSL features. This affects connections between
+-- clients and the SSL proxy load balancer. They do not affect the
+-- connection between the load balancer and the backends.
+--
+-- /See:/ 'targetSSLProxiesSetSSLPolicy' smart constructor.
+data TargetSSLProxiesSetSSLPolicy = TargetSSLProxiesSetSSLPolicy'
+    { _tspsspRequestId      :: !(Maybe Text)
+    , _tspsspProject        :: !Text
+    , _tspsspPayload        :: !SSLPolicyReference
+    , _tspsspTargetSSLProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetSSLProxiesSetSSLPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tspsspRequestId'
+--
+-- * 'tspsspProject'
+--
+-- * 'tspsspPayload'
+--
+-- * 'tspsspTargetSSLProxy'
+targetSSLProxiesSetSSLPolicy
+    :: Text -- ^ 'tspsspProject'
+    -> SSLPolicyReference -- ^ 'tspsspPayload'
+    -> Text -- ^ 'tspsspTargetSSLProxy'
+    -> TargetSSLProxiesSetSSLPolicy
+targetSSLProxiesSetSSLPolicy pTspsspProject_ pTspsspPayload_ pTspsspTargetSSLProxy_ =
+    TargetSSLProxiesSetSSLPolicy'
+    { _tspsspRequestId = Nothing
+    , _tspsspProject = pTspsspProject_
+    , _tspsspPayload = pTspsspPayload_
+    , _tspsspTargetSSLProxy = pTspsspTargetSSLProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tspsspRequestId :: Lens' TargetSSLProxiesSetSSLPolicy (Maybe Text)
+tspsspRequestId
+  = lens _tspsspRequestId
+      (\ s a -> s{_tspsspRequestId = a})
+
+-- | Project ID for this request.
+tspsspProject :: Lens' TargetSSLProxiesSetSSLPolicy Text
+tspsspProject
+  = lens _tspsspProject
+      (\ s a -> s{_tspsspProject = a})
+
+-- | Multipart request metadata.
+tspsspPayload :: Lens' TargetSSLProxiesSetSSLPolicy SSLPolicyReference
+tspsspPayload
+  = lens _tspsspPayload
+      (\ s a -> s{_tspsspPayload = a})
+
+-- | Name of the TargetSslProxy resource whose SSL policy is to be set. The
+-- name must be 1-63 characters long, and comply with RFC1035.
+tspsspTargetSSLProxy :: Lens' TargetSSLProxiesSetSSLPolicy Text
+tspsspTargetSSLProxy
+  = lens _tspsspTargetSSLProxy
+      (\ s a -> s{_tspsspTargetSSLProxy = a})
+
+instance GoogleRequest TargetSSLProxiesSetSSLPolicy
+         where
+        type Rs TargetSSLProxiesSetSSLPolicy = Operation
+        type Scopes TargetSSLProxiesSetSSLPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetSSLProxiesSetSSLPolicy'{..}
+          = go _tspsspProject _tspsspTargetSSLProxy
+              _tspsspRequestId
+              (Just AltJSON)
+              _tspsspPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetSSLProxiesSetSSLPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetTCPProxies.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 specified TargetTcpProxy resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.delete@.
+module Network.Google.Resource.Compute.TargetTCPProxies.Delete
+    (
+    -- * REST Resource
+      TargetTCPProxiesDeleteResource
+
+    -- * Creating a Request
+    , targetTCPProxiesDelete
+    , TargetTCPProxiesDelete
+
+    -- * Request Lenses
+    , ttpdRequestId
+    , ttpdProject
+    , ttpdTargetTCPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.delete@ method which the
+-- 'TargetTCPProxiesDelete' request conforms to.
+type TargetTCPProxiesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 Capture "targetTcpProxy" Text :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetTcpProxy resource.
+--
+-- /See:/ 'targetTCPProxiesDelete' smart constructor.
+data TargetTCPProxiesDelete = TargetTCPProxiesDelete'
+    { _ttpdRequestId      :: !(Maybe Text)
+    , _ttpdProject        :: !Text
+    , _ttpdTargetTCPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpdRequestId'
+--
+-- * 'ttpdProject'
+--
+-- * 'ttpdTargetTCPProxy'
+targetTCPProxiesDelete
+    :: Text -- ^ 'ttpdProject'
+    -> Text -- ^ 'ttpdTargetTCPProxy'
+    -> TargetTCPProxiesDelete
+targetTCPProxiesDelete pTtpdProject_ pTtpdTargetTCPProxy_ =
+    TargetTCPProxiesDelete'
+    { _ttpdRequestId = Nothing
+    , _ttpdProject = pTtpdProject_
+    , _ttpdTargetTCPProxy = pTtpdTargetTCPProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ttpdRequestId :: Lens' TargetTCPProxiesDelete (Maybe Text)
+ttpdRequestId
+  = lens _ttpdRequestId
+      (\ s a -> s{_ttpdRequestId = a})
+
+-- | Project ID for this request.
+ttpdProject :: Lens' TargetTCPProxiesDelete Text
+ttpdProject
+  = lens _ttpdProject (\ s a -> s{_ttpdProject = a})
+
+-- | Name of the TargetTcpProxy resource to delete.
+ttpdTargetTCPProxy :: Lens' TargetTCPProxiesDelete Text
+ttpdTargetTCPProxy
+  = lens _ttpdTargetTCPProxy
+      (\ s a -> s{_ttpdTargetTCPProxy = a})
+
+instance GoogleRequest TargetTCPProxiesDelete where
+        type Rs TargetTCPProxiesDelete = Operation
+        type Scopes TargetTCPProxiesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetTCPProxiesDelete'{..}
+          = go _ttpdProject _ttpdTargetTCPProxy _ttpdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetTCPProxiesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetTCPProxies.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)
+--
+-- Returns the specified TargetTcpProxy resource. Gets a list of available
+-- target TCP proxies by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.get@.
+module Network.Google.Resource.Compute.TargetTCPProxies.Get
+    (
+    -- * REST Resource
+      TargetTCPProxiesGetResource
+
+    -- * Creating a Request
+    , targetTCPProxiesGet
+    , TargetTCPProxiesGet
+
+    -- * Request Lenses
+    , ttpgProject
+    , ttpgTargetTCPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.get@ method which the
+-- 'TargetTCPProxiesGet' request conforms to.
+type TargetTCPProxiesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 Capture "targetTcpProxy" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] TargetTCPProxy
+
+-- | Returns the specified TargetTcpProxy resource. Gets a list of available
+-- target TCP proxies by making a list() request.
+--
+-- /See:/ 'targetTCPProxiesGet' smart constructor.
+data TargetTCPProxiesGet = TargetTCPProxiesGet'
+    { _ttpgProject        :: !Text
+    , _ttpgTargetTCPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpgProject'
+--
+-- * 'ttpgTargetTCPProxy'
+targetTCPProxiesGet
+    :: Text -- ^ 'ttpgProject'
+    -> Text -- ^ 'ttpgTargetTCPProxy'
+    -> TargetTCPProxiesGet
+targetTCPProxiesGet pTtpgProject_ pTtpgTargetTCPProxy_ =
+    TargetTCPProxiesGet'
+    { _ttpgProject = pTtpgProject_
+    , _ttpgTargetTCPProxy = pTtpgTargetTCPProxy_
+    }
+
+-- | Project ID for this request.
+ttpgProject :: Lens' TargetTCPProxiesGet Text
+ttpgProject
+  = lens _ttpgProject (\ s a -> s{_ttpgProject = a})
+
+-- | Name of the TargetTcpProxy resource to return.
+ttpgTargetTCPProxy :: Lens' TargetTCPProxiesGet Text
+ttpgTargetTCPProxy
+  = lens _ttpgTargetTCPProxy
+      (\ s a -> s{_ttpgTargetTCPProxy = a})
+
+instance GoogleRequest TargetTCPProxiesGet where
+        type Rs TargetTCPProxiesGet = TargetTCPProxy
+        type Scopes TargetTCPProxiesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient TargetTCPProxiesGet'{..}
+          = go _ttpgProject _ttpgTargetTCPProxy (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetTCPProxiesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetTCPProxies.Insert
+-- 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 TargetTcpProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.insert@.
+module Network.Google.Resource.Compute.TargetTCPProxies.Insert
+    (
+    -- * REST Resource
+      TargetTCPProxiesInsertResource
+
+    -- * Creating a Request
+    , targetTCPProxiesInsert
+    , TargetTCPProxiesInsert
+
+    -- * Request Lenses
+    , ttpiRequestId
+    , ttpiProject
+    , ttpiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.insert@ method which the
+-- 'TargetTCPProxiesInsert' request conforms to.
+type TargetTCPProxiesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetTCPProxy :>
+                       Post '[JSON] Operation
+
+-- | Creates a TargetTcpProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'targetTCPProxiesInsert' smart constructor.
+data TargetTCPProxiesInsert = TargetTCPProxiesInsert'
+    { _ttpiRequestId :: !(Maybe Text)
+    , _ttpiProject   :: !Text
+    , _ttpiPayload   :: !TargetTCPProxy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpiRequestId'
+--
+-- * 'ttpiProject'
+--
+-- * 'ttpiPayload'
+targetTCPProxiesInsert
+    :: Text -- ^ 'ttpiProject'
+    -> TargetTCPProxy -- ^ 'ttpiPayload'
+    -> TargetTCPProxiesInsert
+targetTCPProxiesInsert pTtpiProject_ pTtpiPayload_ =
+    TargetTCPProxiesInsert'
+    { _ttpiRequestId = Nothing
+    , _ttpiProject = pTtpiProject_
+    , _ttpiPayload = pTtpiPayload_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ttpiRequestId :: Lens' TargetTCPProxiesInsert (Maybe Text)
+ttpiRequestId
+  = lens _ttpiRequestId
+      (\ s a -> s{_ttpiRequestId = a})
+
+-- | Project ID for this request.
+ttpiProject :: Lens' TargetTCPProxiesInsert Text
+ttpiProject
+  = lens _ttpiProject (\ s a -> s{_ttpiProject = a})
+
+-- | Multipart request metadata.
+ttpiPayload :: Lens' TargetTCPProxiesInsert TargetTCPProxy
+ttpiPayload
+  = lens _ttpiPayload (\ s a -> s{_ttpiPayload = a})
+
+instance GoogleRequest TargetTCPProxiesInsert where
+        type Rs TargetTCPProxiesInsert = Operation
+        type Scopes TargetTCPProxiesInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetTCPProxiesInsert'{..}
+          = go _ttpiProject _ttpiRequestId (Just AltJSON)
+              _ttpiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetTCPProxiesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.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.Compute.TargetTCPProxies.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)
+--
+-- Retrieves the list of TargetTcpProxy resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.list@.
+module Network.Google.Resource.Compute.TargetTCPProxies.List
+    (
+    -- * REST Resource
+      TargetTCPProxiesListResource
+
+    -- * Creating a Request
+    , targetTCPProxiesList
+    , TargetTCPProxiesList
+
+    -- * Request Lenses
+    , ttplOrderBy
+    , ttplProject
+    , ttplFilter
+    , ttplPageToken
+    , ttplMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.list@ method which the
+-- 'TargetTCPProxiesList' request conforms to.
+type TargetTCPProxiesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] TargetTCPProxyList
+
+-- | Retrieves the list of TargetTcpProxy resources available to the
+-- specified project.
+--
+-- /See:/ 'targetTCPProxiesList' smart constructor.
+data TargetTCPProxiesList = TargetTCPProxiesList'
+    { _ttplOrderBy    :: !(Maybe Text)
+    , _ttplProject    :: !Text
+    , _ttplFilter     :: !(Maybe Text)
+    , _ttplPageToken  :: !(Maybe Text)
+    , _ttplMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttplOrderBy'
+--
+-- * 'ttplProject'
+--
+-- * 'ttplFilter'
+--
+-- * 'ttplPageToken'
+--
+-- * 'ttplMaxResults'
+targetTCPProxiesList
+    :: Text -- ^ 'ttplProject'
+    -> TargetTCPProxiesList
+targetTCPProxiesList pTtplProject_ =
+    TargetTCPProxiesList'
+    { _ttplOrderBy = Nothing
+    , _ttplProject = pTtplProject_
+    , _ttplFilter = Nothing
+    , _ttplPageToken = Nothing
+    , _ttplMaxResults = 500
+    }
+
+-- | Sorts list results by a certain order. By default, results are returned
+-- in alphanumerical order based on the resource name. You can also sort
+-- results in descending order based on the creation timestamp using
+-- orderBy=\"creationTimestamp desc\". This sorts results based on the
+-- creationTimestamp field in reverse chronological order (newest result
+-- first). Use this to sort resources like operations so that the newest
+-- operation is returned first. Currently, only sorting by name or
+-- creationTimestamp desc is supported.
+ttplOrderBy :: Lens' TargetTCPProxiesList (Maybe Text)
+ttplOrderBy
+  = lens _ttplOrderBy (\ s a -> s{_ttplOrderBy = a})
+
+-- | Project ID for this request.
+ttplProject :: Lens' TargetTCPProxiesList Text
+ttplProject
+  = lens _ttplProject (\ s a -> s{_ttplProject = a})
+
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
+ttplFilter :: Lens' TargetTCPProxiesList (Maybe Text)
+ttplFilter
+  = lens _ttplFilter (\ s a -> s{_ttplFilter = a})
+
+-- | Specifies a page token to use. Set pageToken to the nextPageToken
+-- returned by a previous list request to get the next page of results.
+ttplPageToken :: Lens' TargetTCPProxiesList (Maybe Text)
+ttplPageToken
+  = lens _ttplPageToken
+      (\ s a -> s{_ttplPageToken = a})
+
+-- | The maximum number of results per page that should be returned. If the
+-- number of available results is larger than maxResults, Compute Engine
+-- returns a nextPageToken that can be used to get the next page of results
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
+ttplMaxResults :: Lens' TargetTCPProxiesList Word32
+ttplMaxResults
+  = lens _ttplMaxResults
+      (\ s a -> s{_ttplMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetTCPProxiesList where
+        type Rs TargetTCPProxiesList = TargetTCPProxyList
+        type Scopes TargetTCPProxiesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient TargetTCPProxiesList'{..}
+          = go _ttplProject _ttplOrderBy _ttplFilter
+              _ttplPageToken
+              (Just _ttplMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetTCPProxiesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetTCPProxies.SetBackendService
+-- 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)
+--
+-- Changes the BackendService for TargetTcpProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.setBackendService@.
+module Network.Google.Resource.Compute.TargetTCPProxies.SetBackendService
+    (
+    -- * REST Resource
+      TargetTCPProxiesSetBackendServiceResource
+
+    -- * Creating a Request
+    , targetTCPProxiesSetBackendService
+    , TargetTCPProxiesSetBackendService
+
+    -- * Request Lenses
+    , ttpsbsRequestId
+    , ttpsbsProject
+    , ttpsbsPayload
+    , ttpsbsTargetTCPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.setBackendService@ method which the
+-- 'TargetTCPProxiesSetBackendService' request conforms to.
+type TargetTCPProxiesSetBackendServiceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 Capture "targetTcpProxy" Text :>
+                   "setBackendService" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           TargetTCPProxiesSetBackendServiceRequest
+                           :> Post '[JSON] Operation
+
+-- | Changes the BackendService for TargetTcpProxy.
+--
+-- /See:/ 'targetTCPProxiesSetBackendService' smart constructor.
+data TargetTCPProxiesSetBackendService = TargetTCPProxiesSetBackendService'
+    { _ttpsbsRequestId      :: !(Maybe Text)
+    , _ttpsbsProject        :: !Text
+    , _ttpsbsPayload        :: !TargetTCPProxiesSetBackendServiceRequest
+    , _ttpsbsTargetTCPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesSetBackendService' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpsbsRequestId'
+--
+-- * 'ttpsbsProject'
+--
+-- * 'ttpsbsPayload'
+--
+-- * 'ttpsbsTargetTCPProxy'
+targetTCPProxiesSetBackendService
+    :: Text -- ^ 'ttpsbsProject'
+    -> TargetTCPProxiesSetBackendServiceRequest -- ^ 'ttpsbsPayload'
+    -> Text -- ^ 'ttpsbsTargetTCPProxy'
+    -> TargetTCPProxiesSetBackendService
+targetTCPProxiesSetBackendService pTtpsbsProject_ pTtpsbsPayload_ pTtpsbsTargetTCPProxy_ =
+    TargetTCPProxiesSetBackendService'
+    { _ttpsbsRequestId = Nothing
+    , _ttpsbsProject = pTtpsbsProject_
+    , _ttpsbsPayload = pTtpsbsPayload_
+    , _ttpsbsTargetTCPProxy = pTtpsbsTargetTCPProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ttpsbsRequestId :: Lens' TargetTCPProxiesSetBackendService (Maybe Text)
+ttpsbsRequestId
+  = lens _ttpsbsRequestId
+      (\ s a -> s{_ttpsbsRequestId = a})
+
+-- | Project ID for this request.
+ttpsbsProject :: Lens' TargetTCPProxiesSetBackendService Text
+ttpsbsProject
+  = lens _ttpsbsProject
+      (\ s a -> s{_ttpsbsProject = a})
+
+-- | Multipart request metadata.
+ttpsbsPayload :: Lens' TargetTCPProxiesSetBackendService TargetTCPProxiesSetBackendServiceRequest
+ttpsbsPayload
+  = lens _ttpsbsPayload
+      (\ s a -> s{_ttpsbsPayload = a})
+
+-- | Name of the TargetTcpProxy resource whose BackendService resource is to
+-- be set.
+ttpsbsTargetTCPProxy :: Lens' TargetTCPProxiesSetBackendService Text
+ttpsbsTargetTCPProxy
+  = lens _ttpsbsTargetTCPProxy
+      (\ s a -> s{_ttpsbsTargetTCPProxy = a})
+
+instance GoogleRequest
+         TargetTCPProxiesSetBackendService where
+        type Rs TargetTCPProxiesSetBackendService = Operation
+        type Scopes TargetTCPProxiesSetBackendService =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetTCPProxiesSetBackendService'{..}
+          = go _ttpsbsProject _ttpsbsTargetTCPProxy
+              _ttpsbsRequestId
+              (Just AltJSON)
+              _ttpsbsPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetTCPProxiesSetBackendServiceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetTCPProxies.SetProxyHeader
+-- 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)
+--
+-- Changes the ProxyHeaderType for TargetTcpProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetTcpProxies.setProxyHeader@.
+module Network.Google.Resource.Compute.TargetTCPProxies.SetProxyHeader
+    (
+    -- * REST Resource
+      TargetTCPProxiesSetProxyHeaderResource
+
+    -- * Creating a Request
+    , targetTCPProxiesSetProxyHeader
+    , TargetTCPProxiesSetProxyHeader
+
+    -- * Request Lenses
+    , ttpsphRequestId
+    , ttpsphProject
+    , ttpsphPayload
+    , ttpsphTargetTCPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetTcpProxies.setProxyHeader@ method which the
+-- 'TargetTCPProxiesSetProxyHeader' request conforms to.
+type TargetTCPProxiesSetProxyHeaderResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetTcpProxies" :>
+                 Capture "targetTcpProxy" Text :>
+                   "setProxyHeader" :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetTCPProxiesSetProxyHeaderRequest
+                           :> Post '[JSON] Operation
+
+-- | Changes the ProxyHeaderType for TargetTcpProxy.
+--
+-- /See:/ 'targetTCPProxiesSetProxyHeader' smart constructor.
+data TargetTCPProxiesSetProxyHeader = TargetTCPProxiesSetProxyHeader'
+    { _ttpsphRequestId      :: !(Maybe Text)
+    , _ttpsphProject        :: !Text
+    , _ttpsphPayload        :: !TargetTCPProxiesSetProxyHeaderRequest
+    , _ttpsphTargetTCPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetTCPProxiesSetProxyHeader' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ttpsphRequestId'
+--
+-- * 'ttpsphProject'
+--
+-- * 'ttpsphPayload'
+--
+-- * 'ttpsphTargetTCPProxy'
+targetTCPProxiesSetProxyHeader
+    :: Text -- ^ 'ttpsphProject'
+    -> TargetTCPProxiesSetProxyHeaderRequest -- ^ 'ttpsphPayload'
+    -> Text -- ^ 'ttpsphTargetTCPProxy'
+    -> TargetTCPProxiesSetProxyHeader
+targetTCPProxiesSetProxyHeader pTtpsphProject_ pTtpsphPayload_ pTtpsphTargetTCPProxy_ =
+    TargetTCPProxiesSetProxyHeader'
+    { _ttpsphRequestId = Nothing
+    , _ttpsphProject = pTtpsphProject_
+    , _ttpsphPayload = pTtpsphPayload_
+    , _ttpsphTargetTCPProxy = pTtpsphTargetTCPProxy_
+    }
+
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+ttpsphRequestId :: Lens' TargetTCPProxiesSetProxyHeader (Maybe Text)
+ttpsphRequestId
+  = lens _ttpsphRequestId
+      (\ s a -> s{_ttpsphRequestId = a})
+
+-- | Project ID for this request.
+ttpsphProject :: Lens' TargetTCPProxiesSetProxyHeader Text
+ttpsphProject
+  = lens _ttpsphProject
+      (\ s a -> s{_ttpsphProject = a})
+
+-- | Multipart request metadata.
+ttpsphPayload :: Lens' TargetTCPProxiesSetProxyHeader TargetTCPProxiesSetProxyHeaderRequest
+ttpsphPayload
+  = lens _ttpsphPayload
+      (\ s a -> s{_ttpsphPayload = a})
+
+-- | Name of the TargetTcpProxy resource whose ProxyHeader is to be set.
+ttpsphTargetTCPProxy :: Lens' TargetTCPProxiesSetProxyHeader Text
+ttpsphTargetTCPProxy
+  = lens _ttpsphTargetTCPProxy
+      (\ s a -> s{_ttpsphTargetTCPProxy = a})
+
+instance GoogleRequest TargetTCPProxiesSetProxyHeader
+         where
+        type Rs TargetTCPProxiesSetProxyHeader = Operation
+        type Scopes TargetTCPProxiesSetProxyHeader =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient TargetTCPProxiesSetProxyHeader'{..}
+          = go _ttpsphProject _ttpsphTargetTCPProxy
+              _ttpsphRequestId
+              (Just AltJSON)
+              _ttpsphPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetTCPProxiesSetProxyHeaderResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs
@@ -112,26 +112,22 @@
 tvgalProject
   = lens _tvgalProject (\ s a -> s{_tvgalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tvgalFilter :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)
 tvgalFilter
   = lens _tvgalFilter (\ s a -> s{_tvgalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tvgalMaxResults :: Lens' TargetVPNGatewaysAggregatedList Word32
 tvgalMaxResults
   = lens _tvgalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs
@@ -33,6 +33,7 @@
     , TargetVPNGatewaysDelete
 
     -- * Request Lenses
+    , tvgdRequestId
     , tvgdProject
     , tvgdTargetVPNGateway
     , tvgdRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "targetVpnGateways" :>
                    Capture "targetVpnGateway" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified target VPN gateway.
 --
 -- /See:/ 'targetVPNGatewaysDelete' smart constructor.
 data TargetVPNGatewaysDelete = TargetVPNGatewaysDelete'
-    { _tvgdProject          :: !Text
+    { _tvgdRequestId        :: !(Maybe Text)
+    , _tvgdProject          :: !Text
     , _tvgdTargetVPNGateway :: !Text
     , _tvgdRegion           :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tvgdRequestId'
+--
 -- * 'tvgdProject'
 --
 -- * 'tvgdTargetVPNGateway'
@@ -79,11 +84,27 @@
     -> TargetVPNGatewaysDelete
 targetVPNGatewaysDelete pTvgdProject_ pTvgdTargetVPNGateway_ pTvgdRegion_ =
     TargetVPNGatewaysDelete'
-    { _tvgdProject = pTvgdProject_
+    { _tvgdRequestId = Nothing
+    , _tvgdProject = pTvgdProject_
     , _tvgdTargetVPNGateway = pTvgdTargetVPNGateway_
     , _tvgdRegion = pTvgdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tvgdRequestId :: Lens' TargetVPNGatewaysDelete (Maybe Text)
+tvgdRequestId
+  = lens _tvgdRequestId
+      (\ s a -> s{_tvgdRequestId = a})
+
 -- | Project ID for this request.
 tvgdProject :: Lens' TargetVPNGatewaysDelete Text
 tvgdProject
@@ -107,6 +128,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetVPNGatewaysDelete'{..}
           = go _tvgdProject _tvgdRegion _tvgdTargetVPNGateway
+              _tvgdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs
@@ -20,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified target VPN gateway. Get a list of available target
--- VPN gateways by making a list() request.
+-- Returns the specified target VPN gateway. Gets a list of available
+-- target VPN gateways by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.get@.
 module Network.Google.Resource.Compute.TargetVPNGateways.Get
@@ -56,8 +56,8 @@
                      QueryParam "alt" AltJSON :>
                        Get '[JSON] TargetVPNGateway
 
--- | Returns the specified target VPN gateway. Get a list of available target
--- VPN gateways by making a list() request.
+-- | Returns the specified target VPN gateway. Gets a list of available
+-- target VPN gateways by making a list() request.
 --
 -- /See:/ 'targetVPNGatewaysGet' smart constructor.
 data TargetVPNGatewaysGet = TargetVPNGatewaysGet'
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs
@@ -34,6 +34,7 @@
     , TargetVPNGatewaysInsert
 
     -- * Request Lenses
+    , tvgiRequestId
     , tvgiProject
     , tvgiPayload
     , tvgiRegion
@@ -52,24 +53,28 @@
              "regions" :>
                Capture "region" Text :>
                  "targetVpnGateways" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] TargetVPNGateway :>
-                       Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TargetVPNGateway :>
+                         Post '[JSON] Operation
 
 -- | Creates a target VPN gateway in the specified project and region using
 -- the data included in the request.
 --
 -- /See:/ 'targetVPNGatewaysInsert' smart constructor.
 data TargetVPNGatewaysInsert = TargetVPNGatewaysInsert'
-    { _tvgiProject :: !Text
-    , _tvgiPayload :: !TargetVPNGateway
-    , _tvgiRegion  :: !Text
+    { _tvgiRequestId :: !(Maybe Text)
+    , _tvgiProject   :: !Text
+    , _tvgiPayload   :: !TargetVPNGateway
+    , _tvgiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'TargetVPNGatewaysInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tvgiRequestId'
+--
 -- * 'tvgiProject'
 --
 -- * 'tvgiPayload'
@@ -82,11 +87,27 @@
     -> TargetVPNGatewaysInsert
 targetVPNGatewaysInsert pTvgiProject_ pTvgiPayload_ pTvgiRegion_ =
     TargetVPNGatewaysInsert'
-    { _tvgiProject = pTvgiProject_
+    { _tvgiRequestId = Nothing
+    , _tvgiProject = pTvgiProject_
     , _tvgiPayload = pTvgiPayload_
     , _tvgiRegion = pTvgiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+tvgiRequestId :: Lens' TargetVPNGatewaysInsert (Maybe Text)
+tvgiRequestId
+  = lens _tvgiRequestId
+      (\ s a -> s{_tvgiRequestId = a})
+
 -- | Project ID for this request.
 tvgiProject :: Lens' TargetVPNGatewaysInsert Text
 tvgiProject
@@ -108,7 +129,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient TargetVPNGatewaysInsert'{..}
-          = go _tvgiProject _tvgiRegion (Just AltJSON)
+          = go _tvgiProject _tvgiRegion _tvgiRequestId
+              (Just AltJSON)
               _tvgiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs
@@ -121,26 +121,22 @@
 tvglProject
   = lens _tvglProject (\ s a -> s{_tvglProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 tvglFilter :: Lens' TargetVPNGatewaysList (Maybe Text)
 tvglFilter
   = lens _tvglFilter (\ s a -> s{_tvglFilter = a})
@@ -160,7 +156,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 tvglMaxResults :: Lens' TargetVPNGatewaysList Word32
 tvglMaxResults
   = lens _tvglMaxResults
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs b/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs
@@ -33,6 +33,7 @@
     , URLMapsDelete
 
     -- * Request Lenses
+    , umdRequestId
     , umdURLMap
     , umdProject
     ) where
@@ -50,20 +51,24 @@
              "global" :>
                "urlMaps" :>
                  Capture "urlMap" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified UrlMap resource.
 --
 -- /See:/ 'urlMapsDelete' smart constructor.
 data URLMapsDelete = URLMapsDelete'
-    { _umdURLMap  :: !Text
-    , _umdProject :: !Text
+    { _umdRequestId :: !(Maybe Text)
+    , _umdURLMap    :: !Text
+    , _umdProject   :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'URLMapsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umdRequestId'
+--
 -- * 'umdURLMap'
 --
 -- * 'umdProject'
@@ -73,10 +78,25 @@
     -> URLMapsDelete
 urlMapsDelete pUmdURLMap_ pUmdProject_ =
     URLMapsDelete'
-    { _umdURLMap = pUmdURLMap_
+    { _umdRequestId = Nothing
+    , _umdURLMap = pUmdURLMap_
     , _umdProject = pUmdProject_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+umdRequestId :: Lens' URLMapsDelete (Maybe Text)
+umdRequestId
+  = lens _umdRequestId (\ s a -> s{_umdRequestId = a})
+
 -- | Name of the UrlMap resource to delete.
 umdURLMap :: Lens' URLMapsDelete Text
 umdURLMap
@@ -93,7 +113,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient URLMapsDelete'{..}
-          = go _umdProject _umdURLMap (Just AltJSON)
+          = go _umdProject _umdURLMap _umdRequestId
+              (Just AltJSON)
               computeService
           where go
                   = buildClient (Proxy :: Proxy URLMapsDeleteResource)
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Get.hs b/gen/Network/Google/Resource/Compute/URLMaps/Get.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Get.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified UrlMap resource. Get a list of available URL maps
+-- Returns the specified UrlMap resource. Gets a list of available URL maps
 -- by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.get@.
@@ -53,7 +53,7 @@
                  Capture "urlMap" Text :>
                    QueryParam "alt" AltJSON :> Get '[JSON] URLMap
 
--- | Returns the specified UrlMap resource. Get a list of available URL maps
+-- | Returns the specified UrlMap resource. Gets a list of available URL maps
 -- by making a list() request.
 --
 -- /See:/ 'urlMapsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs b/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs
@@ -34,6 +34,7 @@
     , URLMapsInsert
 
     -- * Request Lenses
+    , umiRequestId
     , umiProject
     , umiPayload
     ) where
@@ -50,22 +51,26 @@
            Capture "project" Text :>
              "global" :>
                "urlMaps" :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] URLMap :> Post '[JSON] Operation
+                 QueryParam "requestId" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] URLMap :> Post '[JSON] Operation
 
 -- | Creates a UrlMap resource in the specified project using the data
 -- included in the request.
 --
 -- /See:/ 'urlMapsInsert' smart constructor.
 data URLMapsInsert = URLMapsInsert'
-    { _umiProject :: !Text
-    , _umiPayload :: !URLMap
+    { _umiRequestId :: !(Maybe Text)
+    , _umiProject   :: !Text
+    , _umiPayload   :: !URLMap
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'URLMapsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umiRequestId'
+--
 -- * 'umiProject'
 --
 -- * 'umiPayload'
@@ -75,10 +80,25 @@
     -> URLMapsInsert
 urlMapsInsert pUmiProject_ pUmiPayload_ =
     URLMapsInsert'
-    { _umiProject = pUmiProject_
+    { _umiRequestId = Nothing
+    , _umiProject = pUmiProject_
     , _umiPayload = pUmiPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+umiRequestId :: Lens' URLMapsInsert (Maybe Text)
+umiRequestId
+  = lens _umiRequestId (\ s a -> s{_umiRequestId = a})
+
 -- | Project ID for this request.
 umiProject :: Lens' URLMapsInsert Text
 umiProject
@@ -95,7 +115,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient URLMapsInsert'{..}
-          = go _umiProject (Just AltJSON) _umiPayload
+          = go _umiProject _umiRequestId (Just AltJSON)
+              _umiPayload
               computeService
           where go
                   = buildClient (Proxy :: Proxy URLMapsInsertResource)
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/InvalidateCache.hs b/gen/Network/Google/Resource/Compute/URLMaps/InvalidateCache.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/InvalidateCache.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/InvalidateCache.hs
@@ -34,6 +34,7 @@
     , URLMapsInvalidateCache
 
     -- * Request Lenses
+    , umicRequestId
     , umicURLMap
     , umicProject
     , umicPayload
@@ -53,24 +54,28 @@
                "urlMaps" :>
                  Capture "urlMap" Text :>
                    "invalidateCache" :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] CacheInvalidationRule :>
-                         Post '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] CacheInvalidationRule :>
+                           Post '[JSON] Operation
 
 -- | Initiates a cache invalidation operation, invalidating the specified
 -- path, scoped to the specified UrlMap.
 --
 -- /See:/ 'urlMapsInvalidateCache' smart constructor.
 data URLMapsInvalidateCache = URLMapsInvalidateCache'
-    { _umicURLMap  :: !Text
-    , _umicProject :: !Text
-    , _umicPayload :: !CacheInvalidationRule
+    { _umicRequestId :: !(Maybe Text)
+    , _umicURLMap    :: !Text
+    , _umicProject   :: !Text
+    , _umicPayload   :: !CacheInvalidationRule
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'URLMapsInvalidateCache' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umicRequestId'
+--
 -- * 'umicURLMap'
 --
 -- * 'umicProject'
@@ -83,11 +88,27 @@
     -> URLMapsInvalidateCache
 urlMapsInvalidateCache pUmicURLMap_ pUmicProject_ pUmicPayload_ =
     URLMapsInvalidateCache'
-    { _umicURLMap = pUmicURLMap_
+    { _umicRequestId = Nothing
+    , _umicURLMap = pUmicURLMap_
     , _umicProject = pUmicProject_
     , _umicPayload = pUmicPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+umicRequestId :: Lens' URLMapsInvalidateCache (Maybe Text)
+umicRequestId
+  = lens _umicRequestId
+      (\ s a -> s{_umicRequestId = a})
+
 -- | Name of the UrlMap scoping this request.
 umicURLMap :: Lens' URLMapsInvalidateCache Text
 umicURLMap
@@ -109,7 +130,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient URLMapsInvalidateCache'{..}
-          = go _umicProject _umicURLMap (Just AltJSON)
+          = go _umicProject _umicURLMap _umicRequestId
+              (Just AltJSON)
               _umicPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/List.hs b/gen/Network/Google/Resource/Compute/URLMaps/List.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/List.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/List.hs
@@ -113,26 +113,22 @@
 umlProject
   = lens _umlProject (\ s a -> s{_umlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 umlFilter :: Lens' URLMapsList (Maybe Text)
 umlFilter
   = lens _umlFilter (\ s a -> s{_umlFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 umlMaxResults :: Lens' URLMapsList Word32
 umlMaxResults
   = lens _umlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs b/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs
@@ -20,8 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the specified UrlMap resource with the data included in the
--- request. This method supports patch semantics.
+-- Patches the specified UrlMap resource with the data included in the
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.patch@.
 module Network.Google.Resource.Compute.URLMaps.Patch
@@ -34,6 +35,7 @@
     , URLMapsPatch
 
     -- * Request Lenses
+    , umpRequestId
     , umpURLMap
     , umpProject
     , umpPayload
@@ -52,23 +54,28 @@
              "global" :>
                "urlMaps" :>
                  Capture "urlMap" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] URLMap :> Patch '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] URLMap :> Patch '[JSON] Operation
 
--- | Updates the specified UrlMap resource with the data included in the
--- request. This method supports patch semantics.
+-- | Patches the specified UrlMap resource with the data included in the
+-- request. This method supports PATCH semantics and uses the JSON merge
+-- patch format and processing rules.
 --
 -- /See:/ 'urlMapsPatch' smart constructor.
 data URLMapsPatch = URLMapsPatch'
-    { _umpURLMap  :: !Text
-    , _umpProject :: !Text
-    , _umpPayload :: !URLMap
+    { _umpRequestId :: !(Maybe Text)
+    , _umpURLMap    :: !Text
+    , _umpProject   :: !Text
+    , _umpPayload   :: !URLMap
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'URLMapsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umpRequestId'
+--
 -- * 'umpURLMap'
 --
 -- * 'umpProject'
@@ -81,12 +88,27 @@
     -> URLMapsPatch
 urlMapsPatch pUmpURLMap_ pUmpProject_ pUmpPayload_ =
     URLMapsPatch'
-    { _umpURLMap = pUmpURLMap_
+    { _umpRequestId = Nothing
+    , _umpURLMap = pUmpURLMap_
     , _umpProject = pUmpProject_
     , _umpPayload = pUmpPayload_
     }
 
--- | Name of the UrlMap resource to update.
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+umpRequestId :: Lens' URLMapsPatch (Maybe Text)
+umpRequestId
+  = lens _umpRequestId (\ s a -> s{_umpRequestId = a})
+
+-- | Name of the UrlMap resource to patch.
 umpURLMap :: Lens' URLMapsPatch Text
 umpURLMap
   = lens _umpURLMap (\ s a -> s{_umpURLMap = a})
@@ -107,7 +129,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient URLMapsPatch'{..}
-          = go _umpProject _umpURLMap (Just AltJSON)
+          = go _umpProject _umpURLMap _umpRequestId
+              (Just AltJSON)
               _umpPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Update.hs b/gen/Network/Google/Resource/Compute/URLMaps/Update.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Update.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Update.hs
@@ -34,6 +34,7 @@
     , URLMapsUpdate
 
     -- * Request Lenses
+    , umuRequestId
     , umuURLMap
     , umuProject
     , umuPayload
@@ -52,23 +53,27 @@
              "global" :>
                "urlMaps" :>
                  Capture "urlMap" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] URLMap :> Put '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] URLMap :> Put '[JSON] Operation
 
 -- | Updates the specified UrlMap resource with the data included in the
 -- request.
 --
 -- /See:/ 'urlMapsUpdate' smart constructor.
 data URLMapsUpdate = URLMapsUpdate'
-    { _umuURLMap  :: !Text
-    , _umuProject :: !Text
-    , _umuPayload :: !URLMap
+    { _umuRequestId :: !(Maybe Text)
+    , _umuURLMap    :: !Text
+    , _umuProject   :: !Text
+    , _umuPayload   :: !URLMap
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'URLMapsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umuRequestId'
+--
 -- * 'umuURLMap'
 --
 -- * 'umuProject'
@@ -81,11 +86,26 @@
     -> URLMapsUpdate
 urlMapsUpdate pUmuURLMap_ pUmuProject_ pUmuPayload_ =
     URLMapsUpdate'
-    { _umuURLMap = pUmuURLMap_
+    { _umuRequestId = Nothing
+    , _umuURLMap = pUmuURLMap_
     , _umuProject = pUmuProject_
     , _umuPayload = pUmuPayload_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+umuRequestId :: Lens' URLMapsUpdate (Maybe Text)
+umuRequestId
+  = lens _umuRequestId (\ s a -> s{_umuRequestId = a})
+
 -- | Name of the UrlMap resource to update.
 umuURLMap :: Lens' URLMapsUpdate Text
 umuURLMap
@@ -107,7 +127,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient URLMapsUpdate'{..}
-          = go _umuProject _umuURLMap (Just AltJSON)
+          = go _umuProject _umuURLMap _umuRequestId
+              (Just AltJSON)
               _umuPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs
@@ -112,26 +112,22 @@
 vtalProject
   = lens _vtalProject (\ s a -> s{_vtalProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 vtalFilter :: Lens' VPNTunnelsAggregatedList (Maybe Text)
 vtalFilter
   = lens _vtalFilter (\ s a -> s{_vtalFilter = a})
@@ -146,7 +142,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 vtalMaxResults :: Lens' VPNTunnelsAggregatedList Word32
 vtalMaxResults
   = lens _vtalMaxResults
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs
--- a/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs
@@ -33,6 +33,7 @@
     , VPNTunnelsDelete
 
     -- * Request Lenses
+    , vtdRequestId
     , vtdProject
     , vtdVPNTunnel
     , vtdRegion
@@ -52,13 +53,15 @@
                Capture "region" Text :>
                  "vpnTunnels" :>
                    Capture "vpnTunnel" Text :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | Deletes the specified VpnTunnel resource.
 --
 -- /See:/ 'vpnTunnelsDelete' smart constructor.
 data VPNTunnelsDelete = VPNTunnelsDelete'
-    { _vtdProject   :: !Text
+    { _vtdRequestId :: !(Maybe Text)
+    , _vtdProject   :: !Text
     , _vtdVPNTunnel :: !Text
     , _vtdRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -67,6 +70,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'vtdRequestId'
+--
 -- * 'vtdProject'
 --
 -- * 'vtdVPNTunnel'
@@ -79,11 +84,26 @@
     -> VPNTunnelsDelete
 vpnTunnelsDelete pVtdProject_ pVtdVPNTunnel_ pVtdRegion_ =
     VPNTunnelsDelete'
-    { _vtdProject = pVtdProject_
+    { _vtdRequestId = Nothing
+    , _vtdProject = pVtdProject_
     , _vtdVPNTunnel = pVtdVPNTunnel_
     , _vtdRegion = pVtdRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+vtdRequestId :: Lens' VPNTunnelsDelete (Maybe Text)
+vtdRequestId
+  = lens _vtdRequestId (\ s a -> s{_vtdRequestId = a})
+
 -- | Project ID for this request.
 vtdProject :: Lens' VPNTunnelsDelete Text
 vtdProject
@@ -106,6 +126,7 @@
                "https://www.googleapis.com/auth/compute"]
         requestClient VPNTunnelsDelete'{..}
           = go _vtdProject _vtdRegion _vtdVPNTunnel
+              _vtdRequestId
               (Just AltJSON)
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs
--- a/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified VpnTunnel resource. Get a list of available VPN
+-- Returns the specified VpnTunnel resource. Gets a list of available VPN
 -- tunnels by making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.get@.
@@ -55,7 +55,7 @@
                    Capture "vpnTunnel" Text :>
                      QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnel
 
--- | Returns the specified VpnTunnel resource. Get a list of available VPN
+-- | Returns the specified VpnTunnel resource. Gets a list of available VPN
 -- tunnels by making a list() request.
 --
 -- /See:/ 'vpnTunnelsGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs
--- a/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs
@@ -34,6 +34,7 @@
     , VPNTunnelsInsert
 
     -- * Request Lenses
+    , vtiRequestId
     , vtiProject
     , vtiPayload
     , vtiRegion
@@ -52,23 +53,27 @@
              "regions" :>
                Capture "region" Text :>
                  "vpnTunnels" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] VPNTunnel :> Post '[JSON] Operation
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] VPNTunnel :> Post '[JSON] Operation
 
 -- | Creates a VpnTunnel resource in the specified project and region using
 -- the data included in the request.
 --
 -- /See:/ 'vpnTunnelsInsert' smart constructor.
 data VPNTunnelsInsert = VPNTunnelsInsert'
-    { _vtiProject :: !Text
-    , _vtiPayload :: !VPNTunnel
-    , _vtiRegion  :: !Text
+    { _vtiRequestId :: !(Maybe Text)
+    , _vtiProject   :: !Text
+    , _vtiPayload   :: !VPNTunnel
+    , _vtiRegion    :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'VPNTunnelsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'vtiRequestId'
+--
 -- * 'vtiProject'
 --
 -- * 'vtiPayload'
@@ -81,11 +86,26 @@
     -> VPNTunnelsInsert
 vpnTunnelsInsert pVtiProject_ pVtiPayload_ pVtiRegion_ =
     VPNTunnelsInsert'
-    { _vtiProject = pVtiProject_
+    { _vtiRequestId = Nothing
+    , _vtiProject = pVtiProject_
     , _vtiPayload = pVtiPayload_
     , _vtiRegion = pVtiRegion_
     }
 
+-- | An optional request ID to identify requests. Specify a unique request ID
+-- so that if you must retry your request, the server will know to ignore
+-- the request if it has already been completed. For example, consider a
+-- situation where you make an initial request and the request times out.
+-- If you make the request again with the same request ID, the server can
+-- check if original operation with the same request ID was received, and
+-- if so, will ignore the second request. This prevents clients from
+-- accidentally creating duplicate commitments. The request ID must be a
+-- valid UUID with the exception that zero UUID is not supported
+-- (00000000-0000-0000-0000-000000000000).
+vtiRequestId :: Lens' VPNTunnelsInsert (Maybe Text)
+vtiRequestId
+  = lens _vtiRequestId (\ s a -> s{_vtiRequestId = a})
+
 -- | Project ID for this request.
 vtiProject :: Lens' VPNTunnelsInsert Text
 vtiProject
@@ -107,7 +127,8 @@
              '["https://www.googleapis.com/auth/cloud-platform",
                "https://www.googleapis.com/auth/compute"]
         requestClient VPNTunnelsInsert'{..}
-          = go _vtiProject _vtiRegion (Just AltJSON)
+          = go _vtiProject _vtiRegion _vtiRequestId
+              (Just AltJSON)
               _vtiPayload
               computeService
           where go
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs
--- a/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs
@@ -120,26 +120,22 @@
 vtlProject
   = lens _vtlProject (\ s a -> s{_vtlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 vtlFilter :: Lens' VPNTunnelsList (Maybe Text)
 vtlFilter
   = lens _vtlFilter (\ s a -> s{_vtlFilter = a})
@@ -158,7 +154,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 vtlMaxResults :: Lens' VPNTunnelsList Word32
 vtlMaxResults
   = lens _vtlMaxResults
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs
--- a/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs
@@ -124,26 +124,22 @@
 zolZone :: Lens' ZoneOperationsList Text
 zolZone = lens _zolZone (\ s a -> s{_zolZone = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 zolFilter :: Lens' ZoneOperationsList (Maybe Text)
 zolFilter
   = lens _zolFilter (\ s a -> s{_zolFilter = a})
@@ -157,7 +153,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 zolMaxResults :: Lens' ZoneOperationsList Word32
 zolMaxResults
   = lens _zolMaxResults
diff --git a/gen/Network/Google/Resource/Compute/Zones/Get.hs b/gen/Network/Google/Resource/Compute/Zones/Get.hs
--- a/gen/Network/Google/Resource/Compute/Zones/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Zones/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the specified Zone resource. Get a list of available zones by
+-- Returns the specified Zone resource. Gets a list of available zones by
 -- making a list() request.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zones.get@.
@@ -52,7 +52,7 @@
                Capture "zone" Text :>
                  QueryParam "alt" AltJSON :> Get '[JSON] Zone
 
--- | Returns the specified Zone resource. Get a list of available zones by
+-- | Returns the specified Zone resource. Gets a list of available zones by
 -- making a list() request.
 --
 -- /See:/ 'zonesGet' smart constructor.
diff --git a/gen/Network/Google/Resource/Compute/Zones/List.hs b/gen/Network/Google/Resource/Compute/Zones/List.hs
--- a/gen/Network/Google/Resource/Compute/Zones/List.hs
+++ b/gen/Network/Google/Resource/Compute/Zones/List.hs
@@ -110,26 +110,22 @@
 zlProject
   = lens _zlProject (\ s a -> s{_zlProject = a})
 
--- | Sets a filter expression for filtering listed resources, in the form
--- filter={expression}. Your {expression} must be in the format: field_name
--- comparison_string literal_string. The field_name is the name of the
--- field you want to compare. Only atomic field types are supported
--- (string, number, boolean). The comparison_string must be either eq
--- (equals) or ne (not equals). The literal_string is the string value to
--- filter to. The literal value must be valid for the type of field you are
--- filtering by (string, number, boolean). For string fields, the literal
--- value is interpreted as a regular expression using RE2 syntax. The
--- literal value must match the entire field. For example, to filter for
--- instances that do not have a name of example-instance, you would use
--- filter=name ne example-instance. You can filter on nested fields. For
--- example, you could filter on instances that have set the
--- scheduling.automaticRestart field to true. Use filtering on nested
--- fields to take advantage of labels to organize and search for results
--- based on label values. To filter on multiple expressions, provide each
--- separate expression within parentheses. For example,
--- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple
--- expressions are treated as AND expressions, meaning that resources must
--- match all expressions to pass the filters.
+-- | A filter expression that filters resources listed in the response. The
+-- expression must specify the field name, a comparison operator, and the
+-- value that you want to use for filtering. The value must be a string, a
+-- number, or a boolean. The comparison operator must be either =, !=, >,
+-- or \<. For example, if you are filtering Compute Engine instances, you
+-- can exclude instances named example-instance by specifying name !=
+-- example-instance. You can also filter nested fields. For example, you
+-- could specify scheduling.automaticRestart = false to include instances
+-- only if they are not scheduled for automatic restarts. You can use
+-- filtering on nested fields to filter based on resource labels. To filter
+-- on multiple expressions, provide each separate expression within
+-- parentheses. For example, (scheduling.automaticRestart = true)
+-- (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND
+-- expression. However, you can include AND and OR expressions explicitly.
+-- For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel
+-- Broadwell\") AND (scheduling.automaticRestart = true).
 zlFilter :: Lens' ZonesList (Maybe Text)
 zlFilter = lens _zlFilter (\ s a -> s{_zlFilter = a})
 
@@ -142,7 +138,8 @@
 -- | The maximum number of results per page that should be returned. If the
 -- number of available results is larger than maxResults, Compute Engine
 -- returns a nextPageToken that can be used to get the next page of results
--- in subsequent list requests.
+-- in subsequent list requests. Acceptable values are 0 to 500, inclusive.
+-- (Default: 500)
 zlMaxResults :: Lens' ZonesList Word32
 zlMaxResults
   = lens _zlMaxResults (\ s a -> s{_zlMaxResults = a})
diff --git a/gogol-compute.cabal b/gogol-compute.cabal
--- a/gogol-compute.cabal
+++ b/gogol-compute.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-compute
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Compute Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -35,6 +35,9 @@
     exposed-modules:
           Network.Google.Compute
         , Network.Google.Compute.Types
+        , Network.Google.Resource.Compute.AcceleratorTypes.AggregatedList
+        , Network.Google.Resource.Compute.AcceleratorTypes.Get
+        , Network.Google.Resource.Compute.AcceleratorTypes.List
         , Network.Google.Resource.Compute.Addresses.AggregatedList
         , Network.Google.Resource.Compute.Addresses.Delete
         , Network.Google.Resource.Compute.Addresses.Get
@@ -47,13 +50,24 @@
         , Network.Google.Resource.Compute.Autoscalers.List
         , Network.Google.Resource.Compute.Autoscalers.Patch
         , Network.Google.Resource.Compute.Autoscalers.Update
+        , Network.Google.Resource.Compute.BackendBuckets.AddSignedURLKey
+        , Network.Google.Resource.Compute.BackendBuckets.Delete
+        , Network.Google.Resource.Compute.BackendBuckets.DeleteSignedURLKey
+        , Network.Google.Resource.Compute.BackendBuckets.Get
+        , Network.Google.Resource.Compute.BackendBuckets.Insert
+        , Network.Google.Resource.Compute.BackendBuckets.List
+        , Network.Google.Resource.Compute.BackendBuckets.Patch
+        , Network.Google.Resource.Compute.BackendBuckets.Update
+        , Network.Google.Resource.Compute.BackendServices.AddSignedURLKey
         , Network.Google.Resource.Compute.BackendServices.AggregatedList
         , Network.Google.Resource.Compute.BackendServices.Delete
+        , Network.Google.Resource.Compute.BackendServices.DeleteSignedURLKey
         , Network.Google.Resource.Compute.BackendServices.Get
         , Network.Google.Resource.Compute.BackendServices.GetHealth
         , Network.Google.Resource.Compute.BackendServices.Insert
         , Network.Google.Resource.Compute.BackendServices.List
         , Network.Google.Resource.Compute.BackendServices.Patch
+        , Network.Google.Resource.Compute.BackendServices.SetSecurityPolicy
         , Network.Google.Resource.Compute.BackendServices.Update
         , Network.Google.Resource.Compute.DiskTypes.AggregatedList
         , Network.Google.Resource.Compute.DiskTypes.Get
@@ -62,9 +76,13 @@
         , Network.Google.Resource.Compute.Disks.CreateSnapshot
         , Network.Google.Resource.Compute.Disks.Delete
         , Network.Google.Resource.Compute.Disks.Get
+        , Network.Google.Resource.Compute.Disks.GetIAMPolicy
         , Network.Google.Resource.Compute.Disks.Insert
         , Network.Google.Resource.Compute.Disks.List
         , Network.Google.Resource.Compute.Disks.Resize
+        , Network.Google.Resource.Compute.Disks.SetIAMPolicy
+        , Network.Google.Resource.Compute.Disks.SetLabels
+        , Network.Google.Resource.Compute.Disks.TestIAMPermissions
         , Network.Google.Resource.Compute.Firewalls.Delete
         , Network.Google.Resource.Compute.Firewalls.Get
         , Network.Google.Resource.Compute.Firewalls.Insert
@@ -112,8 +130,12 @@
         , Network.Google.Resource.Compute.Images.Deprecate
         , Network.Google.Resource.Compute.Images.Get
         , Network.Google.Resource.Compute.Images.GetFromFamily
+        , Network.Google.Resource.Compute.Images.GetIAMPolicy
         , Network.Google.Resource.Compute.Images.Insert
         , Network.Google.Resource.Compute.Images.List
+        , Network.Google.Resource.Compute.Images.SetIAMPolicy
+        , Network.Google.Resource.Compute.Images.SetLabels
+        , Network.Google.Resource.Compute.Images.TestIAMPermissions
         , Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
         , Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
         , Network.Google.Resource.Compute.InstanceGroupManagers.Delete
@@ -122,6 +144,7 @@
         , Network.Google.Resource.Compute.InstanceGroupManagers.Insert
         , Network.Google.Resource.Compute.InstanceGroupManagers.List
         , Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+        , Network.Google.Resource.Compute.InstanceGroupManagers.Patch
         , Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
         , Network.Google.Resource.Compute.InstanceGroupManagers.Resize
         , Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
@@ -137,8 +160,11 @@
         , Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
         , Network.Google.Resource.Compute.InstanceTemplates.Delete
         , Network.Google.Resource.Compute.InstanceTemplates.Get
+        , Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
         , Network.Google.Resource.Compute.InstanceTemplates.Insert
         , Network.Google.Resource.Compute.InstanceTemplates.List
+        , Network.Google.Resource.Compute.InstanceTemplates.SetIAMPolicy
+        , Network.Google.Resource.Compute.InstanceTemplates.TestIAMPermissions
         , Network.Google.Resource.Compute.Instances.AddAccessConfig
         , Network.Google.Resource.Compute.Instances.AggregatedList
         , Network.Google.Resource.Compute.Instances.AttachDisk
@@ -146,32 +172,99 @@
         , Network.Google.Resource.Compute.Instances.DeleteAccessConfig
         , Network.Google.Resource.Compute.Instances.DetachDisk
         , Network.Google.Resource.Compute.Instances.Get
+        , Network.Google.Resource.Compute.Instances.GetIAMPolicy
         , Network.Google.Resource.Compute.Instances.GetSerialPortOutput
         , Network.Google.Resource.Compute.Instances.Insert
         , Network.Google.Resource.Compute.Instances.List
+        , Network.Google.Resource.Compute.Instances.ListReferrers
         , Network.Google.Resource.Compute.Instances.Reset
+        , Network.Google.Resource.Compute.Instances.SetDeletionProtection
         , Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+        , Network.Google.Resource.Compute.Instances.SetIAMPolicy
+        , Network.Google.Resource.Compute.Instances.SetLabels
+        , Network.Google.Resource.Compute.Instances.SetMachineResources
         , Network.Google.Resource.Compute.Instances.SetMachineType
         , Network.Google.Resource.Compute.Instances.SetMetadata
+        , Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
         , Network.Google.Resource.Compute.Instances.SetScheduling
         , Network.Google.Resource.Compute.Instances.SetServiceAccount
         , Network.Google.Resource.Compute.Instances.SetTags
+        , Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
         , Network.Google.Resource.Compute.Instances.Start
         , Network.Google.Resource.Compute.Instances.StartWithEncryptionKey
         , Network.Google.Resource.Compute.Instances.Stop
+        , Network.Google.Resource.Compute.Instances.TestIAMPermissions
+        , Network.Google.Resource.Compute.Instances.UpdateAccessConfig
+        , Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
+        , Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
+        , Network.Google.Resource.Compute.InterconnectAttachments.Delete
+        , Network.Google.Resource.Compute.InterconnectAttachments.Get
+        , Network.Google.Resource.Compute.InterconnectAttachments.Insert
+        , Network.Google.Resource.Compute.InterconnectAttachments.List
+        , Network.Google.Resource.Compute.InterconnectAttachments.Patch
+        , Network.Google.Resource.Compute.InterconnectLocations.Get
+        , Network.Google.Resource.Compute.InterconnectLocations.List
+        , Network.Google.Resource.Compute.Interconnects.Delete
+        , Network.Google.Resource.Compute.Interconnects.Get
+        , Network.Google.Resource.Compute.Interconnects.GetDiagnostics
+        , Network.Google.Resource.Compute.Interconnects.Insert
+        , Network.Google.Resource.Compute.Interconnects.List
+        , Network.Google.Resource.Compute.Interconnects.Patch
+        , Network.Google.Resource.Compute.LicenseCodes.Get
+        , Network.Google.Resource.Compute.LicenseCodes.TestIAMPermissions
+        , Network.Google.Resource.Compute.Licenses.Delete
         , Network.Google.Resource.Compute.Licenses.Get
+        , Network.Google.Resource.Compute.Licenses.GetIAMPolicy
+        , Network.Google.Resource.Compute.Licenses.Insert
+        , Network.Google.Resource.Compute.Licenses.List
+        , Network.Google.Resource.Compute.Licenses.SetIAMPolicy
+        , Network.Google.Resource.Compute.Licenses.TestIAMPermissions
         , Network.Google.Resource.Compute.MachineTypes.AggregatedList
         , Network.Google.Resource.Compute.MachineTypes.Get
         , Network.Google.Resource.Compute.MachineTypes.List
+        , Network.Google.Resource.Compute.Networks.AddPeering
         , Network.Google.Resource.Compute.Networks.Delete
         , Network.Google.Resource.Compute.Networks.Get
         , Network.Google.Resource.Compute.Networks.Insert
         , Network.Google.Resource.Compute.Networks.List
+        , Network.Google.Resource.Compute.Networks.Patch
+        , Network.Google.Resource.Compute.Networks.RemovePeering
         , Network.Google.Resource.Compute.Networks.SwitchToCustomMode
+        , Network.Google.Resource.Compute.NodeGroups.AddNodes
+        , Network.Google.Resource.Compute.NodeGroups.AggregatedList
+        , Network.Google.Resource.Compute.NodeGroups.Delete
+        , Network.Google.Resource.Compute.NodeGroups.DeleteNodes
+        , Network.Google.Resource.Compute.NodeGroups.Get
+        , Network.Google.Resource.Compute.NodeGroups.GetIAMPolicy
+        , Network.Google.Resource.Compute.NodeGroups.Insert
+        , Network.Google.Resource.Compute.NodeGroups.List
+        , Network.Google.Resource.Compute.NodeGroups.ListNodes
+        , Network.Google.Resource.Compute.NodeGroups.SetIAMPolicy
+        , Network.Google.Resource.Compute.NodeGroups.SetNodeTemplate
+        , Network.Google.Resource.Compute.NodeGroups.TestIAMPermissions
+        , Network.Google.Resource.Compute.NodeTemplates.AggregatedList
+        , Network.Google.Resource.Compute.NodeTemplates.Delete
+        , Network.Google.Resource.Compute.NodeTemplates.Get
+        , Network.Google.Resource.Compute.NodeTemplates.GetIAMPolicy
+        , Network.Google.Resource.Compute.NodeTemplates.Insert
+        , Network.Google.Resource.Compute.NodeTemplates.List
+        , Network.Google.Resource.Compute.NodeTemplates.SetIAMPolicy
+        , Network.Google.Resource.Compute.NodeTemplates.TestIAMPermissions
+        , Network.Google.Resource.Compute.NodeTypes.AggregatedList
+        , Network.Google.Resource.Compute.NodeTypes.Get
+        , Network.Google.Resource.Compute.NodeTypes.List
+        , Network.Google.Resource.Compute.Projects.DisableXpnHost
+        , Network.Google.Resource.Compute.Projects.DisableXpnResource
+        , Network.Google.Resource.Compute.Projects.EnableXpnHost
+        , Network.Google.Resource.Compute.Projects.EnableXpnResource
         , Network.Google.Resource.Compute.Projects.Get
+        , Network.Google.Resource.Compute.Projects.GetXpnHost
+        , Network.Google.Resource.Compute.Projects.GetXpnResources
+        , Network.Google.Resource.Compute.Projects.ListXpnHosts
         , Network.Google.Resource.Compute.Projects.MoveDisk
         , Network.Google.Resource.Compute.Projects.MoveInstance
         , Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+        , Network.Google.Resource.Compute.Projects.SetDefaultNetworkTier
         , Network.Google.Resource.Compute.Projects.SetUsageExportBucket
         , Network.Google.Resource.Compute.RegionAutoscalers.Delete
         , Network.Google.Resource.Compute.RegionAutoscalers.Get
@@ -186,6 +279,20 @@
         , Network.Google.Resource.Compute.RegionBackendServices.List
         , Network.Google.Resource.Compute.RegionBackendServices.Patch
         , Network.Google.Resource.Compute.RegionBackendServices.Update
+        , Network.Google.Resource.Compute.RegionCommitments.AggregatedList
+        , Network.Google.Resource.Compute.RegionCommitments.Get
+        , Network.Google.Resource.Compute.RegionCommitments.Insert
+        , Network.Google.Resource.Compute.RegionCommitments.List
+        , Network.Google.Resource.Compute.RegionDiskTypes.Get
+        , Network.Google.Resource.Compute.RegionDiskTypes.List
+        , Network.Google.Resource.Compute.RegionDisks.CreateSnapshot
+        , Network.Google.Resource.Compute.RegionDisks.Delete
+        , Network.Google.Resource.Compute.RegionDisks.Get
+        , Network.Google.Resource.Compute.RegionDisks.Insert
+        , Network.Google.Resource.Compute.RegionDisks.List
+        , Network.Google.Resource.Compute.RegionDisks.Resize
+        , Network.Google.Resource.Compute.RegionDisks.SetLabels
+        , Network.Google.Resource.Compute.RegionDisks.TestIAMPermissions
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances
@@ -193,6 +300,7 @@
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.List
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances
+        , Network.Google.Resource.Compute.RegionInstanceGroupManagers.Patch
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize
         , Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate
@@ -209,6 +317,7 @@
         , Network.Google.Resource.Compute.Routers.AggregatedList
         , Network.Google.Resource.Compute.Routers.Delete
         , Network.Google.Resource.Compute.Routers.Get
+        , Network.Google.Resource.Compute.Routers.GetNATMAppingInfo
         , Network.Google.Resource.Compute.Routers.GetRouterStatus
         , Network.Google.Resource.Compute.Routers.Insert
         , Network.Google.Resource.Compute.Routers.List
@@ -223,15 +332,40 @@
         , Network.Google.Resource.Compute.SSLCertificates.Get
         , Network.Google.Resource.Compute.SSLCertificates.Insert
         , Network.Google.Resource.Compute.SSLCertificates.List
+        , Network.Google.Resource.Compute.SSLPolicies.Delete
+        , Network.Google.Resource.Compute.SSLPolicies.Get
+        , Network.Google.Resource.Compute.SSLPolicies.Insert
+        , Network.Google.Resource.Compute.SSLPolicies.List
+        , Network.Google.Resource.Compute.SSLPolicies.ListAvailableFeatures
+        , Network.Google.Resource.Compute.SSLPolicies.Patch
+        , Network.Google.Resource.Compute.SecurityPolicies.AddRule
+        , Network.Google.Resource.Compute.SecurityPolicies.Delete
+        , Network.Google.Resource.Compute.SecurityPolicies.Get
+        , Network.Google.Resource.Compute.SecurityPolicies.GetRule
+        , Network.Google.Resource.Compute.SecurityPolicies.Insert
+        , Network.Google.Resource.Compute.SecurityPolicies.List
+        , Network.Google.Resource.Compute.SecurityPolicies.Patch
+        , Network.Google.Resource.Compute.SecurityPolicies.PatchRule
+        , Network.Google.Resource.Compute.SecurityPolicies.RemoveRule
         , Network.Google.Resource.Compute.Snapshots.Delete
         , Network.Google.Resource.Compute.Snapshots.Get
+        , Network.Google.Resource.Compute.Snapshots.GetIAMPolicy
         , Network.Google.Resource.Compute.Snapshots.List
+        , Network.Google.Resource.Compute.Snapshots.SetIAMPolicy
+        , Network.Google.Resource.Compute.Snapshots.SetLabels
+        , Network.Google.Resource.Compute.Snapshots.TestIAMPermissions
         , Network.Google.Resource.Compute.Subnetworks.AggregatedList
         , Network.Google.Resource.Compute.Subnetworks.Delete
         , Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange
         , Network.Google.Resource.Compute.Subnetworks.Get
+        , Network.Google.Resource.Compute.Subnetworks.GetIAMPolicy
         , Network.Google.Resource.Compute.Subnetworks.Insert
         , Network.Google.Resource.Compute.Subnetworks.List
+        , Network.Google.Resource.Compute.Subnetworks.ListUsable
+        , Network.Google.Resource.Compute.Subnetworks.Patch
+        , Network.Google.Resource.Compute.Subnetworks.SetIAMPolicy
+        , Network.Google.Resource.Compute.Subnetworks.SetPrivateIPGoogleAccess
+        , Network.Google.Resource.Compute.Subnetworks.TestIAMPermissions
         , Network.Google.Resource.Compute.TargetHTTPProxies.Delete
         , Network.Google.Resource.Compute.TargetHTTPProxies.Get
         , Network.Google.Resource.Compute.TargetHTTPProxies.Insert
@@ -241,7 +375,9 @@
         , Network.Google.Resource.Compute.TargetHTTPSProxies.Get
         , Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
         , Network.Google.Resource.Compute.TargetHTTPSProxies.List
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.SetQuicOverride
         , Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLPolicy
         , Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
         , Network.Google.Resource.Compute.TargetInstances.AggregatedList
         , Network.Google.Resource.Compute.TargetInstances.Delete
@@ -266,6 +402,13 @@
         , Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService
         , Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader
         , Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates
+        , Network.Google.Resource.Compute.TargetSSLProxies.SetSSLPolicy
+        , Network.Google.Resource.Compute.TargetTCPProxies.Delete
+        , Network.Google.Resource.Compute.TargetTCPProxies.Get
+        , Network.Google.Resource.Compute.TargetTCPProxies.Insert
+        , Network.Google.Resource.Compute.TargetTCPProxies.List
+        , Network.Google.Resource.Compute.TargetTCPProxies.SetBackendService
+        , Network.Google.Resource.Compute.TargetTCPProxies.SetProxyHeader
         , Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
         , Network.Google.Resource.Compute.TargetVPNGateways.Delete
         , Network.Google.Resource.Compute.TargetVPNGateways.Get
@@ -295,5 +438,5 @@
         , Network.Google.Compute.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
