diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
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
@@ -451,6 +451,9 @@
     -- ** compute.instances.getSerialPortOutput
     , module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
 
+    -- ** compute.instances.getShieldedInstanceIdentity
+    , module Network.Google.Resource.Compute.Instances.GetShieldedInstanceIdentity
+
     -- ** compute.instances.insert
     , module Network.Google.Resource.Compute.Instances.Insert
 
@@ -493,6 +496,9 @@
     -- ** compute.instances.setServiceAccount
     , module Network.Google.Resource.Compute.Instances.SetServiceAccount
 
+    -- ** compute.instances.setShieldedInstanceIntegrityPolicy
+    , module Network.Google.Resource.Compute.Instances.SetShieldedInstanceIntegrityPolicy
+
     -- ** compute.instances.setTags
     , module Network.Google.Resource.Compute.Instances.SetTags
 
@@ -517,6 +523,9 @@
     -- ** compute.instances.updateNetworkInterface
     , module Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
 
+    -- ** compute.instances.updateShieldedInstanceConfig
+    , module Network.Google.Resource.Compute.Instances.UpdateShieldedInstanceConfig
+
     -- ** compute.interconnectAttachments.aggregatedList
     , module Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
 
@@ -595,6 +604,33 @@
     -- ** compute.machineTypes.list
     , module Network.Google.Resource.Compute.MachineTypes.List
 
+    -- ** compute.networkEndpointGroups.aggregatedList
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.AggregatedList
+
+    -- ** compute.networkEndpointGroups.attachNetworkEndpoints
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.AttachNetworkEndpoints
+
+    -- ** compute.networkEndpointGroups.delete
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.Delete
+
+    -- ** compute.networkEndpointGroups.detachNetworkEndpoints
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.DetachNetworkEndpoints
+
+    -- ** compute.networkEndpointGroups.get
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.Get
+
+    -- ** compute.networkEndpointGroups.insert
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.Insert
+
+    -- ** compute.networkEndpointGroups.list
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.List
+
+    -- ** compute.networkEndpointGroups.listNetworkEndpoints
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.ListNetworkEndpoints
+
+    -- ** compute.networkEndpointGroups.testIamPermissions
+    , module Network.Google.Resource.Compute.NetworkEndpointGroups.TestIAMPermissions
+
     -- ** compute.networks.addPeering
     , module Network.Google.Resource.Compute.Networks.AddPeering
 
@@ -1289,6 +1325,14 @@
     -- ** SchedulingOnHostMaintenance
     , SchedulingOnHostMaintenance (..)
 
+    -- ** InstanceGroupManagerUpdatePolicy
+    , InstanceGroupManagerUpdatePolicy
+    , instanceGroupManagerUpdatePolicy
+    , igmupMaxSurge
+    , igmupMaxUnavailable
+    , igmupMinimalAction
+    , igmupType
+
     -- ** RegionInstanceGroupsListInstancesRequest
     , RegionInstanceGroupsListInstancesRequest
     , regionInstanceGroupsListInstancesRequest
@@ -1491,6 +1535,7 @@
     , sSelfLink
     , sSnapshotEncryptionKey
     , sName
+    , sStorageLocations
     , sCreationTimestamp
     , sLicenseCodes
     , sId
@@ -1571,6 +1616,11 @@
     , rigliwCode
     , rigliwMessage
 
+    -- ** NetworkEndpointGroupsDetachEndpointsRequest
+    , NetworkEndpointGroupsDetachEndpointsRequest
+    , networkEndpointGroupsDetachEndpointsRequest
+    , negderNetworkEndpoints
+
     -- ** AuditConfig
     , AuditConfig
     , auditConfig
@@ -1578,6 +1628,9 @@
     , acAuditLogConfigs
     , acExemptedMembers
 
+    -- ** NetworkEndpointGroupNetworkEndpointType
+    , NetworkEndpointGroupNetworkEndpointType (..)
+
     -- ** BackendBucketListWarningCode
     , BackendBucketListWarningCode (..)
 
@@ -1628,6 +1681,13 @@
     , dlWarning
     , dlId
 
+    -- ** NetworkEndpointGroupsListNetworkEndpointsWarning
+    , NetworkEndpointGroupsListNetworkEndpointsWarning
+    , networkEndpointGroupsListNetworkEndpointsWarning
+    , neglnewData
+    , neglnewCode
+    , neglnewMessage
+
     -- ** NodeGroupsScopedListWarningCode
     , NodeGroupsScopedListWarningCode (..)
 
@@ -1689,6 +1749,20 @@
     , igmlWarning
     , igmlId
 
+    -- ** InstanceGroupManagerVersion
+    , InstanceGroupManagerVersion
+    , instanceGroupManagerVersion
+    , igmvInstanceTemplate
+    , igmvTargetSize
+    , igmvName
+
+    -- ** NetworkEndpointGroupsScopedListWarning
+    , NetworkEndpointGroupsScopedListWarning
+    , networkEndpointGroupsScopedListWarning
+    , negslwData
+    , negslwCode
+    , negslwMessage
+
     -- ** SubnetworksScopedListWarning
     , SubnetworksScopedListWarning
     , subnetworksScopedListWarning
@@ -1755,6 +1829,7 @@
     -- ** NetworksAddPeeringRequest
     , NetworksAddPeeringRequest
     , networksAddPeeringRequest
+    , naprNetworkPeering
     , naprPeerNetwork
     , naprName
     , naprAutoCreateRoutes
@@ -1926,11 +2001,19 @@
     , slwCode
     , slwMessage
 
+    -- ** NetworkEndpointGroupListWarning
+    , NetworkEndpointGroupListWarning
+    , networkEndpointGroupListWarning
+    , neglwData
+    , neglwCode
+    , neglwMessage
+
     -- ** HealthCheck
     , HealthCheck
     , healthCheck
     , hcHealthyThreshold
     , hcTCPHealthCheck
+    , hcHTTP2HealthCheck
     , hcKind
     , hcSSLHealthCheck
     , hcSelfLink
@@ -2039,6 +2122,11 @@
     , npName
     , npPort
 
+    -- ** NetworkEndpointGroupsListEndpointsRequest
+    , NetworkEndpointGroupsListEndpointsRequest
+    , networkEndpointGroupsListEndpointsRequest
+    , neglerHealthStatus
+
     -- ** InterconnectLocationListWarningCode
     , InterconnectLocationListWarningCode (..)
 
@@ -2067,6 +2155,20 @@
     , idlsArpCaches
     , idlsTransmittingOpticalPower
 
+    -- ** BackendServiceReference
+    , BackendServiceReference
+    , backendServiceReference
+    , bsrBackendService
+
+    -- ** NetworkEndpointGroupAggregatedListWarningDataItem
+    , NetworkEndpointGroupAggregatedListWarningDataItem
+    , networkEndpointGroupAggregatedListWarningDataItem
+    , negalwdiValue
+    , negalwdiKey
+
+    -- ** SSLHealthCheckPortSpecification
+    , SSLHealthCheckPortSpecification (..)
+
     -- ** TargetInstanceList
     , TargetInstanceList
     , targetInstanceList
@@ -2132,6 +2234,12 @@
     , interconnectAttachmentAggregatedListItems
     , iaaliAddtional
 
+    -- ** InstanceGroupManagerAutoHealingPolicy
+    , InstanceGroupManagerAutoHealingPolicy
+    , instanceGroupManagerAutoHealingPolicy
+    , igmahpHealthCheck
+    , igmahpInitialDelaySec
+
     -- ** LogConfigCounterOptions
     , LogConfigCounterOptions
     , logConfigCounterOptions
@@ -2146,6 +2254,9 @@
     , instancesSetMinCPUPlatformRequest
     , ismcprMinCPUPlatform
 
+    -- ** NetworkEndpointGroupAggregatedListWarningCode
+    , NetworkEndpointGroupAggregatedListWarningCode (..)
+
     -- ** ForwardingRuleAggregatedList
     , ForwardingRuleAggregatedList
     , forwardingRuleAggregatedList
@@ -2254,6 +2365,9 @@
     -- ** ForwardingRulesScopedListWarningCode
     , ForwardingRulesScopedListWarningCode (..)
 
+    -- ** HealthStatusForNetworkEndpointHealthState
+    , HealthStatusForNetworkEndpointHealthState (..)
+
     -- ** LicenseResourceRequirements
     , LicenseResourceRequirements
     , licenseResourceRequirements
@@ -2286,16 +2400,19 @@
     , frLoadBalancingScheme
     , frKind
     , frIPVersion
+    , frAllPorts
     , frNetwork
     , frPortRange
     , frSelfLink
     , frName
     , frIPProtocol
     , frCreationTimestamp
+    , frServiceName
     , frSubnetwork
     , frPorts
     , frId
     , frRegion
+    , frServiceLabel
     , frDescription
     , frTarget
     , frBackendService
@@ -2335,6 +2452,12 @@
     , sslSubnetworks
     , sslWarning
 
+    -- ** NetworkEndpointGroupsScopedList
+    , NetworkEndpointGroupsScopedList
+    , networkEndpointGroupsScopedList
+    , negslNetworkEndpointGroups
+    , negslWarning
+
     -- ** DiskAggregatedListWarningCode
     , DiskAggregatedListWarningCode (..)
 
@@ -2429,6 +2552,13 @@
     , oTargetLink
     , oClientOperationId
 
+    -- ** NetworkEndpoint
+    , NetworkEndpoint
+    , networkEndpoint
+    , neIPAddress
+    , nePort
+    , neInstance
+
     -- ** DisksScopedListWarningDataItem
     , DisksScopedListWarningDataItem
     , disksScopedListWarningDataItem
@@ -2513,6 +2643,15 @@
     -- ** TargetPoolAggregatedListWarningCode
     , TargetPoolAggregatedListWarningCode (..)
 
+    -- ** NetworkEndpointGroupsListNetworkEndpoints
+    , NetworkEndpointGroupsListNetworkEndpoints
+    , networkEndpointGroupsListNetworkEndpoints
+    , neglneNextPageToken
+    , neglneKind
+    , neglneItems
+    , neglneWarning
+    , neglneId
+
     -- ** ForwardingRuleAggregatedListWarningDataItem
     , ForwardingRuleAggregatedListWarningDataItem
     , forwardingRuleAggregatedListWarningDataItem
@@ -2528,11 +2667,15 @@
     -- ** InstanceGroupManager
     , InstanceGroupManager
     , instanceGroupManager
+    , igmStatus
     , igmKind
     , igmFingerprint
     , igmBaseInstanceName
     , igmZone
+    , igmAutoHealingPolicies
+    , igmVersions
     , igmInstanceTemplate
+    , igmUpdatePolicy
     , igmTargetSize
     , igmSelfLink
     , igmCurrentActions
@@ -2574,6 +2717,7 @@
     , TCPHealthCheck
     , tcpHealthCheck
     , thcResponse
+    , thcPortSpecification
     , thcProxyHeader
     , thcPortName
     , thcPort
@@ -2804,11 +2948,23 @@
     , vtalwdiValue
     , vtalwdiKey
 
+    -- ** FixedOrPercent
+    , FixedOrPercent
+    , fixedOrPercent
+    , fopCalculated
+    , fopPercent
+    , fopFixed
+
     -- ** FirewallLogConfig
     , FirewallLogConfig
     , firewallLogConfig
     , flcEnable
 
+    -- ** ShieldedInstanceIntegrityPolicy
+    , ShieldedInstanceIntegrityPolicy
+    , shieldedInstanceIntegrityPolicy
+    , siipUpdateAutoLearnPolicy
+
     -- ** TargetHTTPProxyListWarningCode
     , TargetHTTPProxyListWarningCode (..)
 
@@ -2973,6 +3129,7 @@
     , ipGuestAccelerators
     , ipMachineType
     , ipMetadata
+    , ipShieldedInstanceConfig
     , ipLabels
     , ipScheduling
     , ipMinCPUPlatform
@@ -2993,6 +3150,17 @@
     , rlwCode
     , rlwMessage
 
+    -- ** HTTP2HealthCheck
+    , HTTP2HealthCheck
+    , hTTP2HealthCheck
+    , httphcResponse
+    , httphcPortSpecification
+    , httphcRequestPath
+    , httphcHost
+    , httphcProxyHeader
+    , httphcPortName
+    , httphcPort
+
     -- ** NodeTemplateAggregatedListWarningCode
     , NodeTemplateAggregatedListWarningCode (..)
 
@@ -3038,6 +3206,11 @@
     , ussrRangeName
     , ussrIPCIdRRange
 
+    -- ** NetworkEndpointGroupsAttachEndpointsRequest
+    , NetworkEndpointGroupsAttachEndpointsRequest
+    , networkEndpointGroupsAttachEndpointsRequest
+    , negaerNetworkEndpoints
+
     -- ** AddressesScopedListWarningDataItem
     , AddressesScopedListWarningDataItem
     , addressesScopedListWarningDataItem
@@ -3394,6 +3567,11 @@
     , ialWarning
     , ialId
 
+    -- ** ForwardingRuleReference
+    , ForwardingRuleReference
+    , forwardingRuleReference
+    , frrForwardingRule
+
     -- ** TargetTCPProxiesSetBackendServiceRequest
     , TargetTCPProxiesSetBackendServiceRequest
     , targetTCPProxiesSetBackendServiceRequest
@@ -3403,6 +3581,7 @@
     , SSLHealthCheck
     , sslHealthCheck
     , shcResponse
+    , shcPortSpecification
     , shcProxyHeader
     , shcPortName
     , shcPort
@@ -3497,6 +3676,14 @@
     , targetSSLProxiesSetSSLCertificatesRequest
     , tspsscrSSLCertificates
 
+    -- ** HealthStatusForNetworkEndpoint
+    , HealthStatusForNetworkEndpoint
+    , healthStatusForNetworkEndpoint
+    , hsfneHealthCheck
+    , hsfneForwardingRule
+    , hsfneHealthState
+    , hsfneBackendService
+
     -- ** RouterAggregatedListWarning
     , RouterAggregatedListWarning
     , routerAggregatedListWarning
@@ -3626,6 +3813,9 @@
     , ilriExpectedRttMs
     , ilriRegion
 
+    -- ** TCPHealthCheckPortSpecification
+    , TCPHealthCheckPortSpecification (..)
+
     -- ** TargetVPNGatewaysScopedListWarningCode
     , TargetVPNGatewaysScopedListWarningCode (..)
 
@@ -3677,6 +3867,11 @@
     , tspProxyHeader
     , tspDescription
 
+    -- ** InstanceGroupManagerStatus
+    , InstanceGroupManagerStatus
+    , instanceGroupManagerStatus
+    , igmsIsStable
+
     -- ** SSLCertificateListWarning
     , SSLCertificateListWarning
     , sslCertificateListWarning
@@ -3800,6 +3995,9 @@
     , targetPoolsAddHealthCheckRequest
     , tpahcrHealthChecks
 
+    -- ** InstanceGroupManagerUpdatePolicyType
+    , InstanceGroupManagerUpdatePolicyType (..)
+
     -- ** CommitmentsScopedList
     , CommitmentsScopedList
     , commitmentsScopedList
@@ -3889,6 +4087,7 @@
     , managedInstance
     , miLastAttempt
     , miCurrentAction
+    , miVersion
     , miId
     , miInstanceStatus
     , miInstance
@@ -3912,6 +4111,8 @@
     , bMaxRate
     , bMaxConnections
     , bMaxConnectionsPerInstance
+    , bMaxRatePerEndpoint
+    , bMaxConnectionsPerEndpoint
     , bMaxRatePerInstance
     , bDescription
     , bCapacityScaler
@@ -3947,6 +4148,9 @@
     , forwardingRuleAggregatedListItems
     , fraliAddtional
 
+    -- ** HTTP2HealthCheckPortSpecification
+    , HTTP2HealthCheckPortSpecification (..)
+
     -- ** InterconnectAttachmentAggregatedList
     , InterconnectAttachmentAggregatedList
     , interconnectAttachmentAggregatedList
@@ -4038,6 +4242,7 @@
     , NetworkPeering
     , networkPeering
     , netState
+    , netExchangeSubnetRoutes
     , netStateDetails
     , netNetwork
     , netName
@@ -4143,6 +4348,9 @@
     , tislWarning
     , tislTargetInstances
 
+    -- ** NetworkEndpointGroupListWarningCode
+    , NetworkEndpointGroupListWarningCode (..)
+
     -- ** NetworkRoutingConfigRoutingMode
     , NetworkRoutingConfigRoutingMode (..)
 
@@ -4155,6 +4363,12 @@
     , sValue
     , sKey
 
+    -- ** NetworkEndpointGroupListWarningDataItem
+    , NetworkEndpointGroupListWarningDataItem
+    , networkEndpointGroupListWarningDataItem
+    , neglwdiValue
+    , neglwdiKey
+
     -- ** ProjectsDisableXpnResourceRequest
     , ProjectsDisableXpnResourceRequest
     , projectsDisableXpnResourceRequest
@@ -4181,6 +4395,13 @@
     , autWarning
     , autId
 
+    -- ** NetworkEndpointGroupAggregatedListWarning
+    , NetworkEndpointGroupAggregatedListWarning
+    , networkEndpointGroupAggregatedListWarning
+    , negalwData
+    , negalwCode
+    , negalwMessage
+
     -- ** SSLPolicyMinTLSVersion
     , SSLPolicyMinTLSVersion (..)
 
@@ -4201,6 +4422,7 @@
     , InterconnectLocation
     , interconnectLocation
     , intFacilityProviderFacilityId
+    , intStatus
     , intRegionInfos
     , intKind
     , intAddress
@@ -4312,6 +4534,12 @@
     , pgxrKind
     , pgxrResources
 
+    -- ** NetworkEndpointWithHealthStatus
+    , NetworkEndpointWithHealthStatus
+    , networkEndpointWithHealthStatus
+    , newhsHealths
+    , newhsNetworkEndpoint
+
     -- ** MachineTypeList
     , MachineTypeList
     , machineTypeList
@@ -4385,6 +4613,9 @@
     , dtslDiskTypes
     , dtslWarning
 
+    -- ** NetworkEndpointGroupsListEndpointsRequestHealthStatus
+    , NetworkEndpointGroupsListEndpointsRequestHealthStatus (..)
+
     -- ** LogConfigCloudAuditOptions
     , LogConfigCloudAuditOptions
     , logConfigCloudAuditOptions
@@ -4452,12 +4683,13 @@
     -- ** HTTPHealthCheck
     , HTTPHealthCheck
     , hTTPHealthCheck
-    , httphcResponse
-    , httphcRequestPath
-    , httphcHost
-    , httphcProxyHeader
-    , httphcPortName
-    , httphcPort
+    , hResponse
+    , hPortSpecification
+    , hRequestPath
+    , hHost
+    , hProxyHeader
+    , hPortName
+    , hPort
 
     -- ** URLMapListWarningDataItem
     , URLMapListWarningDataItem
@@ -4670,12 +4902,21 @@
     , machineTypeScratchDisksItem
     , mtsdiDiskGb
 
+    -- ** NetworkEndpointGroupsScopedListWarningDataItem
+    , NetworkEndpointGroupsScopedListWarningDataItem
+    , networkEndpointGroupsScopedListWarningDataItem
+    , negslwdiValue
+    , negslwdiKey
+
     -- ** SubnetworksScopedListWarningDataItem
     , SubnetworksScopedListWarningDataItem
     , subnetworksScopedListWarningDataItem
     , sslwdiValue
     , sslwdiKey
 
+    -- ** NetworkEndpointGroupsScopedListWarningCode
+    , NetworkEndpointGroupsScopedListWarningCode (..)
+
     -- ** MachineTypesScopedList
     , MachineTypesScopedList
     , machineTypesScopedList
@@ -4685,6 +4926,25 @@
     -- ** SubnetworksScopedListWarningCode
     , SubnetworksScopedListWarningCode (..)
 
+    -- ** NetworkEndpointGroup
+    , NetworkEndpointGroup
+    , networkEndpointGroup
+    , negSize
+    , negKind
+    , negNetwork
+    , negZone
+    , negSelfLink
+    , negName
+    , negCreationTimestamp
+    , negDefaultPort
+    , negSubnetwork
+    , negNetworkEndpointType
+    , negId
+    , negDescription
+
+    -- ** NetworkEndpointGroupsListNetworkEndpointsWarningCode
+    , NetworkEndpointGroupsListNetworkEndpointsWarningCode (..)
+
     -- ** Subnetwork
     , Subnetwork
     , subnetwork
@@ -4720,6 +4980,12 @@
     , mtalWarning
     , mtalId
 
+    -- ** NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , networkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , neglnewdiValue
+    , neglnewdiKey
+
     -- ** NodeGroupsScopedListWarning
     , NodeGroupsScopedListWarning
     , nodeGroupsScopedListWarning
@@ -4925,6 +5191,13 @@
     , thttppId
     , thttppDescription
 
+    -- ** ShieldedInstanceConfig
+    , ShieldedInstanceConfig
+    , shieldedInstanceConfig
+    , sicEnableVtpm
+    , sicEnableIntegrityMonitoring
+    , sicEnableSecureBoot
+
     -- ** MachineType
     , MachineType
     , machineType
@@ -4991,6 +5264,16 @@
     , tislwCode
     , tislwMessage
 
+    -- ** NetworkEndpointGroupAggregatedList
+    , NetworkEndpointGroupAggregatedList
+    , networkEndpointGroupAggregatedList
+    , negalNextPageToken
+    , negalKind
+    , negalItems
+    , negalSelfLink
+    , negalWarning
+    , negalId
+
     -- ** SubnetworkAggregatedList
     , SubnetworkAggregatedList
     , subnetworkAggregatedList
@@ -5046,12 +5329,21 @@
     -- ** AutoscalersScopedListWarningCode
     , AutoscalersScopedListWarningCode (..)
 
+    -- ** HTTPSHealthCheckPortSpecification
+    , HTTPSHealthCheckPortSpecification (..)
+
     -- ** DiskTypeAggregatedListWarningDataItem
     , DiskTypeAggregatedListWarningDataItem
     , diskTypeAggregatedListWarningDataItem
     , dtalwdiValue
     , dtalwdiKey
 
+    -- ** ShieldedInstanceIdentityEntry
+    , ShieldedInstanceIdentityEntry
+    , shieldedInstanceIdentityEntry
+    , siieEkCert
+    , siieEkPub
+
     -- ** ForwardingRuleLoadBalancingScheme
     , ForwardingRuleLoadBalancingScheme (..)
 
@@ -5445,6 +5737,16 @@
     , nttRegion
     , nttDescription
 
+    -- ** NetworkEndpointGroupList
+    , NetworkEndpointGroupList
+    , networkEndpointGroupList
+    , neglNextPageToken
+    , neglKind
+    , neglItems
+    , neglSelfLink
+    , neglWarning
+    , neglId
+
     -- ** SubnetworkList
     , SubnetworkList
     , subnetworkList
@@ -5699,6 +6001,11 @@
     , subnetworkAggregatedListItems
     , saliAddtional
 
+    -- ** NetworkEndpointGroupAggregatedListItems
+    , NetworkEndpointGroupAggregatedListItems
+    , networkEndpointGroupAggregatedListItems
+    , negaliAddtional
+
     -- ** InterconnectAttachmentAggregatedListWarningDataItem
     , InterconnectAttachmentAggregatedListWarningDataItem
     , interconnectAttachmentAggregatedListWarningDataItem
@@ -5727,7 +6034,6 @@
     , cOp
     , cIAM
     , cValues
-    , cValue
     , cSys
     , cSvc
 
@@ -5756,6 +6062,9 @@
     , asdType
     , asdMessage
 
+    -- ** HTTP2HealthCheckProxyHeader
+    , HTTP2HealthCheckProxyHeader (..)
+
     -- ** BackendServiceList
     , BackendServiceList
     , backendServiceList
@@ -5804,6 +6113,9 @@
     , igslwCode
     , igslwMessage
 
+    -- ** InterconnectLocationStatus
+    , InterconnectLocationStatus (..)
+
     -- ** AutoscalingPolicyCPUUtilization
     , AutoscalingPolicyCPUUtilization
     , autoscalingPolicyCPUUtilization
@@ -5904,6 +6216,7 @@
     -- ** Quota
     , Quota
     , quota
+    , qOwner
     , qMetric
     , qLimit
     , qUsage
@@ -5980,6 +6293,9 @@
     -- ** CommitmentListWarningCode
     , CommitmentListWarningCode (..)
 
+    -- ** HTTPHealthCheckPortSpecification
+    , HTTPHealthCheckPortSpecification (..)
+
     -- ** LicenseCode
     , LicenseCode
     , licenseCode
@@ -6010,6 +6326,12 @@
     -- ** ConditionIAM
     , ConditionIAM (..)
 
+    -- ** ManagedInstanceVersion
+    , ManagedInstanceVersion
+    , managedInstanceVersion
+    , mivInstanceTemplate
+    , mivName
+
     -- ** CommitmentsScopedListWarning
     , CommitmentsScopedListWarning
     , commitmentsScopedListWarning
@@ -6187,6 +6509,7 @@
     , bsEnableCDN
     , bsFingerprint
     , bsProtocol
+    , bsCustomRequestHeaders
     , bsSecurityPolicy
     , bsCdnPolicy
     , bsSelfLink
@@ -6223,6 +6546,13 @@
     , idarpeIPAddress
     , idarpeMACAddress
 
+    -- ** ShieldedInstanceIdentity
+    , ShieldedInstanceIdentity
+    , shieldedInstanceIdentity
+    , siiSigningKey
+    , siiKind
+    , siiEncryptionKey
+
     -- ** BackendServicesScopedListWarningCode
     , BackendServicesScopedListWarningCode (..)
 
@@ -6259,6 +6589,7 @@
     , HTTPSHealthCheck
     , httpsHealthCheck
     , hhcResponse
+    , hhcPortSpecification
     , hhcRequestPath
     , hhcHost
     , hhcProxyHeader
@@ -6377,7 +6708,9 @@
     , i1Status
     , i1ServiceAccounts
     , i1DeletionProtection
+    , i1Hostname
     , i1NetworkInterfaces
+    , i1ShieldedInstanceIntegrityPolicy
     , i1Kind
     , i1Zone
     , i1CPUPlatform
@@ -6388,6 +6721,7 @@
     , i1CreationTimestamp
     , i1MachineType
     , i1Metadata
+    , i1ShieldedInstanceConfig
     , i1Id
     , i1Labels
     , i1StartRestricted
@@ -6407,6 +6741,9 @@
     , pmPathRules
     , pmDescription
 
+    -- ** InstanceGroupManagerUpdatePolicyMinimalAction
+    , InstanceGroupManagerUpdatePolicyMinimalAction (..)
+
     -- ** BackendServiceListWarning
     , BackendServiceListWarning
     , backendServiceListWarning
@@ -6552,6 +6889,7 @@
 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.GetShieldedInstanceIdentity
 import           Network.Google.Resource.Compute.Instances.Insert
 import           Network.Google.Resource.Compute.Instances.List
 import           Network.Google.Resource.Compute.Instances.ListReferrers
@@ -6566,6 +6904,7 @@
 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.SetShieldedInstanceIntegrityPolicy
 import           Network.Google.Resource.Compute.Instances.SetTags
 import           Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
 import           Network.Google.Resource.Compute.Instances.Start
@@ -6574,6 +6913,7 @@
 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.Instances.UpdateShieldedInstanceConfig
 import           Network.Google.Resource.Compute.InstanceTemplates.Delete
 import           Network.Google.Resource.Compute.InstanceTemplates.Get
 import           Network.Google.Resource.Compute.InstanceTemplates.GetIAMPolicy
@@ -6607,6 +6947,15 @@
 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.NetworkEndpointGroups.AggregatedList
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.AttachNetworkEndpoints
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.Delete
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.DetachNetworkEndpoints
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.Get
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.Insert
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.List
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.ListNetworkEndpoints
+import           Network.Google.Resource.Compute.NetworkEndpointGroups.TestIAMPermissions
 import           Network.Google.Resource.Compute.Networks.AddPeering
 import           Network.Google.Resource.Compute.Networks.Delete
 import           Network.Google.Resource.Compute.Networks.Get
@@ -7023,6 +7372,18 @@
        :<|> SubnetworksSetPrivateIPGoogleAccessResource
        :<|> SubnetworksListUsableResource
        :<|> SubnetworksDeleteResource
+       :<|>
+       NetworkEndpointGroupsListNetworkEndpointsResource
+       :<|> NetworkEndpointGroupsAggregatedListResource
+       :<|> NetworkEndpointGroupsInsertResource
+       :<|> NetworkEndpointGroupsListResource
+       :<|>
+       NetworkEndpointGroupsAttachNetworkEndpointsResource
+       :<|> NetworkEndpointGroupsGetResource
+       :<|>
+       NetworkEndpointGroupsDetachNetworkEndpointsResource
+       :<|> NetworkEndpointGroupsTestIAMPermissionsResource
+       :<|> NetworkEndpointGroupsDeleteResource
        :<|> InterconnectsInsertResource
        :<|> InterconnectsGetDiagnosticsResource
        :<|> InterconnectsListResource
@@ -7058,6 +7419,8 @@
        :<|> SSLPoliciesPatchResource
        :<|> SSLPoliciesGetResource
        :<|> SSLPoliciesDeleteResource
+       :<|> InstancesUpdateShieldedInstanceConfigResource
+       :<|> InstancesGetShieldedInstanceIdentityResource
        :<|> InstancesAddAccessConfigResource
        :<|> InstancesSimulateMaintenanceEventResource
        :<|> InstancesAggregatedListResource
@@ -7065,6 +7428,8 @@
        :<|> InstancesListReferrersResource
        :<|> InstancesDetachDiskResource
        :<|> InstancesListResource
+       :<|>
+       InstancesSetShieldedInstanceIntegrityPolicyResource
        :<|> InstancesSetDeletionProtectionResource
        :<|> InstancesStartResource
        :<|> InstancesGetIAMPolicyResource
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
@@ -89,6 +89,14 @@
     -- * SchedulingOnHostMaintenance
     , SchedulingOnHostMaintenance (..)
 
+    -- * InstanceGroupManagerUpdatePolicy
+    , InstanceGroupManagerUpdatePolicy
+    , instanceGroupManagerUpdatePolicy
+    , igmupMaxSurge
+    , igmupMaxUnavailable
+    , igmupMinimalAction
+    , igmupType
+
     -- * RegionInstanceGroupsListInstancesRequest
     , RegionInstanceGroupsListInstancesRequest
     , regionInstanceGroupsListInstancesRequest
@@ -291,6 +299,7 @@
     , sSelfLink
     , sSnapshotEncryptionKey
     , sName
+    , sStorageLocations
     , sCreationTimestamp
     , sLicenseCodes
     , sId
@@ -371,6 +380,11 @@
     , rigliwCode
     , rigliwMessage
 
+    -- * NetworkEndpointGroupsDetachEndpointsRequest
+    , NetworkEndpointGroupsDetachEndpointsRequest
+    , networkEndpointGroupsDetachEndpointsRequest
+    , negderNetworkEndpoints
+
     -- * AuditConfig
     , AuditConfig
     , auditConfig
@@ -378,6 +392,9 @@
     , acAuditLogConfigs
     , acExemptedMembers
 
+    -- * NetworkEndpointGroupNetworkEndpointType
+    , NetworkEndpointGroupNetworkEndpointType (..)
+
     -- * BackendBucketListWarningCode
     , BackendBucketListWarningCode (..)
 
@@ -428,6 +445,13 @@
     , dlWarning
     , dlId
 
+    -- * NetworkEndpointGroupsListNetworkEndpointsWarning
+    , NetworkEndpointGroupsListNetworkEndpointsWarning
+    , networkEndpointGroupsListNetworkEndpointsWarning
+    , neglnewData
+    , neglnewCode
+    , neglnewMessage
+
     -- * NodeGroupsScopedListWarningCode
     , NodeGroupsScopedListWarningCode (..)
 
@@ -489,6 +513,20 @@
     , igmlWarning
     , igmlId
 
+    -- * InstanceGroupManagerVersion
+    , InstanceGroupManagerVersion
+    , instanceGroupManagerVersion
+    , igmvInstanceTemplate
+    , igmvTargetSize
+    , igmvName
+
+    -- * NetworkEndpointGroupsScopedListWarning
+    , NetworkEndpointGroupsScopedListWarning
+    , networkEndpointGroupsScopedListWarning
+    , negslwData
+    , negslwCode
+    , negslwMessage
+
     -- * SubnetworksScopedListWarning
     , SubnetworksScopedListWarning
     , subnetworksScopedListWarning
@@ -555,6 +593,7 @@
     -- * NetworksAddPeeringRequest
     , NetworksAddPeeringRequest
     , networksAddPeeringRequest
+    , naprNetworkPeering
     , naprPeerNetwork
     , naprName
     , naprAutoCreateRoutes
@@ -726,11 +765,19 @@
     , slwCode
     , slwMessage
 
+    -- * NetworkEndpointGroupListWarning
+    , NetworkEndpointGroupListWarning
+    , networkEndpointGroupListWarning
+    , neglwData
+    , neglwCode
+    , neglwMessage
+
     -- * HealthCheck
     , HealthCheck
     , healthCheck
     , hcHealthyThreshold
     , hcTCPHealthCheck
+    , hcHTTP2HealthCheck
     , hcKind
     , hcSSLHealthCheck
     , hcSelfLink
@@ -839,6 +886,11 @@
     , npName
     , npPort
 
+    -- * NetworkEndpointGroupsListEndpointsRequest
+    , NetworkEndpointGroupsListEndpointsRequest
+    , networkEndpointGroupsListEndpointsRequest
+    , neglerHealthStatus
+
     -- * InterconnectLocationListWarningCode
     , InterconnectLocationListWarningCode (..)
 
@@ -867,6 +919,20 @@
     , idlsArpCaches
     , idlsTransmittingOpticalPower
 
+    -- * BackendServiceReference
+    , BackendServiceReference
+    , backendServiceReference
+    , bsrBackendService
+
+    -- * NetworkEndpointGroupAggregatedListWarningDataItem
+    , NetworkEndpointGroupAggregatedListWarningDataItem
+    , networkEndpointGroupAggregatedListWarningDataItem
+    , negalwdiValue
+    , negalwdiKey
+
+    -- * SSLHealthCheckPortSpecification
+    , SSLHealthCheckPortSpecification (..)
+
     -- * TargetInstanceList
     , TargetInstanceList
     , targetInstanceList
@@ -932,6 +998,12 @@
     , interconnectAttachmentAggregatedListItems
     , iaaliAddtional
 
+    -- * InstanceGroupManagerAutoHealingPolicy
+    , InstanceGroupManagerAutoHealingPolicy
+    , instanceGroupManagerAutoHealingPolicy
+    , igmahpHealthCheck
+    , igmahpInitialDelaySec
+
     -- * LogConfigCounterOptions
     , LogConfigCounterOptions
     , logConfigCounterOptions
@@ -946,6 +1018,9 @@
     , instancesSetMinCPUPlatformRequest
     , ismcprMinCPUPlatform
 
+    -- * NetworkEndpointGroupAggregatedListWarningCode
+    , NetworkEndpointGroupAggregatedListWarningCode (..)
+
     -- * ForwardingRuleAggregatedList
     , ForwardingRuleAggregatedList
     , forwardingRuleAggregatedList
@@ -1054,6 +1129,9 @@
     -- * ForwardingRulesScopedListWarningCode
     , ForwardingRulesScopedListWarningCode (..)
 
+    -- * HealthStatusForNetworkEndpointHealthState
+    , HealthStatusForNetworkEndpointHealthState (..)
+
     -- * LicenseResourceRequirements
     , LicenseResourceRequirements
     , licenseResourceRequirements
@@ -1086,16 +1164,19 @@
     , frLoadBalancingScheme
     , frKind
     , frIPVersion
+    , frAllPorts
     , frNetwork
     , frPortRange
     , frSelfLink
     , frName
     , frIPProtocol
     , frCreationTimestamp
+    , frServiceName
     , frSubnetwork
     , frPorts
     , frId
     , frRegion
+    , frServiceLabel
     , frDescription
     , frTarget
     , frBackendService
@@ -1135,6 +1216,12 @@
     , sslSubnetworks
     , sslWarning
 
+    -- * NetworkEndpointGroupsScopedList
+    , NetworkEndpointGroupsScopedList
+    , networkEndpointGroupsScopedList
+    , negslNetworkEndpointGroups
+    , negslWarning
+
     -- * DiskAggregatedListWarningCode
     , DiskAggregatedListWarningCode (..)
 
@@ -1229,6 +1316,13 @@
     , oTargetLink
     , oClientOperationId
 
+    -- * NetworkEndpoint
+    , NetworkEndpoint
+    , networkEndpoint
+    , neIPAddress
+    , nePort
+    , neInstance
+
     -- * DisksScopedListWarningDataItem
     , DisksScopedListWarningDataItem
     , disksScopedListWarningDataItem
@@ -1313,6 +1407,15 @@
     -- * TargetPoolAggregatedListWarningCode
     , TargetPoolAggregatedListWarningCode (..)
 
+    -- * NetworkEndpointGroupsListNetworkEndpoints
+    , NetworkEndpointGroupsListNetworkEndpoints
+    , networkEndpointGroupsListNetworkEndpoints
+    , neglneNextPageToken
+    , neglneKind
+    , neglneItems
+    , neglneWarning
+    , neglneId
+
     -- * ForwardingRuleAggregatedListWarningDataItem
     , ForwardingRuleAggregatedListWarningDataItem
     , forwardingRuleAggregatedListWarningDataItem
@@ -1328,11 +1431,15 @@
     -- * InstanceGroupManager
     , InstanceGroupManager
     , instanceGroupManager
+    , igmStatus
     , igmKind
     , igmFingerprint
     , igmBaseInstanceName
     , igmZone
+    , igmAutoHealingPolicies
+    , igmVersions
     , igmInstanceTemplate
+    , igmUpdatePolicy
     , igmTargetSize
     , igmSelfLink
     , igmCurrentActions
@@ -1374,6 +1481,7 @@
     , TCPHealthCheck
     , tcpHealthCheck
     , thcResponse
+    , thcPortSpecification
     , thcProxyHeader
     , thcPortName
     , thcPort
@@ -1604,11 +1712,23 @@
     , vtalwdiValue
     , vtalwdiKey
 
+    -- * FixedOrPercent
+    , FixedOrPercent
+    , fixedOrPercent
+    , fopCalculated
+    , fopPercent
+    , fopFixed
+
     -- * FirewallLogConfig
     , FirewallLogConfig
     , firewallLogConfig
     , flcEnable
 
+    -- * ShieldedInstanceIntegrityPolicy
+    , ShieldedInstanceIntegrityPolicy
+    , shieldedInstanceIntegrityPolicy
+    , siipUpdateAutoLearnPolicy
+
     -- * TargetHTTPProxyListWarningCode
     , TargetHTTPProxyListWarningCode (..)
 
@@ -1773,6 +1893,7 @@
     , ipGuestAccelerators
     , ipMachineType
     , ipMetadata
+    , ipShieldedInstanceConfig
     , ipLabels
     , ipScheduling
     , ipMinCPUPlatform
@@ -1793,6 +1914,17 @@
     , rlwCode
     , rlwMessage
 
+    -- * HTTP2HealthCheck
+    , HTTP2HealthCheck
+    , hTTP2HealthCheck
+    , httphcResponse
+    , httphcPortSpecification
+    , httphcRequestPath
+    , httphcHost
+    , httphcProxyHeader
+    , httphcPortName
+    , httphcPort
+
     -- * NodeTemplateAggregatedListWarningCode
     , NodeTemplateAggregatedListWarningCode (..)
 
@@ -1838,6 +1970,11 @@
     , ussrRangeName
     , ussrIPCIdRRange
 
+    -- * NetworkEndpointGroupsAttachEndpointsRequest
+    , NetworkEndpointGroupsAttachEndpointsRequest
+    , networkEndpointGroupsAttachEndpointsRequest
+    , negaerNetworkEndpoints
+
     -- * AddressesScopedListWarningDataItem
     , AddressesScopedListWarningDataItem
     , addressesScopedListWarningDataItem
@@ -2194,6 +2331,11 @@
     , ialWarning
     , ialId
 
+    -- * ForwardingRuleReference
+    , ForwardingRuleReference
+    , forwardingRuleReference
+    , frrForwardingRule
+
     -- * TargetTCPProxiesSetBackendServiceRequest
     , TargetTCPProxiesSetBackendServiceRequest
     , targetTCPProxiesSetBackendServiceRequest
@@ -2203,6 +2345,7 @@
     , SSLHealthCheck
     , sslHealthCheck
     , shcResponse
+    , shcPortSpecification
     , shcProxyHeader
     , shcPortName
     , shcPort
@@ -2297,6 +2440,14 @@
     , targetSSLProxiesSetSSLCertificatesRequest
     , tspsscrSSLCertificates
 
+    -- * HealthStatusForNetworkEndpoint
+    , HealthStatusForNetworkEndpoint
+    , healthStatusForNetworkEndpoint
+    , hsfneHealthCheck
+    , hsfneForwardingRule
+    , hsfneHealthState
+    , hsfneBackendService
+
     -- * RouterAggregatedListWarning
     , RouterAggregatedListWarning
     , routerAggregatedListWarning
@@ -2426,6 +2577,9 @@
     , ilriExpectedRttMs
     , ilriRegion
 
+    -- * TCPHealthCheckPortSpecification
+    , TCPHealthCheckPortSpecification (..)
+
     -- * TargetVPNGatewaysScopedListWarningCode
     , TargetVPNGatewaysScopedListWarningCode (..)
 
@@ -2477,6 +2631,11 @@
     , tspProxyHeader
     , tspDescription
 
+    -- * InstanceGroupManagerStatus
+    , InstanceGroupManagerStatus
+    , instanceGroupManagerStatus
+    , igmsIsStable
+
     -- * SSLCertificateListWarning
     , SSLCertificateListWarning
     , sslCertificateListWarning
@@ -2600,6 +2759,9 @@
     , targetPoolsAddHealthCheckRequest
     , tpahcrHealthChecks
 
+    -- * InstanceGroupManagerUpdatePolicyType
+    , InstanceGroupManagerUpdatePolicyType (..)
+
     -- * CommitmentsScopedList
     , CommitmentsScopedList
     , commitmentsScopedList
@@ -2689,6 +2851,7 @@
     , managedInstance
     , miLastAttempt
     , miCurrentAction
+    , miVersion
     , miId
     , miInstanceStatus
     , miInstance
@@ -2712,6 +2875,8 @@
     , bMaxRate
     , bMaxConnections
     , bMaxConnectionsPerInstance
+    , bMaxRatePerEndpoint
+    , bMaxConnectionsPerEndpoint
     , bMaxRatePerInstance
     , bDescription
     , bCapacityScaler
@@ -2747,6 +2912,9 @@
     , forwardingRuleAggregatedListItems
     , fraliAddtional
 
+    -- * HTTP2HealthCheckPortSpecification
+    , HTTP2HealthCheckPortSpecification (..)
+
     -- * InterconnectAttachmentAggregatedList
     , InterconnectAttachmentAggregatedList
     , interconnectAttachmentAggregatedList
@@ -2838,6 +3006,7 @@
     , NetworkPeering
     , networkPeering
     , netState
+    , netExchangeSubnetRoutes
     , netStateDetails
     , netNetwork
     , netName
@@ -2943,6 +3112,9 @@
     , tislWarning
     , tislTargetInstances
 
+    -- * NetworkEndpointGroupListWarningCode
+    , NetworkEndpointGroupListWarningCode (..)
+
     -- * NetworkRoutingConfigRoutingMode
     , NetworkRoutingConfigRoutingMode (..)
 
@@ -2955,6 +3127,12 @@
     , sValue
     , sKey
 
+    -- * NetworkEndpointGroupListWarningDataItem
+    , NetworkEndpointGroupListWarningDataItem
+    , networkEndpointGroupListWarningDataItem
+    , neglwdiValue
+    , neglwdiKey
+
     -- * ProjectsDisableXpnResourceRequest
     , ProjectsDisableXpnResourceRequest
     , projectsDisableXpnResourceRequest
@@ -2981,6 +3159,13 @@
     , autWarning
     , autId
 
+    -- * NetworkEndpointGroupAggregatedListWarning
+    , NetworkEndpointGroupAggregatedListWarning
+    , networkEndpointGroupAggregatedListWarning
+    , negalwData
+    , negalwCode
+    , negalwMessage
+
     -- * SSLPolicyMinTLSVersion
     , SSLPolicyMinTLSVersion (..)
 
@@ -3001,6 +3186,7 @@
     , InterconnectLocation
     , interconnectLocation
     , intFacilityProviderFacilityId
+    , intStatus
     , intRegionInfos
     , intKind
     , intAddress
@@ -3112,6 +3298,12 @@
     , pgxrKind
     , pgxrResources
 
+    -- * NetworkEndpointWithHealthStatus
+    , NetworkEndpointWithHealthStatus
+    , networkEndpointWithHealthStatus
+    , newhsHealths
+    , newhsNetworkEndpoint
+
     -- * MachineTypeList
     , MachineTypeList
     , machineTypeList
@@ -3185,6 +3377,9 @@
     , dtslDiskTypes
     , dtslWarning
 
+    -- * NetworkEndpointGroupsListEndpointsRequestHealthStatus
+    , NetworkEndpointGroupsListEndpointsRequestHealthStatus (..)
+
     -- * LogConfigCloudAuditOptions
     , LogConfigCloudAuditOptions
     , logConfigCloudAuditOptions
@@ -3252,12 +3447,13 @@
     -- * HTTPHealthCheck
     , HTTPHealthCheck
     , hTTPHealthCheck
-    , httphcResponse
-    , httphcRequestPath
-    , httphcHost
-    , httphcProxyHeader
-    , httphcPortName
-    , httphcPort
+    , hResponse
+    , hPortSpecification
+    , hRequestPath
+    , hHost
+    , hProxyHeader
+    , hPortName
+    , hPort
 
     -- * URLMapListWarningDataItem
     , URLMapListWarningDataItem
@@ -3470,12 +3666,21 @@
     , machineTypeScratchDisksItem
     , mtsdiDiskGb
 
+    -- * NetworkEndpointGroupsScopedListWarningDataItem
+    , NetworkEndpointGroupsScopedListWarningDataItem
+    , networkEndpointGroupsScopedListWarningDataItem
+    , negslwdiValue
+    , negslwdiKey
+
     -- * SubnetworksScopedListWarningDataItem
     , SubnetworksScopedListWarningDataItem
     , subnetworksScopedListWarningDataItem
     , sslwdiValue
     , sslwdiKey
 
+    -- * NetworkEndpointGroupsScopedListWarningCode
+    , NetworkEndpointGroupsScopedListWarningCode (..)
+
     -- * MachineTypesScopedList
     , MachineTypesScopedList
     , machineTypesScopedList
@@ -3485,6 +3690,25 @@
     -- * SubnetworksScopedListWarningCode
     , SubnetworksScopedListWarningCode (..)
 
+    -- * NetworkEndpointGroup
+    , NetworkEndpointGroup
+    , networkEndpointGroup
+    , negSize
+    , negKind
+    , negNetwork
+    , negZone
+    , negSelfLink
+    , negName
+    , negCreationTimestamp
+    , negDefaultPort
+    , negSubnetwork
+    , negNetworkEndpointType
+    , negId
+    , negDescription
+
+    -- * NetworkEndpointGroupsListNetworkEndpointsWarningCode
+    , NetworkEndpointGroupsListNetworkEndpointsWarningCode (..)
+
     -- * Subnetwork
     , Subnetwork
     , subnetwork
@@ -3520,6 +3744,12 @@
     , mtalWarning
     , mtalId
 
+    -- * NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , networkEndpointGroupsListNetworkEndpointsWarningDataItem
+    , neglnewdiValue
+    , neglnewdiKey
+
     -- * NodeGroupsScopedListWarning
     , NodeGroupsScopedListWarning
     , nodeGroupsScopedListWarning
@@ -3725,6 +3955,13 @@
     , thttppId
     , thttppDescription
 
+    -- * ShieldedInstanceConfig
+    , ShieldedInstanceConfig
+    , shieldedInstanceConfig
+    , sicEnableVtpm
+    , sicEnableIntegrityMonitoring
+    , sicEnableSecureBoot
+
     -- * MachineType
     , MachineType
     , machineType
@@ -3791,6 +4028,16 @@
     , tislwCode
     , tislwMessage
 
+    -- * NetworkEndpointGroupAggregatedList
+    , NetworkEndpointGroupAggregatedList
+    , networkEndpointGroupAggregatedList
+    , negalNextPageToken
+    , negalKind
+    , negalItems
+    , negalSelfLink
+    , negalWarning
+    , negalId
+
     -- * SubnetworkAggregatedList
     , SubnetworkAggregatedList
     , subnetworkAggregatedList
@@ -3846,12 +4093,21 @@
     -- * AutoscalersScopedListWarningCode
     , AutoscalersScopedListWarningCode (..)
 
+    -- * HTTPSHealthCheckPortSpecification
+    , HTTPSHealthCheckPortSpecification (..)
+
     -- * DiskTypeAggregatedListWarningDataItem
     , DiskTypeAggregatedListWarningDataItem
     , diskTypeAggregatedListWarningDataItem
     , dtalwdiValue
     , dtalwdiKey
 
+    -- * ShieldedInstanceIdentityEntry
+    , ShieldedInstanceIdentityEntry
+    , shieldedInstanceIdentityEntry
+    , siieEkCert
+    , siieEkPub
+
     -- * ForwardingRuleLoadBalancingScheme
     , ForwardingRuleLoadBalancingScheme (..)
 
@@ -4245,6 +4501,16 @@
     , nttRegion
     , nttDescription
 
+    -- * NetworkEndpointGroupList
+    , NetworkEndpointGroupList
+    , networkEndpointGroupList
+    , neglNextPageToken
+    , neglKind
+    , neglItems
+    , neglSelfLink
+    , neglWarning
+    , neglId
+
     -- * SubnetworkList
     , SubnetworkList
     , subnetworkList
@@ -4499,6 +4765,11 @@
     , subnetworkAggregatedListItems
     , saliAddtional
 
+    -- * NetworkEndpointGroupAggregatedListItems
+    , NetworkEndpointGroupAggregatedListItems
+    , networkEndpointGroupAggregatedListItems
+    , negaliAddtional
+
     -- * InterconnectAttachmentAggregatedListWarningDataItem
     , InterconnectAttachmentAggregatedListWarningDataItem
     , interconnectAttachmentAggregatedListWarningDataItem
@@ -4527,7 +4798,6 @@
     , cOp
     , cIAM
     , cValues
-    , cValue
     , cSys
     , cSvc
 
@@ -4556,6 +4826,9 @@
     , asdType
     , asdMessage
 
+    -- * HTTP2HealthCheckProxyHeader
+    , HTTP2HealthCheckProxyHeader (..)
+
     -- * BackendServiceList
     , BackendServiceList
     , backendServiceList
@@ -4604,6 +4877,9 @@
     , igslwCode
     , igslwMessage
 
+    -- * InterconnectLocationStatus
+    , InterconnectLocationStatus (..)
+
     -- * AutoscalingPolicyCPUUtilization
     , AutoscalingPolicyCPUUtilization
     , autoscalingPolicyCPUUtilization
@@ -4704,6 +4980,7 @@
     -- * Quota
     , Quota
     , quota
+    , qOwner
     , qMetric
     , qLimit
     , qUsage
@@ -4780,6 +5057,9 @@
     -- * CommitmentListWarningCode
     , CommitmentListWarningCode (..)
 
+    -- * HTTPHealthCheckPortSpecification
+    , HTTPHealthCheckPortSpecification (..)
+
     -- * LicenseCode
     , LicenseCode
     , licenseCode
@@ -4810,6 +5090,12 @@
     -- * ConditionIAM
     , ConditionIAM (..)
 
+    -- * ManagedInstanceVersion
+    , ManagedInstanceVersion
+    , managedInstanceVersion
+    , mivInstanceTemplate
+    , mivName
+
     -- * CommitmentsScopedListWarning
     , CommitmentsScopedListWarning
     , commitmentsScopedListWarning
@@ -4987,6 +5273,7 @@
     , bsEnableCDN
     , bsFingerprint
     , bsProtocol
+    , bsCustomRequestHeaders
     , bsSecurityPolicy
     , bsCdnPolicy
     , bsSelfLink
@@ -5023,6 +5310,13 @@
     , idarpeIPAddress
     , idarpeMACAddress
 
+    -- * ShieldedInstanceIdentity
+    , ShieldedInstanceIdentity
+    , shieldedInstanceIdentity
+    , siiSigningKey
+    , siiKind
+    , siiEncryptionKey
+
     -- * BackendServicesScopedListWarningCode
     , BackendServicesScopedListWarningCode (..)
 
@@ -5059,6 +5353,7 @@
     , HTTPSHealthCheck
     , httpsHealthCheck
     , hhcResponse
+    , hhcPortSpecification
     , hhcRequestPath
     , hhcHost
     , hhcProxyHeader
@@ -5177,7 +5472,9 @@
     , i1Status
     , i1ServiceAccounts
     , i1DeletionProtection
+    , i1Hostname
     , i1NetworkInterfaces
+    , i1ShieldedInstanceIntegrityPolicy
     , i1Kind
     , i1Zone
     , i1CPUPlatform
@@ -5188,6 +5485,7 @@
     , i1CreationTimestamp
     , i1MachineType
     , i1Metadata
+    , i1ShieldedInstanceConfig
     , i1Id
     , i1Labels
     , i1StartRestricted
@@ -5207,6 +5505,9 @@
     , pmPathRules
     , pmDescription
 
+    -- * InstanceGroupManagerUpdatePolicyMinimalAction
+    , InstanceGroupManagerUpdatePolicyMinimalAction (..)
+
     -- * BackendServiceListWarning
     , BackendServiceListWarning
     , backendServiceListWarning
@@ -5230,24 +5531,24 @@
 
 -- | View and manage your Google Compute Engine resources
 computeScope :: Proxy '["https://www.googleapis.com/auth/compute"]
-computeScope = Proxy;
+computeScope = Proxy
 
 -- | View and manage your data across Google Cloud Platform services
 cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy;
+cloudPlatformScope = Proxy
 
 -- | View your data in Google Cloud Storage
 storageReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_only"]
-storageReadOnlyScope = Proxy;
+storageReadOnlyScope = Proxy
 
 -- | Manage your data in Google Cloud Storage
 storageReadWriteScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_write"]
-storageReadWriteScope = Proxy;
+storageReadWriteScope = Proxy
 
 -- | View your Google Compute Engine resources
 computeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/compute.readonly"]
-computeReadOnlyScope = Proxy;
+computeReadOnlyScope = Proxy
 
 -- | Manage your data and permissions in Google Cloud Storage
 storageFullControlScope :: Proxy '["https://www.googleapis.com/auth/devstorage.full_control"]
-storageFullControlScope = Proxy;
+storageFullControlScope = Proxy
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
@@ -23,43705 +23,47854 @@
 -- | [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
-    }
+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:/ 'instanceGroupManagerUpdatePolicy' smart constructor.
+data InstanceGroupManagerUpdatePolicy =
+  InstanceGroupManagerUpdatePolicy'
+    { _igmupMaxSurge       :: !(Maybe FixedOrPercent)
+    , _igmupMaxUnavailable :: !(Maybe FixedOrPercent)
+    , _igmupMinimalAction  :: !(Maybe InstanceGroupManagerUpdatePolicyMinimalAction)
+    , _igmupType           :: !(Maybe InstanceGroupManagerUpdatePolicyType)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceGroupManagerUpdatePolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmupMaxSurge'
+--
+-- * 'igmupMaxUnavailable'
+--
+-- * 'igmupMinimalAction'
+--
+-- * 'igmupType'
+instanceGroupManagerUpdatePolicy
+    :: InstanceGroupManagerUpdatePolicy
+instanceGroupManagerUpdatePolicy =
+  InstanceGroupManagerUpdatePolicy'
+    { _igmupMaxSurge = Nothing
+    , _igmupMaxUnavailable = Nothing
+    , _igmupMinimalAction = Nothing
+    , _igmupType = Nothing
+    }
+
+
+-- | The maximum number of instances that can be created above the specified
+-- targetSize during the update process. By default, a fixed value of 1 is
+-- used. This value can be either a fixed number or a percentage if the
+-- instance group has 10 or more instances. If you set a percentage, the
+-- number of instances will be rounded up if necessary. At least one of
+-- either maxSurge or maxUnavailable must be greater than 0. Learn more
+-- about maxSurge.
+igmupMaxSurge :: Lens' InstanceGroupManagerUpdatePolicy (Maybe FixedOrPercent)
+igmupMaxSurge
+  = lens _igmupMaxSurge
+      (\ s a -> s{_igmupMaxSurge = a})
+
+-- | The maximum number of instances that can be unavailable during the
+-- update process. An instance is considered available if all of the
+-- following conditions are satisfied: - The instance\'s status is RUNNING.
+-- - If there is a health check on the instance group, the instance\'s
+-- liveness health check result must be HEALTHY at least once. If there is
+-- no health check on the group, then the instance only needs to have a
+-- status of RUNNING to be considered available. By default, a fixed value
+-- of 1 is used. This value can be either a fixed number or a percentage if
+-- the instance group has 10 or more instances. If you set a percentage,
+-- the number of instances will be rounded up if necessary. At least one of
+-- either maxSurge or maxUnavailable must be greater than 0. Learn more
+-- about maxUnavailable.
+igmupMaxUnavailable :: Lens' InstanceGroupManagerUpdatePolicy (Maybe FixedOrPercent)
+igmupMaxUnavailable
+  = lens _igmupMaxUnavailable
+      (\ s a -> s{_igmupMaxUnavailable = a})
+
+-- | Minimal action to be taken on an instance. You can specify either
+-- RESTART to restart existing instances or REPLACE to delete and create
+-- new instances from the target template. If you specify a RESTART, the
+-- Updater will attempt to perform that action only. However, if the
+-- Updater determines that the minimal action you specify is not enough to
+-- perform the update, it might perform a more disruptive action.
+igmupMinimalAction :: Lens' InstanceGroupManagerUpdatePolicy (Maybe InstanceGroupManagerUpdatePolicyMinimalAction)
+igmupMinimalAction
+  = lens _igmupMinimalAction
+      (\ s a -> s{_igmupMinimalAction = a})
+
+igmupType :: Lens' InstanceGroupManagerUpdatePolicy (Maybe InstanceGroupManagerUpdatePolicyType)
+igmupType
+  = lens _igmupType (\ s a -> s{_igmupType = a})
+
+instance FromJSON InstanceGroupManagerUpdatePolicy
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerUpdatePolicy"
+              (\ o ->
+                 InstanceGroupManagerUpdatePolicy' <$>
+                   (o .:? "maxSurge") <*> (o .:? "maxUnavailable") <*>
+                     (o .:? "minimalAction")
+                     <*> (o .:? "type"))
+
+instance ToJSON InstanceGroupManagerUpdatePolicy
+         where
+        toJSON InstanceGroupManagerUpdatePolicy'{..}
+          = object
+              (catMaybes
+                 [("maxSurge" .=) <$> _igmupMaxSurge,
+                  ("maxUnavailable" .=) <$> _igmupMaxUnavailable,
+                  ("minimalAction" .=) <$> _igmupMinimalAction,
+                  ("type" .=) <$> _igmupType])
+
+--
+-- /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 ACTIVE, DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which communicate the end of life date
+-- for an image, can use ACTIVE. 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)
+    , _sStorageLocations        :: !(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'
+--
+-- * 'sStorageLocations'
+--
+-- * '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
+    , _sStorageLocations = 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})
+
+-- | GCS bucket storage location of the snapshot (regional or
+-- multi-regional).
+sStorageLocations :: Lens' Snapshot [Text]
+sStorageLocations
+  = lens _sStorageLocations
+      (\ s a -> s{_sStorageLocations = a})
+      . _Default
+      . _Coerce
+
+-- | [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 .:? "storageLocations" .!= mempty)
+                     <*> (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,
+                  ("storageLocations" .=) <$> _sStorageLocations,
+                  ("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. To create a node group, you must first create a
+-- node templates. To learn more about node groups and sole-tenant nodes,
+-- read the Sole-tenant nodes documentation. (== resource_for
+-- beta.nodeGroups ==) (== resource_for v1.nodeGroups ==)
+--
+-- /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])
+
+--
+-- /See:/ 'networkEndpointGroupsDetachEndpointsRequest' smart constructor.
+newtype NetworkEndpointGroupsDetachEndpointsRequest =
+  NetworkEndpointGroupsDetachEndpointsRequest'
+    { _negderNetworkEndpoints :: Maybe [NetworkEndpoint]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsDetachEndpointsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negderNetworkEndpoints'
+networkEndpointGroupsDetachEndpointsRequest
+    :: NetworkEndpointGroupsDetachEndpointsRequest
+networkEndpointGroupsDetachEndpointsRequest =
+  NetworkEndpointGroupsDetachEndpointsRequest'
+    {_negderNetworkEndpoints = Nothing}
+
+
+-- | The list of network endpoints to be detached.
+negderNetworkEndpoints :: Lens' NetworkEndpointGroupsDetachEndpointsRequest [NetworkEndpoint]
+negderNetworkEndpoints
+  = lens _negderNetworkEndpoints
+      (\ s a -> s{_negderNetworkEndpoints = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           NetworkEndpointGroupsDetachEndpointsRequest
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsDetachEndpointsRequest"
+              (\ o ->
+                 NetworkEndpointGroupsDetachEndpointsRequest' <$>
+                   (o .:? "networkEndpoints" .!= mempty))
+
+instance ToJSON
+           NetworkEndpointGroupsDetachEndpointsRequest
+         where
+        toJSON
+          NetworkEndpointGroupsDetachEndpointsRequest'{..}
+          = object
+              (catMaybes
+                 [("networkEndpoints" .=) <$>
+                    _negderNetworkEndpoints])
+
+-- | 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])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'networkEndpointGroupsListNetworkEndpointsWarning' smart constructor.
+data NetworkEndpointGroupsListNetworkEndpointsWarning =
+  NetworkEndpointGroupsListNetworkEndpointsWarning'
+    { _neglnewData    :: !(Maybe [NetworkEndpointGroupsListNetworkEndpointsWarningDataItem])
+    , _neglnewCode    :: !(Maybe NetworkEndpointGroupsListNetworkEndpointsWarningCode)
+    , _neglnewMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsListNetworkEndpointsWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglnewData'
+--
+-- * 'neglnewCode'
+--
+-- * 'neglnewMessage'
+networkEndpointGroupsListNetworkEndpointsWarning
+    :: NetworkEndpointGroupsListNetworkEndpointsWarning
+networkEndpointGroupsListNetworkEndpointsWarning =
+  NetworkEndpointGroupsListNetworkEndpointsWarning'
+    {_neglnewData = Nothing, _neglnewCode = Nothing, _neglnewMessage = Nothing}
+
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+neglnewData :: Lens' NetworkEndpointGroupsListNetworkEndpointsWarning [NetworkEndpointGroupsListNetworkEndpointsWarningDataItem]
+neglnewData
+  = lens _neglnewData (\ s a -> s{_neglnewData = 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.
+neglnewCode :: Lens' NetworkEndpointGroupsListNetworkEndpointsWarning (Maybe NetworkEndpointGroupsListNetworkEndpointsWarningCode)
+neglnewCode
+  = lens _neglnewCode (\ s a -> s{_neglnewCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+neglnewMessage :: Lens' NetworkEndpointGroupsListNetworkEndpointsWarning (Maybe Text)
+neglnewMessage
+  = lens _neglnewMessage
+      (\ s a -> s{_neglnewMessage = a})
+
+instance FromJSON
+           NetworkEndpointGroupsListNetworkEndpointsWarning
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsListNetworkEndpointsWarning"
+              (\ o ->
+                 NetworkEndpointGroupsListNetworkEndpointsWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+           NetworkEndpointGroupsListNetworkEndpointsWarning
+         where
+        toJSON
+          NetworkEndpointGroupsListNetworkEndpointsWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _neglnewData,
+                  ("code" .=) <$> _neglnewCode,
+                  ("message" .=) <$> _neglnewMessage])
+
+--
+-- /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])
+
+--
+-- /See:/ 'instanceGroupManagerVersion' smart constructor.
+data InstanceGroupManagerVersion =
+  InstanceGroupManagerVersion'
+    { _igmvInstanceTemplate :: !(Maybe Text)
+    , _igmvTargetSize       :: !(Maybe FixedOrPercent)
+    , _igmvName             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceGroupManagerVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmvInstanceTemplate'
+--
+-- * 'igmvTargetSize'
+--
+-- * 'igmvName'
+instanceGroupManagerVersion
+    :: InstanceGroupManagerVersion
+instanceGroupManagerVersion =
+  InstanceGroupManagerVersion'
+    { _igmvInstanceTemplate = Nothing
+    , _igmvTargetSize = Nothing
+    , _igmvName = Nothing
+    }
+
+
+-- | The URL of the instance template that is specified for this managed
+-- instance group. The group uses this template to create new instances in
+-- the managed instance group until the \`targetSize\` for this version is
+-- reached.
+igmvInstanceTemplate :: Lens' InstanceGroupManagerVersion (Maybe Text)
+igmvInstanceTemplate
+  = lens _igmvInstanceTemplate
+      (\ s a -> s{_igmvInstanceTemplate = a})
+
+-- | Specifies the intended number of instances to be created from the
+-- instanceTemplate. The final number of instances created from the
+-- template will be equal to: - If expressed as a fixed number, the minimum
+-- of either targetSize.fixed or instanceGroupManager.targetSize is used. -
+-- if expressed as a percent, the targetSize would be
+-- (targetSize.percent\/100 * InstanceGroupManager.targetSize) If there is
+-- a remainder, the number is rounded up. If unset, this version will
+-- update any remaining instances not updated by another version. Read
+-- Starting a canary update for more information.
+igmvTargetSize :: Lens' InstanceGroupManagerVersion (Maybe FixedOrPercent)
+igmvTargetSize
+  = lens _igmvTargetSize
+      (\ s a -> s{_igmvTargetSize = a})
+
+-- | Name of the version. Unique among all versions in the scope of this
+-- managed instance group.
+igmvName :: Lens' InstanceGroupManagerVersion (Maybe Text)
+igmvName = lens _igmvName (\ s a -> s{_igmvName = a})
+
+instance FromJSON InstanceGroupManagerVersion where
+        parseJSON
+          = withObject "InstanceGroupManagerVersion"
+              (\ o ->
+                 InstanceGroupManagerVersion' <$>
+                   (o .:? "instanceTemplate") <*> (o .:? "targetSize")
+                     <*> (o .:? "name"))
+
+instance ToJSON InstanceGroupManagerVersion where
+        toJSON InstanceGroupManagerVersion'{..}
+          = object
+              (catMaybes
+                 [("instanceTemplate" .=) <$> _igmvInstanceTemplate,
+                  ("targetSize" .=) <$> _igmvTargetSize,
+                  ("name" .=) <$> _igmvName])
+
+-- | [Output Only] An informational warning that replaces the list of network
+-- endpoint groups when the list is empty.
+--
+-- /See:/ 'networkEndpointGroupsScopedListWarning' smart constructor.
+data NetworkEndpointGroupsScopedListWarning =
+  NetworkEndpointGroupsScopedListWarning'
+    { _negslwData    :: !(Maybe [NetworkEndpointGroupsScopedListWarningDataItem])
+    , _negslwCode    :: !(Maybe NetworkEndpointGroupsScopedListWarningCode)
+    , _negslwMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negslwData'
+--
+-- * 'negslwCode'
+--
+-- * 'negslwMessage'
+networkEndpointGroupsScopedListWarning
+    :: NetworkEndpointGroupsScopedListWarning
+networkEndpointGroupsScopedListWarning =
+  NetworkEndpointGroupsScopedListWarning'
+    {_negslwData = Nothing, _negslwCode = Nothing, _negslwMessage = Nothing}
+
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+negslwData :: Lens' NetworkEndpointGroupsScopedListWarning [NetworkEndpointGroupsScopedListWarningDataItem]
+negslwData
+  = lens _negslwData (\ s a -> s{_negslwData = 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.
+negslwCode :: Lens' NetworkEndpointGroupsScopedListWarning (Maybe NetworkEndpointGroupsScopedListWarningCode)
+negslwCode
+  = lens _negslwCode (\ s a -> s{_negslwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+negslwMessage :: Lens' NetworkEndpointGroupsScopedListWarning (Maybe Text)
+negslwMessage
+  = lens _negslwMessage
+      (\ s a -> s{_negslwMessage = a})
+
+instance FromJSON
+           NetworkEndpointGroupsScopedListWarning
+         where
+        parseJSON
+          = withObject "NetworkEndpointGroupsScopedListWarning"
+              (\ o ->
+                 NetworkEndpointGroupsScopedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+           NetworkEndpointGroupsScopedListWarning
+         where
+        toJSON NetworkEndpointGroupsScopedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _negslwData,
+                  ("code" .=) <$> _negslwCode,
+                  ("message" .=) <$> _negslwMessage])
+
+-- | 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'
+    { _naprNetworkPeering   :: !(Maybe NetworkPeering)
+    , _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:
+--
+-- * 'naprNetworkPeering'
+--
+-- * 'naprPeerNetwork'
+--
+-- * 'naprName'
+--
+-- * 'naprAutoCreateRoutes'
+networksAddPeeringRequest
+    :: NetworksAddPeeringRequest
+networksAddPeeringRequest =
+  NetworksAddPeeringRequest'
+    { _naprNetworkPeering = Nothing
+    , _naprPeerNetwork = Nothing
+    , _naprName = Nothing
+    , _naprAutoCreateRoutes = Nothing
+    }
+
+
+-- | Network peering parameters. In order to specify route policies for
+-- peering using import\/export custom routes, you will have to fill all
+-- peering related parameters (name, peer network, exchange_subnet_routes)
+-- in network_peeringfield. Corresponding fields in
+-- NetworksAddPeeringRequest will be deprecated soon.
+naprNetworkPeering :: Lens' NetworksAddPeeringRequest (Maybe NetworkPeering)
+naprNetworkPeering
+  = lens _naprNetworkPeering
+      (\ s a -> s{_naprNetworkPeering = a})
+
+-- | 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})
+
+-- | This field will be deprecated soon. Prefer using exchange_subnet_routes
+-- in network_peering instead. 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 .:? "networkPeering") <*> (o .:? "peerNetwork")
+                     <*> (o .:? "name")
+                     <*> (o .:? "autoCreateRoutes"))
+
+instance ToJSON NetworksAddPeeringRequest where
+        toJSON NetworksAddPeeringRequest'{..}
+          = object
+              (catMaybes
+                 [("networkPeering" .=) <$> _naprNetworkPeering,
+                  ("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 full or partial URL of the defaultService resource to which traffic
+-- is directed if none of the hostRules match. If defaultRouteAction is
+-- additionally specified, advanced routing actions like URL Rewrites, etc.
+-- take effect prior to sending the request to the backend. However, if
+-- defaultService is specified, defaultRouteAction cannot contain any
+-- weightedBackendServices. Conversely, if routeAction specifies any
+-- weightedBackendServices, service must not be specified. Only one of
+-- defaultService, defaultUrlRedirect or
+-- defaultRouteAction.weightedBackendService 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])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'networkEndpointGroupListWarning' smart constructor.
+data NetworkEndpointGroupListWarning =
+  NetworkEndpointGroupListWarning'
+    { _neglwData    :: !(Maybe [NetworkEndpointGroupListWarningDataItem])
+    , _neglwCode    :: !(Maybe NetworkEndpointGroupListWarningCode)
+    , _neglwMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglwData'
+--
+-- * 'neglwCode'
+--
+-- * 'neglwMessage'
+networkEndpointGroupListWarning
+    :: NetworkEndpointGroupListWarning
+networkEndpointGroupListWarning =
+  NetworkEndpointGroupListWarning'
+    {_neglwData = Nothing, _neglwCode = Nothing, _neglwMessage = Nothing}
+
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+neglwData :: Lens' NetworkEndpointGroupListWarning [NetworkEndpointGroupListWarningDataItem]
+neglwData
+  = lens _neglwData (\ s a -> s{_neglwData = 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.
+neglwCode :: Lens' NetworkEndpointGroupListWarning (Maybe NetworkEndpointGroupListWarningCode)
+neglwCode
+  = lens _neglwCode (\ s a -> s{_neglwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+neglwMessage :: Lens' NetworkEndpointGroupListWarning (Maybe Text)
+neglwMessage
+  = lens _neglwMessage (\ s a -> s{_neglwMessage = a})
+
+instance FromJSON NetworkEndpointGroupListWarning
+         where
+        parseJSON
+          = withObject "NetworkEndpointGroupListWarning"
+              (\ o ->
+                 NetworkEndpointGroupListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON NetworkEndpointGroupListWarning where
+        toJSON NetworkEndpointGroupListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _neglwData,
+                  ("code" .=) <$> _neglwCode,
+                  ("message" .=) <$> _neglwMessage])
+
+-- | 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)
+    , _hcHTTP2HealthCheck   :: !(Maybe HTTP2HealthCheck)
+    , _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'
+--
+-- * 'hcHTTP2HealthCheck'
+--
+-- * 'hcKind'
+--
+-- * 'hcSSLHealthCheck'
+--
+-- * 'hcSelfLink'
+--
+-- * 'hcCheckIntervalSec'
+--
+-- * 'hcName'
+--
+-- * 'hcCreationTimestamp'
+--
+-- * 'hcHTTPHealthCheck'
+--
+-- * 'hcId'
+--
+-- * 'hcType'
+--
+-- * 'hcTimeoutSec'
+--
+-- * 'hcDescription'
+--
+-- * 'hcUnhealthyThreshold'
+--
+-- * 'hcHTTPSHealthCheck'
+healthCheck
+    :: HealthCheck
+healthCheck =
+  HealthCheck'
+    { _hcHealthyThreshold = Nothing
+    , _hcTCPHealthCheck = Nothing
+    , _hcHTTP2HealthCheck = 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})
+
+hcHTTP2HealthCheck :: Lens' HealthCheck (Maybe HTTP2HealthCheck)
+hcHTTP2HealthCheck
+  = lens _hcHTTP2HealthCheck
+      (\ s a -> s{_hcHTTP2HealthCheck = 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, HTTPS or
+-- HTTP2. 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 .:? "http2HealthCheck")
+                     <*> (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,
+                  ("http2HealthCheck" .=) <$> _hcHTTP2HealthCheck,
+                  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:/ 'networkEndpointGroupsListEndpointsRequest' smart constructor.
+newtype NetworkEndpointGroupsListEndpointsRequest =
+  NetworkEndpointGroupsListEndpointsRequest'
+    { _neglerHealthStatus :: Maybe NetworkEndpointGroupsListEndpointsRequestHealthStatus
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsListEndpointsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglerHealthStatus'
+networkEndpointGroupsListEndpointsRequest
+    :: NetworkEndpointGroupsListEndpointsRequest
+networkEndpointGroupsListEndpointsRequest =
+  NetworkEndpointGroupsListEndpointsRequest' {_neglerHealthStatus = Nothing}
+
+
+-- | Optional query parameter for showing the health status of each network
+-- endpoint. Valid options are SKIP or SHOW. If you don\'t specifiy this
+-- parameter, the health status of network endpoints will not be provided.
+neglerHealthStatus :: Lens' NetworkEndpointGroupsListEndpointsRequest (Maybe NetworkEndpointGroupsListEndpointsRequestHealthStatus)
+neglerHealthStatus
+  = lens _neglerHealthStatus
+      (\ s a -> s{_neglerHealthStatus = a})
+
+instance FromJSON
+           NetworkEndpointGroupsListEndpointsRequest
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsListEndpointsRequest"
+              (\ o ->
+                 NetworkEndpointGroupsListEndpointsRequest' <$>
+                   (o .:? "healthStatus"))
+
+instance ToJSON
+           NetworkEndpointGroupsListEndpointsRequest
+         where
+        toJSON NetworkEndpointGroupsListEndpointsRequest'{..}
+          = object
+              (catMaybes
+                 [("healthStatus" .=) <$> _neglerHealthStatus])
+
+--
+-- /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})
+
+-- | An InterconnectDiagnostics.LinkOpticalPower object, describing the
+-- current value and status of the received light level.
+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
+
+-- | An InterconnectDiagnostics.LinkOpticalPower object, describing the
+-- current value and status of the transmitted light level.
+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])
+
+--
+-- /See:/ 'backendServiceReference' smart constructor.
+newtype BackendServiceReference =
+  BackendServiceReference'
+    { _bsrBackendService :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BackendServiceReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsrBackendService'
+backendServiceReference
+    :: BackendServiceReference
+backendServiceReference =
+  BackendServiceReference' {_bsrBackendService = Nothing}
+
+
+bsrBackendService :: Lens' BackendServiceReference (Maybe Text)
+bsrBackendService
+  = lens _bsrBackendService
+      (\ s a -> s{_bsrBackendService = a})
+
+instance FromJSON BackendServiceReference where
+        parseJSON
+          = withObject "BackendServiceReference"
+              (\ o ->
+                 BackendServiceReference' <$>
+                   (o .:? "backendService"))
+
+instance ToJSON BackendServiceReference where
+        toJSON BackendServiceReference'{..}
+          = object
+              (catMaybes
+                 [("backendService" .=) <$> _bsrBackendService])
+
+--
+-- /See:/ 'networkEndpointGroupAggregatedListWarningDataItem' smart constructor.
+data NetworkEndpointGroupAggregatedListWarningDataItem =
+  NetworkEndpointGroupAggregatedListWarningDataItem'
+    { _negalwdiValue :: !(Maybe Text)
+    , _negalwdiKey   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupAggregatedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negalwdiValue'
+--
+-- * 'negalwdiKey'
+networkEndpointGroupAggregatedListWarningDataItem
+    :: NetworkEndpointGroupAggregatedListWarningDataItem
+networkEndpointGroupAggregatedListWarningDataItem =
+  NetworkEndpointGroupAggregatedListWarningDataItem'
+    {_negalwdiValue = Nothing, _negalwdiKey = Nothing}
+
+
+-- | [Output Only] A warning data value corresponding to the key.
+negalwdiValue :: Lens' NetworkEndpointGroupAggregatedListWarningDataItem (Maybe Text)
+negalwdiValue
+  = lens _negalwdiValue
+      (\ s a -> s{_negalwdiValue = 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).
+negalwdiKey :: Lens' NetworkEndpointGroupAggregatedListWarningDataItem (Maybe Text)
+negalwdiKey
+  = lens _negalwdiKey (\ s a -> s{_negalwdiKey = a})
+
+instance FromJSON
+           NetworkEndpointGroupAggregatedListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupAggregatedListWarningDataItem"
+              (\ o ->
+                 NetworkEndpointGroupAggregatedListWarningDataItem'
+                   <$> (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+           NetworkEndpointGroupAggregatedListWarningDataItem
+         where
+        toJSON
+          NetworkEndpointGroupAggregatedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _negalwdiValue,
+                  ("key" .=) <$> _negalwdiKey])
+
+-- | 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
+
+-- |
+--
+-- /See:/ 'instanceGroupManagerAutoHealingPolicy' smart constructor.
+data InstanceGroupManagerAutoHealingPolicy =
+  InstanceGroupManagerAutoHealingPolicy'
+    { _igmahpHealthCheck     :: !(Maybe Text)
+    , _igmahpInitialDelaySec :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceGroupManagerAutoHealingPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmahpHealthCheck'
+--
+-- * 'igmahpInitialDelaySec'
+instanceGroupManagerAutoHealingPolicy
+    :: InstanceGroupManagerAutoHealingPolicy
+instanceGroupManagerAutoHealingPolicy =
+  InstanceGroupManagerAutoHealingPolicy'
+    {_igmahpHealthCheck = Nothing, _igmahpInitialDelaySec = Nothing}
+
+
+-- | The URL for the health check that signals autohealing.
+igmahpHealthCheck :: Lens' InstanceGroupManagerAutoHealingPolicy (Maybe Text)
+igmahpHealthCheck
+  = lens _igmahpHealthCheck
+      (\ s a -> s{_igmahpHealthCheck = a})
+
+-- | The number of seconds that the managed instance group waits before it
+-- applies autohealing policies to new instances or recently recreated
+-- instances. This initial delay allows instances to initialize and run
+-- their startup scripts before the instance group determines that they are
+-- UNHEALTHY. This prevents the managed instance group from recreating its
+-- instances prematurely. This value must be from range [0, 3600].
+igmahpInitialDelaySec :: Lens' InstanceGroupManagerAutoHealingPolicy (Maybe Int32)
+igmahpInitialDelaySec
+  = lens _igmahpInitialDelaySec
+      (\ s a -> s{_igmahpInitialDelaySec = a})
+      . mapping _Coerce
+
+instance FromJSON
+           InstanceGroupManagerAutoHealingPolicy
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerAutoHealingPolicy"
+              (\ o ->
+                 InstanceGroupManagerAutoHealingPolicy' <$>
+                   (o .:? "healthCheck") <*> (o .:? "initialDelaySec"))
+
+instance ToJSON InstanceGroupManagerAutoHealingPolicy
+         where
+        toJSON InstanceGroupManagerAutoHealingPolicy'{..}
+          = object
+              (catMaybes
+                 [("healthCheck" .=) <$> _igmahpHealthCheck,
+                  ("initialDelaySec" .=) <$> _igmahpInitialDelaySec])
+
+-- | 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)
+    , _frAllPorts            :: !(Maybe Bool)
+    , _frNetwork             :: !(Maybe Text)
+    , _frPortRange           :: !(Maybe Text)
+    , _frSelfLink            :: !(Maybe Text)
+    , _frName                :: !(Maybe Text)
+    , _frIPProtocol          :: !(Maybe ForwardingRuleIPProtocol)
+    , _frCreationTimestamp   :: !(Maybe Text)
+    , _frServiceName         :: !(Maybe Text)
+    , _frSubnetwork          :: !(Maybe Text)
+    , _frPorts               :: !(Maybe [Text])
+    , _frId                  :: !(Maybe (Textual Word64))
+    , _frRegion              :: !(Maybe Text)
+    , _frServiceLabel        :: !(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'
+--
+-- * 'frAllPorts'
+--
+-- * 'frNetwork'
+--
+-- * 'frPortRange'
+--
+-- * 'frSelfLink'
+--
+-- * 'frName'
+--
+-- * 'frIPProtocol'
+--
+-- * 'frCreationTimestamp'
+--
+-- * 'frServiceName'
+--
+-- * 'frSubnetwork'
+--
+-- * 'frPorts'
+--
+-- * 'frId'
+--
+-- * 'frRegion'
+--
+-- * 'frServiceLabel'
+--
+-- * 'frDescription'
+--
+-- * 'frTarget'
+--
+-- * 'frBackendService'
+forwardingRule
+    :: ForwardingRule
+forwardingRule =
+  ForwardingRule'
+    { _frNetworkTier = Nothing
+    , _frIPAddress = Nothing
+    , _frLoadBalancingScheme = Nothing
+    , _frKind = "compute#forwardingRule"
+    , _frIPVersion = Nothing
+    , _frAllPorts = Nothing
+    , _frNetwork = Nothing
+    , _frPortRange = Nothing
+    , _frSelfLink = Nothing
+    , _frName = Nothing
+    , _frIPProtocol = Nothing
+    , _frCreationTimestamp = Nothing
+    , _frServiceName = Nothing
+    , _frSubnetwork = Nothing
+    , _frPorts = Nothing
+    , _frId = Nothing
+    , _frRegion = Nothing
+    , _frServiceLabel = 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 used along with the backend_service field for internal
+-- load balancing or with the target field for internal TargetInstance.
+-- This field cannot be used with port or portRange fields. When the load
+-- balancing scheme is INTERNAL and protocol is TCP\/UDP, specify this
+-- field to allow packets addressed to any ports will be forwarded to the
+-- backends configured with this forwarding rule.
+frAllPorts :: Lens' ForwardingRule (Maybe Bool)
+frAllPorts
+  = lens _frAllPorts (\ s a -> s{_frAllPorts = 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})
+
+-- | [Output Only] The internal fully qualified service name for this
+-- Forwarding Rule. This field is only used for internal load balancing.
+frServiceName :: Lens' ForwardingRule (Maybe Text)
+frServiceName
+  = lens _frServiceName
+      (\ s a -> s{_frServiceName = 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 prefix to the service name for this Forwarding Rule. If
+-- specified, will be the first label of the fully qualified service name.
+-- The label must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the label 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. This field is only used for internal load balancing.
+frServiceLabel :: Lens' ForwardingRule (Maybe Text)
+frServiceLabel
+  = lens _frServiceLabel
+      (\ s a -> s{_frServiceLabel = 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 .:? "allPorts")
+                     <*> (o .:? "network")
+                     <*> (o .:? "portRange")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "IPProtocol")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "serviceName")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "ports" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "serviceLabel")
+                     <*> (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,
+                  ("allPorts" .=) <$> _frAllPorts,
+                  ("network" .=) <$> _frNetwork,
+                  ("portRange" .=) <$> _frPortRange,
+                  ("selfLink" .=) <$> _frSelfLink,
+                  ("name" .=) <$> _frName,
+                  ("IPProtocol" .=) <$> _frIPProtocol,
+                  ("creationTimestamp" .=) <$> _frCreationTimestamp,
+                  ("serviceName" .=) <$> _frServiceName,
+                  ("subnetwork" .=) <$> _frSubnetwork,
+                  ("ports" .=) <$> _frPorts, ("id" .=) <$> _frId,
+                  ("region" .=) <$> _frRegion,
+                  ("serviceLabel" .=) <$> _frServiceLabel,
+                  ("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])
+
+--
+-- /See:/ 'networkEndpointGroupsScopedList' smart constructor.
+data NetworkEndpointGroupsScopedList =
+  NetworkEndpointGroupsScopedList'
+    { _negslNetworkEndpointGroups :: !(Maybe [NetworkEndpointGroup])
+    , _negslWarning               :: !(Maybe NetworkEndpointGroupsScopedListWarning)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negslNetworkEndpointGroups'
+--
+-- * 'negslWarning'
+networkEndpointGroupsScopedList
+    :: NetworkEndpointGroupsScopedList
+networkEndpointGroupsScopedList =
+  NetworkEndpointGroupsScopedList'
+    {_negslNetworkEndpointGroups = Nothing, _negslWarning = Nothing}
+
+
+-- | [Output Only] The list of network endpoint groups that are contained in
+-- this scope.
+negslNetworkEndpointGroups :: Lens' NetworkEndpointGroupsScopedList [NetworkEndpointGroup]
+negslNetworkEndpointGroups
+  = lens _negslNetworkEndpointGroups
+      (\ s a -> s{_negslNetworkEndpointGroups = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that replaces the list of network
+-- endpoint groups when the list is empty.
+negslWarning :: Lens' NetworkEndpointGroupsScopedList (Maybe NetworkEndpointGroupsScopedListWarning)
+negslWarning
+  = lens _negslWarning (\ s a -> s{_negslWarning = a})
+
+instance FromJSON NetworkEndpointGroupsScopedList
+         where
+        parseJSON
+          = withObject "NetworkEndpointGroupsScopedList"
+              (\ o ->
+                 NetworkEndpointGroupsScopedList' <$>
+                   (o .:? "networkEndpointGroups" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON NetworkEndpointGroupsScopedList where
+        toJSON NetworkEndpointGroupsScopedList'{..}
+          = object
+              (catMaybes
+                 [("networkEndpointGroups" .=) <$>
+                    _negslNetworkEndpointGroups,
+                  ("warning" .=) <$> _negslWarning])
+
+-- | 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])
+
+-- | The network endpoint.
+--
+-- /See:/ 'networkEndpoint' smart constructor.
+data NetworkEndpoint =
+  NetworkEndpoint'
+    { _neIPAddress :: !(Maybe Text)
+    , _nePort      :: !(Maybe (Textual Int32))
+    , _neInstance  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neIPAddress'
+--
+-- * 'nePort'
+--
+-- * 'neInstance'
+networkEndpoint
+    :: NetworkEndpoint
+networkEndpoint =
+  NetworkEndpoint'
+    {_neIPAddress = Nothing, _nePort = Nothing, _neInstance = Nothing}
+
+
+-- | Optional IPv4 address of network endpoint. The IP address must belong to
+-- a VM in GCE (either the primary IP or as part of an aliased IP range).
+-- If the IP address is not specified, then the primary IP address for the
+-- VM instance in the network that the network endpoint group belongs to
+-- will be used.
+neIPAddress :: Lens' NetworkEndpoint (Maybe Text)
+neIPAddress
+  = lens _neIPAddress (\ s a -> s{_neIPAddress = a})
+
+-- | Optional port number of network endpoint. If not specified and the
+-- NetworkEndpointGroup.network_endpoint_type is GCE_IP_PORT, the
+-- defaultPort for the network endpoint group will be used.
+nePort :: Lens' NetworkEndpoint (Maybe Int32)
+nePort
+  = lens _nePort (\ s a -> s{_nePort = a}) .
+      mapping _Coerce
+
+-- | The name for a specific VM instance that the IP address belongs to. This
+-- is required for network endpoints of type GCE_VM_IP_PORT. The instance
+-- must be in the same zone of network endpoint group. The name must be
+-- 1-63 characters long, and comply with RFC1035.
+neInstance :: Lens' NetworkEndpoint (Maybe Text)
+neInstance
+  = lens _neInstance (\ s a -> s{_neInstance = a})
+
+instance FromJSON NetworkEndpoint where
+        parseJSON
+          = withObject "NetworkEndpoint"
+              (\ o ->
+                 NetworkEndpoint' <$>
+                   (o .:? "ipAddress") <*> (o .:? "port") <*>
+                     (o .:? "instance"))
+
+instance ToJSON NetworkEndpoint where
+        toJSON NetworkEndpoint'{..}
+          = object
+              (catMaybes
+                 [("ipAddress" .=) <$> _neIPAddress,
+                  ("port" .=) <$> _nePort,
+                  ("instance" .=) <$> _neInstance])
+
+--
+-- /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:/ 'networkEndpointGroupsListNetworkEndpoints' smart constructor.
+data NetworkEndpointGroupsListNetworkEndpoints =
+  NetworkEndpointGroupsListNetworkEndpoints'
+    { _neglneNextPageToken :: !(Maybe Text)
+    , _neglneKind          :: !Text
+    , _neglneItems         :: !(Maybe [NetworkEndpointWithHealthStatus])
+    , _neglneWarning       :: !(Maybe NetworkEndpointGroupsListNetworkEndpointsWarning)
+    , _neglneId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsListNetworkEndpoints' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglneNextPageToken'
+--
+-- * 'neglneKind'
+--
+-- * 'neglneItems'
+--
+-- * 'neglneWarning'
+--
+-- * 'neglneId'
+networkEndpointGroupsListNetworkEndpoints
+    :: NetworkEndpointGroupsListNetworkEndpoints
+networkEndpointGroupsListNetworkEndpoints =
+  NetworkEndpointGroupsListNetworkEndpoints'
+    { _neglneNextPageToken = Nothing
+    , _neglneKind = "compute#networkEndpointGroupsListNetworkEndpoints"
+    , _neglneItems = Nothing
+    , _neglneWarning = Nothing
+    , _neglneId = 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.
+neglneNextPageToken :: Lens' NetworkEndpointGroupsListNetworkEndpoints (Maybe Text)
+neglneNextPageToken
+  = lens _neglneNextPageToken
+      (\ s a -> s{_neglneNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#networkEndpointGroupsListNetworkEndpoints for the list of
+-- network endpoints in the specified network endpoint group.
+neglneKind :: Lens' NetworkEndpointGroupsListNetworkEndpoints Text
+neglneKind
+  = lens _neglneKind (\ s a -> s{_neglneKind = a})
+
+-- | A list of NetworkEndpointWithHealthStatus resources.
+neglneItems :: Lens' NetworkEndpointGroupsListNetworkEndpoints [NetworkEndpointWithHealthStatus]
+neglneItems
+  = lens _neglneItems (\ s a -> s{_neglneItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning message.
+neglneWarning :: Lens' NetworkEndpointGroupsListNetworkEndpoints (Maybe NetworkEndpointGroupsListNetworkEndpointsWarning)
+neglneWarning
+  = lens _neglneWarning
+      (\ s a -> s{_neglneWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+neglneId :: Lens' NetworkEndpointGroupsListNetworkEndpoints (Maybe Text)
+neglneId = lens _neglneId (\ s a -> s{_neglneId = a})
+
+instance FromJSON
+           NetworkEndpointGroupsListNetworkEndpoints
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsListNetworkEndpoints"
+              (\ o ->
+                 NetworkEndpointGroupsListNetworkEndpoints' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#networkEndpointGroupsListNetworkEndpoints")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON
+           NetworkEndpointGroupsListNetworkEndpoints
+         where
+        toJSON NetworkEndpointGroupsListNetworkEndpoints'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _neglneNextPageToken,
+                  Just ("kind" .= _neglneKind),
+                  ("items" .=) <$> _neglneItems,
+                  ("warning" .=) <$> _neglneWarning,
+                  ("id" .=) <$> _neglneId])
+
+--
+-- /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'
+    { _igmStatus              :: !(Maybe InstanceGroupManagerStatus)
+    , _igmKind                :: !Text
+    , _igmFingerprint         :: !(Maybe Bytes)
+    , _igmBaseInstanceName    :: !(Maybe Text)
+    , _igmZone                :: !(Maybe Text)
+    , _igmAutoHealingPolicies :: !(Maybe [InstanceGroupManagerAutoHealingPolicy])
+    , _igmVersions            :: !(Maybe [InstanceGroupManagerVersion])
+    , _igmInstanceTemplate    :: !(Maybe Text)
+    , _igmUpdatePolicy        :: !(Maybe InstanceGroupManagerUpdatePolicy)
+    , _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:
+--
+-- * 'igmStatus'
+--
+-- * 'igmKind'
+--
+-- * 'igmFingerprint'
+--
+-- * 'igmBaseInstanceName'
+--
+-- * 'igmZone'
+--
+-- * 'igmAutoHealingPolicies'
+--
+-- * 'igmVersions'
+--
+-- * 'igmInstanceTemplate'
+--
+-- * 'igmUpdatePolicy'
+--
+-- * 'igmTargetSize'
+--
+-- * 'igmSelfLink'
+--
+-- * 'igmCurrentActions'
+--
+-- * 'igmName'
+--
+-- * 'igmCreationTimestamp'
+--
+-- * 'igmDistributionPolicy'
+--
+-- * 'igmId'
+--
+-- * 'igmRegion'
+--
+-- * 'igmTargetPools'
+--
+-- * 'igmDescription'
+--
+-- * 'igmInstanceGroup'
+--
+-- * 'igmNamedPorts'
+instanceGroupManager
+    :: InstanceGroupManager
+instanceGroupManager =
+  InstanceGroupManager'
+    { _igmStatus = Nothing
+    , _igmKind = "compute#instanceGroupManager"
+    , _igmFingerprint = Nothing
+    , _igmBaseInstanceName = Nothing
+    , _igmZone = Nothing
+    , _igmAutoHealingPolicies = Nothing
+    , _igmVersions = Nothing
+    , _igmInstanceTemplate = Nothing
+    , _igmUpdatePolicy = 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 status of this managed instance group.
+igmStatus :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerStatus)
+igmStatus
+  = lens _igmStatus (\ s a -> s{_igmStatus = a})
+
+-- | [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 autohealing policy for this managed instance group. You can specify
+-- only one value.
+igmAutoHealingPolicies :: Lens' InstanceGroupManager [InstanceGroupManagerAutoHealingPolicy]
+igmAutoHealingPolicies
+  = lens _igmAutoHealingPolicies
+      (\ s a -> s{_igmAutoHealingPolicies = a})
+      . _Default
+      . _Coerce
+
+-- | Specifies the instance templates used by this managed instance group to
+-- create instances. Each version is defined by an instanceTemplate and a
+-- name. Every version can appear at most once per instance group. This
+-- field overrides the top-level instanceTemplate field. Read more about
+-- the relationships between these fields. Exactly one version must leave
+-- the targetSize field unset. That version will be applied to all
+-- remaining instances. For more information, read about canary updates.
+igmVersions :: Lens' InstanceGroupManager [InstanceGroupManagerVersion]
+igmVersions
+  = lens _igmVersions (\ s a -> s{_igmVersions = a}) .
+      _Default
+      . _Coerce
+
+-- | 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 update policy for this managed instance group.
+igmUpdatePolicy :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerUpdatePolicy)
+igmUpdatePolicy
+  = lens _igmUpdatePolicy
+      (\ s a -> s{_igmUpdatePolicy = 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 .:? "status") <*>
+                     (o .:? "kind" .!= "compute#instanceGroupManager")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "baseInstanceName")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "autoHealingPolicies" .!= mempty)
+                     <*> (o .:? "versions" .!= mempty)
+                     <*> (o .:? "instanceTemplate")
+                     <*> (o .:? "updatePolicy")
+                     <*> (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
+                 [("status" .=) <$> _igmStatus,
+                  Just ("kind" .= _igmKind),
+                  ("fingerprint" .=) <$> _igmFingerprint,
+                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,
+                  ("zone" .=) <$> _igmZone,
+                  ("autoHealingPolicies" .=) <$>
+                    _igmAutoHealingPolicies,
+                  ("versions" .=) <$> _igmVersions,
+                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,
+                  ("updatePolicy" .=) <$> _igmUpdatePolicy,
+                  ("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)
+    , _thcPortSpecification :: !(Maybe TCPHealthCheckPortSpecification)
+    , _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'
+--
+-- * 'thcPortSpecification'
+--
+-- * 'thcProxyHeader'
+--
+-- * 'thcPortName'
+--
+-- * 'thcPort'
+--
+-- * 'thcRequest'
+tcpHealthCheck
+    :: TCPHealthCheck
+tcpHealthCheck =
+  TCPHealthCheck'
+    { _thcResponse = Nothing
+    , _thcPortSpecification = 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 how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, TCP health check follows
+-- behavior specified in port and portName fields.
+thcPortSpecification :: Lens' TCPHealthCheck (Maybe TCPHealthCheckPortSpecification)
+thcPortSpecification
+  = lens _thcPortSpecification
+      (\ s a -> s{_thcPortSpecification = 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 .:? "portSpecification")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port")
+                     <*> (o .:? "request"))
+
+instance ToJSON TCPHealthCheck where
+        toJSON TCPHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _thcResponse,
+                  ("portSpecification" .=) <$> _thcPortSpecification,
+                  ("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])
+
+-- | Encapsulates numeric value that can be either absolute or relative.
+--
+-- /See:/ 'fixedOrPercent' smart constructor.
+data FixedOrPercent =
+  FixedOrPercent'
+    { _fopCalculated :: !(Maybe (Textual Int32))
+    , _fopPercent    :: !(Maybe (Textual Int32))
+    , _fopFixed      :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FixedOrPercent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fopCalculated'
+--
+-- * 'fopPercent'
+--
+-- * 'fopFixed'
+fixedOrPercent
+    :: FixedOrPercent
+fixedOrPercent =
+  FixedOrPercent'
+    {_fopCalculated = Nothing, _fopPercent = Nothing, _fopFixed = Nothing}
+
+
+-- | [Output Only] Absolute value of VM instances calculated based on the
+-- specific mode. - If the value is fixed, then the calculated value is
+-- equal to the fixed value. - If the value is a percent, then the
+-- calculated value is percent\/100 * targetSize. For example, the
+-- calculated value of a 80% of a managed instance group with 150 instances
+-- would be (80\/100 * 150) = 120 VM instances. If there is a remainder,
+-- the number is rounded up.
+fopCalculated :: Lens' FixedOrPercent (Maybe Int32)
+fopCalculated
+  = lens _fopCalculated
+      (\ s a -> s{_fopCalculated = a})
+      . mapping _Coerce
+
+-- | Specifies a percentage of instances between 0 to 100%, inclusive. For
+-- example, specify 80 for 80%.
+fopPercent :: Lens' FixedOrPercent (Maybe Int32)
+fopPercent
+  = lens _fopPercent (\ s a -> s{_fopPercent = a}) .
+      mapping _Coerce
+
+-- | Specifies a fixed number of VM instances. This must be a positive
+-- integer.
+fopFixed :: Lens' FixedOrPercent (Maybe Int32)
+fopFixed
+  = lens _fopFixed (\ s a -> s{_fopFixed = a}) .
+      mapping _Coerce
+
+instance FromJSON FixedOrPercent where
+        parseJSON
+          = withObject "FixedOrPercent"
+              (\ o ->
+                 FixedOrPercent' <$>
+                   (o .:? "calculated") <*> (o .:? "percent") <*>
+                     (o .:? "fixed"))
+
+instance ToJSON FixedOrPercent where
+        toJSON FixedOrPercent'{..}
+          = object
+              (catMaybes
+                 [("calculated" .=) <$> _fopCalculated,
+                  ("percent" .=) <$> _fopPercent,
+                  ("fixed" .=) <$> _fopFixed])
+
+-- | 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])
+
+-- | The policy describes the baseline against which Instance boot integrity
+-- is measured.
+--
+-- /See:/ 'shieldedInstanceIntegrityPolicy' smart constructor.
+newtype ShieldedInstanceIntegrityPolicy =
+  ShieldedInstanceIntegrityPolicy'
+    { _siipUpdateAutoLearnPolicy :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ShieldedInstanceIntegrityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siipUpdateAutoLearnPolicy'
+shieldedInstanceIntegrityPolicy
+    :: ShieldedInstanceIntegrityPolicy
+shieldedInstanceIntegrityPolicy =
+  ShieldedInstanceIntegrityPolicy' {_siipUpdateAutoLearnPolicy = Nothing}
+
+
+-- | Updates the integrity policy baseline using the measurements from the VM
+-- instance\'s most recent boot.
+siipUpdateAutoLearnPolicy :: Lens' ShieldedInstanceIntegrityPolicy (Maybe Bool)
+siipUpdateAutoLearnPolicy
+  = lens _siipUpdateAutoLearnPolicy
+      (\ s a -> s{_siipUpdateAutoLearnPolicy = a})
+
+instance FromJSON ShieldedInstanceIntegrityPolicy
+         where
+        parseJSON
+          = withObject "ShieldedInstanceIntegrityPolicy"
+              (\ o ->
+                 ShieldedInstanceIntegrityPolicy' <$>
+                   (o .:? "updateAutoLearnPolicy"))
+
+instance ToJSON ShieldedInstanceIntegrityPolicy where
+        toJSON ShieldedInstanceIntegrityPolicy'{..}
+          = object
+              (catMaybes
+                 [("updateAutoLearnPolicy" .=) <$>
+                    _siipUpdateAutoLearnPolicy])
+
+-- | 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. Next tag: 9
+--
+-- /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)
+    , _ipShieldedInstanceConfig :: !(Maybe ShieldedInstanceConfig)
+    , _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'
+--
+-- * 'ipShieldedInstanceConfig'
+--
+-- * 'ipLabels'
+--
+-- * 'ipScheduling'
+--
+-- * 'ipMinCPUPlatform'
+--
+-- * 'ipDisks'
+--
+-- * 'ipCanIPForward'
+--
+-- * 'ipDescription'
+--
+-- * 'ipTags'
+instanceProperties
+    :: InstanceProperties
+instanceProperties =
+  InstanceProperties'
+    { _ipServiceAccounts = Nothing
+    , _ipNetworkInterfaces = Nothing
+    , _ipGuestAccelerators = Nothing
+    , _ipMachineType = Nothing
+    , _ipMetadata = Nothing
+    , _ipShieldedInstanceConfig = 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})
+
+ipShieldedInstanceConfig :: Lens' InstanceProperties (Maybe ShieldedInstanceConfig)
+ipShieldedInstanceConfig
+  = lens _ipShieldedInstanceConfig
+      (\ s a -> s{_ipShieldedInstanceConfig = 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 .:? "shieldedInstanceConfig")
+                     <*> (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,
+                  ("shieldedInstanceConfig" .=) <$>
+                    _ipShieldedInstanceConfig,
+                  ("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:/ 'hTTP2HealthCheck' smart constructor.
+data HTTP2HealthCheck =
+  HTTP2HealthCheck'
+    { _httphcResponse          :: !(Maybe Text)
+    , _httphcPortSpecification :: !(Maybe HTTP2HealthCheckPortSpecification)
+    , _httphcRequestPath       :: !(Maybe Text)
+    , _httphcHost              :: !(Maybe Text)
+    , _httphcProxyHeader       :: !(Maybe HTTP2HealthCheckProxyHeader)
+    , _httphcPortName          :: !(Maybe Text)
+    , _httphcPort              :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HTTP2HealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcResponse'
+--
+-- * 'httphcPortSpecification'
+--
+-- * 'httphcRequestPath'
+--
+-- * 'httphcHost'
+--
+-- * 'httphcProxyHeader'
+--
+-- * 'httphcPortName'
+--
+-- * 'httphcPort'
+hTTP2HealthCheck
+    :: HTTP2HealthCheck
+hTTP2HealthCheck =
+  HTTP2HealthCheck'
+    { _httphcResponse = Nothing
+    , _httphcPortSpecification = 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' HTTP2HealthCheck (Maybe Text)
+httphcResponse
+  = lens _httphcResponse
+      (\ s a -> s{_httphcResponse = a})
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTP2 health check follows
+-- behavior specified in port and portName fields.
+httphcPortSpecification :: Lens' HTTP2HealthCheck (Maybe HTTP2HealthCheckPortSpecification)
+httphcPortSpecification
+  = lens _httphcPortSpecification
+      (\ s a -> s{_httphcPortSpecification = a})
+
+-- | The request path of the HTTP\/2 health check request. The default value
+-- is \/.
+httphcRequestPath :: Lens' HTTP2HealthCheck (Maybe Text)
+httphcRequestPath
+  = lens _httphcRequestPath
+      (\ s a -> s{_httphcRequestPath = a})
+
+-- | The value of the host header in the HTTP\/2 health check request. If
+-- left empty (default value), the IP on behalf of which this health check
+-- is performed will be used.
+httphcHost :: Lens' HTTP2HealthCheck (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' HTTP2HealthCheck (Maybe HTTP2HealthCheckProxyHeader)
+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' HTTP2HealthCheck (Maybe Text)
+httphcPortName
+  = lens _httphcPortName
+      (\ s a -> s{_httphcPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 443. Valid values are 1 through 65535.
+httphcPort :: Lens' HTTP2HealthCheck (Maybe Int32)
+httphcPort
+  = lens _httphcPort (\ s a -> s{_httphcPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTP2HealthCheck where
+        parseJSON
+          = withObject "HTTP2HealthCheck"
+              (\ o ->
+                 HTTP2HealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "portSpecification")
+                     <*> (o .:? "requestPath")
+                     <*> (o .:? "host")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTP2HealthCheck where
+        toJSON HTTP2HealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _httphcResponse,
+                  ("portSpecification" .=) <$>
+                    _httphcPortSpecification,
+                  ("requestPath" .=) <$> _httphcRequestPath,
+                  ("host" .=) <$> _httphcHost,
+                  ("proxyHeader" .=) <$> _httphcProxyHeader,
+                  ("portName" .=) <$> _httphcPortName,
+                  ("port" .=) <$> _httphcPort])
+
+--
+-- /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:/ 'networkEndpointGroupsAttachEndpointsRequest' smart constructor.
+newtype NetworkEndpointGroupsAttachEndpointsRequest =
+  NetworkEndpointGroupsAttachEndpointsRequest'
+    { _negaerNetworkEndpoints :: Maybe [NetworkEndpoint]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsAttachEndpointsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negaerNetworkEndpoints'
+networkEndpointGroupsAttachEndpointsRequest
+    :: NetworkEndpointGroupsAttachEndpointsRequest
+networkEndpointGroupsAttachEndpointsRequest =
+  NetworkEndpointGroupsAttachEndpointsRequest'
+    {_negaerNetworkEndpoints = Nothing}
+
+
+-- | The list of network endpoints to be attached.
+negaerNetworkEndpoints :: Lens' NetworkEndpointGroupsAttachEndpointsRequest [NetworkEndpoint]
+negaerNetworkEndpoints
+  = lens _negaerNetworkEndpoints
+      (\ s a -> s{_negaerNetworkEndpoints = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           NetworkEndpointGroupsAttachEndpointsRequest
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsAttachEndpointsRequest"
+              (\ o ->
+                 NetworkEndpointGroupsAttachEndpointsRequest' <$>
+                   (o .:? "networkEndpoints" .!= mempty))
+
+instance ToJSON
+           NetworkEndpointGroupsAttachEndpointsRequest
+         where
+        toJSON
+          NetworkEndpointGroupsAttachEndpointsRequest'{..}
+          = object
+              (catMaybes
+                 [("networkEndpoints" .=) <$>
+                    _negaerNetworkEndpoints])
+
+--
+-- /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
+
+-- | Deprecated in favor of subnet mode networks. 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:/ 'forwardingRuleReference' smart constructor.
+newtype ForwardingRuleReference =
+  ForwardingRuleReference'
+    { _frrForwardingRule :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ForwardingRuleReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frrForwardingRule'
+forwardingRuleReference
+    :: ForwardingRuleReference
+forwardingRuleReference =
+  ForwardingRuleReference' {_frrForwardingRule = Nothing}
+
+
+frrForwardingRule :: Lens' ForwardingRuleReference (Maybe Text)
+frrForwardingRule
+  = lens _frrForwardingRule
+      (\ s a -> s{_frrForwardingRule = a})
+
+instance FromJSON ForwardingRuleReference where
+        parseJSON
+          = withObject "ForwardingRuleReference"
+              (\ o ->
+                 ForwardingRuleReference' <$>
+                   (o .:? "forwardingRule"))
+
+instance ToJSON ForwardingRuleReference where
+        toJSON ForwardingRuleReference'{..}
+          = object
+              (catMaybes
+                 [("forwardingRule" .=) <$> _frrForwardingRule])
+
+--
+-- /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)
+    , _shcPortSpecification :: !(Maybe SSLHealthCheckPortSpecification)
+    , _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'
+--
+-- * 'shcPortSpecification'
+--
+-- * 'shcProxyHeader'
+--
+-- * 'shcPortName'
+--
+-- * 'shcPort'
+--
+-- * 'shcRequest'
+sslHealthCheck
+    :: SSLHealthCheck
+sslHealthCheck =
+  SSLHealthCheck'
+    { _shcResponse = Nothing
+    , _shcPortSpecification = 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 how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, SSL health check follows
+-- behavior specified in port and portName fields.
+shcPortSpecification :: Lens' SSLHealthCheck (Maybe SSLHealthCheckPortSpecification)
+shcPortSpecification
+  = lens _shcPortSpecification
+      (\ s a -> s{_shcPortSpecification = 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 .:? "portSpecification")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port")
+                     <*> (o .:? "request"))
+
+instance ToJSON SSLHealthCheck where
+        toJSON SSLHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _shcResponse,
+                  ("portSpecification" .=) <$> _shcPortSpecification,
+                  ("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 ==) Next ID: 17
+--
+-- /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])
+
+--
+-- /See:/ 'healthStatusForNetworkEndpoint' smart constructor.
+data HealthStatusForNetworkEndpoint =
+  HealthStatusForNetworkEndpoint'
+    { _hsfneHealthCheck    :: !(Maybe HealthCheckReference)
+    , _hsfneForwardingRule :: !(Maybe ForwardingRuleReference)
+    , _hsfneHealthState    :: !(Maybe HealthStatusForNetworkEndpointHealthState)
+    , _hsfneBackendService :: !(Maybe BackendServiceReference)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HealthStatusForNetworkEndpoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hsfneHealthCheck'
+--
+-- * 'hsfneForwardingRule'
+--
+-- * 'hsfneHealthState'
+--
+-- * 'hsfneBackendService'
+healthStatusForNetworkEndpoint
+    :: HealthStatusForNetworkEndpoint
+healthStatusForNetworkEndpoint =
+  HealthStatusForNetworkEndpoint'
+    { _hsfneHealthCheck = Nothing
+    , _hsfneForwardingRule = Nothing
+    , _hsfneHealthState = Nothing
+    , _hsfneBackendService = Nothing
+    }
+
+
+-- | URL of the health check associated with the health state of the network
+-- endpoint.
+hsfneHealthCheck :: Lens' HealthStatusForNetworkEndpoint (Maybe HealthCheckReference)
+hsfneHealthCheck
+  = lens _hsfneHealthCheck
+      (\ s a -> s{_hsfneHealthCheck = a})
+
+-- | URL of the forwarding rule associated with the health state of the
+-- network endpoint.
+hsfneForwardingRule :: Lens' HealthStatusForNetworkEndpoint (Maybe ForwardingRuleReference)
+hsfneForwardingRule
+  = lens _hsfneForwardingRule
+      (\ s a -> s{_hsfneForwardingRule = a})
+
+-- | Health state of the network endpoint determined based on the health
+-- checks configured.
+hsfneHealthState :: Lens' HealthStatusForNetworkEndpoint (Maybe HealthStatusForNetworkEndpointHealthState)
+hsfneHealthState
+  = lens _hsfneHealthState
+      (\ s a -> s{_hsfneHealthState = a})
+
+-- | URL of the backend service associated with the health state of the
+-- network endpoint.
+hsfneBackendService :: Lens' HealthStatusForNetworkEndpoint (Maybe BackendServiceReference)
+hsfneBackendService
+  = lens _hsfneBackendService
+      (\ s a -> s{_hsfneBackendService = a})
+
+instance FromJSON HealthStatusForNetworkEndpoint
+         where
+        parseJSON
+          = withObject "HealthStatusForNetworkEndpoint"
+              (\ o ->
+                 HealthStatusForNetworkEndpoint' <$>
+                   (o .:? "healthCheck") <*> (o .:? "forwardingRule")
+                     <*> (o .:? "healthState")
+                     <*> (o .:? "backendService"))
+
+instance ToJSON HealthStatusForNetworkEndpoint where
+        toJSON HealthStatusForNetworkEndpoint'{..}
+          = object
+              (catMaybes
+                 [("healthCheck" .=) <$> _hsfneHealthCheck,
+                  ("forwardingRule" .=) <$> _hsfneForwardingRule,
+                  ("healthState" .=) <$> _hsfneHealthState,
+                  ("backendService" .=) <$> _hsfneBackendService])
+
+-- | [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])
+
+--
+-- /See:/ 'instanceGroupManagerStatus' smart constructor.
+newtype InstanceGroupManagerStatus =
+  InstanceGroupManagerStatus'
+    { _igmsIsStable :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceGroupManagerStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmsIsStable'
+instanceGroupManagerStatus
+    :: InstanceGroupManagerStatus
+instanceGroupManagerStatus =
+  InstanceGroupManagerStatus' {_igmsIsStable = Nothing}
+
+
+-- | [Output Only] A bit indicating whether the managed instance group is in
+-- a stable state. A stable state means that: none of the instances in the
+-- managed instance group is currently undergoing any type of change (for
+-- example, creation, restart, or deletion); no future changes are
+-- scheduled for instances in the managed instance group; and the managed
+-- instance group itself is not being modified.
+igmsIsStable :: Lens' InstanceGroupManagerStatus (Maybe Bool)
+igmsIsStable
+  = lens _igmsIsStable (\ s a -> s{_igmsIsStable = a})
+
+instance FromJSON InstanceGroupManagerStatus where
+        parseJSON
+          = withObject "InstanceGroupManagerStatus"
+              (\ o ->
+                 InstanceGroupManagerStatus' <$> (o .:? "isStable"))
+
+instance ToJSON InstanceGroupManagerStatus where
+        toJSON InstanceGroupManagerStatus'{..}
+          = object
+              (catMaybes [("isStable" .=) <$> _igmsIsStable])
+
+-- | [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, which can be one of the
+-- following: CREATING, READY, FAILED, or DELETING.
+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 the compute.vpntunnels.insert method and associated with 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 with 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)
+    , _miVersion        :: !(Maybe ManagedInstanceVersion)
+    , _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'
+--
+-- * 'miVersion'
+--
+-- * 'miId'
+--
+-- * 'miInstanceStatus'
+--
+-- * 'miInstance'
+managedInstance
+    :: ManagedInstance
+managedInstance =
+  ManagedInstance'
+    { _miLastAttempt = Nothing
+    , _miCurrentAction = Nothing
+    , _miVersion = 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] Intended version of this instance.
+miVersion :: Lens' ManagedInstance (Maybe ManagedInstanceVersion)
+miVersion
+  = lens _miVersion (\ s a -> s{_miVersion = 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 .:? "version")
+                     <*> (o .:? "id")
+                     <*> (o .:? "instanceStatus")
+                     <*> (o .:? "instance"))
+
+instance ToJSON ManagedInstance where
+        toJSON ManagedInstance'{..}
+          = object
+              (catMaybes
+                 [("lastAttempt" .=) <$> _miLastAttempt,
+                  ("currentAction" .=) <$> _miCurrentAction,
+                  ("version" .=) <$> _miVersion, ("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))
+    , _bMaxRatePerEndpoint        :: !(Maybe (Textual Double))
+    , _bMaxConnectionsPerEndpoint :: !(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'
+--
+-- * 'bMaxRatePerEndpoint'
+--
+-- * 'bMaxConnectionsPerEndpoint'
+--
+-- * 'bMaxRatePerInstance'
+--
+-- * 'bDescription'
+--
+-- * 'bCapacityScaler'
+backend
+    :: Backend
+backend =
+  Backend'
+    { _bGroup = Nothing
+    , _bBalancingMode = Nothing
+    , _bMaxUtilization = Nothing
+    , _bMaxRate = Nothing
+    , _bMaxConnections = Nothing
+    , _bMaxConnectionsPerInstance = Nothing
+    , _bMaxRatePerEndpoint = Nothing
+    , _bMaxConnectionsPerEndpoint = 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 network endpoint
+-- 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
+-- maxRatePerEndpoint must be set. This cannot be used for internal load
+-- balancing.
+bMaxRatePerEndpoint :: Lens' Backend (Maybe Double)
+bMaxRatePerEndpoint
+  = lens _bMaxRatePerEndpoint
+      (\ s a -> s{_bMaxRatePerEndpoint = a})
+      . mapping _Coerce
+
+-- | The max number of simultaneous connections that a single backend network
+-- endpoint 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 maxConnectionsPerEndpoint
+-- must be set. This cannot be used for internal load balancing.
+bMaxConnectionsPerEndpoint :: Lens' Backend (Maybe Int32)
+bMaxConnectionsPerEndpoint
+  = lens _bMaxConnectionsPerEndpoint
+      (\ s a -> s{_bMaxConnectionsPerEndpoint = 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 .:? "maxRatePerEndpoint")
+                     <*> (o .:? "maxConnectionsPerEndpoint")
+                     <*> (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,
+                  ("maxRatePerEndpoint" .=) <$> _bMaxRatePerEndpoint,
+                  ("maxConnectionsPerEndpoint" .=) <$>
+                    _bMaxConnectionsPerEndpoint,
+                  ("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)
+    , _netExchangeSubnetRoutes :: !(Maybe Bool)
+    , _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'
+--
+-- * 'netExchangeSubnetRoutes'
+--
+-- * 'netStateDetails'
+--
+-- * 'netNetwork'
+--
+-- * 'netName'
+--
+-- * 'netAutoCreateRoutes'
+networkPeering
+    :: NetworkPeering
+networkPeering =
+  NetworkPeering'
+    { _netState = Nothing
+    , _netExchangeSubnetRoutes = 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})
+
+-- | 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 peering state is
+-- ACTIVE. Otherwise, user needs to create routes manually to route packets
+-- to peer network.
+netExchangeSubnetRoutes :: Lens' NetworkPeering (Maybe Bool)
+netExchangeSubnetRoutes
+  = lens _netExchangeSubnetRoutes
+      (\ s a -> s{_netExchangeSubnetRoutes = 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})
+
+-- | This field will be deprecated soon. Prefer using exchange_subnet_routes
+-- instead. 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 .:? "exchangeSubnetRoutes")
+                     <*> (o .:? "stateDetails")
+                     <*> (o .:? "network")
+                     <*> (o .:? "name")
+                     <*> (o .:? "autoCreateRoutes"))
+
+instance ToJSON NetworkPeering where
+        toJSON NetworkPeering'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _netState,
+                  ("exchangeSubnetRoutes" .=) <$>
+                    _netExchangeSubnetRoutes,
+                  ("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:/ 'networkEndpointGroupListWarningDataItem' smart constructor.
+data NetworkEndpointGroupListWarningDataItem =
+  NetworkEndpointGroupListWarningDataItem'
+    { _neglwdiValue :: !(Maybe Text)
+    , _neglwdiKey   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglwdiValue'
+--
+-- * 'neglwdiKey'
+networkEndpointGroupListWarningDataItem
+    :: NetworkEndpointGroupListWarningDataItem
+networkEndpointGroupListWarningDataItem =
+  NetworkEndpointGroupListWarningDataItem'
+    {_neglwdiValue = Nothing, _neglwdiKey = Nothing}
+
+
+-- | [Output Only] A warning data value corresponding to the key.
+neglwdiValue :: Lens' NetworkEndpointGroupListWarningDataItem (Maybe Text)
+neglwdiValue
+  = lens _neglwdiValue (\ s a -> s{_neglwdiValue = 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).
+neglwdiKey :: Lens' NetworkEndpointGroupListWarningDataItem (Maybe Text)
+neglwdiKey
+  = lens _neglwdiKey (\ s a -> s{_neglwdiKey = a})
+
+instance FromJSON
+           NetworkEndpointGroupListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupListWarningDataItem"
+              (\ o ->
+                 NetworkEndpointGroupListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+           NetworkEndpointGroupListWarningDataItem
+         where
+        toJSON NetworkEndpointGroupListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _neglwdiValue,
+                  ("key" .=) <$> _neglwdiKey])
+
+--
+-- /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])
+
+-- | [Output Only] Informational warning message.
+--
+-- /See:/ 'networkEndpointGroupAggregatedListWarning' smart constructor.
+data NetworkEndpointGroupAggregatedListWarning =
+  NetworkEndpointGroupAggregatedListWarning'
+    { _negalwData    :: !(Maybe [NetworkEndpointGroupAggregatedListWarningDataItem])
+    , _negalwCode    :: !(Maybe NetworkEndpointGroupAggregatedListWarningCode)
+    , _negalwMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupAggregatedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negalwData'
+--
+-- * 'negalwCode'
+--
+-- * 'negalwMessage'
+networkEndpointGroupAggregatedListWarning
+    :: NetworkEndpointGroupAggregatedListWarning
+networkEndpointGroupAggregatedListWarning =
+  NetworkEndpointGroupAggregatedListWarning'
+    {_negalwData = Nothing, _negalwCode = Nothing, _negalwMessage = Nothing}
+
+
+-- | [Output Only] Metadata about this warning in key: value format. For
+-- example: \"data\": [ { \"key\": \"scope\", \"value\":
+-- \"zones\/us-east1-d\" }
+negalwData :: Lens' NetworkEndpointGroupAggregatedListWarning [NetworkEndpointGroupAggregatedListWarningDataItem]
+negalwData
+  = lens _negalwData (\ s a -> s{_negalwData = 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.
+negalwCode :: Lens' NetworkEndpointGroupAggregatedListWarning (Maybe NetworkEndpointGroupAggregatedListWarningCode)
+negalwCode
+  = lens _negalwCode (\ s a -> s{_negalwCode = a})
+
+-- | [Output Only] A human-readable description of the warning code.
+negalwMessage :: Lens' NetworkEndpointGroupAggregatedListWarning (Maybe Text)
+negalwMessage
+  = lens _negalwMessage
+      (\ s a -> s{_negalwMessage = a})
+
+instance FromJSON
+           NetworkEndpointGroupAggregatedListWarning
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupAggregatedListWarning"
+              (\ o ->
+                 NetworkEndpointGroupAggregatedListWarning' <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+           NetworkEndpointGroupAggregatedListWarning
+         where
+        toJSON NetworkEndpointGroupAggregatedListWarning'{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _negalwData,
+                  ("code" .=) <$> _negalwCode,
+                  ("message" .=) <$> _negalwMessage])
+
+--
+-- /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)
+    , _intStatus                     :: !(Maybe InterconnectLocationStatus)
+    , _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'
+--
+-- * 'intStatus'
+--
+-- * 'intRegionInfos'
+--
+-- * 'intKind'
+--
+-- * 'intAddress'
+--
+-- * 'intFacilityProvider'
+--
+-- * 'intSelfLink'
+--
+-- * 'intPeeringdbFacilityId'
+--
+-- * 'intName'
+--
+-- * 'intCity'
+--
+-- * 'intAvailabilityZone'
+--
+-- * 'intCreationTimestamp'
+--
+-- * 'intId'
+--
+-- * 'intContinent'
+--
+-- * 'intDescription'
+interconnectLocation
+    :: InterconnectLocation
+interconnectLocation =
+  InterconnectLocation'
+    { _intFacilityProviderFacilityId = Nothing
+    , _intStatus = 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] The status of this InterconnectLocation. If the status is
+-- AVAILABLE, new Interconnects may be provisioned in this
+-- InterconnectLocation. Otherwise, no new Interconnects may be
+-- provisioned.
+intStatus :: Lens' InterconnectLocation (Maybe InterconnectLocationStatus)
+intStatus
+  = lens _intStatus (\ s a -> s{_intStatus = 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 .:? "status")
+                     <*> (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,
+                  ("status" .=) <$> _intStatus,
+                  ("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-disk-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])
+
+--
+-- /See:/ 'networkEndpointWithHealthStatus' smart constructor.
+data NetworkEndpointWithHealthStatus =
+  NetworkEndpointWithHealthStatus'
+    { _newhsHealths         :: !(Maybe [HealthStatusForNetworkEndpoint])
+    , _newhsNetworkEndpoint :: !(Maybe NetworkEndpoint)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointWithHealthStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'newhsHealths'
+--
+-- * 'newhsNetworkEndpoint'
+networkEndpointWithHealthStatus
+    :: NetworkEndpointWithHealthStatus
+networkEndpointWithHealthStatus =
+  NetworkEndpointWithHealthStatus'
+    {_newhsHealths = Nothing, _newhsNetworkEndpoint = Nothing}
+
+
+-- | [Output only] The health status of network endpoint;
+newhsHealths :: Lens' NetworkEndpointWithHealthStatus [HealthStatusForNetworkEndpoint]
+newhsHealths
+  = lens _newhsHealths (\ s a -> s{_newhsHealths = a})
+      . _Default
+      . _Coerce
+
+-- | [Output only] The network endpoint;
+newhsNetworkEndpoint :: Lens' NetworkEndpointWithHealthStatus (Maybe NetworkEndpoint)
+newhsNetworkEndpoint
+  = lens _newhsNetworkEndpoint
+      (\ s a -> s{_newhsNetworkEndpoint = a})
+
+instance FromJSON NetworkEndpointWithHealthStatus
+         where
+        parseJSON
+          = withObject "NetworkEndpointWithHealthStatus"
+              (\ o ->
+                 NetworkEndpointWithHealthStatus' <$>
+                   (o .:? "healths" .!= mempty) <*>
+                     (o .:? "networkEndpoint"))
+
+instance ToJSON NetworkEndpointWithHealthStatus where
+        toJSON NetworkEndpointWithHealthStatus'{..}
+          = object
+              (catMaybes
+                 [("healths" .=) <$> _newhsHealths,
+                  ("networkEndpoint" .=) <$> _newhsNetworkEndpoint])
+
+-- | 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'
+    { _hResponse          :: !(Maybe Text)
+    , _hPortSpecification :: !(Maybe HTTPHealthCheckPortSpecification)
+    , _hRequestPath       :: !(Maybe Text)
+    , _hHost              :: !(Maybe Text)
+    , _hProxyHeader       :: !(Maybe HTTPHealthCheckProxyHeader)
+    , _hPortName          :: !(Maybe Text)
+    , _hPort              :: !(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:
+--
+-- * 'hResponse'
+--
+-- * 'hPortSpecification'
+--
+-- * 'hRequestPath'
+--
+-- * 'hHost'
+--
+-- * 'hProxyHeader'
+--
+-- * 'hPortName'
+--
+-- * 'hPort'
+hTTPHealthCheck
+    :: HTTPHealthCheck
+hTTPHealthCheck =
+  HTTPHealthCheck'
+    { _hResponse = Nothing
+    , _hPortSpecification = Nothing
+    , _hRequestPath = Nothing
+    , _hHost = Nothing
+    , _hProxyHeader = Nothing
+    , _hPortName = Nothing
+    , _hPort = 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.
+hResponse :: Lens' HTTPHealthCheck (Maybe Text)
+hResponse
+  = lens _hResponse (\ s a -> s{_hResponse = a})
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTP health check follows
+-- behavior specified in port and portName fields.
+hPortSpecification :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckPortSpecification)
+hPortSpecification
+  = lens _hPortSpecification
+      (\ s a -> s{_hPortSpecification = a})
+
+-- | The request path of the HTTP health check request. The default value is
+-- \/.
+hRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+hRequestPath
+  = lens _hRequestPath (\ s a -> s{_hRequestPath = 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.
+hHost :: Lens' HTTPHealthCheck (Maybe Text)
+hHost = lens _hHost (\ s a -> s{_hHost = a})
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+hProxyHeader :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckProxyHeader)
+hProxyHeader
+  = lens _hProxyHeader (\ s a -> s{_hProxyHeader = a})
+
+-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and
+-- port_name are defined, port takes precedence.
+hPortName :: Lens' HTTPHealthCheck (Maybe Text)
+hPortName
+  = lens _hPortName (\ s a -> s{_hPortName = a})
+
+-- | The TCP port number for the health check request. The default value is
+-- 80. Valid values are 1 through 65535.
+hPort :: Lens' HTTPHealthCheck (Maybe Int32)
+hPort
+  = lens _hPort (\ s a -> s{_hPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTPHealthCheck where
+        parseJSON
+          = withObject "HTTPHealthCheck"
+              (\ o ->
+                 HTTPHealthCheck' <$>
+                   (o .:? "response") <*> (o .:? "portSpecification")
+                     <*> (o .:? "requestPath")
+                     <*> (o .:? "host")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPHealthCheck where
+        toJSON HTTPHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _hResponse,
+                  ("portSpecification" .=) <$> _hPortSpecification,
+                  ("requestPath" .=) <$> _hRequestPath,
+                  ("host" .=) <$> _hHost,
+                  ("proxyHeader" .=) <$> _hProxyHeader,
+                  ("portName" .=) <$> _hPortName,
+                  ("port" .=) <$> _hPort])
+
+--
+-- /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.
+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:/ 'networkEndpointGroupsScopedListWarningDataItem' smart constructor.
+data NetworkEndpointGroupsScopedListWarningDataItem =
+  NetworkEndpointGroupsScopedListWarningDataItem'
+    { _negslwdiValue :: !(Maybe Text)
+    , _negslwdiKey   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negslwdiValue'
+--
+-- * 'negslwdiKey'
+networkEndpointGroupsScopedListWarningDataItem
+    :: NetworkEndpointGroupsScopedListWarningDataItem
+networkEndpointGroupsScopedListWarningDataItem =
+  NetworkEndpointGroupsScopedListWarningDataItem'
+    {_negslwdiValue = Nothing, _negslwdiKey = Nothing}
+
+
+-- | [Output Only] A warning data value corresponding to the key.
+negslwdiValue :: Lens' NetworkEndpointGroupsScopedListWarningDataItem (Maybe Text)
+negslwdiValue
+  = lens _negslwdiValue
+      (\ s a -> s{_negslwdiValue = 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).
+negslwdiKey :: Lens' NetworkEndpointGroupsScopedListWarningDataItem (Maybe Text)
+negslwdiKey
+  = lens _negslwdiKey (\ s a -> s{_negslwdiKey = a})
+
+instance FromJSON
+           NetworkEndpointGroupsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsScopedListWarningDataItem"
+              (\ o ->
+                 NetworkEndpointGroupsScopedListWarningDataItem' <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+           NetworkEndpointGroupsScopedListWarningDataItem
+         where
+        toJSON
+          NetworkEndpointGroupsScopedListWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _negslwdiValue,
+                  ("key" .=) <$> _negslwdiKey])
+
+--
+-- /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])
+
+-- | Represents a collection of network endpoints.
+--
+-- /See:/ 'networkEndpointGroup' smart constructor.
+data NetworkEndpointGroup =
+  NetworkEndpointGroup'
+    { _negSize                :: !(Maybe (Textual Int32))
+    , _negKind                :: !Text
+    , _negNetwork             :: !(Maybe Text)
+    , _negZone                :: !(Maybe Text)
+    , _negSelfLink            :: !(Maybe Text)
+    , _negName                :: !(Maybe Text)
+    , _negCreationTimestamp   :: !(Maybe Text)
+    , _negDefaultPort         :: !(Maybe (Textual Int32))
+    , _negSubnetwork          :: !(Maybe Text)
+    , _negNetworkEndpointType :: !(Maybe NetworkEndpointGroupNetworkEndpointType)
+    , _negId                  :: !(Maybe (Textual Word64))
+    , _negDescription         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negSize'
+--
+-- * 'negKind'
+--
+-- * 'negNetwork'
+--
+-- * 'negZone'
+--
+-- * 'negSelfLink'
+--
+-- * 'negName'
+--
+-- * 'negCreationTimestamp'
+--
+-- * 'negDefaultPort'
+--
+-- * 'negSubnetwork'
+--
+-- * 'negNetworkEndpointType'
+--
+-- * 'negId'
+--
+-- * 'negDescription'
+networkEndpointGroup
+    :: NetworkEndpointGroup
+networkEndpointGroup =
+  NetworkEndpointGroup'
+    { _negSize = Nothing
+    , _negKind = "compute#networkEndpointGroup"
+    , _negNetwork = Nothing
+    , _negZone = Nothing
+    , _negSelfLink = Nothing
+    , _negName = Nothing
+    , _negCreationTimestamp = Nothing
+    , _negDefaultPort = Nothing
+    , _negSubnetwork = Nothing
+    , _negNetworkEndpointType = Nothing
+    , _negId = Nothing
+    , _negDescription = Nothing
+    }
+
+
+-- | [Output only] Number of network endpoints in the network endpoint group.
+negSize :: Lens' NetworkEndpointGroup (Maybe Int32)
+negSize
+  = lens _negSize (\ s a -> s{_negSize = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#networkEndpointGroup
+-- for network endpoint group.
+negKind :: Lens' NetworkEndpointGroup Text
+negKind = lens _negKind (\ s a -> s{_negKind = a})
+
+-- | The URL of the network to which all network endpoints in the NEG belong.
+-- Uses \"default\" project network if unspecified.
+negNetwork :: Lens' NetworkEndpointGroup (Maybe Text)
+negNetwork
+  = lens _negNetwork (\ s a -> s{_negNetwork = a})
+
+-- | [Output Only] The URL of the zone where the network endpoint group is
+-- located.
+negZone :: Lens' NetworkEndpointGroup (Maybe Text)
+negZone = lens _negZone (\ s a -> s{_negZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+negSelfLink :: Lens' NetworkEndpointGroup (Maybe Text)
+negSelfLink
+  = lens _negSelfLink (\ s a -> s{_negSelfLink = 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.
+negName :: Lens' NetworkEndpointGroup (Maybe Text)
+negName = lens _negName (\ s a -> s{_negName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+negCreationTimestamp :: Lens' NetworkEndpointGroup (Maybe Text)
+negCreationTimestamp
+  = lens _negCreationTimestamp
+      (\ s a -> s{_negCreationTimestamp = a})
+
+-- | The default port used if the port number is not specified in the network
+-- endpoint.
+negDefaultPort :: Lens' NetworkEndpointGroup (Maybe Int32)
+negDefaultPort
+  = lens _negDefaultPort
+      (\ s a -> s{_negDefaultPort = a})
+      . mapping _Coerce
+
+-- | Optional URL of the subnetwork to which all network endpoints in the NEG
+-- belong.
+negSubnetwork :: Lens' NetworkEndpointGroup (Maybe Text)
+negSubnetwork
+  = lens _negSubnetwork
+      (\ s a -> s{_negSubnetwork = a})
+
+-- | Type of network endpoints in this network endpoint group. Currently the
+-- only supported value is GCE_VM_IP_PORT.
+negNetworkEndpointType :: Lens' NetworkEndpointGroup (Maybe NetworkEndpointGroupNetworkEndpointType)
+negNetworkEndpointType
+  = lens _negNetworkEndpointType
+      (\ s a -> s{_negNetworkEndpointType = a})
+
+-- | [Output Only] The unique identifier for the resource. This identifier is
+-- defined by the server.
+negId :: Lens' NetworkEndpointGroup (Maybe Word64)
+negId
+  = lens _negId (\ s a -> s{_negId = a}) .
+      mapping _Coerce
+
+-- | An optional description of this resource. Provide this property when you
+-- create the resource.
+negDescription :: Lens' NetworkEndpointGroup (Maybe Text)
+negDescription
+  = lens _negDescription
+      (\ s a -> s{_negDescription = a})
+
+instance FromJSON NetworkEndpointGroup where
+        parseJSON
+          = withObject "NetworkEndpointGroup"
+              (\ o ->
+                 NetworkEndpointGroup' <$>
+                   (o .:? "size") <*>
+                     (o .:? "kind" .!= "compute#networkEndpointGroup")
+                     <*> (o .:? "network")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "defaultPort")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "networkEndpointType")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON NetworkEndpointGroup where
+        toJSON NetworkEndpointGroup'{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _negSize, Just ("kind" .= _negKind),
+                  ("network" .=) <$> _negNetwork,
+                  ("zone" .=) <$> _negZone,
+                  ("selfLink" .=) <$> _negSelfLink,
+                  ("name" .=) <$> _negName,
+                  ("creationTimestamp" .=) <$> _negCreationTimestamp,
+                  ("defaultPort" .=) <$> _negDefaultPort,
+                  ("subnetwork" .=) <$> _negSubnetwork,
+                  ("networkEndpointType" .=) <$>
+                    _negNetworkEndpointType,
+                  ("id" .=) <$> _negId,
+                  ("description" .=) <$> _negDescription])
+
+-- | 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])
+
+--
+-- /See:/ 'networkEndpointGroupsListNetworkEndpointsWarningDataItem' smart constructor.
+data NetworkEndpointGroupsListNetworkEndpointsWarningDataItem =
+  NetworkEndpointGroupsListNetworkEndpointsWarningDataItem'
+    { _neglnewdiValue :: !(Maybe Text)
+    , _neglnewdiKey   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsListNetworkEndpointsWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglnewdiValue'
+--
+-- * 'neglnewdiKey'
+networkEndpointGroupsListNetworkEndpointsWarningDataItem
+    :: NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+networkEndpointGroupsListNetworkEndpointsWarningDataItem =
+  NetworkEndpointGroupsListNetworkEndpointsWarningDataItem'
+    {_neglnewdiValue = Nothing, _neglnewdiKey = Nothing}
+
+
+-- | [Output Only] A warning data value corresponding to the key.
+neglnewdiValue :: Lens' NetworkEndpointGroupsListNetworkEndpointsWarningDataItem (Maybe Text)
+neglnewdiValue
+  = lens _neglnewdiValue
+      (\ s a -> s{_neglnewdiValue = 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).
+neglnewdiKey :: Lens' NetworkEndpointGroupsListNetworkEndpointsWarningDataItem (Maybe Text)
+neglnewdiKey
+  = lens _neglnewdiKey (\ s a -> s{_neglnewdiKey = a})
+
+instance FromJSON
+           NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupsListNetworkEndpointsWarningDataItem"
+              (\ o ->
+                 NetworkEndpointGroupsListNetworkEndpointsWarningDataItem'
+                   <$> (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+           NetworkEndpointGroupsListNetworkEndpointsWarningDataItem
+         where
+        toJSON
+          NetworkEndpointGroupsListNetworkEndpointsWarningDataItem'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _neglnewdiValue,
+                  ("key" .=) <$> _neglnewdiKey])
+
+-- | [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 set of Shielded Instance options.
+--
+-- /See:/ 'shieldedInstanceConfig' smart constructor.
+data ShieldedInstanceConfig =
+  ShieldedInstanceConfig'
+    { _sicEnableVtpm                :: !(Maybe Bool)
+    , _sicEnableIntegrityMonitoring :: !(Maybe Bool)
+    , _sicEnableSecureBoot          :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ShieldedInstanceConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sicEnableVtpm'
+--
+-- * 'sicEnableIntegrityMonitoring'
+--
+-- * 'sicEnableSecureBoot'
+shieldedInstanceConfig
+    :: ShieldedInstanceConfig
+shieldedInstanceConfig =
+  ShieldedInstanceConfig'
+    { _sicEnableVtpm = Nothing
+    , _sicEnableIntegrityMonitoring = Nothing
+    , _sicEnableSecureBoot = Nothing
+    }
+
+
+-- | Defines whether the instance has the vTPM enabled.
+sicEnableVtpm :: Lens' ShieldedInstanceConfig (Maybe Bool)
+sicEnableVtpm
+  = lens _sicEnableVtpm
+      (\ s a -> s{_sicEnableVtpm = a})
+
+-- | Defines whether the instance has integrity monitoring enabled.
+sicEnableIntegrityMonitoring :: Lens' ShieldedInstanceConfig (Maybe Bool)
+sicEnableIntegrityMonitoring
+  = lens _sicEnableIntegrityMonitoring
+      (\ s a -> s{_sicEnableIntegrityMonitoring = a})
+
+-- | Defines whether the instance has Secure Boot enabled.
+sicEnableSecureBoot :: Lens' ShieldedInstanceConfig (Maybe Bool)
+sicEnableSecureBoot
+  = lens _sicEnableSecureBoot
+      (\ s a -> s{_sicEnableSecureBoot = a})
+
+instance FromJSON ShieldedInstanceConfig where
+        parseJSON
+          = withObject "ShieldedInstanceConfig"
+              (\ o ->
+                 ShieldedInstanceConfig' <$>
+                   (o .:? "enableVtpm") <*>
+                     (o .:? "enableIntegrityMonitoring")
+                     <*> (o .:? "enableSecureBoot"))
+
+instance ToJSON ShieldedInstanceConfig where
+        toJSON ShieldedInstanceConfig'{..}
+          = object
+              (catMaybes
+                 [("enableVtpm" .=) <$> _sicEnableVtpm,
+                  ("enableIntegrityMonitoring" .=) <$>
+                    _sicEnableIntegrityMonitoring,
+                  ("enableSecureBoot" .=) <$> _sicEnableSecureBoot])
+
+-- | 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. For example:
+-- projects\/my-project\/zones\/us-central1-c\/acceleratorTypes\/nvidia-tesla-p100
+-- If you are creating an instance template, specify only the accelerator
+-- name. See GPUs on Compute Engine for a full list of accelerator types.
+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:/ 'networkEndpointGroupAggregatedList' smart constructor.
+data NetworkEndpointGroupAggregatedList =
+  NetworkEndpointGroupAggregatedList'
+    { _negalNextPageToken :: !(Maybe Text)
+    , _negalKind          :: !Text
+    , _negalItems         :: !(Maybe NetworkEndpointGroupAggregatedListItems)
+    , _negalSelfLink      :: !(Maybe Text)
+    , _negalWarning       :: !(Maybe NetworkEndpointGroupAggregatedListWarning)
+    , _negalId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negalNextPageToken'
+--
+-- * 'negalKind'
+--
+-- * 'negalItems'
+--
+-- * 'negalSelfLink'
+--
+-- * 'negalWarning'
+--
+-- * 'negalId'
+networkEndpointGroupAggregatedList
+    :: NetworkEndpointGroupAggregatedList
+networkEndpointGroupAggregatedList =
+  NetworkEndpointGroupAggregatedList'
+    { _negalNextPageToken = Nothing
+    , _negalKind = "compute#networkEndpointGroupAggregatedList"
+    , _negalItems = Nothing
+    , _negalSelfLink = Nothing
+    , _negalWarning = Nothing
+    , _negalId = 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.
+negalNextPageToken :: Lens' NetworkEndpointGroupAggregatedList (Maybe Text)
+negalNextPageToken
+  = lens _negalNextPageToken
+      (\ s a -> s{_negalNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#networkEndpointGroupAggregatedList for aggregated lists of
+-- network endpoint groups.
+negalKind :: Lens' NetworkEndpointGroupAggregatedList Text
+negalKind
+  = lens _negalKind (\ s a -> s{_negalKind = a})
+
+-- | A list of NetworkEndpointGroupsScopedList resources.
+negalItems :: Lens' NetworkEndpointGroupAggregatedList (Maybe NetworkEndpointGroupAggregatedListItems)
+negalItems
+  = lens _negalItems (\ s a -> s{_negalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+negalSelfLink :: Lens' NetworkEndpointGroupAggregatedList (Maybe Text)
+negalSelfLink
+  = lens _negalSelfLink
+      (\ s a -> s{_negalSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+negalWarning :: Lens' NetworkEndpointGroupAggregatedList (Maybe NetworkEndpointGroupAggregatedListWarning)
+negalWarning
+  = lens _negalWarning (\ s a -> s{_negalWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+negalId :: Lens' NetworkEndpointGroupAggregatedList (Maybe Text)
+negalId = lens _negalId (\ s a -> s{_negalId = a})
+
+instance FromJSON NetworkEndpointGroupAggregatedList
+         where
+        parseJSON
+          = withObject "NetworkEndpointGroupAggregatedList"
+              (\ o ->
+                 NetworkEndpointGroupAggregatedList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#networkEndpointGroupAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NetworkEndpointGroupAggregatedList
+         where
+        toJSON NetworkEndpointGroupAggregatedList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _negalNextPageToken,
+                  Just ("kind" .= _negalKind),
+                  ("items" .=) <$> _negalItems,
+                  ("selfLink" .=) <$> _negalSelfLink,
+                  ("warning" .=) <$> _negalWarning,
+                  ("id" .=) <$> _negalId])
+
+--
+-- /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}
+
+
+-- | The status of the current value when compared to the warning and alarm
+-- levels for the receiving or transmitting transceiver. Possible states
+-- include: - OK: The value has not crossed a warning threshold. -
+-- LOW_WARNING: The value has crossed below the low warning threshold. -
+-- HIGH_WARNING: The value has crossed above the high warning threshold. -
+-- LOW_ALARM: The value has crossed below the low alarm threshold. -
+-- HIGH_ALARM: The value has crossed above the high alarm threshold.
+idlopState :: Lens' InterconnectDiagnosticsLinkOpticalPower (Maybe InterconnectDiagnosticsLinkOpticalPowerState)
+idlopState
+  = lens _idlopState (\ s a -> s{_idlopState = a})
+
+-- | Value of the current receiving or transmitting 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])
+
+-- | A Shielded Instance Identity Entry.
+--
+-- /See:/ 'shieldedInstanceIdentityEntry' smart constructor.
+data ShieldedInstanceIdentityEntry =
+  ShieldedInstanceIdentityEntry'
+    { _siieEkCert :: !(Maybe Text)
+    , _siieEkPub  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ShieldedInstanceIdentityEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siieEkCert'
+--
+-- * 'siieEkPub'
+shieldedInstanceIdentityEntry
+    :: ShieldedInstanceIdentityEntry
+shieldedInstanceIdentityEntry =
+  ShieldedInstanceIdentityEntry' {_siieEkCert = Nothing, _siieEkPub = Nothing}
+
+
+-- | A PEM-encoded X.509 certificate. This field can be empty.
+siieEkCert :: Lens' ShieldedInstanceIdentityEntry (Maybe Text)
+siieEkCert
+  = lens _siieEkCert (\ s a -> s{_siieEkCert = a})
+
+-- | A PEM-encoded public key.
+siieEkPub :: Lens' ShieldedInstanceIdentityEntry (Maybe Text)
+siieEkPub
+  = lens _siieEkPub (\ s a -> s{_siieEkPub = a})
+
+instance FromJSON ShieldedInstanceIdentityEntry where
+        parseJSON
+          = withObject "ShieldedInstanceIdentityEntry"
+              (\ o ->
+                 ShieldedInstanceIdentityEntry' <$>
+                   (o .:? "ekCert") <*> (o .:? "ekPub"))
+
+instance ToJSON ShieldedInstanceIdentityEntry where
+        toJSON ShieldedInstanceIdentityEntry'{..}
+          = object
+              (catMaybes
+                 [("ekCert" .=) <$> _siieEkCert,
+                  ("ekPub" .=) <$> _siieEkPub])
+
+-- | [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, which can be one of the
+-- following: - PROVISIONING: Resource is being allocated for the VPN
+-- tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related
+-- configs from the user. Network, TargetVpnGateway, VpnTunnel,
+-- ForwardingRule, and Route resources are needed to setup the VPN tunnel.
+-- - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. -
+-- ESTABLISHED: Secure session is successfully established with the peer
+-- VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS -
+-- AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). -
+-- NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are
+-- being deallocated for the VPN tunnel. - FAILED: Tunnel creation has
+-- failed and the tunnel is not ready to be used.
+vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)
+vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a})
+
+-- | Local traffic selector to use when establishing the VPN tunnel with the
+-- peer VPN gateway. The value should be a CIDR formatted string, for
+-- example: 192.168.0.0\/16. The ranges must 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 the 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
+-- the 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 the
+-- peer VPN gateway. Acceptable IKE versions are 1 or 2. The 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. To learn more about node templates and
+-- sole-tenant nodes, read the Sole-tenant nodes documentation. (==
+-- resource_for beta.nodeTemplates ==) (== resource_for v1.nodeTemplates
+-- ==)
+--
+-- /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])
+
+--
+-- /See:/ 'networkEndpointGroupList' smart constructor.
+data NetworkEndpointGroupList =
+  NetworkEndpointGroupList'
+    { _neglNextPageToken :: !(Maybe Text)
+    , _neglKind          :: !Text
+    , _neglItems         :: !(Maybe [NetworkEndpointGroup])
+    , _neglSelfLink      :: !(Maybe Text)
+    , _neglWarning       :: !(Maybe NetworkEndpointGroupListWarning)
+    , _neglId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglNextPageToken'
+--
+-- * 'neglKind'
+--
+-- * 'neglItems'
+--
+-- * 'neglSelfLink'
+--
+-- * 'neglWarning'
+--
+-- * 'neglId'
+networkEndpointGroupList
+    :: NetworkEndpointGroupList
+networkEndpointGroupList =
+  NetworkEndpointGroupList'
+    { _neglNextPageToken = Nothing
+    , _neglKind = "compute#networkEndpointGroupList"
+    , _neglItems = Nothing
+    , _neglSelfLink = Nothing
+    , _neglWarning = Nothing
+    , _neglId = 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.
+neglNextPageToken :: Lens' NetworkEndpointGroupList (Maybe Text)
+neglNextPageToken
+  = lens _neglNextPageToken
+      (\ s a -> s{_neglNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#networkEndpointGroupList for network endpoint group lists.
+neglKind :: Lens' NetworkEndpointGroupList Text
+neglKind = lens _neglKind (\ s a -> s{_neglKind = a})
+
+-- | A list of NetworkEndpointGroup resources.
+neglItems :: Lens' NetworkEndpointGroupList [NetworkEndpointGroup]
+neglItems
+  = lens _neglItems (\ s a -> s{_neglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+neglSelfLink :: Lens' NetworkEndpointGroupList (Maybe Text)
+neglSelfLink
+  = lens _neglSelfLink (\ s a -> s{_neglSelfLink = a})
+
+-- | [Output Only] Informational warning message.
+neglWarning :: Lens' NetworkEndpointGroupList (Maybe NetworkEndpointGroupListWarning)
+neglWarning
+  = lens _neglWarning (\ s a -> s{_neglWarning = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+neglId :: Lens' NetworkEndpointGroupList (Maybe Text)
+neglId = lens _neglId (\ s a -> s{_neglId = a})
+
+instance FromJSON NetworkEndpointGroupList where
+        parseJSON
+          = withObject "NetworkEndpointGroupList"
+              (\ o ->
+                 NetworkEndpointGroupList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#networkEndpointGroupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "warning")
+                     <*> (o .:? "id"))
+
+instance ToJSON NetworkEndpointGroupList where
+        toJSON NetworkEndpointGroupList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _neglNextPageToken,
+                  Just ("kind" .= _neglKind),
+                  ("items" .=) <$> _neglItems,
+                  ("selfLink" .=) <$> _neglSelfLink,
+                  ("warning" .=) <$> _neglWarning,
+                  ("id" .=) <$> _neglId])
+
+-- | 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 full or partial URL of the backend service resource to which traffic
+-- is directed if this rule is matched. If routeAction is additionally
+-- specified, advanced routing actions like URL Rewrites, etc. take effect
+-- prior to sending the request to the backend. However, if service is
+-- specified, routeAction cannot contain any weightedBackendService s.
+-- Conversely, if routeAction specifies any weightedBackendServices,
+-- service must not be specified. Only one of urlRedirect, service or
+-- routeAction.weightedBackendService 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
+
+-- | A list of NetworkEndpointGroupsScopedList resources.
+--
+-- /See:/ 'networkEndpointGroupAggregatedListItems' smart constructor.
+newtype NetworkEndpointGroupAggregatedListItems =
+  NetworkEndpointGroupAggregatedListItems'
+    { _negaliAddtional :: HashMap Text NetworkEndpointGroupsScopedList
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negaliAddtional'
+networkEndpointGroupAggregatedListItems
+    :: HashMap Text NetworkEndpointGroupsScopedList -- ^ 'negaliAddtional'
+    -> NetworkEndpointGroupAggregatedListItems
+networkEndpointGroupAggregatedListItems pNegaliAddtional_ =
+  NetworkEndpointGroupAggregatedListItems'
+    {_negaliAddtional = _Coerce # pNegaliAddtional_}
+
+
+-- | The name of the scope that contains this set of network endpoint groups.
+negaliAddtional :: Lens' NetworkEndpointGroupAggregatedListItems (HashMap Text NetworkEndpointGroupsScopedList)
+negaliAddtional
+  = lens _negaliAddtional
+      (\ s a -> s{_negaliAddtional = a})
+      . _Coerce
+
+instance FromJSON
+           NetworkEndpointGroupAggregatedListItems
+         where
+        parseJSON
+          = withObject
+              "NetworkEndpointGroupAggregatedListItems"
+              (\ o ->
+                 NetworkEndpointGroupAggregatedListItems' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+           NetworkEndpointGroupAggregatedListItems
+         where
+        toJSON = toJSON . _negaliAddtional
+
+--
+-- /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])
+    , _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'
+--
+-- * 'cSys'
+--
+-- * 'cSvc'
+condition
+    :: Condition
+condition =
+  Condition'
+    { _cOp = Nothing
+    , _cIAM = Nothing
+    , _cValues = 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.
+cValues :: Lens' Condition [Text]
+cValues
+  = lens _cValues (\ s a -> s{_cValues = a}) . _Default
+      . _Coerce
+
+-- | 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 .:? "sys")
+                     <*> (o .:? "svc"))
+
+instance ToJSON Condition where
+        toJSON Condition'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _cOp, ("iam" .=) <$> _cIAM,
+                  ("values" .=) <$> _cValues, ("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'
+    { _qOwner  :: !(Maybe Text)
+    , _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:
+--
+-- * 'qOwner'
+--
+-- * 'qMetric'
+--
+-- * 'qLimit'
+--
+-- * 'qUsage'
+quota
+    :: Quota
+quota =
+  Quota'
+    { _qOwner = Nothing
+    , _qMetric = Nothing
+    , _qLimit = Nothing
+    , _qUsage = Nothing
+    }
+
+
+-- | [Output Only] Owning resource. This is the resource on which this quota
+-- is applied.
+qOwner :: Lens' Quota (Maybe Text)
+qOwner = lens _qOwner (\ s a -> s{_qOwner = a})
+
+-- | [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 .:? "owner") <*> (o .:? "metric") <*>
+                     (o .:? "limit")
+                     <*> (o .:? "usage"))
+
+instance ToJSON Quota where
+        toJSON Quota'{..}
+          = object
+              (catMaybes
+                 [("owner" .=) <$> _qOwner,
+                  ("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])
+
+--
+-- /See:/ 'managedInstanceVersion' smart constructor.
+data ManagedInstanceVersion =
+  ManagedInstanceVersion'
+    { _mivInstanceTemplate :: !(Maybe Text)
+    , _mivName             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedInstanceVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mivInstanceTemplate'
+--
+-- * 'mivName'
+managedInstanceVersion
+    :: ManagedInstanceVersion
+managedInstanceVersion =
+  ManagedInstanceVersion' {_mivInstanceTemplate = Nothing, _mivName = Nothing}
+
+
+-- | [Output Only] The intended template of the instance. This field is empty
+-- when current_action is one of { DELETING, ABANDONING }.
+mivInstanceTemplate :: Lens' ManagedInstanceVersion (Maybe Text)
+mivInstanceTemplate
+  = lens _mivInstanceTemplate
+      (\ s a -> s{_mivInstanceTemplate = a})
+
+-- | [Output Only] Name of the version.
+mivName :: Lens' ManagedInstanceVersion (Maybe Text)
+mivName = lens _mivName (\ s a -> s{_mivName = a})
+
+instance FromJSON ManagedInstanceVersion where
+        parseJSON
+          = withObject "ManagedInstanceVersion"
+              (\ o ->
+                 ManagedInstanceVersion' <$>
+                   (o .:? "instanceTemplate") <*> (o .:? "name"))
+
+instance ToJSON ManagedInstanceVersion where
+        toJSON ManagedInstanceVersion'{..}
+          = object
+              (catMaybes
+                 [("instanceTemplate" .=) <$> _mivInstanceTemplate,
+                  ("name" .=) <$> _mivName])
+
+-- | [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)
+    , _bsCustomRequestHeaders :: !(Maybe [Text])
+    , _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'
+--
+-- * 'bsCustomRequestHeaders'
+--
+-- * '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
+    , _bsCustomRequestHeaders = 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})
+
+-- | Headers that the HTTP\/S load balancer should add to proxied requests.
+bsCustomRequestHeaders :: Lens' BackendService [Text]
+bsCustomRequestHeaders
+  = lens _bsCustomRequestHeaders
+      (\ s a -> s{_bsCustomRequestHeaders = a})
+      . _Default
+      . _Coerce
+
+-- | [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 .:? "customRequestHeaders" .!= mempty)
+                     <*> (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,
+                  ("customRequestHeaders" .=) <$>
+                    _bsCustomRequestHeaders,
+                  ("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])
+
+-- | A shielded Instance identity entry.
+--
+-- /See:/ 'shieldedInstanceIdentity' smart constructor.
+data ShieldedInstanceIdentity =
+  ShieldedInstanceIdentity'
+    { _siiSigningKey    :: !(Maybe ShieldedInstanceIdentityEntry)
+    , _siiKind          :: !Text
+    , _siiEncryptionKey :: !(Maybe ShieldedInstanceIdentityEntry)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ShieldedInstanceIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siiSigningKey'
+--
+-- * 'siiKind'
+--
+-- * 'siiEncryptionKey'
+shieldedInstanceIdentity
+    :: ShieldedInstanceIdentity
+shieldedInstanceIdentity =
+  ShieldedInstanceIdentity'
+    { _siiSigningKey = Nothing
+    , _siiKind = "compute#shieldedInstanceIdentity"
+    , _siiEncryptionKey = Nothing
+    }
+
+
+-- | An Attestation Key (AK) issued to the Shielded Instance\'s vTPM.
+siiSigningKey :: Lens' ShieldedInstanceIdentity (Maybe ShieldedInstanceIdentityEntry)
+siiSigningKey
+  = lens _siiSigningKey
+      (\ s a -> s{_siiSigningKey = a})
+
+-- | [Output Only] Type of the resource. Always
+-- compute#shieldedInstanceIdentity for shielded Instance identity entry.
+siiKind :: Lens' ShieldedInstanceIdentity Text
+siiKind = lens _siiKind (\ s a -> s{_siiKind = a})
+
+-- | An Endorsement Key (EK) issued to the Shielded Instance\'s vTPM.
+siiEncryptionKey :: Lens' ShieldedInstanceIdentity (Maybe ShieldedInstanceIdentityEntry)
+siiEncryptionKey
+  = lens _siiEncryptionKey
+      (\ s a -> s{_siiEncryptionKey = a})
+
+instance FromJSON ShieldedInstanceIdentity where
+        parseJSON
+          = withObject "ShieldedInstanceIdentity"
+              (\ o ->
+                 ShieldedInstanceIdentity' <$>
+                   (o .:? "signingKey") <*>
+                     (o .:? "kind" .!= "compute#shieldedInstanceIdentity")
+                     <*> (o .:? "encryptionKey"))
+
+instance ToJSON ShieldedInstanceIdentity where
+        toJSON ShieldedInstanceIdentity'{..}
+          = object
+              (catMaybes
+                 [("signingKey" .=) <$> _siiSigningKey,
+                  Just ("kind" .= _siiKind),
+                  ("encryptionKey" .=) <$> _siiEncryptionKey])
+
+-- | 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)
+    , _hhcPortSpecification :: !(Maybe HTTPSHealthCheckPortSpecification)
+    , _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'
+--
+-- * 'hhcPortSpecification'
+--
+-- * 'hhcRequestPath'
+--
+-- * 'hhcHost'
+--
+-- * 'hhcProxyHeader'
+--
+-- * 'hhcPortName'
+--
+-- * 'hhcPort'
+httpsHealthCheck
+    :: HTTPSHealthCheck
+httpsHealthCheck =
+  HTTPSHealthCheck'
+    { _hhcResponse = Nothing
+    , _hhcPortSpecification = 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})
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTPS health check follows
+-- behavior specified in port and portName fields.
+hhcPortSpecification :: Lens' HTTPSHealthCheck (Maybe HTTPSHealthCheckPortSpecification)
+hhcPortSpecification
+  = lens _hhcPortSpecification
+      (\ s a -> s{_hhcPortSpecification = 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 .:? "portSpecification")
+                     <*> (o .:? "requestPath")
+                     <*> (o .:? "host")
+                     <*> (o .:? "proxyHeader")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPSHealthCheck where
+        toJSON HTTPSHealthCheck'{..}
+          = object
+              (catMaybes
+                 [("response" .=) <$> _hhcResponse,
+                  ("portSpecification" .=) <$> _hhcPortSpecification,
+                  ("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}\`: The G Suite domain
+-- (primary) 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})
+
+-- | 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)
+    , _i1Hostname                        :: !(Maybe Text)
+    , _i1NetworkInterfaces               :: !(Maybe [NetworkInterface])
+    , _i1ShieldedInstanceIntegrityPolicy :: !(Maybe ShieldedInstanceIntegrityPolicy)
+    , _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)
+    , _i1ShieldedInstanceConfig          :: !(Maybe ShieldedInstanceConfig)
+    , _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'
+--
+-- * 'i1Hostname'
+--
+-- * 'i1NetworkInterfaces'
+--
+-- * 'i1ShieldedInstanceIntegrityPolicy'
+--
+-- * 'i1Kind'
+--
+-- * 'i1Zone'
+--
+-- * 'i1CPUPlatform'
+--
+-- * 'i1SelfLink'
+--
+-- * 'i1GuestAccelerators'
+--
+-- * 'i1Name'
+--
+-- * 'i1StatusMessage'
+--
+-- * 'i1CreationTimestamp'
+--
+-- * 'i1MachineType'
+--
+-- * 'i1Metadata'
+--
+-- * 'i1ShieldedInstanceConfig'
+--
+-- * 'i1Id'
+--
+-- * 'i1Labels'
+--
+-- * 'i1StartRestricted'
+--
+-- * 'i1Scheduling'
+--
+-- * 'i1MinCPUPlatform'
+--
+-- * 'i1Disks'
+--
+-- * 'i1CanIPForward'
+--
+-- * 'i1LabelFingerprint'
+--
+-- * 'i1Description'
+--
+-- * 'i1Tags'
+instance'
+    :: Instance
+instance' =
+  Instance'
+    { _i1Status = Nothing
+    , _i1ServiceAccounts = Nothing
+    , _i1DeletionProtection = Nothing
+    , _i1Hostname = Nothing
+    , _i1NetworkInterfaces = Nothing
+    , _i1ShieldedInstanceIntegrityPolicy = Nothing
+    , _i1Kind = "compute#instance"
+    , _i1Zone = Nothing
+    , _i1CPUPlatform = Nothing
+    , _i1SelfLink = Nothing
+    , _i1GuestAccelerators = Nothing
+    , _i1Name = Nothing
+    , _i1StatusMessage = Nothing
+    , _i1CreationTimestamp = Nothing
+    , _i1MachineType = Nothing
+    , _i1Metadata = Nothing
+    , _i1ShieldedInstanceConfig = 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})
+
+i1Hostname :: Lens' Instance (Maybe Text)
+i1Hostname
+  = lens _i1Hostname (\ s a -> s{_i1Hostname = 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
+
+i1ShieldedInstanceIntegrityPolicy :: Lens' Instance (Maybe ShieldedInstanceIntegrityPolicy)
+i1ShieldedInstanceIntegrityPolicy
+  = lens _i1ShieldedInstanceIntegrityPolicy
+      (\ s a -> s{_i1ShieldedInstanceIntegrityPolicy = a})
+
+-- | [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})
+
+i1ShieldedInstanceConfig :: Lens' Instance (Maybe ShieldedInstanceConfig)
+i1ShieldedInstanceConfig
+  = lens _i1ShieldedInstanceConfig
+      (\ s a -> s{_i1ShieldedInstanceConfig = 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 .:? "hostname")
+                     <*> (o .:? "networkInterfaces" .!= mempty)
+                     <*> (o .:? "shieldedInstanceIntegrityPolicy")
+                     <*> (o .:? "kind" .!= "compute#instance")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "cpuPlatform")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "guestAccelerators" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "shieldedInstanceConfig")
+                     <*> (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,
+                  ("hostname" .=) <$> _i1Hostname,
+                  ("networkInterfaces" .=) <$> _i1NetworkInterfaces,
+                  ("shieldedInstanceIntegrityPolicy" .=) <$>
+                    _i1ShieldedInstanceIntegrityPolicy,
+                  Just ("kind" .= _i1Kind), ("zone" .=) <$> _i1Zone,
+                  ("cpuPlatform" .=) <$> _i1CPUPlatform,
+                  ("selfLink" .=) <$> _i1SelfLink,
+                  ("guestAccelerators" .=) <$> _i1GuestAccelerators,
+                  ("name" .=) <$> _i1Name,
+                  ("statusMessage" .=) <$> _i1StatusMessage,
+                  ("creationTimestamp" .=) <$> _i1CreationTimestamp,
+                  ("machineType" .=) <$> _i1MachineType,
+                  ("metadata" .=) <$> _i1Metadata,
+                  ("shieldedInstanceConfig" .=) <$>
+                    _i1ShieldedInstanceConfig,
+                  ("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 If defaultRouteAction is
+-- additionally specified, advanced routing actions like URL Rewrites, etc.
+-- take effect prior to sending the request to the backend. However, if
+-- defaultService is specified, defaultRouteAction cannot contain any
+-- weightedBackendServices. Conversely, if defaultRouteAction specifies any
+-- weightedBackendServices, defaultService must not be specified. Only one
+-- of defaultService, defaultUrlRedirect or
+-- defaultRouteAction.weightedBackendService 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\":
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
@@ -759,15066 +759,15976 @@
 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
+    | HTTP2
+      -- ^ @HTTP2@
+    | 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
+        "HTTP2" -> Right HTTP2
+        "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"
+        HTTP2 -> "HTTP2"
+        HTTPS -> "HTTPS"
+        SSL -> "SSL"
+        TCP -> "TCP"
+        Udp -> "UDP"
+
+instance FromJSON BackendServiceProtocol where
+    parseJSON = parseJSONText "BackendServiceProtocol"
+
+instance ToJSON BackendServiceProtocol where
+    toJSON = toJSONText
+
+-- | Type of network endpoints in this network endpoint group. Currently the
+-- only supported value is GCE_VM_IP_PORT.
+data NetworkEndpointGroupNetworkEndpointType
+    = GceVMIPPort
+      -- ^ @GCE_VM_IP_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupNetworkEndpointType
+
+instance FromHttpApiData NetworkEndpointGroupNetworkEndpointType where
+    parseQueryParam = \case
+        "GCE_VM_IP_PORT" -> Right GceVMIPPort
+        x -> Left ("Unable to parse NetworkEndpointGroupNetworkEndpointType from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupNetworkEndpointType where
+    toQueryParam = \case
+        GceVMIPPort -> "GCE_VM_IP_PORT"
+
+instance FromJSON NetworkEndpointGroupNetworkEndpointType where
+    parseJSON = parseJSONText "NetworkEndpointGroupNetworkEndpointType"
+
+instance ToJSON NetworkEndpointGroupNetworkEndpointType 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.
+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
+
+-- | The status of the current value when compared to the warning and alarm
+-- levels for the receiving or transmitting transceiver. Possible states
+-- include: - OK: The value has not crossed a warning threshold. -
+-- LOW_WARNING: The value has crossed below the low warning threshold. -
+-- HIGH_WARNING: The value has crossed above the high warning threshold. -
+-- LOW_ALARM: The value has crossed below the low alarm threshold. -
+-- HIGH_ALARM: The value has crossed above the high alarm threshold.
+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
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, SSL health check follows
+-- behavior specified in port and portName fields.
+data SSLHealthCheckPortSpecification
+    = UseFixedPort
+      -- ^ @USE_FIXED_PORT@
+    | UseNamedPort
+      -- ^ @USE_NAMED_PORT@
+    | UseServingPort
+      -- ^ @USE_SERVING_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SSLHealthCheckPortSpecification
+
+instance FromHttpApiData SSLHealthCheckPortSpecification where
+    parseQueryParam = \case
+        "USE_FIXED_PORT" -> Right UseFixedPort
+        "USE_NAMED_PORT" -> Right UseNamedPort
+        "USE_SERVING_PORT" -> Right UseServingPort
+        x -> Left ("Unable to parse SSLHealthCheckPortSpecification from: " <> x)
+
+instance ToHttpApiData SSLHealthCheckPortSpecification where
+    toQueryParam = \case
+        UseFixedPort -> "USE_FIXED_PORT"
+        UseNamedPort -> "USE_NAMED_PORT"
+        UseServingPort -> "USE_SERVING_PORT"
+
+instance FromJSON SSLHealthCheckPortSpecification where
+    parseJSON = parseJSONText "SSLHealthCheckPortSpecification"
+
+instance ToJSON SSLHealthCheckPortSpecification 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
+
+-- | [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 NetworkEndpointGroupAggregatedListWarningCode
+    = NEGALWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NEGALWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NEGALWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NEGALWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NEGALWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NEGALWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NEGALWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NEGALWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NEGALWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NEGALWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NEGALWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NEGALWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NEGALWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NEGALWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NEGALWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NEGALWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NEGALWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NEGALWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NEGALWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NEGALWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NEGALWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NEGALWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NEGALWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupAggregatedListWarningCode
+
+instance FromHttpApiData NetworkEndpointGroupAggregatedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NEGALWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NEGALWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NEGALWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NEGALWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NEGALWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NEGALWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NEGALWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NEGALWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NEGALWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NEGALWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NEGALWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NEGALWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NEGALWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NEGALWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NEGALWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NEGALWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NEGALWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NEGALWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NEGALWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NEGALWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NEGALWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NEGALWCUndeclaredProperties
+        "UNREACHABLE" -> Right NEGALWCUnreachable
+        x -> Left ("Unable to parse NetworkEndpointGroupAggregatedListWarningCode from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupAggregatedListWarningCode where
+    toQueryParam = \case
+        NEGALWCCleanupFailed -> "CLEANUP_FAILED"
+        NEGALWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NEGALWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NEGALWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NEGALWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NEGALWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NEGALWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NEGALWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NEGALWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NEGALWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NEGALWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NEGALWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NEGALWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NEGALWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NEGALWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NEGALWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NEGALWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NEGALWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NEGALWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NEGALWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NEGALWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NEGALWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NEGALWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NetworkEndpointGroupAggregatedListWarningCode where
+    parseJSON = parseJSONText "NetworkEndpointGroupAggregatedListWarningCode"
+
+instance ToJSON NetworkEndpointGroupAggregatedListWarningCode 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
+
+-- | Health state of the network endpoint determined based on the health
+-- checks configured.
+data HealthStatusForNetworkEndpointHealthState
+    = Draining
+      -- ^ @DRAINING@
+    | Healthy
+      -- ^ @HEALTHY@
+    | Unhealthy
+      -- ^ @UNHEALTHY@
+    | Unknown
+      -- ^ @UNKNOWN@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HealthStatusForNetworkEndpointHealthState
+
+instance FromHttpApiData HealthStatusForNetworkEndpointHealthState where
+    parseQueryParam = \case
+        "DRAINING" -> Right Draining
+        "HEALTHY" -> Right Healthy
+        "UNHEALTHY" -> Right Unhealthy
+        "UNKNOWN" -> Right Unknown
+        x -> Left ("Unable to parse HealthStatusForNetworkEndpointHealthState from: " <> x)
+
+instance ToHttpApiData HealthStatusForNetworkEndpointHealthState where
+    toQueryParam = \case
+        Draining -> "DRAINING"
+        Healthy -> "HEALTHY"
+        Unhealthy -> "UNHEALTHY"
+        Unknown -> "UNKNOWN"
+
+instance FromJSON HealthStatusForNetworkEndpointHealthState where
+    parseJSON = parseJSONText "HealthStatusForNetworkEndpointHealthState"
+
+instance ToJSON HealthStatusForNetworkEndpointHealthState 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, which can be one of the
+-- following: CREATING, READY, FAILED, or DELETING.
+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@
+    | NATAuto
+      -- ^ @NAT_AUTO@
+    | 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
+        "NAT_AUTO" -> Right NATAuto
+        "VPC_PEERING" -> Right VPCPeering
+        x -> Left ("Unable to parse AddressPurpose from: " <> x)
+
+instance ToHttpApiData AddressPurpose where
+    toQueryParam = \case
+        DNSResolver -> "DNS_RESOLVER"
+        GceEndpoint -> "GCE_ENDPOINT"
+        NATAuto -> "NAT_AUTO"
+        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
+    = ISDeleting
+      -- ^ @DELETING@
+    | ISFailed
+      -- ^ @FAILED@
+    | ISPending
+      -- ^ @PENDING@
+    | ISReady
+      -- ^ @READY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ImageStatus
+
+instance FromHttpApiData ImageStatus where
+    parseQueryParam = \case
+        "DELETING" -> Right ISDeleting
+        "FAILED" -> Right ISFailed
+        "PENDING" -> Right ISPending
+        "READY" -> Right ISReady
+        x -> Left ("Unable to parse ImageStatus from: " <> x)
+
+instance ToHttpApiData ImageStatus where
+    toQueryParam = \case
+        ISDeleting -> "DELETING"
+        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
+    = ASDTAllInstancesUnhealthy
+      -- ^ @ALL_INSTANCES_UNHEALTHY@
+    | ASDTBackendServiceDoesNotExist
+      -- ^ @BACKEND_SERVICE_DOES_NOT_EXIST@
+    | ASDTCAppedAtMaxNumReplicas
+      -- ^ @CAPPED_AT_MAX_NUM_REPLICAS@
+    | ASDTCustomMetricDataPointsTooSparse
+      -- ^ @CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE@
+    | ASDTCustomMetricInvalid
+      -- ^ @CUSTOM_METRIC_INVALID@
+    | ASDTMinEqualsMax
+      -- ^ @MIN_EQUALS_MAX@
+    | ASDTMissingCustomMetricDataPoints
+      -- ^ @MISSING_CUSTOM_METRIC_DATA_POINTS@
+    | ASDTMissingLoadBalancingDataPoints
+      -- ^ @MISSING_LOAD_BALANCING_DATA_POINTS@
+    | ASDTMoreThanOneBackendService
+      -- ^ @MORE_THAN_ONE_BACKEND_SERVICE@
+    | ASDTNotEnoughQuotaAvailable
+      -- ^ @NOT_ENOUGH_QUOTA_AVAILABLE@
+    | ASDTRegionResourceStockout
+      -- ^ @REGION_RESOURCE_STOCKOUT@
+    | ASDTScalingTargetDoesNotExist
+      -- ^ @SCALING_TARGET_DOES_NOT_EXIST@
+    | ASDTUnknown
+      -- ^ @UNKNOWN@
+    | ASDTUnsupportedMaxRateLoadBalancingConfiguration
+      -- ^ @UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION@
+    | ASDTZoneResourceStockout
+      -- ^ @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 ASDTAllInstancesUnhealthy
+        "BACKEND_SERVICE_DOES_NOT_EXIST" -> Right ASDTBackendServiceDoesNotExist
+        "CAPPED_AT_MAX_NUM_REPLICAS" -> Right ASDTCAppedAtMaxNumReplicas
+        "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE" -> Right ASDTCustomMetricDataPointsTooSparse
+        "CUSTOM_METRIC_INVALID" -> Right ASDTCustomMetricInvalid
+        "MIN_EQUALS_MAX" -> Right ASDTMinEqualsMax
+        "MISSING_CUSTOM_METRIC_DATA_POINTS" -> Right ASDTMissingCustomMetricDataPoints
+        "MISSING_LOAD_BALANCING_DATA_POINTS" -> Right ASDTMissingLoadBalancingDataPoints
+        "MORE_THAN_ONE_BACKEND_SERVICE" -> Right ASDTMoreThanOneBackendService
+        "NOT_ENOUGH_QUOTA_AVAILABLE" -> Right ASDTNotEnoughQuotaAvailable
+        "REGION_RESOURCE_STOCKOUT" -> Right ASDTRegionResourceStockout
+        "SCALING_TARGET_DOES_NOT_EXIST" -> Right ASDTScalingTargetDoesNotExist
+        "UNKNOWN" -> Right ASDTUnknown
+        "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION" -> Right ASDTUnsupportedMaxRateLoadBalancingConfiguration
+        "ZONE_RESOURCE_STOCKOUT" -> Right ASDTZoneResourceStockout
+        x -> Left ("Unable to parse AutoscalerStatusDetailsType from: " <> x)
+
+instance ToHttpApiData AutoscalerStatusDetailsType where
+    toQueryParam = \case
+        ASDTAllInstancesUnhealthy -> "ALL_INSTANCES_UNHEALTHY"
+        ASDTBackendServiceDoesNotExist -> "BACKEND_SERVICE_DOES_NOT_EXIST"
+        ASDTCAppedAtMaxNumReplicas -> "CAPPED_AT_MAX_NUM_REPLICAS"
+        ASDTCustomMetricDataPointsTooSparse -> "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE"
+        ASDTCustomMetricInvalid -> "CUSTOM_METRIC_INVALID"
+        ASDTMinEqualsMax -> "MIN_EQUALS_MAX"
+        ASDTMissingCustomMetricDataPoints -> "MISSING_CUSTOM_METRIC_DATA_POINTS"
+        ASDTMissingLoadBalancingDataPoints -> "MISSING_LOAD_BALANCING_DATA_POINTS"
+        ASDTMoreThanOneBackendService -> "MORE_THAN_ONE_BACKEND_SERVICE"
+        ASDTNotEnoughQuotaAvailable -> "NOT_ENOUGH_QUOTA_AVAILABLE"
+        ASDTRegionResourceStockout -> "REGION_RESOURCE_STOCKOUT"
+        ASDTScalingTargetDoesNotExist -> "SCALING_TARGET_DOES_NOT_EXIST"
+        ASDTUnknown -> "UNKNOWN"
+        ASDTUnsupportedMaxRateLoadBalancingConfiguration -> "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION"
+        ASDTZoneResourceStockout -> "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
+    = HSHSHealthy
+      -- ^ @HEALTHY@
+    | HSHSUnhealthy
+      -- ^ @UNHEALTHY@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HealthStatusHealthState
+
+instance FromHttpApiData HealthStatusHealthState where
+    parseQueryParam = \case
+        "HEALTHY" -> Right HSHSHealthy
+        "UNHEALTHY" -> Right HSHSUnhealthy
+        x -> Left ("Unable to parse HealthStatusHealthState from: " <> x)
+
+instance ToHttpApiData HealthStatusHealthState where
+    toQueryParam = \case
+        HSHSHealthy -> "HEALTHY"
+        HSHSUnhealthy -> "UNHEALTHY"
+
+instance FromJSON HealthStatusHealthState where
+    parseJSON = parseJSONText "HealthStatusHealthState"
+
+instance ToJSON HealthStatusHealthState where
+    toJSON = toJSONText
+
+-- | The deprecation state of this resource. This can be ACTIVE, DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which communicate the end of life date
+-- for an image, can use ACTIVE. 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
+    = DSSActive
+      -- ^ @ACTIVE@
+    | DSSDeleted
+      -- ^ @DELETED@
+    | DSSDeprecated
+      -- ^ @DEPRECATED@
+    | DSSObsolete
+      -- ^ @OBSOLETE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DeprecationStatusState
+
+instance FromHttpApiData DeprecationStatusState where
+    parseQueryParam = \case
+        "ACTIVE" -> Right DSSActive
+        "DELETED" -> Right DSSDeleted
+        "DEPRECATED" -> Right DSSDeprecated
+        "OBSOLETE" -> Right DSSObsolete
+        x -> Left ("Unable to parse DeprecationStatusState from: " <> x)
+
+instance ToHttpApiData DeprecationStatusState where
+    toQueryParam = \case
+        DSSActive -> "ACTIVE"
+        DSSDeleted -> "DELETED"
+        DSSDeprecated -> "DEPRECATED"
+        DSSObsolete -> "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
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, TCP health check follows
+-- behavior specified in port and portName fields.
+data TCPHealthCheckPortSpecification
+    = THCPSUseFixedPort
+      -- ^ @USE_FIXED_PORT@
+    | THCPSUseNamedPort
+      -- ^ @USE_NAMED_PORT@
+    | THCPSUseServingPort
+      -- ^ @USE_SERVING_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TCPHealthCheckPortSpecification
+
+instance FromHttpApiData TCPHealthCheckPortSpecification where
+    parseQueryParam = \case
+        "USE_FIXED_PORT" -> Right THCPSUseFixedPort
+        "USE_NAMED_PORT" -> Right THCPSUseNamedPort
+        "USE_SERVING_PORT" -> Right THCPSUseServingPort
+        x -> Left ("Unable to parse TCPHealthCheckPortSpecification from: " <> x)
+
+instance ToHttpApiData TCPHealthCheckPortSpecification where
+    toQueryParam = \case
+        THCPSUseFixedPort -> "USE_FIXED_PORT"
+        THCPSUseNamedPort -> "USE_NAMED_PORT"
+        THCPSUseServingPort -> "USE_SERVING_PORT"
+
+instance FromJSON TCPHealthCheckPortSpecification where
+    parseJSON = parseJSONText "TCPHealthCheckPortSpecification"
+
+instance ToJSON TCPHealthCheckPortSpecification 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@
+    | DSDeleting
+      -- ^ @DELETING@
+    | 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
+        "DELETING" -> Right DSDeleting
+        "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"
+        DSDeleting -> "DELETING"
+        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@
+    | MIISRepairing
+      -- ^ @REPAIRING@
+    | 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
+        "REPAIRING" -> Right MIISRepairing
+        "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"
+        MIISRepairing -> "REPAIRING"
+        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
+
+data InstanceGroupManagerUpdatePolicyType
+    = Opportunistic
+      -- ^ @OPPORTUNISTIC@
+    | Proactive
+      -- ^ @PROACTIVE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupManagerUpdatePolicyType
+
+instance FromHttpApiData InstanceGroupManagerUpdatePolicyType where
+    parseQueryParam = \case
+        "OPPORTUNISTIC" -> Right Opportunistic
+        "PROACTIVE" -> Right Proactive
+        x -> Left ("Unable to parse InstanceGroupManagerUpdatePolicyType from: " <> x)
+
+instance ToHttpApiData InstanceGroupManagerUpdatePolicyType where
+    toQueryParam = \case
+        Opportunistic -> "OPPORTUNISTIC"
+        Proactive -> "PROACTIVE"
+
+instance FromJSON InstanceGroupManagerUpdatePolicyType where
+    parseJSON = parseJSONText "InstanceGroupManagerUpdatePolicyType"
+
+instance ToJSON InstanceGroupManagerUpdatePolicyType 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
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTP2 health check follows
+-- behavior specified in port and portName fields.
+data HTTP2HealthCheckPortSpecification
+    = HTTPHCPSUseFixedPort
+      -- ^ @USE_FIXED_PORT@
+    | HTTPHCPSUseNamedPort
+      -- ^ @USE_NAMED_PORT@
+    | HTTPHCPSUseServingPort
+      -- ^ @USE_SERVING_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTP2HealthCheckPortSpecification
+
+instance FromHttpApiData HTTP2HealthCheckPortSpecification where
+    parseQueryParam = \case
+        "USE_FIXED_PORT" -> Right HTTPHCPSUseFixedPort
+        "USE_NAMED_PORT" -> Right HTTPHCPSUseNamedPort
+        "USE_SERVING_PORT" -> Right HTTPHCPSUseServingPort
+        x -> Left ("Unable to parse HTTP2HealthCheckPortSpecification from: " <> x)
+
+instance ToHttpApiData HTTP2HealthCheckPortSpecification where
+    toQueryParam = \case
+        HTTPHCPSUseFixedPort -> "USE_FIXED_PORT"
+        HTTPHCPSUseNamedPort -> "USE_NAMED_PORT"
+        HTTPHCPSUseServingPort -> "USE_SERVING_PORT"
+
+instance FromJSON HTTP2HealthCheckPortSpecification where
+    parseJSON = parseJSONText "HTTP2HealthCheckPortSpecification"
+
+instance ToJSON HTTP2HealthCheckPortSpecification 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, which can be one of the
+-- following: - PROVISIONING: Resource is being allocated for the VPN
+-- tunnel. - WAITING_FOR_FULL_CONFIG: Waiting to receive all VPN-related
+-- configs from the user. Network, TargetVpnGateway, VpnTunnel,
+-- ForwardingRule, and Route resources are needed to setup the VPN tunnel.
+-- - FIRST_HANDSHAKE: Successful first handshake with the peer VPN. -
+-- ESTABLISHED: Secure session is successfully established with the peer
+-- VPN. - NETWORK_ERROR: Deprecated, replaced by NO_INCOMING_PACKETS -
+-- AUTHORIZATION_ERROR: Auth error (for example, bad shared secret). -
+-- NEGOTIATION_FAILURE: Handshake failed. - DEPROVISIONING: Resources are
+-- being deallocated for the VPN tunnel. - FAILED: Tunnel creation has
+-- failed and the tunnel is not ready to be used.
+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
+
+-- | [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 NetworkEndpointGroupListWarningCode
+    = NEGLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NEGLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NEGLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NEGLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NEGLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NEGLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NEGLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NEGLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NEGLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NEGLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NEGLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NEGLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NEGLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NEGLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NEGLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NEGLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NEGLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NEGLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NEGLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NEGLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NEGLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NEGLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NEGLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupListWarningCode
+
+instance FromHttpApiData NetworkEndpointGroupListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NEGLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NEGLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NEGLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NEGLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NEGLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NEGLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NEGLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NEGLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NEGLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NEGLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NEGLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NEGLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NEGLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NEGLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NEGLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NEGLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NEGLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NEGLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NEGLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NEGLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NEGLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NEGLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NEGLWCUnreachable
+        x -> Left ("Unable to parse NetworkEndpointGroupListWarningCode from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupListWarningCode where
+    toQueryParam = \case
+        NEGLWCCleanupFailed -> "CLEANUP_FAILED"
+        NEGLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NEGLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NEGLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NEGLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NEGLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NEGLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NEGLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NEGLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NEGLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NEGLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NEGLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NEGLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NEGLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NEGLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NEGLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NEGLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NEGLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NEGLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NEGLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NEGLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NEGLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NEGLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NetworkEndpointGroupListWarningCode where
+    parseJSON = parseJSONText "NetworkEndpointGroupListWarningCode"
+
+instance ToJSON NetworkEndpointGroupListWarningCode 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
+
+-- | Optional query parameter for showing the health status of each network
+-- endpoint. Valid options are SKIP or SHOW. If you don\'t specifiy this
+-- parameter, the health status of network endpoints will not be provided.
+data NetworkEndpointGroupsListEndpointsRequestHealthStatus
+    = Show
+      -- ^ @SHOW@
+    | Skip
+      -- ^ @SKIP@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupsListEndpointsRequestHealthStatus
+
+instance FromHttpApiData NetworkEndpointGroupsListEndpointsRequestHealthStatus where
+    parseQueryParam = \case
+        "SHOW" -> Right Show
+        "SKIP" -> Right Skip
+        x -> Left ("Unable to parse NetworkEndpointGroupsListEndpointsRequestHealthStatus from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupsListEndpointsRequestHealthStatus where
+    toQueryParam = \case
+        Show -> "SHOW"
+        Skip -> "SKIP"
+
+instance FromJSON NetworkEndpointGroupsListEndpointsRequestHealthStatus where
+    parseJSON = parseJSONText "NetworkEndpointGroupsListEndpointsRequestHealthStatus"
+
+instance ToJSON NetworkEndpointGroupsListEndpointsRequestHealthStatus 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, HTTPS or
+-- HTTP2. 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@
+    | HCTHTTP2
+      -- ^ @HTTP2@
+    | 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
+        "HTTP2" -> Right HCTHTTP2
+        "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"
+        HCTHTTP2 -> "HTTP2"
+        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 NetworkEndpointGroupsScopedListWarningCode
+    = NEGSLWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NEGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NEGSLWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NEGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NEGSLWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NEGSLWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NEGSLWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NEGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NEGSLWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NEGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NEGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NEGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NEGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NEGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NEGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NEGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NEGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NEGSLWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NEGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NEGSLWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NEGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NEGSLWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NEGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupsScopedListWarningCode
+
+instance FromHttpApiData NetworkEndpointGroupsScopedListWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NEGSLWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NEGSLWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NEGSLWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NEGSLWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NEGSLWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NEGSLWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NEGSLWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NEGSLWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NEGSLWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NEGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NEGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NEGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NEGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NEGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NEGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NEGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NEGSLWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NEGSLWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NEGSLWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NEGSLWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NEGSLWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NEGSLWCUndeclaredProperties
+        "UNREACHABLE" -> Right NEGSLWCUnreachable
+        x -> Left ("Unable to parse NetworkEndpointGroupsScopedListWarningCode from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupsScopedListWarningCode where
+    toQueryParam = \case
+        NEGSLWCCleanupFailed -> "CLEANUP_FAILED"
+        NEGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NEGSLWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NEGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NEGSLWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NEGSLWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NEGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NEGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NEGSLWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NEGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NEGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NEGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NEGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NEGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NEGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NEGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NEGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NEGSLWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NEGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NEGSLWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NEGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NEGSLWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NEGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NetworkEndpointGroupsScopedListWarningCode where
+    parseJSON = parseJSONText "NetworkEndpointGroupsScopedListWarningCode"
+
+instance ToJSON NetworkEndpointGroupsScopedListWarningCode 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] A warning code, if applicable. For example, Compute Engine
+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.
+data NetworkEndpointGroupsListNetworkEndpointsWarningCode
+    = NEGLNEWCCleanupFailed
+      -- ^ @CLEANUP_FAILED@
+    | NEGLNEWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | NEGLNEWCDeprecatedTypeUsed
+      -- ^ @DEPRECATED_TYPE_USED@
+    | NEGLNEWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | NEGLNEWCExperimentalTypeUsed
+      -- ^ @EXPERIMENTAL_TYPE_USED@
+    | NEGLNEWCExternalAPIWarning
+      -- ^ @EXTERNAL_API_WARNING@
+    | NEGLNEWCFieldValueOverriden
+      -- ^ @FIELD_VALUE_OVERRIDEN@
+    | NEGLNEWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NEGLNEWCMissingTypeDependency
+      -- ^ @MISSING_TYPE_DEPENDENCY@
+    | NEGLNEWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NEGLNEWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NEGLNEWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NEGLNEWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NEGLNEWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NEGLNEWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NEGLNEWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | NEGLNEWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | NEGLNEWCResourceInUseByOtherResourceWarning
+      -- ^ @RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING@
+    | NEGLNEWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | NEGLNEWCSchemaValidationIgnored
+      -- ^ @SCHEMA_VALIDATION_IGNORED@
+    | NEGLNEWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | NEGLNEWCUndeclaredProperties
+      -- ^ @UNDECLARED_PROPERTIES@
+    | NEGLNEWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkEndpointGroupsListNetworkEndpointsWarningCode
+
+instance FromHttpApiData NetworkEndpointGroupsListNetworkEndpointsWarningCode where
+    parseQueryParam = \case
+        "CLEANUP_FAILED" -> Right NEGLNEWCCleanupFailed
+        "DEPRECATED_RESOURCE_USED" -> Right NEGLNEWCDeprecatedResourceUsed
+        "DEPRECATED_TYPE_USED" -> Right NEGLNEWCDeprecatedTypeUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right NEGLNEWCDiskSizeLargerThanImageSize
+        "EXPERIMENTAL_TYPE_USED" -> Right NEGLNEWCExperimentalTypeUsed
+        "EXTERNAL_API_WARNING" -> Right NEGLNEWCExternalAPIWarning
+        "FIELD_VALUE_OVERRIDEN" -> Right NEGLNEWCFieldValueOverriden
+        "INJECTED_KERNELS_DEPRECATED" -> Right NEGLNEWCInjectedKernelsDeprecated
+        "MISSING_TYPE_DEPENDENCY" -> Right NEGLNEWCMissingTypeDependency
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NEGLNEWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NEGLNEWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right NEGLNEWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right NEGLNEWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Right NEGLNEWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Right NEGLNEWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Right NEGLNEWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Right NEGLNEWCRequiredTosAgreement
+        "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" -> Right NEGLNEWCResourceInUseByOtherResourceWarning
+        "RESOURCE_NOT_DELETED" -> Right NEGLNEWCResourceNotDeleted
+        "SCHEMA_VALIDATION_IGNORED" -> Right NEGLNEWCSchemaValidationIgnored
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right NEGLNEWCSingleInstancePropertyTemplate
+        "UNDECLARED_PROPERTIES" -> Right NEGLNEWCUndeclaredProperties
+        "UNREACHABLE" -> Right NEGLNEWCUnreachable
+        x -> Left ("Unable to parse NetworkEndpointGroupsListNetworkEndpointsWarningCode from: " <> x)
+
+instance ToHttpApiData NetworkEndpointGroupsListNetworkEndpointsWarningCode where
+    toQueryParam = \case
+        NEGLNEWCCleanupFailed -> "CLEANUP_FAILED"
+        NEGLNEWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        NEGLNEWCDeprecatedTypeUsed -> "DEPRECATED_TYPE_USED"
+        NEGLNEWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        NEGLNEWCExperimentalTypeUsed -> "EXPERIMENTAL_TYPE_USED"
+        NEGLNEWCExternalAPIWarning -> "EXTERNAL_API_WARNING"
+        NEGLNEWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"
+        NEGLNEWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NEGLNEWCMissingTypeDependency -> "MISSING_TYPE_DEPENDENCY"
+        NEGLNEWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NEGLNEWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NEGLNEWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NEGLNEWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NEGLNEWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NEGLNEWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        NEGLNEWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        NEGLNEWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        NEGLNEWCResourceInUseByOtherResourceWarning -> "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+        NEGLNEWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        NEGLNEWCSchemaValidationIgnored -> "SCHEMA_VALIDATION_IGNORED"
+        NEGLNEWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        NEGLNEWCUndeclaredProperties -> "UNDECLARED_PROPERTIES"
+        NEGLNEWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON NetworkEndpointGroupsListNetworkEndpointsWarningCode where
+    parseJSON = parseJSONText "NetworkEndpointGroupsListNetworkEndpointsWarningCode"
+
+instance ToJSON NetworkEndpointGroupsListNetworkEndpointsWarningCode 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@
+    | ExternalVPNGateways
+      -- ^ @EXTERNAL_VPN_GATEWAYS@
+    | 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@
+    | InUseSnapshotSchedules
+      -- ^ @IN_USE_SNAPSHOT_SCHEDULES@
+    | LocalSsdTotalGb
+      -- ^ @LOCAL_SSD_TOTAL_GB@
+    | Networks
+      -- ^ @NETWORKS@
+    | NetworkEndpointGroups
+      -- ^ @NETWORK_ENDPOINT_GROUPS@
+    | 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
+        "EXTERNAL_VPN_GATEWAYS" -> Right ExternalVPNGateways
+        "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
+        "IN_USE_SNAPSHOT_SCHEDULES" -> Right InUseSnapshotSchedules
+        "LOCAL_SSD_TOTAL_GB" -> Right LocalSsdTotalGb
+        "NETWORKS" -> Right Networks
+        "NETWORK_ENDPOINT_GROUPS" -> Right NetworkEndpointGroups
+        "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"
+        ExternalVPNGateways -> "EXTERNAL_VPN_GATEWAYS"
+        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"
+        InUseSnapshotSchedules -> "IN_USE_SNAPSHOT_SCHEDULES"
+        LocalSsdTotalGb -> "LOCAL_SSD_TOTAL_GB"
+        Networks -> "NETWORKS"
+        NetworkEndpointGroups -> "NETWORK_ENDPOINT_GROUPS"
+        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@
+    | ISRepairing
+      -- ^ @REPAIRING@
+    | 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
+        "REPAIRING" -> Right ISRepairing
+        "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"
+        ISRepairing -> "REPAIRING"
+        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
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTPS health check follows
+-- behavior specified in port and portName fields.
+data HTTPSHealthCheckPortSpecification
+    = HHCPSUseFixedPort
+      -- ^ @USE_FIXED_PORT@
+    | HHCPSUseNamedPort
+      -- ^ @USE_NAMED_PORT@
+    | HHCPSUseServingPort
+      -- ^ @USE_SERVING_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPSHealthCheckPortSpecification
+
+instance FromHttpApiData HTTPSHealthCheckPortSpecification where
+    parseQueryParam = \case
+        "USE_FIXED_PORT" -> Right HHCPSUseFixedPort
+        "USE_NAMED_PORT" -> Right HHCPSUseNamedPort
+        "USE_SERVING_PORT" -> Right HHCPSUseServingPort
+        x -> Left ("Unable to parse HTTPSHealthCheckPortSpecification from: " <> x)
+
+instance ToHttpApiData HTTPSHealthCheckPortSpecification where
+    toQueryParam = \case
+        HHCPSUseFixedPort -> "USE_FIXED_PORT"
+        HHCPSUseNamedPort -> "USE_NAMED_PORT"
+        HHCPSUseServingPort -> "USE_SERVING_PORT"
+
+instance FromJSON HTTPSHealthCheckPortSpecification where
+    parseJSON = parseJSONText "HTTPSHealthCheckPortSpecification"
+
+instance ToJSON HTTPSHealthCheckPortSpecification 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
+
+-- | Specifies the type of proxy header to append before sending data to the
+-- backend, either NONE or PROXY_V1. The default is NONE.
+data HTTP2HealthCheckProxyHeader
+    = HNone
+      -- ^ @NONE@
+    | HProxyV1
+      -- ^ @PROXY_V1@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTP2HealthCheckProxyHeader
+
+instance FromHttpApiData HTTP2HealthCheckProxyHeader where
+    parseQueryParam = \case
+        "NONE" -> Right HNone
+        "PROXY_V1" -> Right HProxyV1
+        x -> Left ("Unable to parse HTTP2HealthCheckProxyHeader from: " <> x)
+
+instance ToHttpApiData HTTP2HealthCheckProxyHeader where
+    toQueryParam = \case
+        HNone -> "NONE"
+        HProxyV1 -> "PROXY_V1"
+
+instance FromJSON HTTP2HealthCheckProxyHeader where
+    parseJSON = parseJSONText "HTTP2HealthCheckProxyHeader"
+
+instance ToJSON HTTP2HealthCheckProxyHeader 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] The status of this InterconnectLocation. If the status is
+-- AVAILABLE, new Interconnects may be provisioned in this
+-- InterconnectLocation. Otherwise, no new Interconnects may be
+-- provisioned.
+data InterconnectLocationStatus
+    = Available
+      -- ^ @AVAILABLE@
+    | Closed
+      -- ^ @CLOSED@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InterconnectLocationStatus
+
+instance FromHttpApiData InterconnectLocationStatus where
+    parseQueryParam = \case
+        "AVAILABLE" -> Right Available
+        "CLOSED" -> Right Closed
+        x -> Left ("Unable to parse InterconnectLocationStatus from: " <> x)
+
+instance ToHttpApiData InterconnectLocationStatus where
+    toQueryParam = \case
+        Available -> "AVAILABLE"
+        Closed -> "CLOSED"
+
+instance FromJSON InterconnectLocationStatus where
+    parseJSON = parseJSONText "InterconnectLocationStatus"
+
+instance ToJSON InterconnectLocationStatus 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@
+    | IWNPSRepairing
+      -- ^ @REPAIRING@
+    | 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
+        "REPAIRING" -> Right IWNPSRepairing
+        "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"
+        IWNPSRepairing -> "REPAIRING"
+        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
+
+-- | Specifies how port is selected for health checking, can be one of
+-- following values: USE_FIXED_PORT: The port number in port is used for
+-- health checking. USE_NAMED_PORT: The portName is used for health
+-- checking. USE_SERVING_PORT: For NetworkEndpointGroup, the port specified
+-- for each network endpoint is used for health checking. For other
+-- backends, the port or named port specified in the Backend Service is
+-- used for health checking. If not specified, HTTP health check follows
+-- behavior specified in port and portName fields.
+data HTTPHealthCheckPortSpecification
+    = HUseFixedPort
+      -- ^ @USE_FIXED_PORT@
+    | HUseNamedPort
+      -- ^ @USE_NAMED_PORT@
+    | HUseServingPort
+      -- ^ @USE_SERVING_PORT@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HTTPHealthCheckPortSpecification
+
+instance FromHttpApiData HTTPHealthCheckPortSpecification where
+    parseQueryParam = \case
+        "USE_FIXED_PORT" -> Right HUseFixedPort
+        "USE_NAMED_PORT" -> Right HUseNamedPort
+        "USE_SERVING_PORT" -> Right HUseServingPort
+        x -> Left ("Unable to parse HTTPHealthCheckPortSpecification from: " <> x)
+
+instance ToHttpApiData HTTPHealthCheckPortSpecification where
+    toQueryParam = \case
+        HUseFixedPort -> "USE_FIXED_PORT"
+        HUseNamedPort -> "USE_NAMED_PORT"
+        HUseServingPort -> "USE_SERVING_PORT"
+
+instance FromJSON HTTPHealthCheckPortSpecification where
+    parseJSON = parseJSONText "HTTPHealthCheckPortSpecification"
+
+instance ToJSON HTTPHealthCheckPortSpecification 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
+
+-- | Minimal action to be taken on an instance. You can specify either
+-- RESTART to restart existing instances or REPLACE to delete and create
+-- new instances from the target template. If you specify a RESTART, the
+-- Updater will attempt to perform that action only. However, if the
+-- Updater determines that the minimal action you specify is not enough to
+-- perform the update, it might perform a more disruptive action.
+data InstanceGroupManagerUpdatePolicyMinimalAction
+    = Replace
+      -- ^ @REPLACE@
+    | Restart
+      -- ^ @RESTART@
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceGroupManagerUpdatePolicyMinimalAction
+
+instance FromHttpApiData InstanceGroupManagerUpdatePolicyMinimalAction where
+    parseQueryParam = \case
+        "REPLACE" -> Right Replace
+        "RESTART" -> Right Restart
+        x -> Left ("Unable to parse InstanceGroupManagerUpdatePolicyMinimalAction from: " <> x)
+
+instance ToHttpApiData InstanceGroupManagerUpdatePolicyMinimalAction where
+    toQueryParam = \case
+        Replace -> "REPLACE"
+        Restart -> "RESTART"
+
+instance FromJSON InstanceGroupManagerUpdatePolicyMinimalAction where
+    parseJSON = parseJSONText "InstanceGroupManagerUpdatePolicyMinimalAction"
+
+instance ToJSON InstanceGroupManagerUpdatePolicyMinimalAction where
     toJSON = toJSONText
 
 -- | [Output Only] A warning code, if applicable. For example, Compute Engine
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/AggregatedList.hs
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of accelerator types.
 --
 -- /See:/ 'acceleratorTypesAggregatedList' smart constructor.
-data AcceleratorTypesAggregatedList = AcceleratorTypesAggregatedList'
+data AcceleratorTypesAggregatedList =
+  AcceleratorTypesAggregatedList'
     { _atalOrderBy    :: !(Maybe Text)
     , _atalProject    :: !Text
     , _atalFilter     :: !(Maybe Text)
     , _atalPageToken  :: !(Maybe Text)
     , _atalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'atalProject'
     -> AcceleratorTypesAggregatedList
 acceleratorTypesAggregatedList pAtalProject_ =
-    AcceleratorTypesAggregatedList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs
--- a/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/Get.hs
@@ -58,12 +58,15 @@
 -- | Returns the specified accelerator type.
 --
 -- /See:/ 'acceleratorTypesGet' smart constructor.
-data AcceleratorTypesGet = AcceleratorTypesGet'
+data AcceleratorTypesGet =
+  AcceleratorTypesGet'
     { _atgAcceleratorType :: !Text
     , _atgProject         :: !Text
     , _atgZone            :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'atgZone'
     -> AcceleratorTypesGet
 acceleratorTypesGet pAtgAcceleratorType_ pAtgProject_ pAtgZone_ =
-    AcceleratorTypesGet'
+  AcceleratorTypesGet'
     { _atgAcceleratorType = pAtgAcceleratorType_
     , _atgProject = pAtgProject_
     , _atgZone = pAtgZone_
     }
+
 
 -- | Name of the accelerator type to return.
 atgAcceleratorType :: Lens' AcceleratorTypesGet Text
diff --git a/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs b/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs
--- a/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs
+++ b/gen/Network/Google/Resource/Compute/AcceleratorTypes/List.hs
@@ -66,15 +66,18 @@
 -- project.
 --
 -- /See:/ 'acceleratorTypesList' smart constructor.
-data AcceleratorTypesList = AcceleratorTypesList'
+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)
+    }
+  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:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'atlZone'
     -> AcceleratorTypesList
 acceleratorTypesList pAtlProject_ pAtlZone_ =
-    AcceleratorTypesList'
+  AcceleratorTypesList'
     { _atlOrderBy = Nothing
     , _atlProject = pAtlProject_
     , _atlZone = pAtlZone_
@@ -103,6 +106,7 @@
     , _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of addresses.
 --
 -- /See:/ 'addressesAggregatedList' smart constructor.
-data AddressesAggregatedList = AddressesAggregatedList'
+data AddressesAggregatedList =
+  AddressesAggregatedList'
     { _aalOrderBy    :: !(Maybe Text)
     , _aalProject    :: !Text
     , _aalFilter     :: !(Maybe Text)
     , _aalPageToken  :: !(Maybe Text)
     , _aalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddressesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'aalProject'
     -> AddressesAggregatedList
 addressesAggregatedList pAalProject_ =
-    AddressesAggregatedList'
+  AddressesAggregatedList'
     { _aalOrderBy = Nothing
     , _aalProject = pAalProject_
     , _aalFilter = Nothing
     , _aalPageToken = Nothing
     , _aalMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified address resource.
 --
 -- /See:/ 'addressesDelete' smart constructor.
-data AddressesDelete = AddressesDelete'
+data AddressesDelete =
+  AddressesDelete'
     { _adddRequestId :: !(Maybe Text)
     , _adddProject   :: !Text
     , _adddAddress   :: !Text
     , _adddRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'adddRegion'
     -> AddressesDelete
 addressesDelete pAdddProject_ pAdddAddress_ pAdddRegion_ =
-    AddressesDelete'
+  AddressesDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Get.hs b/gen/Network/Google/Resource/Compute/Addresses/Get.hs
--- a/gen/Network/Google/Resource/Compute/Addresses/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Addresses/Get.hs
@@ -57,12 +57,15 @@
 -- | Returns the specified address resource.
 --
 -- /See:/ 'addressesGet' smart constructor.
-data AddressesGet = AddressesGet'
+data AddressesGet =
+  AddressesGet'
     { _addProject :: !Text
     , _addAddress :: !Text
     , _addRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddressesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'addRegion'
     -> AddressesGet
 addressesGet pAddProject_ pAddAddress_ pAddRegion_ =
-    AddressesGet'
+  AddressesGet'
     { _addProject = pAddProject_
     , _addAddress = pAddAddress_
     , _addRegion = pAddRegion_
     }
+
 
 -- | Project ID for this request.
 addProject :: Lens' AddressesGet Text
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
@@ -61,13 +61,16 @@
 -- included in the request.
 --
 -- /See:/ 'addressesInsert' smart constructor.
-data AddressesInsert = AddressesInsert'
+data AddressesInsert =
+  AddressesInsert'
     { _aiRequestId :: !(Maybe Text)
     , _aiProject   :: !Text
     , _aiPayload   :: !Address
     , _aiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'aiRegion'
     -> AddressesInsert
 addressesInsert pAiProject_ pAiPayload_ pAiRegion_ =
-    AddressesInsert'
+  AddressesInsert'
     { _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
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
@@ -63,15 +63,18 @@
 -- | Retrieves a list of addresses contained within the specified region.
 --
 -- /See:/ 'addressesList' smart constructor.
-data AddressesList = AddressesList'
+data AddressesList =
+  AddressesList'
     { _alOrderBy    :: !(Maybe Text)
     , _alProject    :: !Text
     , _alFilter     :: !(Maybe Text)
     , _alRegion     :: !Text
     , _alPageToken  :: !(Maybe Text)
     , _alMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddressesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'alRegion'
     -> AddressesList
 addressesList pAlProject_ pAlRegion_ =
-    AddressesList'
+  AddressesList'
     { _alOrderBy = Nothing
     , _alProject = pAlProject_
     , _alFilter = Nothing
@@ -100,6 +103,7 @@
     , _alPageToken = Nothing
     , _alMaxResults = 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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of autoscalers.
 --
 -- /See:/ 'autoscalersAggregatedList' smart constructor.
-data AutoscalersAggregatedList = AutoscalersAggregatedList'
+data AutoscalersAggregatedList =
+  AutoscalersAggregatedList'
     { _autOrderBy    :: !(Maybe Text)
     , _autProject    :: !Text
     , _autFilter     :: !(Maybe Text)
     , _autPageToken  :: !(Maybe Text)
     , _autMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AutoscalersAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'autProject'
     -> AutoscalersAggregatedList
 autoscalersAggregatedList pAutProject_ =
-    AutoscalersAggregatedList'
+  AutoscalersAggregatedList'
     { _autOrderBy = Nothing
     , _autProject = pAutProject_
     , _autFilter = Nothing
     , _autPageToken = Nothing
     , _autMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified autoscaler.
 --
 -- /See:/ 'autoscalersDelete' smart constructor.
-data AutoscalersDelete = AutoscalersDelete'
+data AutoscalersDelete =
+  AutoscalersDelete'
     { _adRequestId  :: !(Maybe Text)
     , _adProject    :: !Text
     , _adZone       :: !Text
     , _adAutoscaler :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AutoscalersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'adAutoscaler'
     -> AutoscalersDelete
 autoscalersDelete pAdProject_ pAdZone_ pAdAutoscaler_ =
-    AutoscalersDelete'
+  AutoscalersDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- autoscalers by making a list() request.
 --
 -- /See:/ 'autoscalersGet' smart constructor.
-data AutoscalersGet = AutoscalersGet'
+data AutoscalersGet =
+  AutoscalersGet'
     { _agProject    :: !Text
     , _agZone       :: !Text
     , _agAutoscaler :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AutoscalersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'agAutoscaler'
     -> AutoscalersGet
 autoscalersGet pAgProject_ pAgZone_ pAgAutoscaler_ =
-    AutoscalersGet'
+  AutoscalersGet'
     { _agProject = pAgProject_
     , _agZone = pAgZone_
     , _agAutoscaler = pAgAutoscaler_
     }
+
 
 -- | Project ID for this request.
 agProject :: Lens' AutoscalersGet Text
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
@@ -61,13 +61,16 @@
 -- in the request.
 --
 -- /See:/ 'autoscalersInsert' smart constructor.
-data AutoscalersInsert = AutoscalersInsert'
+data AutoscalersInsert =
+  AutoscalersInsert'
     { _aiiRequestId :: !(Maybe Text)
     , _aiiProject   :: !Text
     , _aiiZone      :: !Text
     , _aiiPayload   :: !Autoscaler
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Autoscaler -- ^ 'aiiPayload'
     -> AutoscalersInsert
 autoscalersInsert pAiiProject_ pAiiZone_ pAiiPayload_ =
-    AutoscalersInsert'
+  AutoscalersInsert'
     { _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
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
@@ -64,15 +64,18 @@
 -- | Retrieves a list of autoscalers contained within the specified zone.
 --
 -- /See:/ 'autoscalersList' smart constructor.
-data AutoscalersList = AutoscalersList'
+data AutoscalersList =
+  AutoscalersList'
     { _aOrderBy    :: !(Maybe Text)
     , _aProject    :: !Text
     , _aZone       :: !Text
     , _aFilter     :: !(Maybe Text)
     , _aPageToken  :: !(Maybe Text)
     , _aMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AutoscalersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'aZone'
     -> AutoscalersList
 autoscalersList pAProject_ pAZone_ =
-    AutoscalersList'
+  AutoscalersList'
     { _aOrderBy = Nothing
     , _aProject = pAProject_
     , _aZone = pAZone_
@@ -101,6 +104,7 @@
     , _aPageToken = Nothing
     , _aMaxResults = 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
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
@@ -65,14 +65,17 @@
 -- merge patch format and processing rules.
 --
 -- /See:/ 'autoscalersPatch' smart constructor.
-data AutoscalersPatch = AutoscalersPatch'
+data AutoscalersPatch =
+  AutoscalersPatch'
     { _apRequestId  :: !(Maybe Text)
     , _apProject    :: !Text
     , _apZone       :: !Text
     , _apPayload    :: !Autoscaler
     , _apAutoscaler :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -92,13 +95,14 @@
     -> Autoscaler -- ^ 'apPayload'
     -> AutoscalersPatch
 autoscalersPatch pApProject_ pApZone_ pApPayload_ =
-    AutoscalersPatch'
+  AutoscalersPatch'
     { _apRequestId = Nothing
     , _apProject = pApProject_
     , _apZone = pApZone_
     , _apPayload = pApPayload_
     , _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
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
@@ -63,14 +63,17 @@
 -- in the request.
 --
 -- /See:/ 'autoscalersUpdate' smart constructor.
-data AutoscalersUpdate = AutoscalersUpdate'
+data AutoscalersUpdate =
+  AutoscalersUpdate'
     { _auRequestId  :: !(Maybe Text)
     , _auProject    :: !Text
     , _auZone       :: !Text
     , _auPayload    :: !Autoscaler
     , _auAutoscaler :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AutoscalersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,13 +93,14 @@
     -> Autoscaler -- ^ 'auPayload'
     -> AutoscalersUpdate
 autoscalersUpdate pAuProject_ pAuZone_ pAuPayload_ =
-    AutoscalersUpdate'
+  AutoscalersUpdate'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/AddSignedURLKey.hs
@@ -63,13 +63,16 @@
 -- bucket.
 --
 -- /See:/ 'backendBucketsAddSignedURLKey' smart constructor.
-data BackendBucketsAddSignedURLKey = BackendBucketsAddSignedURLKey'
+data BackendBucketsAddSignedURLKey =
+  BackendBucketsAddSignedURLKey'
     { _bbasukRequestId     :: !(Maybe Text)
     , _bbasukBackendBucket :: !Text
     , _bbasukProject       :: !Text
     , _bbasukPayload       :: !SignedURLKey
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> SignedURLKey -- ^ 'bbasukPayload'
     -> BackendBucketsAddSignedURLKey
 backendBucketsAddSignedURLKey pBbasukBackendBucket_ pBbasukProject_ pBbasukPayload_ =
-    BackendBucketsAddSignedURLKey'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified BackendBucket resource.
 --
 -- /See:/ 'backendBucketsDelete' smart constructor.
-data BackendBucketsDelete = BackendBucketsDelete'
+data BackendBucketsDelete =
+  BackendBucketsDelete'
     { _bbdRequestId     :: !(Maybe Text)
     , _bbdBackendBucket :: !Text
     , _bbdProject       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'bbdProject'
     -> BackendBucketsDelete
 backendBucketsDelete pBbdBackendBucket_ pBbdProject_ =
-    BackendBucketsDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/DeleteSignedURLKey.hs
@@ -62,13 +62,16 @@
 -- bucket.
 --
 -- /See:/ 'backendBucketsDeleteSignedURLKey' smart constructor.
-data BackendBucketsDeleteSignedURLKey = BackendBucketsDeleteSignedURLKey'
+data BackendBucketsDeleteSignedURLKey =
+  BackendBucketsDeleteSignedURLKey'
     { _bbdsukRequestId     :: !(Maybe Text)
     , _bbdsukBackendBucket :: !Text
     , _bbdsukProject       :: !Text
     , _bbdsukKeyName       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'bbdsukKeyName'
     -> BackendBucketsDeleteSignedURLKey
 backendBucketsDeleteSignedURLKey pBbdsukBackendBucket_ pBbdsukProject_ pBbdsukKeyName_ =
-    BackendBucketsDeleteSignedURLKey'
+  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
@@ -128,7 +132,8 @@
       (\ s a -> s{_bbdsukKeyName = a})
 
 instance GoogleRequest
-         BackendBucketsDeleteSignedURLKey where
+           BackendBucketsDeleteSignedURLKey
+         where
         type Rs BackendBucketsDeleteSignedURLKey = Operation
         type Scopes BackendBucketsDeleteSignedURLKey =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Get.hs
@@ -57,11 +57,14 @@
 -- backend buckets by making a list() request.
 --
 -- /See:/ 'backendBucketsGet' smart constructor.
-data BackendBucketsGet = BackendBucketsGet'
+data BackendBucketsGet =
+  BackendBucketsGet'
     { _bbgBackendBucket :: !Text
     , _bbgProject       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'bbgProject'
     -> BackendBucketsGet
 backendBucketsGet pBbgBackendBucket_ pBbgProject_ =
-    BackendBucketsGet'
-    { _bbgBackendBucket = pBbgBackendBucket_
-    , _bbgProject = pBbgProject_
-    }
+  BackendBucketsGet'
+    {_bbgBackendBucket = pBbgBackendBucket_, _bbgProject = pBbgProject_}
+
 
 -- | Name of the BackendBucket resource to return.
 bbgBackendBucket :: Lens' BackendBucketsGet Text
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Insert.hs
@@ -60,12 +60,15 @@
 -- included in the request.
 --
 -- /See:/ 'backendBucketsInsert' smart constructor.
-data BackendBucketsInsert = BackendBucketsInsert'
+data BackendBucketsInsert =
+  BackendBucketsInsert'
     { _bbiRequestId :: !(Maybe Text)
     , _bbiProject   :: !Text
     , _bbiPayload   :: !BackendBucket
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> BackendBucket -- ^ 'bbiPayload'
     -> BackendBucketsInsert
 backendBucketsInsert pBbiProject_ pBbiPayload_ =
-    BackendBucketsInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/List.hs
@@ -64,14 +64,17 @@
 -- project.
 --
 -- /See:/ 'backendBucketsList' smart constructor.
-data BackendBucketsList = BackendBucketsList'
+data BackendBucketsList =
+  BackendBucketsList'
     { _bblOrderBy    :: !(Maybe Text)
     , _bblProject    :: !Text
     , _bblFilter     :: !(Maybe Text)
     , _bblPageToken  :: !(Maybe Text)
     , _bblMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'bblProject'
     -> BackendBucketsList
 backendBucketsList pBblProject_ =
-    BackendBucketsList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Patch.hs
@@ -64,13 +64,16 @@
 -- merge patch format and processing rules.
 --
 -- /See:/ 'backendBucketsPatch' smart constructor.
-data BackendBucketsPatch = BackendBucketsPatch'
+data BackendBucketsPatch =
+  BackendBucketsPatch'
     { _bbpRequestId     :: !(Maybe Text)
     , _bbpBackendBucket :: !Text
     , _bbpProject       :: !Text
     , _bbpPayload       :: !BackendBucket
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> BackendBucket -- ^ 'bbpPayload'
     -> BackendBucketsPatch
 backendBucketsPatch pBbpBackendBucket_ pBbpProject_ pBbpPayload_ =
-    BackendBucketsPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs b/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs
--- a/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs
+++ b/gen/Network/Google/Resource/Compute/BackendBuckets/Update.hs
@@ -62,13 +62,16 @@
 -- the request.
 --
 -- /See:/ 'backendBucketsUpdate' smart constructor.
-data BackendBucketsUpdate = BackendBucketsUpdate'
+data BackendBucketsUpdate =
+  BackendBucketsUpdate'
     { _bbuRequestId     :: !(Maybe Text)
     , _bbuBackendBucket :: !Text
     , _bbuProject       :: !Text
     , _bbuPayload       :: !BackendBucket
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> BackendBucket -- ^ 'bbuPayload'
     -> BackendBucketsUpdate
 backendBucketsUpdate pBbuBackendBucket_ pBbuProject_ pBbuPayload_ =
-    BackendBucketsUpdate'
+  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
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/AddSignedURLKey.hs
@@ -63,13 +63,16 @@
 -- service.
 --
 -- /See:/ 'backendServicesAddSignedURLKey' smart constructor.
-data BackendServicesAddSignedURLKey = BackendServicesAddSignedURLKey'
+data BackendServicesAddSignedURLKey =
+  BackendServicesAddSignedURLKey'
     { _bsasukRequestId      :: !(Maybe Text)
     , _bsasukProject        :: !Text
     , _bsasukPayload        :: !SignedURLKey
     , _bsasukBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'bsasukBackendService'
     -> BackendServicesAddSignedURLKey
 backendServicesAddSignedURLKey pBsasukProject_ pBsasukPayload_ pBsasukBackendService_ =
-    BackendServicesAddSignedURLKey'
+  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
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
@@ -64,14 +64,17 @@
 -- available to the specified project.
 --
 -- /See:/ 'backendServicesAggregatedList' smart constructor.
-data BackendServicesAggregatedList = BackendServicesAggregatedList'
+data BackendServicesAggregatedList =
+  BackendServicesAggregatedList'
     { _bsalOrderBy    :: !(Maybe Text)
     , _bsalProject    :: !Text
     , _bsalFilter     :: !(Maybe Text)
     , _bsalPageToken  :: !(Maybe Text)
     , _bsalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'bsalProject'
     -> BackendServicesAggregatedList
 backendServicesAggregatedList pBsalProject_ =
-    BackendServicesAggregatedList'
+  BackendServicesAggregatedList'
     { _bsalOrderBy = Nothing
     , _bsalProject = pBsalProject_
     , _bsalFilter = Nothing
     , _bsalPageToken = Nothing
     , _bsalMaxResults = 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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified BackendService resource.
 --
 -- /See:/ 'backendServicesDelete' smart constructor.
-data BackendServicesDelete = BackendServicesDelete'
+data BackendServicesDelete =
+  BackendServicesDelete'
     { _bsdRequestId      :: !(Maybe Text)
     , _bsdProject        :: !Text
     , _bsdBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'bsdBackendService'
     -> BackendServicesDelete
 backendServicesDelete pBsdProject_ pBsdBackendService_ =
-    BackendServicesDelete'
+  BackendServicesDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs b/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/DeleteSignedURLKey.hs
@@ -62,13 +62,16 @@
 -- service.
 --
 -- /See:/ 'backendServicesDeleteSignedURLKey' smart constructor.
-data BackendServicesDeleteSignedURLKey = BackendServicesDeleteSignedURLKey'
+data BackendServicesDeleteSignedURLKey =
+  BackendServicesDeleteSignedURLKey'
     { _bsdsukRequestId      :: !(Maybe Text)
     , _bsdsukProject        :: !Text
     , _bsdsukKeyName        :: !Text
     , _bsdsukBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'bsdsukBackendService'
     -> BackendServicesDeleteSignedURLKey
 backendServicesDeleteSignedURLKey pBsdsukProject_ pBsdsukKeyName_ pBsdsukBackendService_ =
-    BackendServicesDeleteSignedURLKey'
+  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
@@ -128,7 +132,8 @@
       (\ s a -> s{_bsdsukBackendService = a})
 
 instance GoogleRequest
-         BackendServicesDeleteSignedURLKey where
+           BackendServicesDeleteSignedURLKey
+         where
         type Rs BackendServicesDeleteSignedURLKey = Operation
         type Scopes BackendServicesDeleteSignedURLKey =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -58,11 +58,14 @@
 -- backend services.
 --
 -- /See:/ 'backendServicesGet' smart constructor.
-data BackendServicesGet = BackendServicesGet'
+data BackendServicesGet =
+  BackendServicesGet'
     { _bsgProject        :: !Text
     , _bsgBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'bsgBackendService'
     -> BackendServicesGet
 backendServicesGet pBsgProject_ pBsgBackendService_ =
-    BackendServicesGet'
-    { _bsgProject = pBsgProject_
-    , _bsgBackendService = pBsgBackendService_
-    }
+  BackendServicesGet'
+    {_bsgProject = pBsgProject_, _bsgBackendService = pBsgBackendService_}
+
 
 -- | Project ID for this request.
 bsgProject :: Lens' BackendServicesGet Text
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs b/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs
@@ -59,12 +59,15 @@
 -- | Gets the most recent health check results for this BackendService.
 --
 -- /See:/ 'backendServicesGetHealth' smart constructor.
-data BackendServicesGetHealth = BackendServicesGetHealth'
+data BackendServicesGetHealth =
+  BackendServicesGetHealth'
     { _bsghProject        :: !Text
     , _bsghPayload        :: !ResourceGroupReference
     , _bsghBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesGetHealth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'bsghBackendService'
     -> BackendServicesGetHealth
 backendServicesGetHealth pBsghProject_ pBsghPayload_ pBsghBackendService_ =
-    BackendServicesGetHealth'
+  BackendServicesGetHealth'
     { _bsghProject = pBsghProject_
     , _bsghPayload = pBsghPayload_
     , _bsghBackendService = pBsghBackendService_
     }
+
 
 bsghProject :: Lens' BackendServicesGetHealth Text
 bsghProject
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
@@ -64,12 +64,15 @@
 -- Restrictions and Guidelines for more information.
 --
 -- /See:/ 'backendServicesInsert' smart constructor.
-data BackendServicesInsert = BackendServicesInsert'
+data BackendServicesInsert =
+  BackendServicesInsert'
     { _bsiRequestId :: !(Maybe Text)
     , _bsiProject   :: !Text
     , _bsiPayload   :: !BackendService
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -84,11 +87,12 @@
     -> BackendService -- ^ 'bsiPayload'
     -> BackendServicesInsert
 backendServicesInsert pBsiProject_ pBsiPayload_ =
-    BackendServicesInsert'
+  BackendServicesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'backendServicesList' smart constructor.
-data BackendServicesList = BackendServicesList'
+data BackendServicesList =
+  BackendServicesList'
     { _bslOrderBy    :: !(Maybe Text)
     , _bslProject    :: !Text
     , _bslFilter     :: !(Maybe Text)
     , _bslPageToken  :: !(Maybe Text)
     , _bslMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'bslProject'
     -> BackendServicesList
 backendServicesList pBslProject_ =
-    BackendServicesList'
+  BackendServicesList'
     { _bslOrderBy = Nothing
     , _bslProject = pBslProject_
     , _bslFilter = Nothing
     , _bslPageToken = Nothing
     , _bslMaxResults = 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
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
@@ -68,13 +68,16 @@
 -- JSON merge patch format and processing rules.
 --
 -- /See:/ 'backendServicesPatch' smart constructor.
-data BackendServicesPatch = BackendServicesPatch'
+data BackendServicesPatch =
+  BackendServicesPatch'
     { _bspRequestId      :: !(Maybe Text)
     , _bspProject        :: !Text
     , _bspPayload        :: !BackendService
     , _bspBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,12 +95,13 @@
     -> Text -- ^ 'bspBackendService'
     -> BackendServicesPatch
 backendServicesPatch pBspProject_ pBspPayload_ pBspBackendService_ =
-    BackendServicesPatch'
+  BackendServicesPatch'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs b/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs
--- a/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/BackendServices/SetSecurityPolicy.hs
@@ -61,13 +61,16 @@
 -- | Sets the security policy for the specified backend service.
 --
 -- /See:/ 'backendServicesSetSecurityPolicy' smart constructor.
-data BackendServicesSetSecurityPolicy = BackendServicesSetSecurityPolicy'
+data BackendServicesSetSecurityPolicy =
+  BackendServicesSetSecurityPolicy'
     { _bssspRequestId      :: !(Maybe Text)
     , _bssspProject        :: !Text
     , _bssspPayload        :: !SecurityPolicyReference
     , _bssspBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,13 +88,14 @@
     -> Text -- ^ 'bssspBackendService'
     -> BackendServicesSetSecurityPolicy
 backendServicesSetSecurityPolicy pBssspProject_ pBssspPayload_ pBssspBackendService_ =
-    BackendServicesSetSecurityPolicy'
+  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
@@ -125,7 +129,8 @@
       (\ s a -> s{_bssspBackendService = a})
 
 instance GoogleRequest
-         BackendServicesSetSecurityPolicy where
+           BackendServicesSetSecurityPolicy
+         where
         type Rs BackendServicesSetSecurityPolicy = Operation
         type Scopes BackendServicesSetSecurityPolicy =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -66,13 +66,16 @@
 -- for more information.
 --
 -- /See:/ 'backendServicesUpdate' smart constructor.
-data BackendServicesUpdate = BackendServicesUpdate'
+data BackendServicesUpdate =
+  BackendServicesUpdate'
     { _bsuRequestId      :: !(Maybe Text)
     , _bsuProject        :: !Text
     , _bsuPayload        :: !BackendService
     , _bsuBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'BackendServicesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,12 +93,13 @@
     -> Text -- ^ 'bsuBackendService'
     -> BackendServicesUpdate
 backendServicesUpdate pBsuProject_ pBsuPayload_ pBsuBackendService_ =
-    BackendServicesUpdate'
+  BackendServicesUpdate'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of disk types.
 --
 -- /See:/ 'diskTypesAggregatedList' smart constructor.
-data DiskTypesAggregatedList = DiskTypesAggregatedList'
+data DiskTypesAggregatedList =
+  DiskTypesAggregatedList'
     { _dtalOrderBy    :: !(Maybe Text)
     , _dtalProject    :: !Text
     , _dtalFilter     :: !(Maybe Text)
     , _dtalPageToken  :: !(Maybe Text)
     , _dtalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DiskTypesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'dtalProject'
     -> DiskTypesAggregatedList
 diskTypesAggregatedList pDtalProject_ =
-    DiskTypesAggregatedList'
+  DiskTypesAggregatedList'
     { _dtalOrderBy = Nothing
     , _dtalProject = pDtalProject_
     , _dtalFilter = Nothing
     , _dtalPageToken = Nothing
     , _dtalMaxResults = 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
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
@@ -59,12 +59,15 @@
 -- making a list() request.
 --
 -- /See:/ 'diskTypesGet' smart constructor.
-data DiskTypesGet = DiskTypesGet'
+data DiskTypesGet =
+  DiskTypesGet'
     { _dtgProject  :: !Text
     , _dtgZone     :: !Text
     , _dtgDiskType :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DiskTypesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'dtgDiskType'
     -> DiskTypesGet
 diskTypesGet pDtgProject_ pDtgZone_ pDtgDiskType_ =
-    DiskTypesGet'
+  DiskTypesGet'
     { _dtgProject = pDtgProject_
     , _dtgZone = pDtgZone_
     , _dtgDiskType = pDtgDiskType_
     }
+
 
 -- | Project ID for this request.
 dtgProject :: Lens' DiskTypesGet Text
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
@@ -63,15 +63,18 @@
 -- | Retrieves a list of disk types available to the specified project.
 --
 -- /See:/ 'diskTypesList' smart constructor.
-data DiskTypesList = DiskTypesList'
+data DiskTypesList =
+  DiskTypesList'
     { _dtlOrderBy    :: !(Maybe Text)
     , _dtlProject    :: !Text
     , _dtlZone       :: !Text
     , _dtlFilter     :: !(Maybe Text)
     , _dtlPageToken  :: !(Maybe Text)
     , _dtlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DiskTypesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'dtlZone'
     -> DiskTypesList
 diskTypesList pDtlProject_ pDtlZone_ =
-    DiskTypesList'
+  DiskTypesList'
     { _dtlOrderBy = Nothing
     , _dtlProject = pDtlProject_
     , _dtlZone = pDtlZone_
@@ -100,6 +103,7 @@
     , _dtlPageToken = Nothing
     , _dtlMaxResults = 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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of persistent disks.
 --
 -- /See:/ 'disksAggregatedList' smart constructor.
-data DisksAggregatedList = DisksAggregatedList'
+data DisksAggregatedList =
+  DisksAggregatedList'
     { _dalOrderBy    :: !(Maybe Text)
     , _dalProject    :: !Text
     , _dalFilter     :: !(Maybe Text)
     , _dalPageToken  :: !(Maybe Text)
     , _dalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisksAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'dalProject'
     -> DisksAggregatedList
 disksAggregatedList pDalProject_ =
-    DisksAggregatedList'
+  DisksAggregatedList'
     { _dalOrderBy = Nothing
     , _dalProject = pDalProject_
     , _dalFilter = Nothing
     , _dalPageToken = Nothing
     , _dalMaxResults = 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
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
@@ -64,15 +64,18 @@
 -- | Creates a snapshot of a specified persistent disk.
 --
 -- /See:/ 'disksCreateSnapshot' smart constructor.
-data DisksCreateSnapshot = DisksCreateSnapshot'
+data DisksCreateSnapshot =
+  DisksCreateSnapshot'
     { _dcsGuestFlush :: !(Maybe Bool)
     , _dcsRequestId  :: !(Maybe Text)
     , _dcsProject    :: !Text
     , _dcsDisk       :: !Text
     , _dcsZone       :: !Text
     , _dcsPayload    :: !Snapshot
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -95,7 +98,7 @@
     -> Snapshot -- ^ 'dcsPayload'
     -> DisksCreateSnapshot
 disksCreateSnapshot pDcsProject_ pDcsDisk_ pDcsZone_ pDcsPayload_ =
-    DisksCreateSnapshot'
+  DisksCreateSnapshot'
     { _dcsGuestFlush = Nothing
     , _dcsRequestId = Nothing
     , _dcsProject = pDcsProject_
@@ -103,6 +106,7 @@
     , _dcsZone = pDcsZone_
     , _dcsPayload = pDcsPayload_
     }
+
 
 dcsGuestFlush :: Lens' DisksCreateSnapshot (Maybe Bool)
 dcsGuestFlush
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
@@ -65,13 +65,16 @@
 -- delete snapshots.
 --
 -- /See:/ 'disksDelete' smart constructor.
-data DisksDelete = DisksDelete'
+data DisksDelete =
+  DisksDelete'
     { _ddRequestId :: !(Maybe Text)
     , _ddProject   :: !Text
     , _ddDisk      :: !Text
     , _ddZone      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,12 +92,13 @@
     -> Text -- ^ 'ddZone'
     -> DisksDelete
 disksDelete pDdProject_ pDdDisk_ pDdZone_ =
-    DisksDelete'
+  DisksDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- disks by making a list() request.
 --
 -- /See:/ 'disksGet' smart constructor.
-data DisksGet = DisksGet'
+data DisksGet =
+  DisksGet'
     { _dgProject :: !Text
     , _dgDisk    :: !Text
     , _dgZone    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,8 @@
     -> Text -- ^ 'dgZone'
     -> DisksGet
 disksGet pDgProject_ pDgDisk_ pDgZone_ =
-    DisksGet'
-    { _dgProject = pDgProject_
-    , _dgDisk = pDgDisk_
-    , _dgZone = pDgZone_
-    }
+  DisksGet' {_dgProject = pDgProject_, _dgDisk = pDgDisk_, _dgZone = pDgZone_}
+
 
 -- | Project ID for this request.
 dgProject :: Lens' DisksGet Text
diff --git a/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/GetIAMPolicy.hs
@@ -60,12 +60,15 @@
 -- policy or resource exists.
 --
 -- /See:/ 'disksGetIAMPolicy' smart constructor.
-data DisksGetIAMPolicy = DisksGetIAMPolicy'
+data DisksGetIAMPolicy =
+  DisksGetIAMPolicy'
     { _dgipProject  :: !Text
     , _dgipZone     :: !Text
     , _dgipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'dgipResource'
     -> DisksGetIAMPolicy
 disksGetIAMPolicy pDgipProject_ pDgipZone_ pDgipResource_ =
-    DisksGetIAMPolicy'
+  DisksGetIAMPolicy'
     { _dgipProject = pDgipProject_
     , _dgipZone = pDgipZone_
     , _dgipResource = pDgipResource_
     }
+
 
 -- | Project ID for this request.
 dgipProject :: Lens' DisksGetIAMPolicy Text
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
@@ -69,14 +69,17 @@
 -- the sizeGb property.
 --
 -- /See:/ 'disksInsert' smart constructor.
-data DisksInsert = DisksInsert'
+data DisksInsert =
+  DisksInsert'
     { _diRequestId   :: !(Maybe Text)
     , _diSourceImage :: !(Maybe Text)
     , _diProject     :: !Text
     , _diZone        :: !Text
     , _diPayload     :: !Disk
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisksInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,13 +99,14 @@
     -> Disk -- ^ 'diPayload'
     -> DisksInsert
 disksInsert pDiProject_ pDiZone_ pDiPayload_ =
-    DisksInsert'
+  DisksInsert'
     { _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
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
@@ -65,15 +65,18 @@
 -- zone.
 --
 -- /See:/ 'disksList' smart constructor.
-data DisksList = DisksList'
+data DisksList =
+  DisksList'
     { _dlOrderBy    :: !(Maybe Text)
     , _dlProject    :: !Text
     , _dlZone       :: !Text
     , _dlFilter     :: !(Maybe Text)
     , _dlPageToken  :: !(Maybe Text)
     , _dlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'dlZone'
     -> DisksList
 disksList pDlProject_ pDlZone_ =
-    DisksList'
+  DisksList'
     { _dlOrderBy = Nothing
     , _dlProject = pDlProject_
     , _dlZone = pDlZone_
@@ -102,6 +105,7 @@
     , _dlPageToken = Nothing
     , _dlMaxResults = 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
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
@@ -65,14 +65,17 @@
 -- the disk.
 --
 -- /See:/ 'disksResize' smart constructor.
-data DisksResize = DisksResize'
+data DisksResize =
+  DisksResize'
     { _drRequestId :: !(Maybe Text)
     , _drProject   :: !Text
     , _drDisk      :: !Text
     , _drZone      :: !Text
     , _drPayload   :: !DisksResizeRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> DisksResizeRequest -- ^ 'drPayload'
     -> DisksResize
 disksResize pDrProject_ pDrDisk_ pDrZone_ pDrPayload_ =
-    DisksResize'
+  DisksResize'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/SetIAMPolicy.hs
@@ -63,13 +63,16 @@
 -- existing policy.
 --
 -- /See:/ 'disksSetIAMPolicy' smart constructor.
-data DisksSetIAMPolicy = DisksSetIAMPolicy'
+data DisksSetIAMPolicy =
+  DisksSetIAMPolicy'
     { _dsipProject  :: !Text
     , _dsipZone     :: !Text
     , _dsipPayload  :: !ZoneSetPolicyRequest
     , _dsipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'dsipResource'
     -> DisksSetIAMPolicy
 disksSetIAMPolicy pDsipProject_ pDsipZone_ pDsipPayload_ pDsipResource_ =
-    DisksSetIAMPolicy'
+  DisksSetIAMPolicy'
     { _dsipProject = pDsipProject_
     , _dsipZone = pDsipZone_
     , _dsipPayload = pDsipPayload_
     , _dsipResource = pDsipResource_
     }
+
 
 -- | Project ID for this request.
 dsipProject :: Lens' DisksSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs b/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs
--- a/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/SetLabels.hs
@@ -65,14 +65,17 @@
 -- Resources documentation.
 --
 -- /See:/ 'disksSetLabels' smart constructor.
-data DisksSetLabels = DisksSetLabels'
+data DisksSetLabels =
+  DisksSetLabels'
     { _dslRequestId :: !(Maybe Text)
     , _dslProject   :: !Text
     , _dslZone      :: !Text
     , _dslPayload   :: !ZoneSetLabelsRequest
     , _dslResource  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'dslResource'
     -> DisksSetLabels
 disksSetLabels pDslProject_ pDslZone_ pDslPayload_ pDslResource_ =
-    DisksSetLabels'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Disks/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'disksTestIAMPermissions' smart constructor.
-data DisksTestIAMPermissions = DisksTestIAMPermissions'
+data DisksTestIAMPermissions =
+  DisksTestIAMPermissions'
     { _dtipProject  :: !Text
     , _dtipZone     :: !Text
     , _dtipPayload  :: !TestPermissionsRequest
     , _dtipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'dtipResource'
     -> DisksTestIAMPermissions
 disksTestIAMPermissions pDtipProject_ pDtipZone_ pDtipPayload_ pDtipResource_ =
-    DisksTestIAMPermissions'
+  DisksTestIAMPermissions'
     { _dtipProject = pDtipProject_
     , _dtipZone = pDtipZone_
     , _dtipPayload = pDtipPayload_
     , _dtipResource = pDtipResource_
     }
+
 
 -- | Project ID for this request.
 dtipProject :: Lens' DisksTestIAMPermissions Text
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified firewall.
 --
 -- /See:/ 'firewallsDelete' smart constructor.
-data FirewallsDelete = FirewallsDelete'
+data FirewallsDelete =
+  FirewallsDelete'
     { _fdRequestId :: !(Maybe Text)
     , _fdProject   :: !Text
     , _fdFirewall  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'fdFirewall'
     -> FirewallsDelete
 firewallsDelete pFdProject_ pFdFirewall_ =
-    FirewallsDelete'
+  FirewallsDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Get.hs b/gen/Network/Google/Resource/Compute/Firewalls/Get.hs
--- a/gen/Network/Google/Resource/Compute/Firewalls/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Get.hs
@@ -55,11 +55,14 @@
 -- | Returns the specified firewall.
 --
 -- /See:/ 'firewallsGet' smart constructor.
-data FirewallsGet = FirewallsGet'
+data FirewallsGet =
+  FirewallsGet'
     { _fgProject  :: !Text
     , _fgFirewall :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FirewallsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'fgFirewall'
     -> FirewallsGet
 firewallsGet pFgProject_ pFgFirewall_ =
-    FirewallsGet'
-    { _fgProject = pFgProject_
-    , _fgFirewall = pFgFirewall_
-    }
+  FirewallsGet' {_fgProject = pFgProject_, _fgFirewall = pFgFirewall_}
+
 
 -- | Project ID for this request.
 fgProject :: Lens' FirewallsGet Text
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
@@ -59,12 +59,15 @@
 -- in the request.
 --
 -- /See:/ 'firewallsInsert' smart constructor.
-data FirewallsInsert = FirewallsInsert'
+data FirewallsInsert =
+  FirewallsInsert'
     { _fiRequestId :: !(Maybe Text)
     , _fiProject   :: !Text
     , _fiPayload   :: !Firewall
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,9 @@
     -> Firewall -- ^ 'fiPayload'
     -> FirewallsInsert
 firewallsInsert pFiProject_ pFiPayload_ =
-    FirewallsInsert'
-    { _fiRequestId = Nothing
-    , _fiProject = pFiProject_
-    , _fiPayload = pFiPayload_
-    }
+  FirewallsInsert'
+    {_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
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
@@ -61,14 +61,17 @@
 -- | Retrieves the list of firewall rules available to the specified project.
 --
 -- /See:/ 'firewallsList' smart constructor.
-data FirewallsList = FirewallsList'
+data FirewallsList =
+  FirewallsList'
     { _flOrderBy    :: !(Maybe Text)
     , _flProject    :: !Text
     , _flFilter     :: !(Maybe Text)
     , _flPageToken  :: !(Maybe Text)
     , _flMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FirewallsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     :: Text -- ^ 'flProject'
     -> FirewallsList
 firewallsList pFlProject_ =
-    FirewallsList'
+  FirewallsList'
     { _flOrderBy = Nothing
     , _flProject = pFlProject_
     , _flFilter = Nothing
     , _flPageToken = Nothing
     , _flMaxResults = 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
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
@@ -63,13 +63,16 @@
 -- patch format and processing rules.
 --
 -- /See:/ 'firewallsPatch' smart constructor.
-data FirewallsPatch = FirewallsPatch'
+data FirewallsPatch =
+  FirewallsPatch'
     { _fpRequestId :: !(Maybe Text)
     , _fpProject   :: !Text
     , _fpPayload   :: !Firewall
     , _fpFirewall  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'fpFirewall'
     -> FirewallsPatch
 firewallsPatch pFpProject_ pFpPayload_ pFpFirewall_ =
-    FirewallsPatch'
+  FirewallsPatch'
     { _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
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
@@ -63,13 +63,16 @@
 -- rule: allowed, description, sourceRanges, sourceTags, targetTags.
 --
 -- /See:/ 'firewallsUpdate' smart constructor.
-data FirewallsUpdate = FirewallsUpdate'
+data FirewallsUpdate =
+  FirewallsUpdate'
     { _fuRequestId :: !(Maybe Text)
     , _fuProject   :: !Text
     , _fuPayload   :: !Firewall
     , _fuFirewall  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'fuFirewall'
     -> FirewallsUpdate
 firewallsUpdate pFuProject_ pFuPayload_ pFuFirewall_ =
-    FirewallsUpdate'
+  FirewallsUpdate'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of forwarding rules.
 --
 -- /See:/ 'forwardingRulesAggregatedList' smart constructor.
-data ForwardingRulesAggregatedList = ForwardingRulesAggregatedList'
+data ForwardingRulesAggregatedList =
+  ForwardingRulesAggregatedList'
     { _fralOrderBy    :: !(Maybe Text)
     , _fralProject    :: !Text
     , _fralFilter     :: !(Maybe Text)
     , _fralPageToken  :: !(Maybe Text)
     , _fralMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ForwardingRulesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'fralProject'
     -> ForwardingRulesAggregatedList
 forwardingRulesAggregatedList pFralProject_ =
-    ForwardingRulesAggregatedList'
+  ForwardingRulesAggregatedList'
     { _fralOrderBy = Nothing
     , _fralProject = pFralProject_
     , _fralFilter = Nothing
     , _fralPageToken = Nothing
     , _fralMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified ForwardingRule resource.
 --
 -- /See:/ 'forwardingRulesDelete' smart constructor.
-data ForwardingRulesDelete = ForwardingRulesDelete'
+data ForwardingRulesDelete =
+  ForwardingRulesDelete'
     { _frdRequestId      :: !(Maybe Text)
     , _frdProject        :: !Text
     , _frdForwardingRule :: !Text
     , _frdRegion         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ForwardingRulesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'frdRegion'
     -> ForwardingRulesDelete
 forwardingRulesDelete pFrdProject_ pFrdForwardingRule_ pFrdRegion_ =
-    ForwardingRulesDelete'
+  ForwardingRulesDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs
--- a/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs
@@ -58,12 +58,15 @@
 -- | Returns the specified ForwardingRule resource.
 --
 -- /See:/ 'forwardingRulesGet' smart constructor.
-data ForwardingRulesGet = ForwardingRulesGet'
+data ForwardingRulesGet =
+  ForwardingRulesGet'
     { _frgProject        :: !Text
     , _frgForwardingRule :: !Text
     , _frgRegion         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ForwardingRulesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'frgRegion'
     -> ForwardingRulesGet
 forwardingRulesGet pFrgProject_ pFrgForwardingRule_ pFrgRegion_ =
-    ForwardingRulesGet'
+  ForwardingRulesGet'
     { _frgProject = pFrgProject_
     , _frgForwardingRule = pFrgForwardingRule_
     , _frgRegion = pFrgRegion_
     }
+
 
 -- | Project ID for this request.
 frgProject :: Lens' ForwardingRulesGet Text
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
@@ -62,13 +62,16 @@
 -- using the data included in the request.
 --
 -- /See:/ 'forwardingRulesInsert' smart constructor.
-data ForwardingRulesInsert = ForwardingRulesInsert'
+data ForwardingRulesInsert =
+  ForwardingRulesInsert'
     { _friRequestId :: !(Maybe Text)
     , _friProject   :: !Text
     , _friPayload   :: !ForwardingRule
     , _friRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'friRegion'
     -> ForwardingRulesInsert
 forwardingRulesInsert pFriProject_ pFriPayload_ pFriRegion_ =
-    ForwardingRulesInsert'
+  ForwardingRulesInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- project and region.
 --
 -- /See:/ 'forwardingRulesList' smart constructor.
-data ForwardingRulesList = ForwardingRulesList'
+data ForwardingRulesList =
+  ForwardingRulesList'
     { _frlOrderBy    :: !(Maybe Text)
     , _frlProject    :: !Text
     , _frlFilter     :: !(Maybe Text)
     , _frlRegion     :: !Text
     , _frlPageToken  :: !(Maybe Text)
     , _frlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ForwardingRulesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'frlRegion'
     -> ForwardingRulesList
 forwardingRulesList pFrlProject_ pFrlRegion_ =
-    ForwardingRulesList'
+  ForwardingRulesList'
     { _frlOrderBy = Nothing
     , _frlProject = pFrlProject_
     , _frlFilter = Nothing
@@ -103,6 +106,7 @@
     , _frlPageToken = Nothing
     , _frlMaxResults = 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
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
@@ -65,14 +65,17 @@
 -- same type as the old target.
 --
 -- /See:/ 'forwardingRulesSetTarget' smart constructor.
-data ForwardingRulesSetTarget = ForwardingRulesSetTarget'
+data ForwardingRulesSetTarget =
+  ForwardingRulesSetTarget'
     { _frstRequestId      :: !(Maybe Text)
     , _frstProject        :: !Text
     , _frstForwardingRule :: !Text
     , _frstPayload        :: !TargetReference
     , _frstRegion         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ForwardingRulesSetTarget' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'frstRegion'
     -> ForwardingRulesSetTarget
 forwardingRulesSetTarget pFrstProject_ pFrstForwardingRule_ pFrstPayload_ pFrstRegion_ =
-    ForwardingRulesSetTarget'
+  ForwardingRulesSetTarget'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified address resource.
 --
 -- /See:/ 'globalAddressesDelete' smart constructor.
-data GlobalAddressesDelete = GlobalAddressesDelete'
+data GlobalAddressesDelete =
+  GlobalAddressesDelete'
     { _gadRequestId :: !(Maybe Text)
     , _gadProject   :: !Text
     , _gadAddress   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'gadAddress'
     -> GlobalAddressesDelete
 globalAddressesDelete pGadProject_ pGadAddress_ =
-    GlobalAddressesDelete'
+  GlobalAddressesDelete'
     { _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
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
@@ -57,11 +57,14 @@
 -- addresses by making a list() request.
 --
 -- /See:/ 'globalAddressesGet' smart constructor.
-data GlobalAddressesGet = GlobalAddressesGet'
+data GlobalAddressesGet =
+  GlobalAddressesGet'
     { _gagProject :: !Text
     , _gagAddress :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalAddressesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'gagAddress'
     -> GlobalAddressesGet
 globalAddressesGet pGagProject_ pGagAddress_ =
-    GlobalAddressesGet'
-    { _gagProject = pGagProject_
-    , _gagAddress = pGagAddress_
-    }
+  GlobalAddressesGet' {_gagProject = pGagProject_, _gagAddress = pGagAddress_}
+
 
 -- | Project ID for this request.
 gagProject :: Lens' GlobalAddressesGet Text
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
@@ -59,12 +59,15 @@
 -- included in the request.
 --
 -- /See:/ 'globalAddressesInsert' smart constructor.
-data GlobalAddressesInsert = GlobalAddressesInsert'
+data GlobalAddressesInsert =
+  GlobalAddressesInsert'
     { _gaiRequestId :: !(Maybe Text)
     , _gaiProject   :: !Text
     , _gaiPayload   :: !Address
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> Address -- ^ 'gaiPayload'
     -> GlobalAddressesInsert
 globalAddressesInsert pGaiProject_ pGaiPayload_ =
-    GlobalAddressesInsert'
+  GlobalAddressesInsert'
     { _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
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
@@ -61,14 +61,17 @@
 -- | Retrieves a list of global addresses.
 --
 -- /See:/ 'globalAddressesList' smart constructor.
-data GlobalAddressesList = GlobalAddressesList'
+data GlobalAddressesList =
+  GlobalAddressesList'
     { _galOrderBy    :: !(Maybe Text)
     , _galProject    :: !Text
     , _galFilter     :: !(Maybe Text)
     , _galPageToken  :: !(Maybe Text)
     , _galMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalAddressesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     :: Text -- ^ 'galProject'
     -> GlobalAddressesList
 globalAddressesList pGalProject_ =
-    GlobalAddressesList'
+  GlobalAddressesList'
     { _galOrderBy = Nothing
     , _galProject = pGalProject_
     , _galFilter = Nothing
     , _galPageToken = Nothing
     , _galMaxResults = 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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified GlobalForwardingRule resource.
 --
 -- /See:/ 'globalForwardingRulesDelete' smart constructor.
-data GlobalForwardingRulesDelete = GlobalForwardingRulesDelete'
+data GlobalForwardingRulesDelete =
+  GlobalForwardingRulesDelete'
     { _gfrdRequestId      :: !(Maybe Text)
     , _gfrdProject        :: !Text
     , _gfrdForwardingRule :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalForwardingRulesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'gfrdForwardingRule'
     -> GlobalForwardingRulesDelete
 globalForwardingRulesDelete pGfrdProject_ pGfrdForwardingRule_ =
-    GlobalForwardingRulesDelete'
+  GlobalForwardingRulesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- available forwarding rules by making a list() request.
 --
 -- /See:/ 'globalForwardingRulesGet' smart constructor.
-data GlobalForwardingRulesGet = GlobalForwardingRulesGet'
+data GlobalForwardingRulesGet =
+  GlobalForwardingRulesGet'
     { _gfrgProject        :: !Text
     , _gfrgForwardingRule :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalForwardingRulesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'gfrgForwardingRule'
     -> GlobalForwardingRulesGet
 globalForwardingRulesGet pGfrgProject_ pGfrgForwardingRule_ =
-    GlobalForwardingRulesGet'
-    { _gfrgProject = pGfrgProject_
-    , _gfrgForwardingRule = pGfrgForwardingRule_
-    }
+  GlobalForwardingRulesGet'
+    {_gfrgProject = pGfrgProject_, _gfrgForwardingRule = pGfrgForwardingRule_}
+
 
 -- | Project ID for this request.
 gfrgProject :: Lens' GlobalForwardingRulesGet Text
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
@@ -60,12 +60,15 @@
 -- the data included in the request.
 --
 -- /See:/ 'globalForwardingRulesInsert' smart constructor.
-data GlobalForwardingRulesInsert = GlobalForwardingRulesInsert'
+data GlobalForwardingRulesInsert =
+  GlobalForwardingRulesInsert'
     { _gfriRequestId :: !(Maybe Text)
     , _gfriProject   :: !Text
     , _gfriPayload   :: !ForwardingRule
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> ForwardingRule -- ^ 'gfriPayload'
     -> GlobalForwardingRulesInsert
 globalForwardingRulesInsert pGfriProject_ pGfriPayload_ =
-    GlobalForwardingRulesInsert'
+  GlobalForwardingRulesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'globalForwardingRulesList' smart constructor.
-data GlobalForwardingRulesList = GlobalForwardingRulesList'
+data GlobalForwardingRulesList =
+  GlobalForwardingRulesList'
     { _gfrlOrderBy    :: !(Maybe Text)
     , _gfrlProject    :: !Text
     , _gfrlFilter     :: !(Maybe Text)
     , _gfrlPageToken  :: !(Maybe Text)
     , _gfrlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalForwardingRulesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'gfrlProject'
     -> GlobalForwardingRulesList
 globalForwardingRulesList pGfrlProject_ =
-    GlobalForwardingRulesList'
+  GlobalForwardingRulesList'
     { _gfrlOrderBy = Nothing
     , _gfrlProject = pGfrlProject_
     , _gfrlFilter = Nothing
     , _gfrlPageToken = Nothing
     , _gfrlMaxResults = 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
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
@@ -63,13 +63,16 @@
 -- should be of the same type as the old target.
 --
 -- /See:/ 'globalForwardingRulesSetTarget' smart constructor.
-data GlobalForwardingRulesSetTarget = GlobalForwardingRulesSetTarget'
+data GlobalForwardingRulesSetTarget =
+  GlobalForwardingRulesSetTarget'
     { _gfrstRequestId      :: !(Maybe Text)
     , _gfrstProject        :: !Text
     , _gfrstForwardingRule :: !Text
     , _gfrstPayload        :: !TargetReference
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalForwardingRulesSetTarget' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,12 +90,13 @@
     -> TargetReference -- ^ 'gfrstPayload'
     -> GlobalForwardingRulesSetTarget
 globalForwardingRulesSetTarget pGfrstProject_ pGfrstForwardingRule_ pGfrstPayload_ =
-    GlobalForwardingRulesSetTarget'
+  GlobalForwardingRulesSetTarget'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of all operations.
 --
 -- /See:/ 'globalOperationsAggregatedList' smart constructor.
-data GlobalOperationsAggregatedList = GlobalOperationsAggregatedList'
+data GlobalOperationsAggregatedList =
+  GlobalOperationsAggregatedList'
     { _goalOrderBy    :: !(Maybe Text)
     , _goalProject    :: !Text
     , _goalFilter     :: !(Maybe Text)
     , _goalPageToken  :: !(Maybe Text)
     , _goalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalOperationsAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'goalProject'
     -> GlobalOperationsAggregatedList
 globalOperationsAggregatedList pGoalProject_ =
-    GlobalOperationsAggregatedList'
+  GlobalOperationsAggregatedList'
     { _goalOrderBy = Nothing
     , _goalProject = pGoalProject_
     , _goalFilter = Nothing
     , _goalPageToken = Nothing
     , _goalMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs
--- a/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes the specified Operations resource.
 --
 -- /See:/ 'globalOperationsDelete' smart constructor.
-data GlobalOperationsDelete = GlobalOperationsDelete'
+data GlobalOperationsDelete =
+  GlobalOperationsDelete'
     { _godProject   :: !Text
     , _godOperation :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalOperationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'godOperation'
     -> GlobalOperationsDelete
 globalOperationsDelete pGodProject_ pGodOperation_ =
-    GlobalOperationsDelete'
-    { _godProject = pGodProject_
-    , _godOperation = pGodOperation_
-    }
+  GlobalOperationsDelete'
+    {_godProject = pGodProject_, _godOperation = pGodOperation_}
+
 
 -- | Project ID for this request.
 godProject :: Lens' GlobalOperationsDelete Text
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
@@ -57,11 +57,14 @@
 -- by making a list() request.
 --
 -- /See:/ 'globalOperationsGet' smart constructor.
-data GlobalOperationsGet = GlobalOperationsGet'
+data GlobalOperationsGet =
+  GlobalOperationsGet'
     { _gogProject   :: !Text
     , _gogOperation :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'gogOperation'
     -> GlobalOperationsGet
 globalOperationsGet pGogProject_ pGogOperation_ =
-    GlobalOperationsGet'
-    { _gogProject = pGogProject_
-    , _gogOperation = pGogOperation_
-    }
+  GlobalOperationsGet'
+    {_gogProject = pGogProject_, _gogOperation = pGogOperation_}
+
 
 -- | Project ID for this request.
 gogProject :: Lens' GlobalOperationsGet Text
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
@@ -63,14 +63,17 @@
 -- project.
 --
 -- /See:/ 'globalOperationsList' smart constructor.
-data GlobalOperationsList = GlobalOperationsList'
+data GlobalOperationsList =
+  GlobalOperationsList'
     { _golOrderBy    :: !(Maybe Text)
     , _golProject    :: !Text
     , _golFilter     :: !(Maybe Text)
     , _golPageToken  :: !(Maybe Text)
     , _golMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GlobalOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'golProject'
     -> GlobalOperationsList
 globalOperationsList pGolProject_ =
-    GlobalOperationsList'
+  GlobalOperationsList'
     { _golOrderBy = Nothing
     , _golProject = pGolProject_
     , _golFilter = Nothing
     , _golPageToken = Nothing
     , _golMaxResults = 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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified HttpHealthCheck resource.
 --
 -- /See:/ 'hTTPHealthChecksDelete' smart constructor.
-data HTTPHealthChecksDelete = HTTPHealthChecksDelete'
+data HTTPHealthChecksDelete =
+  HTTPHealthChecksDelete'
     { _httphcdRequestId       :: !(Maybe Text)
     , _httphcdProject         :: !Text
     , _httphcdHTTPHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPHealthChecksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'httphcdHTTPHealthCheck'
     -> HTTPHealthChecksDelete
 hTTPHealthChecksDelete pHttphcdProject_ pHttphcdHTTPHealthCheck_ =
-    HTTPHealthChecksDelete'
+  HTTPHealthChecksDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- HTTP health checks by making a list() request.
 --
 -- /See:/ 'hTTPHealthChecksGet' smart constructor.
-data HTTPHealthChecksGet = HTTPHealthChecksGet'
+data HTTPHealthChecksGet =
+  HTTPHealthChecksGet'
     { _httphcgProject         :: !Text
     , _httphcgHTTPHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPHealthChecksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'httphcgHTTPHealthCheck'
     -> HTTPHealthChecksGet
 hTTPHealthChecksGet pHttphcgProject_ pHttphcgHTTPHealthCheck_ =
-    HTTPHealthChecksGet'
+  HTTPHealthChecksGet'
     { _httphcgProject = pHttphcgProject_
     , _httphcgHTTPHealthCheck = pHttphcgHTTPHealthCheck_
     }
+
 
 -- | Project ID for this request.
 httphcgProject :: Lens' HTTPHealthChecksGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'hTTPHealthChecksInsert' smart constructor.
-data HTTPHealthChecksInsert = HTTPHealthChecksInsert'
+data HTTPHealthChecksInsert =
+  HTTPHealthChecksInsert'
     { _httphciRequestId :: !(Maybe Text)
     , _httphciProject   :: !Text
     , _httphciPayload   :: !HTTPHealthCheck
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> HTTPHealthCheck -- ^ 'httphciPayload'
     -> HTTPHealthChecksInsert
 hTTPHealthChecksInsert pHttphciProject_ pHttphciPayload_ =
-    HTTPHealthChecksInsert'
+  HTTPHealthChecksInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'hTTPHealthChecksList' smart constructor.
-data HTTPHealthChecksList = HTTPHealthChecksList'
+data HTTPHealthChecksList =
+  HTTPHealthChecksList'
     { _httphclOrderBy    :: !(Maybe Text)
     , _httphclProject    :: !Text
     , _httphclFilter     :: !(Maybe Text)
     , _httphclPageToken  :: !(Maybe Text)
     , _httphclMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPHealthChecksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'httphclProject'
     -> HTTPHealthChecksList
 hTTPHealthChecksList pHttphclProject_ =
-    HTTPHealthChecksList'
+  HTTPHealthChecksList'
     { _httphclOrderBy = Nothing
     , _httphclProject = pHttphclProject_
     , _httphclFilter = Nothing
     , _httphclPageToken = Nothing
     , _httphclMaxResults = 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
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
@@ -64,13 +64,16 @@
 -- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'hTTPHealthChecksPatch' smart constructor.
-data HTTPHealthChecksPatch = HTTPHealthChecksPatch'
+data HTTPHealthChecksPatch =
+  HTTPHealthChecksPatch'
     { _httphcpRequestId       :: !(Maybe Text)
     , _httphcpProject         :: !Text
     , _httphcpPayload         :: !HTTPHealthCheck
     , _httphcpHTTPHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPHealthChecksPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'httphcpHTTPHealthCheck'
     -> HTTPHealthChecksPatch
 hTTPHealthChecksPatch pHttphcpProject_ pHttphcpPayload_ pHttphcpHTTPHealthCheck_ =
-    HTTPHealthChecksPatch'
+  HTTPHealthChecksPatch'
     { _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
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
@@ -62,13 +62,16 @@
 -- data included in the request.
 --
 -- /See:/ 'hTTPHealthChecksUpdate' smart constructor.
-data HTTPHealthChecksUpdate = HTTPHealthChecksUpdate'
+data HTTPHealthChecksUpdate =
+  HTTPHealthChecksUpdate'
     { _httphcuRequestId       :: !(Maybe Text)
     , _httphcuProject         :: !Text
     , _httphcuPayload         :: !HTTPHealthCheck
     , _httphcuHTTPHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPHealthChecksUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'httphcuHTTPHealthCheck'
     -> HTTPHealthChecksUpdate
 hTTPHealthChecksUpdate pHttphcuProject_ pHttphcuPayload_ pHttphcuHTTPHealthCheck_ =
-    HTTPHealthChecksUpdate'
+  HTTPHealthChecksUpdate'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified HttpsHealthCheck resource.
 --
 -- /See:/ 'httpsHealthChecksDelete' smart constructor.
-data HTTPSHealthChecksDelete = HTTPSHealthChecksDelete'
+data HTTPSHealthChecksDelete =
+  HTTPSHealthChecksDelete'
     { _hhcdRequestId        :: !(Maybe Text)
     , _hhcdProject          :: !Text
     , _hhcdHTTPSHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPSHealthChecksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'hhcdHTTPSHealthCheck'
     -> HTTPSHealthChecksDelete
 httpsHealthChecksDelete pHhcdProject_ pHhcdHTTPSHealthCheck_ =
-    HTTPSHealthChecksDelete'
+  HTTPSHealthChecksDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- available HTTPS health checks by making a list() request.
 --
 -- /See:/ 'httpsHealthChecksGet' smart constructor.
-data HTTPSHealthChecksGet = HTTPSHealthChecksGet'
+data HTTPSHealthChecksGet =
+  HTTPSHealthChecksGet'
     { _hhcgProject          :: !Text
     , _hhcgHTTPSHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPSHealthChecksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'hhcgHTTPSHealthCheck'
     -> HTTPSHealthChecksGet
 httpsHealthChecksGet pHhcgProject_ pHhcgHTTPSHealthCheck_ =
-    HTTPSHealthChecksGet'
+  HTTPSHealthChecksGet'
     { _hhcgProject = pHhcgProject_
     , _hhcgHTTPSHealthCheck = pHhcgHTTPSHealthCheck_
     }
+
 
 -- | Project ID for this request.
 hhcgProject :: Lens' HTTPSHealthChecksGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'httpsHealthChecksInsert' smart constructor.
-data HTTPSHealthChecksInsert = HTTPSHealthChecksInsert'
+data HTTPSHealthChecksInsert =
+  HTTPSHealthChecksInsert'
     { _hhciRequestId :: !(Maybe Text)
     , _hhciProject   :: !Text
     , _hhciPayload   :: !HTTPSHealthCheck
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> HTTPSHealthCheck -- ^ 'hhciPayload'
     -> HTTPSHealthChecksInsert
 httpsHealthChecksInsert pHhciProject_ pHhciPayload_ =
-    HTTPSHealthChecksInsert'
+  HTTPSHealthChecksInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'httpsHealthChecksList' smart constructor.
-data HTTPSHealthChecksList = HTTPSHealthChecksList'
+data HTTPSHealthChecksList =
+  HTTPSHealthChecksList'
     { _hhclOrderBy    :: !(Maybe Text)
     , _hhclProject    :: !Text
     , _hhclFilter     :: !(Maybe Text)
     , _hhclPageToken  :: !(Maybe Text)
     , _hhclMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPSHealthChecksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'hhclProject'
     -> HTTPSHealthChecksList
 httpsHealthChecksList pHhclProject_ =
-    HTTPSHealthChecksList'
+  HTTPSHealthChecksList'
     { _hhclOrderBy = Nothing
     , _hhclProject = pHhclProject_
     , _hhclFilter = Nothing
     , _hhclPageToken = Nothing
     , _hhclMaxResults = 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
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
@@ -64,13 +64,16 @@
 -- uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'httpsHealthChecksPatch' smart constructor.
-data HTTPSHealthChecksPatch = HTTPSHealthChecksPatch'
+data HTTPSHealthChecksPatch =
+  HTTPSHealthChecksPatch'
     { _hhcpRequestId        :: !(Maybe Text)
     , _hhcpProject          :: !Text
     , _hhcpPayload          :: !HTTPSHealthCheck
     , _hhcpHTTPSHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPSHealthChecksPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'hhcpHTTPSHealthCheck'
     -> HTTPSHealthChecksPatch
 httpsHealthChecksPatch pHhcpProject_ pHhcpPayload_ pHhcpHTTPSHealthCheck_ =
-    HTTPSHealthChecksPatch'
+  HTTPSHealthChecksPatch'
     { _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
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
@@ -62,13 +62,16 @@
 -- data included in the request.
 --
 -- /See:/ 'httpsHealthChecksUpdate' smart constructor.
-data HTTPSHealthChecksUpdate = HTTPSHealthChecksUpdate'
+data HTTPSHealthChecksUpdate =
+  HTTPSHealthChecksUpdate'
     { _hhcuRequestId        :: !(Maybe Text)
     , _hhcuProject          :: !Text
     , _hhcuPayload          :: !HTTPSHealthCheck
     , _hhcuHTTPSHealthCheck :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HTTPSHealthChecksUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'hhcuHTTPSHealthCheck'
     -> HTTPSHealthChecksUpdate
 httpsHealthChecksUpdate pHhcuProject_ pHhcuPayload_ pHhcuHTTPSHealthCheck_ =
-    HTTPSHealthChecksUpdate'
+  HTTPSHealthChecksUpdate'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified HealthCheck resource.
 --
 -- /See:/ 'healthChecksDelete' smart constructor.
-data HealthChecksDelete = HealthChecksDelete'
+data HealthChecksDelete =
+  HealthChecksDelete'
     { _hcdRequestId   :: !(Maybe Text)
     , _hcdHealthCheck :: !Text
     , _hcdProject     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HealthChecksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'hcdProject'
     -> HealthChecksDelete
 healthChecksDelete pHcdHealthCheck_ pHcdProject_ =
-    HealthChecksDelete'
+  HealthChecksDelete'
     { _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
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
@@ -57,11 +57,14 @@
 -- health checks by making a list() request.
 --
 -- /See:/ 'healthChecksGet' smart constructor.
-data HealthChecksGet = HealthChecksGet'
+data HealthChecksGet =
+  HealthChecksGet'
     { _hcgHealthCheck :: !Text
     , _hcgProject     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HealthChecksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'hcgProject'
     -> HealthChecksGet
 healthChecksGet pHcgHealthCheck_ pHcgProject_ =
-    HealthChecksGet'
-    { _hcgHealthCheck = pHcgHealthCheck_
-    , _hcgProject = pHcgProject_
-    }
+  HealthChecksGet'
+    {_hcgHealthCheck = pHcgHealthCheck_, _hcgProject = pHcgProject_}
+
 
 -- | Name of the HealthCheck resource to return.
 hcgHealthCheck :: Lens' HealthChecksGet Text
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
@@ -59,12 +59,15 @@
 -- included in the request.
 --
 -- /See:/ 'healthChecksInsert' smart constructor.
-data HealthChecksInsert = HealthChecksInsert'
+data HealthChecksInsert =
+  HealthChecksInsert'
     { _hciRequestId :: !(Maybe Text)
     , _hciProject   :: !Text
     , _hciPayload   :: !HealthCheck
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> HealthCheck -- ^ 'hciPayload'
     -> HealthChecksInsert
 healthChecksInsert pHciProject_ pHciPayload_ =
-    HealthChecksInsert'
+  HealthChecksInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- project.
 --
 -- /See:/ 'healthChecksList' smart constructor.
-data HealthChecksList = HealthChecksList'
+data HealthChecksList =
+  HealthChecksList'
     { _hclOrderBy    :: !(Maybe Text)
     , _hclProject    :: !Text
     , _hclFilter     :: !(Maybe Text)
     , _hclPageToken  :: !(Maybe Text)
     , _hclMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HealthChecksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'hclProject'
     -> HealthChecksList
 healthChecksList pHclProject_ =
-    HealthChecksList'
+  HealthChecksList'
     { _hclOrderBy = Nothing
     , _hclProject = pHclProject_
     , _hclFilter = Nothing
     , _hclPageToken = Nothing
     , _hclMaxResults = 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
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
@@ -64,13 +64,16 @@
 -- the JSON merge patch format and processing rules.
 --
 -- /See:/ 'healthChecksPatch' smart constructor.
-data HealthChecksPatch = HealthChecksPatch'
+data HealthChecksPatch =
+  HealthChecksPatch'
     { _hcpRequestId   :: !(Maybe Text)
     , _hcpHealthCheck :: !Text
     , _hcpProject     :: !Text
     , _hcpPayload     :: !HealthCheck
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HealthChecksPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> HealthCheck -- ^ 'hcpPayload'
     -> HealthChecksPatch
 healthChecksPatch pHcpHealthCheck_ pHcpProject_ pHcpPayload_ =
-    HealthChecksPatch'
+  HealthChecksPatch'
     { _hcpRequestId = Nothing
     , _hcpHealthCheck = pHcpHealthCheck_
     , _hcpProject = pHcpProject_
     , _hcpPayload = pHcpPayload_
     }
+
 
 -- | 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
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
@@ -61,13 +61,16 @@
 -- included in the request.
 --
 -- /See:/ 'healthChecksUpdate' smart constructor.
-data HealthChecksUpdate = HealthChecksUpdate'
+data HealthChecksUpdate =
+  HealthChecksUpdate'
     { _hcuRequestId   :: !(Maybe Text)
     , _hcuHealthCheck :: !Text
     , _hcuProject     :: !Text
     , _hcuPayload     :: !HealthCheck
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'HealthChecksUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,12 +88,13 @@
     -> HealthCheck -- ^ 'hcuPayload'
     -> HealthChecksUpdate
 healthChecksUpdate pHcuHealthCheck_ pHcuProject_ pHcuPayload_ =
-    HealthChecksUpdate'
+  HealthChecksUpdate'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified image.
 --
 -- /See:/ 'imagesDelete' smart constructor.
-data ImagesDelete = ImagesDelete'
+data ImagesDelete =
+  ImagesDelete'
     { _iddRequestId :: !(Maybe Text)
     , _iddImage     :: !Text
     , _iddProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'iddProject'
     -> ImagesDelete
 imagesDelete pIddImage_ pIddProject_ =
-    ImagesDelete'
+  ImagesDelete'
     { _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
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
@@ -63,13 +63,16 @@
 -- given, clears the deprecation status instead.
 --
 -- /See:/ 'imagesDeprecate' smart constructor.
-data ImagesDeprecate = ImagesDeprecate'
+data ImagesDeprecate =
+  ImagesDeprecate'
     { _id1RequestId :: !(Maybe Text)
     , _id1Image     :: !Text
     , _id1Project   :: !Text
     , _id1Payload   :: !DeprecationStatus
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> DeprecationStatus -- ^ 'id1Payload'
     -> ImagesDeprecate
 imagesDeprecate pId1Image_ pId1Project_ pId1Payload_ =
-    ImagesDeprecate'
+  ImagesDeprecate'
     { _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
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
@@ -57,11 +57,14 @@
 -- list() request.
 --
 -- /See:/ 'imagesGet' smart constructor.
-data ImagesGet = ImagesGet'
+data ImagesGet =
+  ImagesGet'
     { _imaImage   :: !Text
     , _imaProject :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'imaProject'
     -> ImagesGet
 imagesGet pImaImage_ pImaProject_ =
-    ImagesGet'
-    { _imaImage = pImaImage_
-    , _imaProject = pImaProject_
-    }
+  ImagesGet' {_imaImage = pImaImage_, _imaProject = pImaProject_}
+
 
 -- | Name of the image resource to return.
 imaImage :: Lens' ImagesGet Text
diff --git a/gen/Network/Google/Resource/Compute/Images/GetFromFamily.hs b/gen/Network/Google/Resource/Compute/Images/GetFromFamily.hs
--- a/gen/Network/Google/Resource/Compute/Images/GetFromFamily.hs
+++ b/gen/Network/Google/Resource/Compute/Images/GetFromFamily.hs
@@ -58,11 +58,14 @@
 -- deprecated.
 --
 -- /See:/ 'imagesGetFromFamily' smart constructor.
-data ImagesGetFromFamily = ImagesGetFromFamily'
+data ImagesGetFromFamily =
+  ImagesGetFromFamily'
     { _igffProject :: !Text
     , _igffFamily  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ImagesGetFromFamily' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'igffFamily'
     -> ImagesGetFromFamily
 imagesGetFromFamily pIgffProject_ pIgffFamily_ =
-    ImagesGetFromFamily'
-    { _igffProject = pIgffProject_
-    , _igffFamily = pIgffFamily_
-    }
+  ImagesGetFromFamily'
+    {_igffProject = pIgffProject_, _igffFamily = pIgffFamily_}
+
 
 -- | Project ID for this request.
 igffProject :: Lens' ImagesGetFromFamily Text
diff --git a/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Images/GetIAMPolicy.hs
@@ -58,11 +58,14 @@
 -- policy or resource exists.
 --
 -- /See:/ 'imagesGetIAMPolicy' smart constructor.
-data ImagesGetIAMPolicy = ImagesGetIAMPolicy'
+data ImagesGetIAMPolicy =
+  ImagesGetIAMPolicy'
     { _igipProject  :: !Text
     , _igipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'igipResource'
     -> ImagesGetIAMPolicy
 imagesGetIAMPolicy pIgipProject_ pIgipResource_ =
-    ImagesGetIAMPolicy'
-    { _igipProject = pIgipProject_
-    , _igipResource = pIgipResource_
-    }
+  ImagesGetIAMPolicy'
+    {_igipProject = pIgipProject_, _igipResource = pIgipResource_}
+
 
 -- | Project ID for this request.
 igipProject :: Lens' ImagesGetIAMPolicy Text
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
@@ -61,13 +61,16 @@
 -- request.
 --
 -- /See:/ 'imagesInsert' smart constructor.
-data ImagesInsert = ImagesInsert'
+data ImagesInsert =
+  ImagesInsert'
     { _iiRequestId   :: !(Maybe Text)
     , _iiProject     :: !Text
     , _iiPayload     :: !Image
     , _iiForceCreate :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -84,12 +87,13 @@
     -> Image -- ^ 'iiPayload'
     -> ImagesInsert
 imagesInsert pIiProject_ pIiPayload_ =
-    ImagesInsert'
+  ImagesInsert'
     { _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
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
@@ -71,14 +71,17 @@
 -- respective image project, such as debian-cloud or windows-cloud.
 --
 -- /See:/ 'imagesList' smart constructor.
-data ImagesList = ImagesList'
+data ImagesList =
+  ImagesList'
     { _imamOrderBy    :: !(Maybe Text)
     , _imamProject    :: !Text
     , _imamFilter     :: !(Maybe Text)
     , _imamPageToken  :: !(Maybe Text)
     , _imamMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -96,13 +99,14 @@
     :: Text -- ^ 'imamProject'
     -> ImagesList
 imagesList pImamProject_ =
-    ImagesList'
+  ImagesList'
     { _imamOrderBy = Nothing
     , _imamProject = pImamProject_
     , _imamFilter = Nothing
     , _imamPageToken = Nothing
     , _imamMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Images/SetIAMPolicy.hs
@@ -61,12 +61,15 @@
 -- existing policy.
 --
 -- /See:/ 'imagesSetIAMPolicy' smart constructor.
-data ImagesSetIAMPolicy = ImagesSetIAMPolicy'
+data ImagesSetIAMPolicy =
+  ImagesSetIAMPolicy'
     { _isiampProject  :: !Text
     , _isiampPayload  :: !GlobalSetPolicyRequest
     , _isiampResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'isiampResource'
     -> ImagesSetIAMPolicy
 imagesSetIAMPolicy pIsiampProject_ pIsiampPayload_ pIsiampResource_ =
-    ImagesSetIAMPolicy'
+  ImagesSetIAMPolicy'
     { _isiampProject = pIsiampProject_
     , _isiampPayload = pIsiampPayload_
     , _isiampResource = pIsiampResource_
     }
+
 
 -- | Project ID for this request.
 isiampProject :: Lens' ImagesSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Images/SetLabels.hs b/gen/Network/Google/Resource/Compute/Images/SetLabels.hs
--- a/gen/Network/Google/Resource/Compute/Images/SetLabels.hs
+++ b/gen/Network/Google/Resource/Compute/Images/SetLabels.hs
@@ -61,12 +61,15 @@
 -- Labeling Resources documentation.
 --
 -- /See:/ 'imagesSetLabels' smart constructor.
-data ImagesSetLabels = ImagesSetLabels'
+data ImagesSetLabels =
+  ImagesSetLabels'
     { _islsProject  :: !Text
     , _islsPayload  :: !GlobalSetLabelsRequest
     , _islsResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'islsResource'
     -> ImagesSetLabels
 imagesSetLabels pIslsProject_ pIslsPayload_ pIslsResource_ =
-    ImagesSetLabels'
+  ImagesSetLabels'
     { _islsProject = pIslsProject_
     , _islsPayload = pIslsPayload_
     , _islsResource = pIslsResource_
     }
+
 
 -- | Project ID for this request.
 islsProject :: Lens' ImagesSetLabels Text
diff --git a/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Images/TestIAMPermissions.hs
@@ -59,12 +59,15 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'imagesTestIAMPermissions' smart constructor.
-data ImagesTestIAMPermissions = ImagesTestIAMPermissions'
+data ImagesTestIAMPermissions =
+  ImagesTestIAMPermissions'
     { _itiampProject  :: !Text
     , _itiampPayload  :: !TestPermissionsRequest
     , _itiampResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'itiampResource'
     -> ImagesTestIAMPermissions
 imagesTestIAMPermissions pItiampProject_ pItiampPayload_ pItiampResource_ =
-    ImagesTestIAMPermissions'
+  ImagesTestIAMPermissions'
     { _itiampProject = pItiampProject_
     , _itiampPayload = pItiampPayload_
     , _itiampResource = pItiampResource_
     }
+
 
 -- | Project ID for this request.
 itiampProject :: Lens' ImagesTestIAMPermissions Text
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
@@ -88,14 +88,17 @@
 -- per request.
 --
 -- /See:/ 'instanceGroupManagersAbandonInstances' smart constructor.
-data InstanceGroupManagersAbandonInstances = InstanceGroupManagersAbandonInstances'
+data InstanceGroupManagersAbandonInstances =
+  InstanceGroupManagersAbandonInstances'
     { _igmaiRequestId            :: !(Maybe Text)
     , _igmaiProject              :: !Text
     , _igmaiInstanceGroupManager :: !Text
     , _igmaiZone                 :: !Text
     , _igmaiPayload              :: !InstanceGroupManagersAbandonInstancesRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersAbandonInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -116,7 +119,7 @@
     -> InstanceGroupManagersAbandonInstancesRequest -- ^ 'igmaiPayload'
     -> InstanceGroupManagersAbandonInstances
 instanceGroupManagersAbandonInstances pIgmaiProject_ pIgmaiInstanceGroupManager_ pIgmaiZone_ pIgmaiPayload_ =
-    InstanceGroupManagersAbandonInstances'
+  InstanceGroupManagersAbandonInstances'
     { _igmaiRequestId = Nothing
     , _igmaiProject = pIgmaiProject_
     , _igmaiInstanceGroupManager = pIgmaiInstanceGroupManager_
@@ -124,6 +127,7 @@
     , _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
@@ -161,7 +165,8 @@
   = lens _igmaiPayload (\ s a -> s{_igmaiPayload = a})
 
 instance GoogleRequest
-         InstanceGroupManagersAbandonInstances where
+           InstanceGroupManagersAbandonInstances
+         where
         type Rs InstanceGroupManagersAbandonInstances =
              Operation
         type Scopes InstanceGroupManagersAbandonInstances =
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
@@ -62,14 +62,17 @@
 -- | Retrieves the list of managed instance groups and groups them by zone.
 --
 -- /See:/ 'instanceGroupManagersAggregatedList' smart constructor.
-data InstanceGroupManagersAggregatedList = InstanceGroupManagersAggregatedList'
+data InstanceGroupManagersAggregatedList =
+  InstanceGroupManagersAggregatedList'
     { _igmalOrderBy    :: !(Maybe Text)
     , _igmalProject    :: !Text
     , _igmalFilter     :: !(Maybe Text)
     , _igmalPageToken  :: !(Maybe Text)
     , _igmalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,7 +90,7 @@
     :: Text -- ^ 'igmalProject'
     -> InstanceGroupManagersAggregatedList
 instanceGroupManagersAggregatedList pIgmalProject_ =
-    InstanceGroupManagersAggregatedList'
+  InstanceGroupManagersAggregatedList'
     { _igmalOrderBy = Nothing
     , _igmalProject = pIgmalProject_
     , _igmalFilter = Nothing
@@ -95,6 +98,7 @@
     , _igmalMaxResults = 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
@@ -151,7 +155,8 @@
       . _Coerce
 
 instance GoogleRequest
-         InstanceGroupManagersAggregatedList where
+           InstanceGroupManagersAggregatedList
+         where
         type Rs InstanceGroupManagersAggregatedList =
              InstanceGroupManagerAggregatedList
         type Scopes InstanceGroupManagersAggregatedList =
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
@@ -63,13 +63,16 @@
 -- service. Read Deleting an instance group for more information.
 --
 -- /See:/ 'instanceGroupManagersDelete' smart constructor.
-data InstanceGroupManagersDelete = InstanceGroupManagersDelete'
+data InstanceGroupManagersDelete =
+  InstanceGroupManagersDelete'
     { _igmdRequestId            :: !(Maybe Text)
     , _igmdProject              :: !Text
     , _igmdInstanceGroupManager :: !Text
     , _igmdZone                 :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'igmdZone'
     -> InstanceGroupManagersDelete
 instanceGroupManagersDelete pIgmdProject_ pIgmdInstanceGroupManager_ pIgmdZone_ =
-    InstanceGroupManagersDelete'
+  InstanceGroupManagersDelete'
     { _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
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
@@ -84,14 +84,17 @@
 -- maximum of 1000 instances with this method per request.
 --
 -- /See:/ 'instanceGroupManagersDeleteInstances' smart constructor.
-data InstanceGroupManagersDeleteInstances = InstanceGroupManagersDeleteInstances'
+data InstanceGroupManagersDeleteInstances =
+  InstanceGroupManagersDeleteInstances'
     { _igmdiRequestId            :: !(Maybe Text)
     , _igmdiProject              :: !Text
     , _igmdiInstanceGroupManager :: !Text
     , _igmdiZone                 :: !Text
     , _igmdiPayload              :: !InstanceGroupManagersDeleteInstancesRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersDeleteInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,7 +115,7 @@
     -> InstanceGroupManagersDeleteInstancesRequest -- ^ 'igmdiPayload'
     -> InstanceGroupManagersDeleteInstances
 instanceGroupManagersDeleteInstances pIgmdiProject_ pIgmdiInstanceGroupManager_ pIgmdiZone_ pIgmdiPayload_ =
-    InstanceGroupManagersDeleteInstances'
+  InstanceGroupManagersDeleteInstances'
     { _igmdiRequestId = Nothing
     , _igmdiProject = pIgmdiProject_
     , _igmdiInstanceGroupManager = pIgmdiInstanceGroupManager_
@@ -120,6 +123,7 @@
     , _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
@@ -157,7 +161,8 @@
   = lens _igmdiPayload (\ s a -> s{_igmdiPayload = a})
 
 instance GoogleRequest
-         InstanceGroupManagersDeleteInstances where
+           InstanceGroupManagersDeleteInstances
+         where
         type Rs InstanceGroupManagersDeleteInstances =
              Operation
         type Scopes InstanceGroupManagersDeleteInstances =
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
@@ -62,12 +62,15 @@
 -- request.
 --
 -- /See:/ 'instanceGroupManagersGet' smart constructor.
-data InstanceGroupManagersGet = InstanceGroupManagersGet'
+data InstanceGroupManagersGet =
+  InstanceGroupManagersGet'
     { _igmgProject              :: !Text
     , _igmgInstanceGroupManager :: !Text
     , _igmgZone                 :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,11 +86,12 @@
     -> Text -- ^ 'igmgZone'
     -> InstanceGroupManagersGet
 instanceGroupManagersGet pIgmgProject_ pIgmgInstanceGroupManager_ pIgmgZone_ =
-    InstanceGroupManagersGet'
+  InstanceGroupManagersGet'
     { _igmgProject = pIgmgProject_
     , _igmgInstanceGroupManager = pIgmgInstanceGroupManager_
     , _igmgZone = pIgmgZone_
     }
+
 
 -- | Project ID for this request.
 igmgProject :: Lens' InstanceGroupManagersGet Text
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
@@ -74,13 +74,16 @@
 -- contact Cloud Support if you need an increase in this limit.
 --
 -- /See:/ 'instanceGroupManagersInsert' smart constructor.
-data InstanceGroupManagersInsert = InstanceGroupManagersInsert'
+data InstanceGroupManagersInsert =
+  InstanceGroupManagersInsert'
     { _igmiRequestId :: !(Maybe Text)
     , _igmiProject   :: !Text
     , _igmiZone      :: !Text
     , _igmiPayload   :: !InstanceGroupManager
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -98,12 +101,13 @@
     -> InstanceGroupManager -- ^ 'igmiPayload'
     -> InstanceGroupManagersInsert
 instanceGroupManagersInsert pIgmiProject_ pIgmiZone_ pIgmiPayload_ =
-    InstanceGroupManagersInsert'
+  InstanceGroupManagersInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- the specified project and zone.
 --
 -- /See:/ 'instanceGroupManagersList' smart constructor.
-data InstanceGroupManagersList = InstanceGroupManagersList'
+data InstanceGroupManagersList =
+  InstanceGroupManagersList'
     { _igmlOrderBy    :: !(Maybe Text)
     , _igmlProject    :: !Text
     , _igmlZone       :: !Text
     , _igmlFilter     :: !(Maybe Text)
     , _igmlPageToken  :: !(Maybe Text)
     , _igmlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'igmlZone'
     -> InstanceGroupManagersList
 instanceGroupManagersList pIgmlProject_ pIgmlZone_ =
-    InstanceGroupManagersList'
+  InstanceGroupManagersList'
     { _igmlOrderBy = Nothing
     , _igmlProject = pIgmlProject_
     , _igmlZone = pIgmlZone_
@@ -103,6 +106,7 @@
     , _igmlPageToken = Nothing
     , _igmlMaxResults = 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
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
@@ -79,7 +79,8 @@
 -- failed action.
 --
 -- /See:/ 'instanceGroupManagersListManagedInstances' smart constructor.
-data InstanceGroupManagersListManagedInstances = InstanceGroupManagersListManagedInstances'
+data InstanceGroupManagersListManagedInstances =
+  InstanceGroupManagersListManagedInstances'
     { _igmlmiProject              :: !Text
     , _igmlmiInstanceGroupManager :: !Text
     , _igmlmiZone                 :: !Text
@@ -87,8 +88,10 @@
     , _igmlmiFilter               :: !(Maybe Text)
     , _igmlmiPageToken            :: !(Maybe Text)
     , _igmlmiMaxResults           :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersListManagedInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,7 +115,7 @@
     -> Text -- ^ 'igmlmiZone'
     -> InstanceGroupManagersListManagedInstances
 instanceGroupManagersListManagedInstances pIgmlmiProject_ pIgmlmiInstanceGroupManager_ pIgmlmiZone_ =
-    InstanceGroupManagersListManagedInstances'
+  InstanceGroupManagersListManagedInstances'
     { _igmlmiProject = pIgmlmiProject_
     , _igmlmiInstanceGroupManager = pIgmlmiInstanceGroupManager_
     , _igmlmiZone = pIgmlmiZone_
@@ -122,6 +125,7 @@
     , _igmlmiMaxResults = 500
     }
 
+
 -- | Project ID for this request.
 igmlmiProject :: Lens' InstanceGroupManagersListManagedInstances Text
 igmlmiProject
@@ -191,7 +195,8 @@
       . _Coerce
 
 instance GoogleRequest
-         InstanceGroupManagersListManagedInstances where
+           InstanceGroupManagersListManagedInstances
+         where
         type Rs InstanceGroupManagersListManagedInstances =
              InstanceGroupManagersListManagedInstancesResponse
         type Scopes InstanceGroupManagersListManagedInstances
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs
--- a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Patch.hs
@@ -74,14 +74,17 @@
 -- rules.
 --
 -- /See:/ 'instanceGroupManagersPatch' smart constructor.
-data InstanceGroupManagersPatch = InstanceGroupManagersPatch'
+data InstanceGroupManagersPatch =
+  InstanceGroupManagersPatch'
     { _igmpRequestId            :: !(Maybe Text)
     , _igmpProject              :: !Text
     , _igmpInstanceGroupManager :: !Text
     , _igmpZone                 :: !Text
     , _igmpPayload              :: !InstanceGroupManager
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -102,13 +105,14 @@
     -> InstanceGroupManager -- ^ 'igmpPayload'
     -> InstanceGroupManagersPatch
 instanceGroupManagersPatch pIgmpProject_ pIgmpInstanceGroupManager_ pIgmpZone_ pIgmpPayload_ =
-    InstanceGroupManagersPatch'
+  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
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
@@ -82,14 +82,17 @@
 -- of 1000 instances with this method per request.
 --
 -- /See:/ 'instanceGroupManagersRecreateInstances' smart constructor.
-data InstanceGroupManagersRecreateInstances = InstanceGroupManagersRecreateInstances'
+data InstanceGroupManagersRecreateInstances =
+  InstanceGroupManagersRecreateInstances'
     { _igmriRequestId            :: !(Maybe Text)
     , _igmriProject              :: !Text
     , _igmriInstanceGroupManager :: !Text
     , _igmriZone                 :: !Text
     , _igmriPayload              :: !InstanceGroupManagersRecreateInstancesRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersRecreateInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> InstanceGroupManagersRecreateInstancesRequest -- ^ 'igmriPayload'
     -> InstanceGroupManagersRecreateInstances
 instanceGroupManagersRecreateInstances pIgmriProject_ pIgmriInstanceGroupManager_ pIgmriZone_ pIgmriPayload_ =
-    InstanceGroupManagersRecreateInstances'
+  InstanceGroupManagersRecreateInstances'
     { _igmriRequestId = Nothing
     , _igmriProject = pIgmriProject_
     , _igmriInstanceGroupManager = pIgmriInstanceGroupManager_
@@ -118,6 +121,7 @@
     , _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
@@ -155,7 +159,8 @@
   = lens _igmriPayload (\ s a -> s{_igmriPayload = a})
 
 instance GoogleRequest
-         InstanceGroupManagersRecreateInstances where
+           InstanceGroupManagersRecreateInstances
+         where
         type Rs InstanceGroupManagersRecreateInstances =
              Operation
         type Scopes InstanceGroupManagersRecreateInstances =
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
@@ -90,14 +90,17 @@
 -- elapsed before the VM instance is removed or deleted.
 --
 -- /See:/ 'instanceGroupManagersResize' smart constructor.
-data InstanceGroupManagersResize = InstanceGroupManagersResize'
+data InstanceGroupManagersResize =
+  InstanceGroupManagersResize'
     { _igmrRequestId            :: !(Maybe Text)
     , _igmrProject              :: !Text
     , _igmrSize                 :: !(Textual Int32)
     , _igmrInstanceGroupManager :: !Text
     , _igmrZone                 :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersResize' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -118,13 +121,14 @@
     -> Text -- ^ 'igmrZone'
     -> InstanceGroupManagersResize
 instanceGroupManagersResize pIgmrProject_ pIgmrSize_ pIgmrInstanceGroupManager_ pIgmrZone_ =
-    InstanceGroupManagersResize'
+  InstanceGroupManagersResize'
     { _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
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
@@ -69,14 +69,17 @@
 -- change unless you recreate them.
 --
 -- /See:/ 'instanceGroupManagersSetInstanceTemplate' smart constructor.
-data InstanceGroupManagersSetInstanceTemplate = InstanceGroupManagersSetInstanceTemplate'
+data InstanceGroupManagersSetInstanceTemplate =
+  InstanceGroupManagersSetInstanceTemplate'
     { _igmsitRequestId            :: !(Maybe Text)
     , _igmsitProject              :: !Text
     , _igmsitInstanceGroupManager :: !Text
     , _igmsitZone                 :: !Text
     , _igmsitPayload              :: !InstanceGroupManagersSetInstanceTemplateRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersSetInstanceTemplate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     -> InstanceGroupManagersSetInstanceTemplateRequest -- ^ 'igmsitPayload'
     -> InstanceGroupManagersSetInstanceTemplate
 instanceGroupManagersSetInstanceTemplate pIgmsitProject_ pIgmsitInstanceGroupManager_ pIgmsitZone_ pIgmsitPayload_ =
-    InstanceGroupManagersSetInstanceTemplate'
+  InstanceGroupManagersSetInstanceTemplate'
     { _igmsitRequestId = Nothing
     , _igmsitProject = pIgmsitProject_
     , _igmsitInstanceGroupManager = pIgmsitInstanceGroupManager_
@@ -105,6 +108,7 @@
     , _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
@@ -144,7 +148,8 @@
       (\ s a -> s{_igmsitPayload = a})
 
 instance GoogleRequest
-         InstanceGroupManagersSetInstanceTemplate where
+           InstanceGroupManagersSetInstanceTemplate
+         where
         type Rs InstanceGroupManagersSetInstanceTemplate =
              Operation
         type Scopes InstanceGroupManagersSetInstanceTemplate
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
@@ -74,14 +74,17 @@
 -- all of the instances in the group depending on the size of the group.
 --
 -- /See:/ 'instanceGroupManagersSetTargetPools' smart constructor.
-data InstanceGroupManagersSetTargetPools = InstanceGroupManagersSetTargetPools'
+data InstanceGroupManagersSetTargetPools =
+  InstanceGroupManagersSetTargetPools'
     { _igmstpRequestId            :: !(Maybe Text)
     , _igmstpProject              :: !Text
     , _igmstpInstanceGroupManager :: !Text
     , _igmstpZone                 :: !Text
     , _igmstpPayload              :: !InstanceGroupManagersSetTargetPoolsRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupManagersSetTargetPools' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     -> InstanceGroupManagersSetTargetPoolsRequest -- ^ 'igmstpPayload'
     -> InstanceGroupManagersSetTargetPools
 instanceGroupManagersSetTargetPools pIgmstpProject_ pIgmstpInstanceGroupManager_ pIgmstpZone_ pIgmstpPayload_ =
-    InstanceGroupManagersSetTargetPools'
+  InstanceGroupManagersSetTargetPools'
     { _igmstpRequestId = Nothing
     , _igmstpProject = pIgmstpProject_
     , _igmstpInstanceGroupManager = pIgmstpInstanceGroupManager_
@@ -110,6 +113,7 @@
     , _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
@@ -149,7 +153,8 @@
       (\ s a -> s{_igmstpPayload = a})
 
 instance GoogleRequest
-         InstanceGroupManagersSetTargetPools where
+           InstanceGroupManagersSetTargetPools
+         where
         type Rs InstanceGroupManagersSetTargetPools =
              Operation
         type Scopes InstanceGroupManagersSetTargetPools =
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
@@ -67,14 +67,17 @@
 -- Read Adding instances for more information.
 --
 -- /See:/ 'instanceGroupsAddInstances' smart constructor.
-data InstanceGroupsAddInstances = InstanceGroupsAddInstances'
+data InstanceGroupsAddInstances =
+  InstanceGroupsAddInstances'
     { _igaiRequestId     :: !(Maybe Text)
     , _igaiProject       :: !Text
     , _igaiZone          :: !Text
     , _igaiPayload       :: !InstanceGroupsAddInstancesRequest
     , _igaiInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsAddInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'igaiInstanceGroup'
     -> InstanceGroupsAddInstances
 instanceGroupsAddInstances pIgaiProject_ pIgaiZone_ pIgaiPayload_ pIgaiInstanceGroup_ =
-    InstanceGroupsAddInstances'
+  InstanceGroupsAddInstances'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves the list of instance groups and sorts them by zone.
 --
 -- /See:/ 'instanceGroupsAggregatedList' smart constructor.
-data InstanceGroupsAggregatedList = InstanceGroupsAggregatedList'
+data InstanceGroupsAggregatedList =
+  InstanceGroupsAggregatedList'
     { _igalOrderBy    :: !(Maybe Text)
     , _igalProject    :: !Text
     , _igalFilter     :: !(Maybe Text)
     , _igalPageToken  :: !(Maybe Text)
     , _igalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'igalProject'
     -> InstanceGroupsAggregatedList
 instanceGroupsAggregatedList pIgalProject_ =
-    InstanceGroupsAggregatedList'
+  InstanceGroupsAggregatedList'
     { _igalOrderBy = Nothing
     , _igalProject = pIgalProject_
     , _igalFilter = Nothing
     , _igalPageToken = Nothing
     , _igalMaxResults = 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
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
@@ -63,13 +63,16 @@
 -- Read Deleting an instance group for more information.
 --
 -- /See:/ 'instanceGroupsDelete' smart constructor.
-data InstanceGroupsDelete = InstanceGroupsDelete'
+data InstanceGroupsDelete =
+  InstanceGroupsDelete'
     { _igdRequestId     :: !(Maybe Text)
     , _igdProject       :: !Text
     , _igdZone          :: !Text
     , _igdInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'igdInstanceGroup'
     -> InstanceGroupsDelete
 instanceGroupsDelete pIgdProject_ pIgdZone_ pIgdInstanceGroup_ =
-    InstanceGroupsDelete'
+  InstanceGroupsDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- groups by making a list() request.
 --
 -- /See:/ 'instanceGroupsGet' smart constructor.
-data InstanceGroupsGet = InstanceGroupsGet'
+data InstanceGroupsGet =
+  InstanceGroupsGet'
     { _iggProject       :: !Text
     , _iggZone          :: !Text
     , _iggInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'iggInstanceGroup'
     -> InstanceGroupsGet
 instanceGroupsGet pIggProject_ pIggZone_ pIggInstanceGroup_ =
-    InstanceGroupsGet'
+  InstanceGroupsGet'
     { _iggProject = pIggProject_
     , _iggZone = pIggZone_
     , _iggInstanceGroup = pIggInstanceGroup_
     }
+
 
 -- | Project ID for this request.
 iggProject :: Lens' InstanceGroupsGet Text
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
@@ -62,13 +62,16 @@
 -- that are included in the request.
 --
 -- /See:/ 'instanceGroupsInsert' smart constructor.
-data InstanceGroupsInsert = InstanceGroupsInsert'
+data InstanceGroupsInsert =
+  InstanceGroupsInsert'
     { _igiRequestId :: !(Maybe Text)
     , _igiProject   :: !Text
     , _igiZone      :: !Text
     , _igiPayload   :: !InstanceGroup
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> InstanceGroup -- ^ 'igiPayload'
     -> InstanceGroupsInsert
 instanceGroupsInsert pIgiProject_ pIgiZone_ pIgiPayload_ =
-    InstanceGroupsInsert'
+  InstanceGroupsInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- project and zone.
 --
 -- /See:/ 'instanceGroupsList' smart constructor.
-data InstanceGroupsList = InstanceGroupsList'
+data InstanceGroupsList =
+  InstanceGroupsList'
     { _iglOrderBy    :: !(Maybe Text)
     , _iglProject    :: !Text
     , _iglZone       :: !Text
     , _iglFilter     :: !(Maybe Text)
     , _iglPageToken  :: !(Maybe Text)
     , _iglMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'iglZone'
     -> InstanceGroupsList
 instanceGroupsList pIglProject_ pIglZone_ =
-    InstanceGroupsList'
+  InstanceGroupsList'
     { _iglOrderBy = Nothing
     , _iglProject = pIglProject_
     , _iglZone = pIglZone_
@@ -103,6 +106,7 @@
     , _iglPageToken = Nothing
     , _iglMaxResults = 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
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
@@ -70,7 +70,8 @@
 -- | Lists the instances in the specified instance group.
 --
 -- /See:/ 'instanceGroupsListInstances'' smart constructor.
-data InstanceGroupsListInstances' = InstanceGroupsListInstances''
+data InstanceGroupsListInstances' =
+  InstanceGroupsListInstances''
     { _igliOrderBy       :: !(Maybe Text)
     , _igliProject       :: !Text
     , _igliZone          :: !Text
@@ -79,8 +80,10 @@
     , _igliPageToken     :: !(Maybe Text)
     , _igliInstanceGroup :: !Text
     , _igliMaxResults    :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'igliInstanceGroup'
     -> InstanceGroupsListInstances'
 instanceGroupsListInstances' pIgliProject_ pIgliZone_ pIgliPayload_ pIgliInstanceGroup_ =
-    InstanceGroupsListInstances''
+  InstanceGroupsListInstances''
     { _igliOrderBy = Nothing
     , _igliProject = pIgliProject_
     , _igliZone = pIgliZone_
@@ -117,6 +120,7 @@
     , _igliInstanceGroup = pIgliInstanceGroup_
     , _igliMaxResults = 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
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
@@ -71,14 +71,17 @@
 -- removed or deleted.
 --
 -- /See:/ 'instanceGroupsRemoveInstances' smart constructor.
-data InstanceGroupsRemoveInstances = InstanceGroupsRemoveInstances'
+data InstanceGroupsRemoveInstances =
+  InstanceGroupsRemoveInstances'
     { _igriRequestId     :: !(Maybe Text)
     , _igriProject       :: !Text
     , _igriZone          :: !Text
     , _igriPayload       :: !InstanceGroupsRemoveInstancesRequest
     , _igriInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsRemoveInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,13 +102,14 @@
     -> Text -- ^ 'igriInstanceGroup'
     -> InstanceGroupsRemoveInstances
 instanceGroupsRemoveInstances pIgriProject_ pIgriZone_ pIgriPayload_ pIgriInstanceGroup_ =
-    InstanceGroupsRemoveInstances'
+  InstanceGroupsRemoveInstances'
     { _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
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
@@ -63,14 +63,17 @@
 -- | Sets the named ports for the specified instance group.
 --
 -- /See:/ 'instanceGroupsSetNamedPorts' smart constructor.
-data InstanceGroupsSetNamedPorts = InstanceGroupsSetNamedPorts'
+data InstanceGroupsSetNamedPorts =
+  InstanceGroupsSetNamedPorts'
     { _igsnpRequestId     :: !(Maybe Text)
     , _igsnpProject       :: !Text
     , _igsnpZone          :: !Text
     , _igsnpPayload       :: !InstanceGroupsSetNamedPortsRequest
     , _igsnpInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceGroupsSetNamedPorts' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'igsnpInstanceGroup'
     -> InstanceGroupsSetNamedPorts
 instanceGroupsSetNamedPorts pIgsnpProject_ pIgsnpZone_ pIgsnpPayload_ pIgsnpInstanceGroup_ =
-    InstanceGroupsSetNamedPorts'
+  InstanceGroupsSetNamedPorts'
     { _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
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
@@ -21,8 +21,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- 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.
+-- is permanent and cannot be undone. It is not possible to delete
+-- templates that are already in use by a managed 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
@@ -57,16 +57,19 @@
                      QueryParam "alt" AltJSON :> Delete '[JSON] Operation
 
 -- | 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.
+-- is permanent and cannot be undone. It is not possible to delete
+-- templates that are already in use by a managed instance group.
 --
 -- /See:/ 'instanceTemplatesDelete' smart constructor.
-data InstanceTemplatesDelete = InstanceTemplatesDelete'
+data InstanceTemplatesDelete =
+  InstanceTemplatesDelete'
     { _itdRequestId        :: !(Maybe Text)
     , _itdProject          :: !Text
     , _itdInstanceTemplate :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceTemplatesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'itdInstanceTemplate'
     -> InstanceTemplatesDelete
 instanceTemplatesDelete pItdProject_ pItdInstanceTemplate_ =
-    InstanceTemplatesDelete'
+  InstanceTemplatesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- instance templates by making a list() request.
 --
 -- /See:/ 'instanceTemplatesGet' smart constructor.
-data InstanceTemplatesGet = InstanceTemplatesGet'
+data InstanceTemplatesGet =
+  InstanceTemplatesGet'
     { _itgProject          :: !Text
     , _itgInstanceTemplate :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceTemplatesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'itgInstanceTemplate'
     -> InstanceTemplatesGet
 instanceTemplatesGet pItgProject_ pItgInstanceTemplate_ =
-    InstanceTemplatesGet'
-    { _itgProject = pItgProject_
-    , _itgInstanceTemplate = pItgInstanceTemplate_
-    }
+  InstanceTemplatesGet'
+    {_itgProject = pItgProject_, _itgInstanceTemplate = pItgInstanceTemplate_}
+
 
 -- | Project ID for this request.
 itgProject :: Lens' InstanceTemplatesGet Text
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/GetIAMPolicy.hs
@@ -58,11 +58,14 @@
 -- policy or resource exists.
 --
 -- /See:/ 'instanceTemplatesGetIAMPolicy' smart constructor.
-data InstanceTemplatesGetIAMPolicy = InstanceTemplatesGetIAMPolicy'
+data InstanceTemplatesGetIAMPolicy =
+  InstanceTemplatesGetIAMPolicy'
     { _itgipProject  :: !Text
     , _itgipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'itgipResource'
     -> InstanceTemplatesGetIAMPolicy
 instanceTemplatesGetIAMPolicy pItgipProject_ pItgipResource_ =
-    InstanceTemplatesGetIAMPolicy'
-    { _itgipProject = pItgipProject_
-    , _itgipResource = pItgipResource_
-    }
+  InstanceTemplatesGetIAMPolicy'
+    {_itgipProject = pItgipProject_, _itgipResource = pItgipResource_}
+
 
 -- | Project ID for this request.
 itgipProject :: Lens' InstanceTemplatesGetIAMPolicy Text
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
@@ -66,12 +66,15 @@
 -- template.
 --
 -- /See:/ 'instanceTemplatesInsert' smart constructor.
-data InstanceTemplatesInsert = InstanceTemplatesInsert'
+data InstanceTemplatesInsert =
+  InstanceTemplatesInsert'
     { _itiRequestId :: !(Maybe Text)
     , _itiProject   :: !Text
     , _itiPayload   :: !InstanceTemplate
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,11 +89,12 @@
     -> InstanceTemplate -- ^ 'itiPayload'
     -> InstanceTemplatesInsert
 instanceTemplatesInsert pItiProject_ pItiPayload_ =
-    InstanceTemplatesInsert'
+  InstanceTemplatesInsert'
     { _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
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
@@ -21,7 +21,7 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Retrieves a list of instance templates that are contained within the
--- specified project and zone.
+-- specified project.
 --
 -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.list@.
 module Network.Google.Resource.Compute.InstanceTemplates.List
@@ -61,17 +61,20 @@
                            Get '[JSON] InstanceTemplateList
 
 -- | Retrieves a list of instance templates that are contained within the
--- specified project and zone.
+-- specified project.
 --
 -- /See:/ 'instanceTemplatesList' smart constructor.
-data InstanceTemplatesList = InstanceTemplatesList'
+data InstanceTemplatesList =
+  InstanceTemplatesList'
     { _itlOrderBy    :: !(Maybe Text)
     , _itlProject    :: !Text
     , _itlFilter     :: !(Maybe Text)
     , _itlPageToken  :: !(Maybe Text)
     , _itlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstanceTemplatesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'itlProject'
     -> InstanceTemplatesList
 instanceTemplatesList pItlProject_ =
-    InstanceTemplatesList'
+  InstanceTemplatesList'
     { _itlOrderBy = Nothing
     , _itlProject = pItlProject_
     , _itlFilter = Nothing
     , _itlPageToken = Nothing
     , _itlMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/SetIAMPolicy.hs
@@ -61,12 +61,15 @@
 -- existing policy.
 --
 -- /See:/ 'instanceTemplatesSetIAMPolicy' smart constructor.
-data InstanceTemplatesSetIAMPolicy = InstanceTemplatesSetIAMPolicy'
+data InstanceTemplatesSetIAMPolicy =
+  InstanceTemplatesSetIAMPolicy'
     { _itsipProject  :: !Text
     , _itsipPayload  :: !GlobalSetPolicyRequest
     , _itsipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'itsipResource'
     -> InstanceTemplatesSetIAMPolicy
 instanceTemplatesSetIAMPolicy pItsipProject_ pItsipPayload_ pItsipResource_ =
-    InstanceTemplatesSetIAMPolicy'
+  InstanceTemplatesSetIAMPolicy'
     { _itsipProject = pItsipProject_
     , _itsipPayload = pItsipPayload_
     , _itsipResource = pItsipResource_
     }
+
 
 -- | Project ID for this request.
 itsipProject :: Lens' InstanceTemplatesSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/TestIAMPermissions.hs
@@ -59,12 +59,15 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'instanceTemplatesTestIAMPermissions' smart constructor.
-data InstanceTemplatesTestIAMPermissions = InstanceTemplatesTestIAMPermissions'
+data InstanceTemplatesTestIAMPermissions =
+  InstanceTemplatesTestIAMPermissions'
     { _ittipProject  :: !Text
     , _ittipPayload  :: !TestPermissionsRequest
     , _ittipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,12 +83,13 @@
     -> Text -- ^ 'ittipResource'
     -> InstanceTemplatesTestIAMPermissions
 instanceTemplatesTestIAMPermissions pIttipProject_ pIttipPayload_ pIttipResource_ =
-    InstanceTemplatesTestIAMPermissions'
+  InstanceTemplatesTestIAMPermissions'
     { _ittipProject = pIttipProject_
     , _ittipPayload = pIttipPayload_
     , _ittipResource = pIttipResource_
     }
 
+
 -- | Project ID for this request.
 ittipProject :: Lens' InstanceTemplatesTestIAMPermissions Text
 ittipProject
@@ -103,7 +107,8 @@
       (\ s a -> s{_ittipResource = a})
 
 instance GoogleRequest
-         InstanceTemplatesTestIAMPermissions where
+           InstanceTemplatesTestIAMPermissions
+         where
         type Rs InstanceTemplatesTestIAMPermissions =
              TestPermissionsResponse
         type Scopes InstanceTemplatesTestIAMPermissions =
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
@@ -65,15 +65,18 @@
 -- | Adds an access config to an instance\'s network interface.
 --
 -- /See:/ 'instancesAddAccessConfig' smart constructor.
-data InstancesAddAccessConfig = InstancesAddAccessConfig'
+data InstancesAddAccessConfig =
+  InstancesAddAccessConfig'
     { _iaacRequestId        :: !(Maybe Text)
     , _iaacProject          :: !Text
     , _iaacNetworkInterface :: !Text
     , _iaacZone             :: !Text
     , _iaacPayload          :: !AccessConfig
     , _iaacInstance         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstancesAddAccessConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     -> Text -- ^ 'iaacInstance'
     -> InstancesAddAccessConfig
 instancesAddAccessConfig pIaacProject_ pIaacNetworkInterface_ pIaacZone_ pIaacPayload_ pIaacInstance_ =
-    InstancesAddAccessConfig'
+  InstancesAddAccessConfig'
     { _iaacRequestId = Nothing
     , _iaacProject = pIaacProject_
     , _iaacNetworkInterface = pIaacNetworkInterface_
@@ -105,6 +108,7 @@
     , _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
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
@@ -64,14 +64,17 @@
 -- all regions and zones.
 --
 -- /See:/ 'instancesAggregatedList' smart constructor.
-data InstancesAggregatedList = InstancesAggregatedList'
+data InstancesAggregatedList =
+  InstancesAggregatedList'
     { _ialaOrderBy    :: !(Maybe Text)
     , _ialaProject    :: !Text
     , _ialaFilter     :: !(Maybe Text)
     , _ialaPageToken  :: !(Maybe Text)
     , _ialaMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'ialaProject'
     -> InstancesAggregatedList
 instancesAggregatedList pIalaProject_ =
-    InstancesAggregatedList'
+  InstancesAggregatedList'
     { _ialaOrderBy = Nothing
     , _ialaProject = pIalaProject_
     , _ialaFilter = Nothing
     , _ialaPageToken = Nothing
     , _ialaMaxResults = 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
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
@@ -71,15 +71,18 @@
 -- persistent disk to your instance.
 --
 -- /See:/ 'instancesAttachDisk' smart constructor.
-data InstancesAttachDisk = InstancesAttachDisk'
+data InstancesAttachDisk =
+  InstancesAttachDisk'
     { _insRequestId   :: !(Maybe Text)
     , _insProject     :: !Text
     , _insZone        :: !Text
     , _insPayload     :: !AttachedDisk
     , _insForceAttach :: !(Maybe Bool)
     , _insInstance    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -102,7 +105,7 @@
     -> Text -- ^ 'insInstance'
     -> InstancesAttachDisk
 instancesAttachDisk pInsProject_ pInsZone_ pInsPayload_ pInsInstance_ =
-    InstancesAttachDisk'
+  InstancesAttachDisk'
     { _insRequestId = Nothing
     , _insProject = pInsProject_
     , _insZone = pInsZone_
@@ -111,6 +114,7 @@
     , _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
@@ -140,7 +144,7 @@
   = 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.
+-- another instance.
 insForceAttach :: Lens' InstancesAttachDisk (Maybe Bool)
 insForceAttach
   = lens _insForceAttach
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
@@ -61,13 +61,16 @@
 -- Stopping or Deleting an Instance.
 --
 -- /See:/ 'instancesDelete' smart constructor.
-data InstancesDelete = InstancesDelete'
+data InstancesDelete =
+  InstancesDelete'
     { _idRequestId :: !(Maybe Text)
     , _idProject   :: !Text
     , _idZone      :: !Text
     , _idInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'idInstance'
     -> InstancesDelete
 instancesDelete pIdProject_ pIdZone_ pIdInstance_ =
-    InstancesDelete'
+  InstancesDelete'
     { _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
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
@@ -64,15 +64,18 @@
 -- | Deletes an access config from an instance\'s network interface.
 --
 -- /See:/ 'instancesDeleteAccessConfig' smart constructor.
-data InstancesDeleteAccessConfig = InstancesDeleteAccessConfig'
+data InstancesDeleteAccessConfig =
+  InstancesDeleteAccessConfig'
     { _idacRequestId        :: !(Maybe Text)
     , _idacProject          :: !Text
     , _idacNetworkInterface :: !Text
     , _idacZone             :: !Text
     , _idacAccessConfig     :: !Text
     , _idacInstance         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstancesDeleteAccessConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'idacInstance'
     -> InstancesDeleteAccessConfig
 instancesDeleteAccessConfig pIdacProject_ pIdacNetworkInterface_ pIdacZone_ pIdacAccessConfig_ pIdacInstance_ =
-    InstancesDeleteAccessConfig'
+  InstancesDeleteAccessConfig'
     { _idacRequestId = Nothing
     , _idacProject = pIdacProject_
     , _idacNetworkInterface = pIdacNetworkInterface_
@@ -104,6 +107,7 @@
     , _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
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
@@ -62,14 +62,17 @@
 -- | Detaches a disk from an instance.
 --
 -- /See:/ 'instancesDetachDisk' smart constructor.
-data InstancesDetachDisk = InstancesDetachDisk'
+data InstancesDetachDisk =
+  InstancesDetachDisk'
     { _idddRequestId  :: !(Maybe Text)
     , _idddProject    :: !Text
     , _idddZone       :: !Text
     , _idddDeviceName :: !Text
     , _idddInstance   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'idddInstance'
     -> InstancesDetachDisk
 instancesDetachDisk pIdddProject_ pIdddZone_ pIdddDeviceName_ pIdddInstance_ =
-    InstancesDetachDisk'
+  InstancesDetachDisk'
     { _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
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
@@ -59,12 +59,15 @@
 -- instances by making a list() request.
 --
 -- /See:/ 'instancesGet' smart constructor.
-data InstancesGet = InstancesGet'
+data InstancesGet =
+  InstancesGet'
     { _igProject  :: !Text
     , _igZone     :: !Text
     , _igInstance :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstancesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,9 @@
     -> Text -- ^ 'igInstance'
     -> InstancesGet
 instancesGet pIgProject_ pIgZone_ pIgInstance_ =
-    InstancesGet'
-    { _igProject = pIgProject_
-    , _igZone = pIgZone_
-    , _igInstance = pIgInstance_
-    }
+  InstancesGet'
+    {_igProject = pIgProject_, _igZone = pIgZone_, _igInstance = pIgInstance_}
+
 
 -- | Project ID for this request.
 igProject :: Lens' InstancesGet Text
diff --git a/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/GetIAMPolicy.hs
@@ -60,12 +60,15 @@
 -- policy or resource exists.
 --
 -- /See:/ 'instancesGetIAMPolicy' smart constructor.
-data InstancesGetIAMPolicy = InstancesGetIAMPolicy'
+data InstancesGetIAMPolicy =
+  InstancesGetIAMPolicy'
     { _igiampProject  :: !Text
     , _igiampZone     :: !Text
     , _igiampResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'igiampResource'
     -> InstancesGetIAMPolicy
 instancesGetIAMPolicy pIgiampProject_ pIgiampZone_ pIgiampResource_ =
-    InstancesGetIAMPolicy'
+  InstancesGetIAMPolicy'
     { _igiampProject = pIgiampProject_
     , _igiampZone = pIgiampZone_
     , _igiampResource = pIgiampResource_
     }
+
 
 -- | Project ID for this request.
 igiampProject :: Lens' InstancesGetIAMPolicy Text
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
@@ -63,14 +63,17 @@
 -- | Returns the last 1 MB of serial port output from the specified instance.
 --
 -- /See:/ 'instancesGetSerialPortOutput' smart constructor.
-data InstancesGetSerialPortOutput = InstancesGetSerialPortOutput'
+data InstancesGetSerialPortOutput =
+  InstancesGetSerialPortOutput'
     { _igspoProject  :: !Text
     , _igspoStart    :: !(Maybe (Textual Int64))
     , _igspoZone     :: !Text
     , _igspoPort     :: !(Textual Int32)
     , _igspoInstance :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstancesGetSerialPortOutput' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'igspoInstance'
     -> InstancesGetSerialPortOutput
 instancesGetSerialPortOutput pIgspoProject_ pIgspoZone_ pIgspoInstance_ =
-    InstancesGetSerialPortOutput'
+  InstancesGetSerialPortOutput'
     { _igspoProject = pIgspoProject_
     , _igspoStart = Nothing
     , _igspoZone = pIgspoZone_
     , _igspoPort = 1
     , _igspoInstance = pIgspoInstance_
     }
+
 
 -- | Project ID for this request.
 igspoProject :: Lens' InstancesGetSerialPortOutput Text
diff --git a/gen/Network/Google/Resource/Compute/Instances/GetShieldedInstanceIdentity.hs b/gen/Network/Google/Resource/Compute/Instances/GetShieldedInstanceIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/GetShieldedInstanceIdentity.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.Instances.GetShieldedInstanceIdentity
+-- 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 Shielded Instance Identity of an instance
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.getShieldedInstanceIdentity@.
+module Network.Google.Resource.Compute.Instances.GetShieldedInstanceIdentity
+    (
+    -- * REST Resource
+      InstancesGetShieldedInstanceIdentityResource
+
+    -- * Creating a Request
+    , instancesGetShieldedInstanceIdentity
+    , InstancesGetShieldedInstanceIdentity
+
+    -- * Request Lenses
+    , igsiiProject
+    , igsiiZone
+    , igsiiInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.getShieldedInstanceIdentity@ method which the
+-- 'InstancesGetShieldedInstanceIdentity' request conforms to.
+type InstancesGetShieldedInstanceIdentityResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "getShieldedInstanceIdentity" :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ShieldedInstanceIdentity
+
+-- | Returns the Shielded Instance Identity of an instance
+--
+-- /See:/ 'instancesGetShieldedInstanceIdentity' smart constructor.
+data InstancesGetShieldedInstanceIdentity =
+  InstancesGetShieldedInstanceIdentity'
+    { _igsiiProject  :: !Text
+    , _igsiiZone     :: !Text
+    , _igsiiInstance :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancesGetShieldedInstanceIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igsiiProject'
+--
+-- * 'igsiiZone'
+--
+-- * 'igsiiInstance'
+instancesGetShieldedInstanceIdentity
+    :: Text -- ^ 'igsiiProject'
+    -> Text -- ^ 'igsiiZone'
+    -> Text -- ^ 'igsiiInstance'
+    -> InstancesGetShieldedInstanceIdentity
+instancesGetShieldedInstanceIdentity pIgsiiProject_ pIgsiiZone_ pIgsiiInstance_ =
+  InstancesGetShieldedInstanceIdentity'
+    { _igsiiProject = pIgsiiProject_
+    , _igsiiZone = pIgsiiZone_
+    , _igsiiInstance = pIgsiiInstance_
+    }
+
+
+-- | Project ID for this request.
+igsiiProject :: Lens' InstancesGetShieldedInstanceIdentity Text
+igsiiProject
+  = lens _igsiiProject (\ s a -> s{_igsiiProject = a})
+
+-- | The name of the zone for this request.
+igsiiZone :: Lens' InstancesGetShieldedInstanceIdentity Text
+igsiiZone
+  = lens _igsiiZone (\ s a -> s{_igsiiZone = a})
+
+-- | Name or id of the instance scoping this request.
+igsiiInstance :: Lens' InstancesGetShieldedInstanceIdentity Text
+igsiiInstance
+  = lens _igsiiInstance
+      (\ s a -> s{_igsiiInstance = a})
+
+instance GoogleRequest
+           InstancesGetShieldedInstanceIdentity
+         where
+        type Rs InstancesGetShieldedInstanceIdentity =
+             ShieldedInstanceIdentity
+        type Scopes InstancesGetShieldedInstanceIdentity =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          InstancesGetShieldedInstanceIdentity'{..}
+          = go _igsiiProject _igsiiZone _igsiiInstance
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstancesGetShieldedInstanceIdentityResource)
+                      mempty
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
@@ -63,14 +63,17 @@
 -- included in the request.
 --
 -- /See:/ 'instancesInsert' smart constructor.
-data InstancesInsert = InstancesInsert'
+data InstancesInsert =
+  InstancesInsert'
     { _iiiRequestId              :: !(Maybe Text)
     , _iiiProject                :: !Text
     , _iiiZone                   :: !Text
     , _iiiPayload                :: !Instance
     , _iiiSourceInstanceTemplate :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,13 +93,14 @@
     -> Instance -- ^ 'iiiPayload'
     -> InstancesInsert
 instancesInsert pIiiProject_ pIiiZone_ pIiiPayload_ =
-    InstancesInsert'
+  InstancesInsert'
     { _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
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
@@ -63,15 +63,18 @@
 -- | Retrieves the list of instances contained within the specified zone.
 --
 -- /See:/ 'instancesList' smart constructor.
-data InstancesList = InstancesList'
+data InstancesList =
+  InstancesList'
     { _il1OrderBy    :: !(Maybe Text)
     , _il1Project    :: !Text
     , _il1Zone       :: !Text
     , _il1Filter     :: !(Maybe Text)
     , _il1PageToken  :: !(Maybe Text)
     , _il1MaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'il1Zone'
     -> InstancesList
 instancesList pIl1Project_ pIl1Zone_ =
-    InstancesList'
+  InstancesList'
     { _il1OrderBy = Nothing
     , _il1Project = pIl1Project_
     , _il1Zone = pIl1Zone_
@@ -100,6 +103,7 @@
     , _il1PageToken = Nothing
     , _il1MaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs b/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs
--- a/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/ListReferrers.hs
@@ -71,7 +71,8 @@
 -- Instances.
 --
 -- /See:/ 'instancesListReferrers' smart constructor.
-data InstancesListReferrers = InstancesListReferrers'
+data InstancesListReferrers =
+  InstancesListReferrers'
     { _ilrOrderBy    :: !(Maybe Text)
     , _ilrProject    :: !Text
     , _ilrZone       :: !Text
@@ -79,8 +80,10 @@
     , _ilrPageToken  :: !(Maybe Text)
     , _ilrMaxResults :: !(Textual Word32)
     , _ilrInstance   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -104,7 +107,7 @@
     -> Text -- ^ 'ilrInstance'
     -> InstancesListReferrers
 instancesListReferrers pIlrProject_ pIlrZone_ pIlrInstance_ =
-    InstancesListReferrers'
+  InstancesListReferrers'
     { _ilrOrderBy = Nothing
     , _ilrProject = pIlrProject_
     , _ilrZone = pIlrZone_
@@ -113,6 +116,7 @@
     , _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
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,8 +20,8 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Performs a reset on the instance. For more information, see Resetting an
--- instance.
+-- Performs a reset on the instance. This is a hard reset the VM does not
+-- do a graceful shutdown. 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
@@ -58,17 +58,20 @@
                        QueryParam "requestId" Text :>
                          QueryParam "alt" AltJSON :> Post '[JSON] Operation
 
--- | Performs a reset on the instance. For more information, see Resetting an
--- instance.
+-- | Performs a reset on the instance. This is a hard reset the VM does not
+-- do a graceful shutdown. For more information, see Resetting an instance.
 --
 -- /See:/ 'instancesReset' smart constructor.
-data InstancesReset = InstancesReset'
+data InstancesReset =
+  InstancesReset'
     { _irRequestId :: !(Maybe Text)
     , _irProject   :: !Text
     , _irZone      :: !Text
     , _irInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'irInstance'
     -> InstancesReset
 instancesReset pIrProject_ pIrZone_ pIrInstance_ =
-    InstancesReset'
+  InstancesReset'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs b/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetDeletionProtection.hs
@@ -62,14 +62,17 @@
 -- | Sets deletion protection on the instance.
 --
 -- /See:/ 'instancesSetDeletionProtection' smart constructor.
-data InstancesSetDeletionProtection = InstancesSetDeletionProtection'
+data InstancesSetDeletionProtection =
+  InstancesSetDeletionProtection'
     { _isdpRequestId          :: !(Maybe Text)
     , _isdpDeletionProtection :: !Bool
     , _isdpProject            :: !Text
     , _isdpZone               :: !Text
     , _isdpResource           :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     -> Text -- ^ 'isdpResource'
     -> InstancesSetDeletionProtection
 instancesSetDeletionProtection pIsdpProject_ pIsdpZone_ pIsdpResource_ =
-    InstancesSetDeletionProtection'
+  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
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
@@ -64,15 +64,18 @@
 -- | Sets the auto-delete flag for a disk attached to an instance.
 --
 -- /See:/ 'instancesSetDiskAutoDelete' smart constructor.
-data InstancesSetDiskAutoDelete = InstancesSetDiskAutoDelete'
+data InstancesSetDiskAutoDelete =
+  InstancesSetDiskAutoDelete'
     { _isdadRequestId  :: !(Maybe Text)
     , _isdadProject    :: !Text
     , _isdadAutoDelete :: !Bool
     , _isdadZone       :: !Text
     , _isdadDeviceName :: !Text
     , _isdadInstance   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstancesSetDiskAutoDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'isdadInstance'
     -> InstancesSetDiskAutoDelete
 instancesSetDiskAutoDelete pIsdadProject_ pIsdadAutoDelete_ pIsdadZone_ pIsdadDeviceName_ pIsdadInstance_ =
-    InstancesSetDiskAutoDelete'
+  InstancesSetDiskAutoDelete'
     { _isdadRequestId = Nothing
     , _isdadProject = pIsdadProject_
     , _isdadAutoDelete = pIsdadAutoDelete_
@@ -104,6 +107,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetIAMPolicy.hs
@@ -63,13 +63,16 @@
 -- existing policy.
 --
 -- /See:/ 'instancesSetIAMPolicy' smart constructor.
-data InstancesSetIAMPolicy = InstancesSetIAMPolicy'
+data InstancesSetIAMPolicy =
+  InstancesSetIAMPolicy'
     { _isipProject  :: !Text
     , _isipZone     :: !Text
     , _isipPayload  :: !ZoneSetPolicyRequest
     , _isipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'isipResource'
     -> InstancesSetIAMPolicy
 instancesSetIAMPolicy pIsipProject_ pIsipZone_ pIsipPayload_ pIsipResource_ =
-    InstancesSetIAMPolicy'
+  InstancesSetIAMPolicy'
     { _isipProject = pIsipProject_
     , _isipZone = pIsipZone_
     , _isipPayload = pIsipPayload_
     , _isipResource = pIsipResource_
     }
+
 
 -- | Project ID for this request.
 isipProject :: Lens' InstancesSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs b/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetLabels.hs
@@ -65,14 +65,17 @@
 -- Labeling Resources documentation.
 --
 -- /See:/ 'instancesSetLabels' smart constructor.
-data InstancesSetLabels = InstancesSetLabels'
+data InstancesSetLabels =
+  InstancesSetLabels'
     { _islRequestId :: !(Maybe Text)
     , _islProject   :: !Text
     , _islZone      :: !Text
     , _islPayload   :: !InstancesSetLabelsRequest
     , _islInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'islInstance'
     -> InstancesSetLabels
 instancesSetLabels pIslProject_ pIslZone_ pIslPayload_ pIslInstance_ =
-    InstancesSetLabels'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs b/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMachineResources.hs
@@ -65,14 +65,17 @@
 -- the values specified in the request.
 --
 -- /See:/ 'instancesSetMachineResources' smart constructor.
-data InstancesSetMachineResources = InstancesSetMachineResources'
+data InstancesSetMachineResources =
+  InstancesSetMachineResources'
     { _ismrRequestId :: !(Maybe Text)
     , _ismrProject   :: !Text
     , _ismrZone      :: !Text
     , _ismrPayload   :: !InstancesSetMachineResourcesRequest
     , _ismrInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'ismrInstance'
     -> InstancesSetMachineResources
 instancesSetMachineResources pIsmrProject_ pIsmrZone_ pIsmrPayload_ pIsmrInstance_ =
-    InstancesSetMachineResources'
+  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
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
@@ -65,14 +65,17 @@
 -- specified in the request.
 --
 -- /See:/ 'instancesSetMachineType' smart constructor.
-data InstancesSetMachineType = InstancesSetMachineType'
+data InstancesSetMachineType =
+  InstancesSetMachineType'
     { _ismtRequestId :: !(Maybe Text)
     , _ismtProject   :: !Text
     , _ismtZone      :: !Text
     , _ismtPayload   :: !InstancesSetMachineTypeRequest
     , _ismtInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'ismtInstance'
     -> InstancesSetMachineType
 instancesSetMachineType pIsmtProject_ pIsmtZone_ pIsmtPayload_ pIsmtInstance_ =
-    InstancesSetMachineType'
+  InstancesSetMachineType'
     { _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
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
@@ -64,14 +64,17 @@
 -- request.
 --
 -- /See:/ 'instancesSetMetadata' smart constructor.
-data InstancesSetMetadata = InstancesSetMetadata'
+data InstancesSetMetadata =
+  InstancesSetMetadata'
     { _ismRequestId :: !(Maybe Text)
     , _ismProject   :: !Text
     , _ismZone      :: !Text
     , _ismPayload   :: !Metadata
     , _ismInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -92,13 +95,14 @@
     -> Text -- ^ 'ismInstance'
     -> InstancesSetMetadata
 instancesSetMetadata pIsmProject_ pIsmZone_ pIsmPayload_ pIsmInstance_ =
-    InstancesSetMetadata'
+  InstancesSetMetadata'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs b/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMinCPUPlatform.hs
@@ -67,14 +67,17 @@
 -- read Specifying a Minimum CPU Platform.
 --
 -- /See:/ 'instancesSetMinCPUPlatform' smart constructor.
-data InstancesSetMinCPUPlatform = InstancesSetMinCPUPlatform'
+data InstancesSetMinCPUPlatform =
+  InstancesSetMinCPUPlatform'
     { _ismcpRequestId :: !(Maybe Text)
     , _ismcpProject   :: !Text
     , _ismcpZone      :: !Text
     , _ismcpPayload   :: !InstancesSetMinCPUPlatformRequest
     , _ismcpInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'ismcpInstance'
     -> InstancesSetMinCPUPlatform
 instancesSetMinCPUPlatform pIsmcpProject_ pIsmcpZone_ pIsmcpPayload_ pIsmcpInstance_ =
-    InstancesSetMinCPUPlatform'
+  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
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
@@ -62,14 +62,17 @@
 -- | Sets an instance\'s scheduling options.
 --
 -- /See:/ 'instancesSetScheduling' smart constructor.
-data InstancesSetScheduling = InstancesSetScheduling'
+data InstancesSetScheduling =
+  InstancesSetScheduling'
     { _issRequestId :: !(Maybe Text)
     , _issProject   :: !Text
     , _issZone      :: !Text
     , _issPayload   :: !Scheduling
     , _issInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'issInstance'
     -> InstancesSetScheduling
 instancesSetScheduling pIssProject_ pIssZone_ pIssPayload_ pIssInstance_ =
-    InstancesSetScheduling'
+  InstancesSetScheduling'
     { _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
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
@@ -65,14 +65,17 @@
 -- Changing the service account and access scopes for an instance.
 --
 -- /See:/ 'instancesSetServiceAccount' smart constructor.
-data InstancesSetServiceAccount = InstancesSetServiceAccount'
+data InstancesSetServiceAccount =
+  InstancesSetServiceAccount'
     { _issaRequestId :: !(Maybe Text)
     , _issaProject   :: !Text
     , _issaZone      :: !Text
     , _issaPayload   :: !InstancesSetServiceAccountRequest
     , _issaInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'issaInstance'
     -> InstancesSetServiceAccount
 instancesSetServiceAccount pIssaProject_ pIssaZone_ pIssaPayload_ pIssaInstance_ =
-    InstancesSetServiceAccount'
+  InstancesSetServiceAccount'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetShieldedInstanceIntegrityPolicy.hs b/gen/Network/Google/Resource/Compute/Instances/SetShieldedInstanceIntegrityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetShieldedInstanceIntegrityPolicy.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.SetShieldedInstanceIntegrityPolicy
+-- 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 Shielded Instance integrity policy for an instance. You can
+-- only use this method on a running instance. 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.setShieldedInstanceIntegrityPolicy@.
+module Network.Google.Resource.Compute.Instances.SetShieldedInstanceIntegrityPolicy
+    (
+    -- * REST Resource
+      InstancesSetShieldedInstanceIntegrityPolicyResource
+
+    -- * Creating a Request
+    , instancesSetShieldedInstanceIntegrityPolicy
+    , InstancesSetShieldedInstanceIntegrityPolicy
+
+    -- * Request Lenses
+    , issiipRequestId
+    , issiipProject
+    , issiipZone
+    , issiipPayload
+    , issiipInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setShieldedInstanceIntegrityPolicy@ method which the
+-- 'InstancesSetShieldedInstanceIntegrityPolicy' request conforms to.
+type InstancesSetShieldedInstanceIntegrityPolicyResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setShieldedInstanceIntegrityPolicy" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] ShieldedInstanceIntegrityPolicy :>
+                             Patch '[JSON] Operation
+
+-- | Sets the Shielded Instance integrity policy for an instance. You can
+-- only use this method on a running instance. This method supports PATCH
+-- semantics and uses the JSON merge patch format and processing rules.
+--
+-- /See:/ 'instancesSetShieldedInstanceIntegrityPolicy' smart constructor.
+data InstancesSetShieldedInstanceIntegrityPolicy =
+  InstancesSetShieldedInstanceIntegrityPolicy'
+    { _issiipRequestId :: !(Maybe Text)
+    , _issiipProject   :: !Text
+    , _issiipZone      :: !Text
+    , _issiipPayload   :: !ShieldedInstanceIntegrityPolicy
+    , _issiipInstance  :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancesSetShieldedInstanceIntegrityPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'issiipRequestId'
+--
+-- * 'issiipProject'
+--
+-- * 'issiipZone'
+--
+-- * 'issiipPayload'
+--
+-- * 'issiipInstance'
+instancesSetShieldedInstanceIntegrityPolicy
+    :: Text -- ^ 'issiipProject'
+    -> Text -- ^ 'issiipZone'
+    -> ShieldedInstanceIntegrityPolicy -- ^ 'issiipPayload'
+    -> Text -- ^ 'issiipInstance'
+    -> InstancesSetShieldedInstanceIntegrityPolicy
+instancesSetShieldedInstanceIntegrityPolicy pIssiipProject_ pIssiipZone_ pIssiipPayload_ pIssiipInstance_ =
+  InstancesSetShieldedInstanceIntegrityPolicy'
+    { _issiipRequestId = Nothing
+    , _issiipProject = pIssiipProject_
+    , _issiipZone = pIssiipZone_
+    , _issiipPayload = pIssiipPayload_
+    , _issiipInstance = pIssiipInstance_
+    }
+
+
+-- | 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).
+issiipRequestId :: Lens' InstancesSetShieldedInstanceIntegrityPolicy (Maybe Text)
+issiipRequestId
+  = lens _issiipRequestId
+      (\ s a -> s{_issiipRequestId = a})
+
+-- | Project ID for this request.
+issiipProject :: Lens' InstancesSetShieldedInstanceIntegrityPolicy Text
+issiipProject
+  = lens _issiipProject
+      (\ s a -> s{_issiipProject = a})
+
+-- | The name of the zone for this request.
+issiipZone :: Lens' InstancesSetShieldedInstanceIntegrityPolicy Text
+issiipZone
+  = lens _issiipZone (\ s a -> s{_issiipZone = a})
+
+-- | Multipart request metadata.
+issiipPayload :: Lens' InstancesSetShieldedInstanceIntegrityPolicy ShieldedInstanceIntegrityPolicy
+issiipPayload
+  = lens _issiipPayload
+      (\ s a -> s{_issiipPayload = a})
+
+-- | Name or id of the instance scoping this request.
+issiipInstance :: Lens' InstancesSetShieldedInstanceIntegrityPolicy Text
+issiipInstance
+  = lens _issiipInstance
+      (\ s a -> s{_issiipInstance = a})
+
+instance GoogleRequest
+           InstancesSetShieldedInstanceIntegrityPolicy
+         where
+        type Rs InstancesSetShieldedInstanceIntegrityPolicy =
+             Operation
+        type Scopes
+               InstancesSetShieldedInstanceIntegrityPolicy
+             =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient
+          InstancesSetShieldedInstanceIntegrityPolicy'{..}
+          = go _issiipProject _issiipZone _issiipInstance
+              _issiipRequestId
+              (Just AltJSON)
+              _issiipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           InstancesSetShieldedInstanceIntegrityPolicyResource)
+                      mempty
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
@@ -64,14 +64,17 @@
 -- request.
 --
 -- /See:/ 'instancesSetTags' smart constructor.
-data InstancesSetTags = InstancesSetTags'
+data InstancesSetTags =
+  InstancesSetTags'
     { _istRequestId :: !(Maybe Text)
     , _istProject   :: !Text
     , _istZone      :: !Text
     , _istPayload   :: !Tags
     , _istInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -92,13 +95,14 @@
     -> Text -- ^ 'istInstance'
     -> InstancesSetTags
 instancesSetTags pIstProject_ pIstZone_ pIstPayload_ pIstInstance_ =
-    InstancesSetTags'
+  InstancesSetTags'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs b/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs
--- a/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/SimulateMaintenanceEvent.hs
@@ -58,12 +58,15 @@
 -- | Simulates a maintenance event on the instance.
 --
 -- /See:/ 'instancesSimulateMaintenanceEvent' smart constructor.
-data InstancesSimulateMaintenanceEvent = InstancesSimulateMaintenanceEvent'
+data InstancesSimulateMaintenanceEvent =
+  InstancesSimulateMaintenanceEvent'
     { _ismeProject  :: !Text
     , _ismeZone     :: !Text
     , _ismeInstance :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,12 +82,13 @@
     -> Text -- ^ 'ismeInstance'
     -> InstancesSimulateMaintenanceEvent
 instancesSimulateMaintenanceEvent pIsmeProject_ pIsmeZone_ pIsmeInstance_ =
-    InstancesSimulateMaintenanceEvent'
+  InstancesSimulateMaintenanceEvent'
     { _ismeProject = pIsmeProject_
     , _ismeZone = pIsmeZone_
     , _ismeInstance = pIsmeInstance_
     }
 
+
 -- | Project ID for this request.
 ismeProject :: Lens' InstancesSimulateMaintenanceEvent Text
 ismeProject
@@ -100,7 +104,8 @@
   = lens _ismeInstance (\ s a -> s{_ismeInstance = a})
 
 instance GoogleRequest
-         InstancesSimulateMaintenanceEvent where
+           InstancesSimulateMaintenanceEvent
+         where
         type Rs InstancesSimulateMaintenanceEvent = Operation
         type Scopes InstancesSimulateMaintenanceEvent =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -62,13 +62,16 @@
 -- For more information, see Restart an instance.
 --
 -- /See:/ 'instancesStart' smart constructor.
-data InstancesStart = InstancesStart'
+data InstancesStart =
+  InstancesStart'
     { _insnRequestId :: !(Maybe Text)
     , _insnProject   :: !Text
     , _insnZone      :: !Text
     , _insnInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'insnInstance'
     -> InstancesStart
 instancesStart pInsnProject_ pInsnZone_ pInsnInstance_ =
-    InstancesStart'
+  InstancesStart'
     { _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
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
@@ -66,14 +66,17 @@
 -- For more information, see Restart an instance.
 --
 -- /See:/ 'instancesStartWithEncryptionKey' smart constructor.
-data InstancesStartWithEncryptionKey = InstancesStartWithEncryptionKey'
+data InstancesStartWithEncryptionKey =
+  InstancesStartWithEncryptionKey'
     { _iswekRequestId :: !(Maybe Text)
     , _iswekProject   :: !Text
     , _iswekZone      :: !Text
     , _iswekPayload   :: !InstancesStartWithEncryptionKeyRequest
     , _iswekInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'iswekInstance'
     -> InstancesStartWithEncryptionKey
 instancesStartWithEncryptionKey pIswekProject_ pIswekZone_ pIswekPayload_ pIswekInstance_ =
-    InstancesStartWithEncryptionKey'
+  InstancesStartWithEncryptionKey'
     { _iswekRequestId = Nothing
     , _iswekProject = pIswekProject_
     , _iswekZone = pIswekZone_
@@ -102,6 +105,7 @@
     , _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
@@ -139,7 +143,8 @@
       (\ s a -> s{_iswekInstance = a})
 
 instance GoogleRequest
-         InstancesStartWithEncryptionKey where
+           InstancesStartWithEncryptionKey
+         where
         type Rs InstancesStartWithEncryptionKey = Operation
         type Scopes InstancesStartWithEncryptionKey =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -70,13 +70,16 @@
 -- an instance.
 --
 -- /See:/ 'instancesStop' smart constructor.
-data InstancesStop = InstancesStop'
+data InstancesStop =
+  InstancesStop'
     { _isRequestId :: !(Maybe Text)
     , _isProject   :: !Text
     , _isZone      :: !Text
     , _isInstance  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -94,12 +97,13 @@
     -> Text -- ^ 'isInstance'
     -> InstancesStop
 instancesStop pIsProject_ pIsZone_ pIsInstance_ =
-    InstancesStop'
+  InstancesStop'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'instancesTestIAMPermissions' smart constructor.
-data InstancesTestIAMPermissions = InstancesTestIAMPermissions'
+data InstancesTestIAMPermissions =
+  InstancesTestIAMPermissions'
     { _itipProject  :: !Text
     , _itipZone     :: !Text
     , _itipPayload  :: !TestPermissionsRequest
     , _itipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'itipResource'
     -> InstancesTestIAMPermissions
 instancesTestIAMPermissions pItipProject_ pItipZone_ pItipPayload_ pItipResource_ =
-    InstancesTestIAMPermissions'
+  InstancesTestIAMPermissions'
     { _itipProject = pItipProject_
     , _itipZone = pItipZone_
     , _itipPayload = pItipPayload_
     , _itipResource = pItipResource_
     }
+
 
 -- | Project ID for this request.
 itipProject :: Lens' InstancesTestIAMPermissions Text
diff --git a/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs
--- a/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/UpdateAccessConfig.hs
@@ -71,15 +71,18 @@
 -- rules.
 --
 -- /See:/ 'instancesUpdateAccessConfig' smart constructor.
-data InstancesUpdateAccessConfig = InstancesUpdateAccessConfig'
+data InstancesUpdateAccessConfig =
+  InstancesUpdateAccessConfig'
     { _iuacRequestId        :: !(Maybe Text)
     , _iuacProject          :: !Text
     , _iuacNetworkInterface :: !Text
     , _iuacZone             :: !Text
     , _iuacPayload          :: !AccessConfig
     , _iuacInstance         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -103,7 +106,7 @@
     -> Text -- ^ 'iuacInstance'
     -> InstancesUpdateAccessConfig
 instancesUpdateAccessConfig pIuacProject_ pIuacNetworkInterface_ pIuacZone_ pIuacPayload_ pIuacInstance_ =
-    InstancesUpdateAccessConfig'
+  InstancesUpdateAccessConfig'
     { _iuacRequestId = Nothing
     , _iuacProject = pIuacProject_
     , _iuacNetworkInterface = pIuacNetworkInterface_
@@ -111,6 +114,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs b/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs
--- a/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs
+++ b/gen/Network/Google/Resource/Compute/Instances/UpdateNetworkInterface.hs
@@ -67,15 +67,18 @@
 -- semantics.
 --
 -- /See:/ 'instancesUpdateNetworkInterface' smart constructor.
-data InstancesUpdateNetworkInterface = InstancesUpdateNetworkInterface'
+data InstancesUpdateNetworkInterface =
+  InstancesUpdateNetworkInterface'
     { _iuniRequestId        :: !(Maybe Text)
     , _iuniProject          :: !Text
     , _iuniNetworkInterface :: !Text
     , _iuniZone             :: !Text
     , _iuniPayload          :: !NetworkInterface
     , _iuniInstance         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -99,7 +102,7 @@
     -> Text -- ^ 'iuniInstance'
     -> InstancesUpdateNetworkInterface
 instancesUpdateNetworkInterface pIuniProject_ pIuniNetworkInterface_ pIuniZone_ pIuniPayload_ pIuniInstance_ =
-    InstancesUpdateNetworkInterface'
+  InstancesUpdateNetworkInterface'
     { _iuniRequestId = Nothing
     , _iuniProject = pIuniProject_
     , _iuniNetworkInterface = pIuniNetworkInterface_
@@ -108,6 +111,7 @@
     , _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
@@ -149,7 +153,8 @@
   = lens _iuniInstance (\ s a -> s{_iuniInstance = a})
 
 instance GoogleRequest
-         InstancesUpdateNetworkInterface where
+           InstancesUpdateNetworkInterface
+         where
         type Rs InstancesUpdateNetworkInterface = Operation
         type Scopes InstancesUpdateNetworkInterface =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/Compute/Instances/UpdateShieldedInstanceConfig.hs b/gen/Network/Google/Resource/Compute/Instances/UpdateShieldedInstanceConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/UpdateShieldedInstanceConfig.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.Instances.UpdateShieldedInstanceConfig
+-- 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 Shielded Instance config for an instance. You can only use
+-- this method on a stopped instance. 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.updateShieldedInstanceConfig@.
+module Network.Google.Resource.Compute.Instances.UpdateShieldedInstanceConfig
+    (
+    -- * REST Resource
+      InstancesUpdateShieldedInstanceConfigResource
+
+    -- * Creating a Request
+    , instancesUpdateShieldedInstanceConfig
+    , InstancesUpdateShieldedInstanceConfig
+
+    -- * Request Lenses
+    , iusicRequestId
+    , iusicProject
+    , iusicZone
+    , iusicPayload
+    , iusicInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.updateShieldedInstanceConfig@ method which the
+-- 'InstancesUpdateShieldedInstanceConfig' request conforms to.
+type InstancesUpdateShieldedInstanceConfigResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "updateShieldedInstanceConfig" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] ShieldedInstanceConfig :>
+                             Patch '[JSON] Operation
+
+-- | Updates the Shielded Instance config for an instance. You can only use
+-- this method on a stopped instance. This method supports PATCH semantics
+-- and uses the JSON merge patch format and processing rules.
+--
+-- /See:/ 'instancesUpdateShieldedInstanceConfig' smart constructor.
+data InstancesUpdateShieldedInstanceConfig =
+  InstancesUpdateShieldedInstanceConfig'
+    { _iusicRequestId :: !(Maybe Text)
+    , _iusicProject   :: !Text
+    , _iusicZone      :: !Text
+    , _iusicPayload   :: !ShieldedInstanceConfig
+    , _iusicInstance  :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancesUpdateShieldedInstanceConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iusicRequestId'
+--
+-- * 'iusicProject'
+--
+-- * 'iusicZone'
+--
+-- * 'iusicPayload'
+--
+-- * 'iusicInstance'
+instancesUpdateShieldedInstanceConfig
+    :: Text -- ^ 'iusicProject'
+    -> Text -- ^ 'iusicZone'
+    -> ShieldedInstanceConfig -- ^ 'iusicPayload'
+    -> Text -- ^ 'iusicInstance'
+    -> InstancesUpdateShieldedInstanceConfig
+instancesUpdateShieldedInstanceConfig pIusicProject_ pIusicZone_ pIusicPayload_ pIusicInstance_ =
+  InstancesUpdateShieldedInstanceConfig'
+    { _iusicRequestId = Nothing
+    , _iusicProject = pIusicProject_
+    , _iusicZone = pIusicZone_
+    , _iusicPayload = pIusicPayload_
+    , _iusicInstance = pIusicInstance_
+    }
+
+
+-- | 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).
+iusicRequestId :: Lens' InstancesUpdateShieldedInstanceConfig (Maybe Text)
+iusicRequestId
+  = lens _iusicRequestId
+      (\ s a -> s{_iusicRequestId = a})
+
+-- | Project ID for this request.
+iusicProject :: Lens' InstancesUpdateShieldedInstanceConfig Text
+iusicProject
+  = lens _iusicProject (\ s a -> s{_iusicProject = a})
+
+-- | The name of the zone for this request.
+iusicZone :: Lens' InstancesUpdateShieldedInstanceConfig Text
+iusicZone
+  = lens _iusicZone (\ s a -> s{_iusicZone = a})
+
+-- | Multipart request metadata.
+iusicPayload :: Lens' InstancesUpdateShieldedInstanceConfig ShieldedInstanceConfig
+iusicPayload
+  = lens _iusicPayload (\ s a -> s{_iusicPayload = a})
+
+-- | Name or id of the instance scoping this request.
+iusicInstance :: Lens' InstancesUpdateShieldedInstanceConfig Text
+iusicInstance
+  = lens _iusicInstance
+      (\ s a -> s{_iusicInstance = a})
+
+instance GoogleRequest
+           InstancesUpdateShieldedInstanceConfig
+         where
+        type Rs InstancesUpdateShieldedInstanceConfig =
+             Operation
+        type Scopes InstancesUpdateShieldedInstanceConfig =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient
+          InstancesUpdateShieldedInstanceConfig'{..}
+          = go _iusicProject _iusicZone _iusicInstance
+              _iusicRequestId
+              (Just AltJSON)
+              _iusicPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstancesUpdateShieldedInstanceConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/AggregatedList.hs
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of interconnect attachments.
 --
 -- /See:/ 'interconnectAttachmentsAggregatedList' smart constructor.
-data InterconnectAttachmentsAggregatedList = InterconnectAttachmentsAggregatedList'
+data InterconnectAttachmentsAggregatedList =
+  InterconnectAttachmentsAggregatedList'
     { _iaalOrderBy    :: !(Maybe Text)
     , _iaalProject    :: !Text
     , _iaalFilter     :: !(Maybe Text)
     , _iaalPageToken  :: !(Maybe Text)
     , _iaalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,7 +90,7 @@
     :: Text -- ^ 'iaalProject'
     -> InterconnectAttachmentsAggregatedList
 interconnectAttachmentsAggregatedList pIaalProject_ =
-    InterconnectAttachmentsAggregatedList'
+  InterconnectAttachmentsAggregatedList'
     { _iaalOrderBy = Nothing
     , _iaalProject = pIaalProject_
     , _iaalFilter = Nothing
@@ -95,6 +98,7 @@
     , _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
@@ -151,7 +155,8 @@
       . _Coerce
 
 instance GoogleRequest
-         InterconnectAttachmentsAggregatedList where
+           InterconnectAttachmentsAggregatedList
+         where
         type Rs InterconnectAttachmentsAggregatedList =
              InterconnectAttachmentAggregatedList
         type Scopes InterconnectAttachmentsAggregatedList =
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Delete.hs
@@ -59,13 +59,16 @@
 -- | Deletes the specified interconnect attachment.
 --
 -- /See:/ 'interconnectAttachmentsDelete' smart constructor.
-data InterconnectAttachmentsDelete = InterconnectAttachmentsDelete'
+data InterconnectAttachmentsDelete =
+  InterconnectAttachmentsDelete'
     { _iadRequestId              :: !(Maybe Text)
     , _iadProject                :: !Text
     , _iadRegion                 :: !Text
     , _iadInterconnectAttachment :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'iadInterconnectAttachment'
     -> InterconnectAttachmentsDelete
 interconnectAttachmentsDelete pIadProject_ pIadRegion_ pIadInterconnectAttachment_ =
-    InterconnectAttachmentsDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Get.hs
@@ -58,12 +58,15 @@
 -- | Returns the specified interconnect attachment.
 --
 -- /See:/ 'interconnectAttachmentsGet' smart constructor.
-data InterconnectAttachmentsGet = InterconnectAttachmentsGet'
+data InterconnectAttachmentsGet =
+  InterconnectAttachmentsGet'
     { _iagProject                :: !Text
     , _iagRegion                 :: !Text
     , _iagInterconnectAttachment :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'iagInterconnectAttachment'
     -> InterconnectAttachmentsGet
 interconnectAttachmentsGet pIagProject_ pIagRegion_ pIagInterconnectAttachment_ =
-    InterconnectAttachmentsGet'
+  InterconnectAttachmentsGet'
     { _iagProject = pIagProject_
     , _iagRegion = pIagRegion_
     , _iagInterconnectAttachment = pIagInterconnectAttachment_
     }
+
 
 -- | Project ID for this request.
 iagProject :: Lens' InterconnectAttachmentsGet Text
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Insert.hs
@@ -62,13 +62,16 @@
 -- data included in the request.
 --
 -- /See:/ 'interconnectAttachmentsInsert' smart constructor.
-data InterconnectAttachmentsInsert = InterconnectAttachmentsInsert'
+data InterconnectAttachmentsInsert =
+  InterconnectAttachmentsInsert'
     { _iaiRequestId :: !(Maybe Text)
     , _iaiProject   :: !Text
     , _iaiPayload   :: !InterconnectAttachment
     , _iaiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'iaiRegion'
     -> InterconnectAttachmentsInsert
 interconnectAttachmentsInsert pIaiProject_ pIaiPayload_ pIaiRegion_ =
-    InterconnectAttachmentsInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/List.hs
@@ -66,15 +66,18 @@
 -- specified region.
 --
 -- /See:/ 'interconnectAttachmentsList' smart constructor.
-data InterconnectAttachmentsList = InterconnectAttachmentsList'
+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)
+    }
+  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:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'ialRegion'
     -> InterconnectAttachmentsList
 interconnectAttachmentsList pIalProject_ pIalRegion_ =
-    InterconnectAttachmentsList'
+  InterconnectAttachmentsList'
     { _ialOrderBy = Nothing
     , _ialProject = pIalProject_
     , _ialFilter = Nothing
@@ -103,6 +106,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectAttachments/Patch.hs
@@ -66,14 +66,17 @@
 -- merge patch format and processing rules.
 --
 -- /See:/ 'interconnectAttachmentsPatch' smart constructor.
-data InterconnectAttachmentsPatch = InterconnectAttachmentsPatch'
+data InterconnectAttachmentsPatch =
+  InterconnectAttachmentsPatch'
     { _iapRequestId              :: !(Maybe Text)
     , _iapProject                :: !Text
     , _iapPayload                :: !InterconnectAttachment
     , _iapRegion                 :: !Text
     , _iapInterconnectAttachment :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -94,13 +97,14 @@
     -> Text -- ^ 'iapInterconnectAttachment'
     -> InterconnectAttachmentsPatch
 interconnectAttachmentsPatch pIapProject_ pIapPayload_ pIapRegion_ pIapInterconnectAttachment_ =
-    InterconnectAttachmentsPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs b/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectLocations/Get.hs
@@ -58,11 +58,14 @@
 -- of available interconnect locations by making a list() request.
 --
 -- /See:/ 'interconnectLocationsGet' smart constructor.
-data InterconnectLocationsGet = InterconnectLocationsGet'
+data InterconnectLocationsGet =
+  InterconnectLocationsGet'
     { _ilgProject              :: !Text
     , _ilgInterconnectLocation :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'ilgInterconnectLocation'
     -> InterconnectLocationsGet
 interconnectLocationsGet pIlgProject_ pIlgInterconnectLocation_ =
-    InterconnectLocationsGet'
+  InterconnectLocationsGet'
     { _ilgProject = pIlgProject_
     , _ilgInterconnectLocation = pIlgInterconnectLocation_
     }
+
 
 -- | Project ID for this request.
 ilgProject :: Lens' InterconnectLocationsGet Text
diff --git a/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs b/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs
--- a/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs
+++ b/gen/Network/Google/Resource/Compute/InterconnectLocations/List.hs
@@ -64,14 +64,17 @@
 -- project.
 --
 -- /See:/ 'interconnectLocationsList' smart constructor.
-data InterconnectLocationsList = InterconnectLocationsList'
+data InterconnectLocationsList =
+  InterconnectLocationsList'
     { _illOrderBy    :: !(Maybe Text)
     , _illProject    :: !Text
     , _illFilter     :: !(Maybe Text)
     , _illPageToken  :: !(Maybe Text)
     , _illMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'illProject'
     -> InterconnectLocationsList
 interconnectLocationsList pIllProject_ =
-    InterconnectLocationsList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs b/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified interconnect.
 --
 -- /See:/ 'interconnectsDelete' smart constructor.
-data InterconnectsDelete = InterconnectsDelete'
+data InterconnectsDelete =
+  InterconnectsDelete'
     { _intRequestId    :: !(Maybe Text)
     , _intProject      :: !Text
     , _intInterconnect :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'intInterconnect'
     -> InterconnectsDelete
 interconnectsDelete pIntProject_ pIntInterconnect_ =
-    InterconnectsDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Get.hs b/gen/Network/Google/Resource/Compute/Interconnects/Get.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Get.hs
@@ -57,11 +57,14 @@
 -- interconnects by making a list() request.
 --
 -- /See:/ 'interconnectsGet' smart constructor.
-data InterconnectsGet = InterconnectsGet'
+data InterconnectsGet =
+  InterconnectsGet'
     { _iProject      :: !Text
     , _iInterconnect :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'iInterconnect'
     -> InterconnectsGet
 interconnectsGet pIProject_ pIInterconnect_ =
-    InterconnectsGet'
-    { _iProject = pIProject_
-    , _iInterconnect = pIInterconnect_
-    }
+  InterconnectsGet' {_iProject = pIProject_, _iInterconnect = pIInterconnect_}
+
 
 -- | Project ID for this request.
 iProject :: Lens' InterconnectsGet Text
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs b/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/GetDiagnostics.hs
@@ -57,11 +57,14 @@
 -- | Returns the interconnectDiagnostics for the specified interconnect.
 --
 -- /See:/ 'interconnectsGetDiagnostics' smart constructor.
-data InterconnectsGetDiagnostics = InterconnectsGetDiagnostics'
+data InterconnectsGetDiagnostics =
+  InterconnectsGetDiagnostics'
     { _igdsProject      :: !Text
     , _igdsInterconnect :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'igdsInterconnect'
     -> InterconnectsGetDiagnostics
 interconnectsGetDiagnostics pIgdsProject_ pIgdsInterconnect_ =
-    InterconnectsGetDiagnostics'
-    { _igdsProject = pIgdsProject_
-    , _igdsInterconnect = pIgdsInterconnect_
-    }
+  InterconnectsGetDiagnostics'
+    {_igdsProject = pIgdsProject_, _igdsInterconnect = pIgdsInterconnect_}
+
 
 -- | Project ID for this request.
 igdsProject :: Lens' InterconnectsGetDiagnostics Text
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs b/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Insert.hs
@@ -60,12 +60,15 @@
 -- in the request.
 --
 -- /See:/ 'interconnectsInsert' smart constructor.
-data InterconnectsInsert = InterconnectsInsert'
+data InterconnectsInsert =
+  InterconnectsInsert'
     { _intnRequestId :: !(Maybe Text)
     , _intnProject   :: !Text
     , _intnPayload   :: !Interconnect
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Interconnect -- ^ 'intnPayload'
     -> InterconnectsInsert
 interconnectsInsert pIntnProject_ pIntnPayload_ =
-    InterconnectsInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/List.hs b/gen/Network/Google/Resource/Compute/Interconnects/List.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/List.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/List.hs
@@ -62,14 +62,17 @@
 -- | Retrieves the list of interconnect available to the specified project.
 --
 -- /See:/ 'interconnectsList' smart constructor.
-data InterconnectsList = InterconnectsList'
+data InterconnectsList =
+  InterconnectsList'
     { _ilOrderBy    :: !(Maybe Text)
     , _ilProject    :: !Text
     , _ilFilter     :: !(Maybe Text)
     , _ilPageToken  :: !(Maybe Text)
     , _ilMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'ilProject'
     -> InterconnectsList
 interconnectsList pIlProject_ =
-    InterconnectsList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs b/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Interconnects/Patch.hs
@@ -64,13 +64,16 @@
 -- patch format and processing rules.
 --
 -- /See:/ 'interconnectsPatch' smart constructor.
-data InterconnectsPatch = InterconnectsPatch'
+data InterconnectsPatch =
+  InterconnectsPatch'
     { _ipRequestId    :: !(Maybe Text)
     , _ipProject      :: !Text
     , _ipPayload      :: !Interconnect
     , _ipInterconnect :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'ipInterconnect'
     -> InterconnectsPatch
 interconnectsPatch pIpProject_ pIpPayload_ pIpInterconnect_ =
-    InterconnectsPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs b/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs
--- a/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/LicenseCodes/Get.hs
@@ -57,11 +57,14 @@
 -- projects that have permissions to read the License Code.
 --
 -- /See:/ 'licenseCodesGet' smart constructor.
-data LicenseCodesGet = LicenseCodesGet'
+data LicenseCodesGet =
+  LicenseCodesGet'
     { _lcgProject     :: !Text
     , _lcgLicenseCode :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'lcgLicenseCode'
     -> LicenseCodesGet
 licenseCodesGet pLcgProject_ pLcgLicenseCode_ =
-    LicenseCodesGet'
-    { _lcgProject = pLcgProject_
-    , _lcgLicenseCode = pLcgLicenseCode_
-    }
+  LicenseCodesGet'
+    {_lcgProject = pLcgProject_, _lcgLicenseCode = pLcgLicenseCode_}
+
 
 -- | Project ID for this request.
 lcgProject :: Lens' LicenseCodesGet Text
diff --git a/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/LicenseCodes/TestIAMPermissions.hs
@@ -59,12 +59,15 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'licenseCodesTestIAMPermissions' smart constructor.
-data LicenseCodesTestIAMPermissions = LicenseCodesTestIAMPermissions'
+data LicenseCodesTestIAMPermissions =
+  LicenseCodesTestIAMPermissions'
     { _lctipProject  :: !Text
     , _lctipPayload  :: !TestPermissionsRequest
     , _lctipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'lctipResource'
     -> LicenseCodesTestIAMPermissions
 licenseCodesTestIAMPermissions pLctipProject_ pLctipPayload_ pLctipResource_ =
-    LicenseCodesTestIAMPermissions'
+  LicenseCodesTestIAMPermissions'
     { _lctipProject = pLctipProject_
     , _lctipPayload = pLctipPayload_
     , _lctipResource = pLctipResource_
     }
+
 
 -- | Project ID for this request.
 lctipProject :: Lens' LicenseCodesTestIAMPermissions Text
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Delete.hs b/gen/Network/Google/Resource/Compute/Licenses/Delete.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified license.
 --
 -- /See:/ 'licensesDelete' smart constructor.
-data LicensesDelete = LicensesDelete'
+data LicensesDelete =
+  LicensesDelete'
     { _ldRequestId :: !(Maybe Text)
     , _ldProject   :: !Text
     , _ldLicense   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,9 @@
     -> Text -- ^ 'ldLicense'
     -> LicensesDelete
 licensesDelete pLdProject_ pLdLicense_ =
-    LicensesDelete'
-    { _ldRequestId = Nothing
-    , _ldProject = pLdProject_
-    , _ldLicense = 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
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
@@ -55,11 +55,14 @@
 -- | Returns the specified License resource.
 --
 -- /See:/ 'licensesGet' smart constructor.
-data LicensesGet = LicensesGet'
+data LicensesGet =
+  LicensesGet'
     { _lgProject :: !Text
     , _lgLicense :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'LicensesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'lgLicense'
     -> LicensesGet
 licensesGet pLgProject_ pLgLicense_ =
-    LicensesGet'
-    { _lgProject = pLgProject_
-    , _lgLicense = pLgLicense_
-    }
+  LicensesGet' {_lgProject = pLgProject_, _lgLicense = pLgLicense_}
+
 
 -- | Project ID for this request.
 lgProject :: Lens' LicensesGet Text
diff --git a/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/GetIAMPolicy.hs
@@ -58,11 +58,14 @@
 -- policy or resource exists.
 --
 -- /See:/ 'licensesGetIAMPolicy' smart constructor.
-data LicensesGetIAMPolicy = LicensesGetIAMPolicy'
+data LicensesGetIAMPolicy =
+  LicensesGetIAMPolicy'
     { _lgipProject  :: !Text
     , _lgipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'lgipResource'
     -> LicensesGetIAMPolicy
 licensesGetIAMPolicy pLgipProject_ pLgipResource_ =
-    LicensesGetIAMPolicy'
-    { _lgipProject = pLgipProject_
-    , _lgipResource = pLgipResource_
-    }
+  LicensesGetIAMPolicy'
+    {_lgipProject = pLgipProject_, _lgipResource = pLgipResource_}
+
 
 -- | Project ID for this request.
 lgipProject :: Lens' LicensesGetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Insert.hs b/gen/Network/Google/Resource/Compute/Licenses/Insert.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/Insert.hs
@@ -57,12 +57,15 @@
 -- | Create a License resource in the specified project.
 --
 -- /See:/ 'licensesInsert' smart constructor.
-data LicensesInsert = LicensesInsert'
+data LicensesInsert =
+  LicensesInsert'
     { _liRequestId :: !(Maybe Text)
     , _liProject   :: !Text
     , _liPayload   :: !License
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,9 @@
     -> License -- ^ 'liPayload'
     -> LicensesInsert
 licensesInsert pLiProject_ pLiPayload_ =
-    LicensesInsert'
-    { _liRequestId = Nothing
-    , _liProject = pLiProject_
-    , _liPayload = 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
diff --git a/gen/Network/Google/Resource/Compute/Licenses/List.hs b/gen/Network/Google/Resource/Compute/Licenses/List.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/List.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/List.hs
@@ -72,14 +72,17 @@
 -- debian-cloud or windows-cloud.
 --
 -- /See:/ 'licensesList' smart constructor.
-data LicensesList = LicensesList'
+data LicensesList =
+  LicensesList'
     { _llOrderBy    :: !(Maybe Text)
     , _llProject    :: !Text
     , _llFilter     :: !(Maybe Text)
     , _llPageToken  :: !(Maybe Text)
     , _llMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -97,13 +100,14 @@
     :: Text -- ^ 'llProject'
     -> LicensesList
 licensesList pLlProject_ =
-    LicensesList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/SetIAMPolicy.hs
@@ -61,12 +61,15 @@
 -- existing policy.
 --
 -- /See:/ 'licensesSetIAMPolicy' smart constructor.
-data LicensesSetIAMPolicy = LicensesSetIAMPolicy'
+data LicensesSetIAMPolicy =
+  LicensesSetIAMPolicy'
     { _lsipProject  :: !Text
     , _lsipPayload  :: !GlobalSetPolicyRequest
     , _lsipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'lsipResource'
     -> LicensesSetIAMPolicy
 licensesSetIAMPolicy pLsipProject_ pLsipPayload_ pLsipResource_ =
-    LicensesSetIAMPolicy'
+  LicensesSetIAMPolicy'
     { _lsipProject = pLsipProject_
     , _lsipPayload = pLsipPayload_
     , _lsipResource = pLsipResource_
     }
+
 
 -- | Project ID for this request.
 lsipProject :: Lens' LicensesSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Licenses/TestIAMPermissions.hs
@@ -59,12 +59,15 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'licensesTestIAMPermissions' smart constructor.
-data LicensesTestIAMPermissions = LicensesTestIAMPermissions'
+data LicensesTestIAMPermissions =
+  LicensesTestIAMPermissions'
     { _ltipProject  :: !Text
     , _ltipPayload  :: !TestPermissionsRequest
     , _ltipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'ltipResource'
     -> LicensesTestIAMPermissions
 licensesTestIAMPermissions pLtipProject_ pLtipPayload_ pLtipResource_ =
-    LicensesTestIAMPermissions'
+  LicensesTestIAMPermissions'
     { _ltipProject = pLtipProject_
     , _ltipPayload = pLtipPayload_
     , _ltipResource = pLtipResource_
     }
+
 
 -- | Project ID for this request.
 ltipProject :: Lens' LicensesTestIAMPermissions Text
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of machine types.
 --
 -- /See:/ 'machineTypesAggregatedList' smart constructor.
-data MachineTypesAggregatedList = MachineTypesAggregatedList'
+data MachineTypesAggregatedList =
+  MachineTypesAggregatedList'
     { _mtalOrderBy    :: !(Maybe Text)
     , _mtalProject    :: !Text
     , _mtalFilter     :: !(Maybe Text)
     , _mtalPageToken  :: !(Maybe Text)
     , _mtalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MachineTypesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'mtalProject'
     -> MachineTypesAggregatedList
 machineTypesAggregatedList pMtalProject_ =
-    MachineTypesAggregatedList'
+  MachineTypesAggregatedList'
     { _mtalOrderBy = Nothing
     , _mtalProject = pMtalProject_
     , _mtalFilter = Nothing
     , _mtalPageToken = Nothing
     , _mtalMaxResults = 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
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
@@ -59,12 +59,15 @@
 -- types by making a list() request.
 --
 -- /See:/ 'machineTypesGet' smart constructor.
-data MachineTypesGet = MachineTypesGet'
+data MachineTypesGet =
+  MachineTypesGet'
     { _mtgProject     :: !Text
     , _mtgZone        :: !Text
     , _mtgMachineType :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MachineTypesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'mtgMachineType'
     -> MachineTypesGet
 machineTypesGet pMtgProject_ pMtgZone_ pMtgMachineType_ =
-    MachineTypesGet'
+  MachineTypesGet'
     { _mtgProject = pMtgProject_
     , _mtgZone = pMtgZone_
     , _mtgMachineType = pMtgMachineType_
     }
+
 
 -- | Project ID for this request.
 mtgProject :: Lens' MachineTypesGet Text
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
@@ -64,15 +64,18 @@
 -- | Retrieves a list of machine types available to the specified project.
 --
 -- /See:/ 'machineTypesList' smart constructor.
-data MachineTypesList = MachineTypesList'
+data MachineTypesList =
+  MachineTypesList'
     { _mtlOrderBy    :: !(Maybe Text)
     , _mtlProject    :: !Text
     , _mtlZone       :: !Text
     , _mtlFilter     :: !(Maybe Text)
     , _mtlPageToken  :: !(Maybe Text)
     , _mtlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MachineTypesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'mtlZone'
     -> MachineTypesList
 machineTypesList pMtlProject_ pMtlZone_ =
-    MachineTypesList'
+  MachineTypesList'
     { _mtlOrderBy = Nothing
     , _mtlProject = pMtlProject_
     , _mtlZone = pMtlZone_
@@ -101,6 +104,7 @@
     , _mtlPageToken = Nothing
     , _mtlMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AggregatedList.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.NetworkEndpointGroups.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 the list of network endpoint groups and sorts them by zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.aggregatedList@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.AggregatedList
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsAggregatedListResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsAggregatedList
+    , NetworkEndpointGroupsAggregatedList
+
+    -- * Request Lenses
+    , negalOrderBy
+    , negalProject
+    , negalFilter
+    , negalPageToken
+    , negalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.aggregatedList@ method which the
+-- 'NetworkEndpointGroupsAggregatedList' request conforms to.
+type NetworkEndpointGroupsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "networkEndpointGroups" :>
+                 QueryParam "orderBy" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] NetworkEndpointGroupAggregatedList
+
+-- | Retrieves the list of network endpoint groups and sorts them by zone.
+--
+-- /See:/ 'networkEndpointGroupsAggregatedList' smart constructor.
+data NetworkEndpointGroupsAggregatedList =
+  NetworkEndpointGroupsAggregatedList'
+    { _negalOrderBy    :: !(Maybe Text)
+    , _negalProject    :: !Text
+    , _negalFilter     :: !(Maybe Text)
+    , _negalPageToken  :: !(Maybe Text)
+    , _negalMaxResults :: !(Textual Word32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negalOrderBy'
+--
+-- * 'negalProject'
+--
+-- * 'negalFilter'
+--
+-- * 'negalPageToken'
+--
+-- * 'negalMaxResults'
+networkEndpointGroupsAggregatedList
+    :: Text -- ^ 'negalProject'
+    -> NetworkEndpointGroupsAggregatedList
+networkEndpointGroupsAggregatedList pNegalProject_ =
+  NetworkEndpointGroupsAggregatedList'
+    { _negalOrderBy = Nothing
+    , _negalProject = pNegalProject_
+    , _negalFilter = Nothing
+    , _negalPageToken = Nothing
+    , _negalMaxResults = 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.
+negalOrderBy :: Lens' NetworkEndpointGroupsAggregatedList (Maybe Text)
+negalOrderBy
+  = lens _negalOrderBy (\ s a -> s{_negalOrderBy = a})
+
+-- | Project ID for this request.
+negalProject :: Lens' NetworkEndpointGroupsAggregatedList Text
+negalProject
+  = lens _negalProject (\ s a -> s{_negalProject = 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).
+negalFilter :: Lens' NetworkEndpointGroupsAggregatedList (Maybe Text)
+negalFilter
+  = lens _negalFilter (\ s a -> s{_negalFilter = 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.
+negalPageToken :: Lens' NetworkEndpointGroupsAggregatedList (Maybe Text)
+negalPageToken
+  = lens _negalPageToken
+      (\ s a -> s{_negalPageToken = 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)
+negalMaxResults :: Lens' NetworkEndpointGroupsAggregatedList Word32
+negalMaxResults
+  = lens _negalMaxResults
+      (\ s a -> s{_negalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+           NetworkEndpointGroupsAggregatedList
+         where
+        type Rs NetworkEndpointGroupsAggregatedList =
+             NetworkEndpointGroupAggregatedList
+        type Scopes NetworkEndpointGroupsAggregatedList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          NetworkEndpointGroupsAggregatedList'{..}
+          = go _negalProject _negalOrderBy _negalFilter
+              _negalPageToken
+              (Just _negalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy NetworkEndpointGroupsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AttachNetworkEndpoints.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AttachNetworkEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/AttachNetworkEndpoints.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.NetworkEndpointGroups.AttachNetworkEndpoints
+-- 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)
+--
+-- Attach a list of network endpoints to the specified network endpoint
+-- group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.attachNetworkEndpoints@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.AttachNetworkEndpoints
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsAttachNetworkEndpointsResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsAttachNetworkEndpoints
+    , NetworkEndpointGroupsAttachNetworkEndpoints
+
+    -- * Request Lenses
+    , neganeRequestId
+    , neganeProject
+    , neganeZone
+    , neganePayload
+    , neganeNetworkEndpointGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.attachNetworkEndpoints@ method which the
+-- 'NetworkEndpointGroupsAttachNetworkEndpoints' request conforms to.
+type NetworkEndpointGroupsAttachNetworkEndpointsResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "networkEndpointGroup" Text :>
+                     "attachNetworkEndpoints" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             NetworkEndpointGroupsAttachEndpointsRequest
+                             :> Post '[JSON] Operation
+
+-- | Attach a list of network endpoints to the specified network endpoint
+-- group.
+--
+-- /See:/ 'networkEndpointGroupsAttachNetworkEndpoints' smart constructor.
+data NetworkEndpointGroupsAttachNetworkEndpoints =
+  NetworkEndpointGroupsAttachNetworkEndpoints'
+    { _neganeRequestId            :: !(Maybe Text)
+    , _neganeProject              :: !Text
+    , _neganeZone                 :: !Text
+    , _neganePayload              :: !NetworkEndpointGroupsAttachEndpointsRequest
+    , _neganeNetworkEndpointGroup :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsAttachNetworkEndpoints' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neganeRequestId'
+--
+-- * 'neganeProject'
+--
+-- * 'neganeZone'
+--
+-- * 'neganePayload'
+--
+-- * 'neganeNetworkEndpointGroup'
+networkEndpointGroupsAttachNetworkEndpoints
+    :: Text -- ^ 'neganeProject'
+    -> Text -- ^ 'neganeZone'
+    -> NetworkEndpointGroupsAttachEndpointsRequest -- ^ 'neganePayload'
+    -> Text -- ^ 'neganeNetworkEndpointGroup'
+    -> NetworkEndpointGroupsAttachNetworkEndpoints
+networkEndpointGroupsAttachNetworkEndpoints pNeganeProject_ pNeganeZone_ pNeganePayload_ pNeganeNetworkEndpointGroup_ =
+  NetworkEndpointGroupsAttachNetworkEndpoints'
+    { _neganeRequestId = Nothing
+    , _neganeProject = pNeganeProject_
+    , _neganeZone = pNeganeZone_
+    , _neganePayload = pNeganePayload_
+    , _neganeNetworkEndpointGroup = pNeganeNetworkEndpointGroup_
+    }
+
+
+-- | 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).
+neganeRequestId :: Lens' NetworkEndpointGroupsAttachNetworkEndpoints (Maybe Text)
+neganeRequestId
+  = lens _neganeRequestId
+      (\ s a -> s{_neganeRequestId = a})
+
+-- | Project ID for this request.
+neganeProject :: Lens' NetworkEndpointGroupsAttachNetworkEndpoints Text
+neganeProject
+  = lens _neganeProject
+      (\ s a -> s{_neganeProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+neganeZone :: Lens' NetworkEndpointGroupsAttachNetworkEndpoints Text
+neganeZone
+  = lens _neganeZone (\ s a -> s{_neganeZone = a})
+
+-- | Multipart request metadata.
+neganePayload :: Lens' NetworkEndpointGroupsAttachNetworkEndpoints NetworkEndpointGroupsAttachEndpointsRequest
+neganePayload
+  = lens _neganePayload
+      (\ s a -> s{_neganePayload = a})
+
+-- | The name of the network endpoint group where you are attaching network
+-- endpoints to. It should comply with RFC1035.
+neganeNetworkEndpointGroup :: Lens' NetworkEndpointGroupsAttachNetworkEndpoints Text
+neganeNetworkEndpointGroup
+  = lens _neganeNetworkEndpointGroup
+      (\ s a -> s{_neganeNetworkEndpointGroup = a})
+
+instance GoogleRequest
+           NetworkEndpointGroupsAttachNetworkEndpoints
+         where
+        type Rs NetworkEndpointGroupsAttachNetworkEndpoints =
+             Operation
+        type Scopes
+               NetworkEndpointGroupsAttachNetworkEndpoints
+             =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient
+          NetworkEndpointGroupsAttachNetworkEndpoints'{..}
+          = go _neganeProject _neganeZone
+              _neganeNetworkEndpointGroup
+              _neganeRequestId
+              (Just AltJSON)
+              _neganePayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           NetworkEndpointGroupsAttachNetworkEndpointsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Delete.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Delete.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.NetworkEndpointGroups.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 network endpoint group. The network endpoints in
+-- the NEG and the VM instances they belong to are not terminated when the
+-- NEG is deleted. Note that the NEG cannot be deleted if there are backend
+-- services referencing it.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.delete@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.Delete
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsDeleteResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsDelete
+    , NetworkEndpointGroupsDelete
+
+    -- * Request Lenses
+    , negdRequestId
+    , negdProject
+    , negdZone
+    , negdNetworkEndpointGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.delete@ method which the
+-- 'NetworkEndpointGroupsDelete' request conforms to.
+type NetworkEndpointGroupsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "networkEndpointGroup" Text :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified network endpoint group. The network endpoints in
+-- the NEG and the VM instances they belong to are not terminated when the
+-- NEG is deleted. Note that the NEG cannot be deleted if there are backend
+-- services referencing it.
+--
+-- /See:/ 'networkEndpointGroupsDelete' smart constructor.
+data NetworkEndpointGroupsDelete =
+  NetworkEndpointGroupsDelete'
+    { _negdRequestId            :: !(Maybe Text)
+    , _negdProject              :: !Text
+    , _negdZone                 :: !Text
+    , _negdNetworkEndpointGroup :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negdRequestId'
+--
+-- * 'negdProject'
+--
+-- * 'negdZone'
+--
+-- * 'negdNetworkEndpointGroup'
+networkEndpointGroupsDelete
+    :: Text -- ^ 'negdProject'
+    -> Text -- ^ 'negdZone'
+    -> Text -- ^ 'negdNetworkEndpointGroup'
+    -> NetworkEndpointGroupsDelete
+networkEndpointGroupsDelete pNegdProject_ pNegdZone_ pNegdNetworkEndpointGroup_ =
+  NetworkEndpointGroupsDelete'
+    { _negdRequestId = Nothing
+    , _negdProject = pNegdProject_
+    , _negdZone = pNegdZone_
+    , _negdNetworkEndpointGroup = pNegdNetworkEndpointGroup_
+    }
+
+
+-- | 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).
+negdRequestId :: Lens' NetworkEndpointGroupsDelete (Maybe Text)
+negdRequestId
+  = lens _negdRequestId
+      (\ s a -> s{_negdRequestId = a})
+
+-- | Project ID for this request.
+negdProject :: Lens' NetworkEndpointGroupsDelete Text
+negdProject
+  = lens _negdProject (\ s a -> s{_negdProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+negdZone :: Lens' NetworkEndpointGroupsDelete Text
+negdZone = lens _negdZone (\ s a -> s{_negdZone = a})
+
+-- | The name of the network endpoint group to delete. It should comply with
+-- RFC1035.
+negdNetworkEndpointGroup :: Lens' NetworkEndpointGroupsDelete Text
+negdNetworkEndpointGroup
+  = lens _negdNetworkEndpointGroup
+      (\ s a -> s{_negdNetworkEndpointGroup = a})
+
+instance GoogleRequest NetworkEndpointGroupsDelete
+         where
+        type Rs NetworkEndpointGroupsDelete = Operation
+        type Scopes NetworkEndpointGroupsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NetworkEndpointGroupsDelete'{..}
+          = go _negdProject _negdZone _negdNetworkEndpointGroup
+              _negdRequestId
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworkEndpointGroupsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/DetachNetworkEndpoints.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/DetachNetworkEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/DetachNetworkEndpoints.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.NetworkEndpointGroups.DetachNetworkEndpoints
+-- 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)
+--
+-- Detach a list of network endpoints from the specified network endpoint
+-- group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.detachNetworkEndpoints@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.DetachNetworkEndpoints
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsDetachNetworkEndpointsResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsDetachNetworkEndpoints
+    , NetworkEndpointGroupsDetachNetworkEndpoints
+
+    -- * Request Lenses
+    , negdneRequestId
+    , negdneProject
+    , negdneZone
+    , negdnePayload
+    , negdneNetworkEndpointGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.detachNetworkEndpoints@ method which the
+-- 'NetworkEndpointGroupsDetachNetworkEndpoints' request conforms to.
+type NetworkEndpointGroupsDetachNetworkEndpointsResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "networkEndpointGroup" Text :>
+                     "detachNetworkEndpoints" :>
+                       QueryParam "requestId" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON]
+                             NetworkEndpointGroupsDetachEndpointsRequest
+                             :> Post '[JSON] Operation
+
+-- | Detach a list of network endpoints from the specified network endpoint
+-- group.
+--
+-- /See:/ 'networkEndpointGroupsDetachNetworkEndpoints' smart constructor.
+data NetworkEndpointGroupsDetachNetworkEndpoints =
+  NetworkEndpointGroupsDetachNetworkEndpoints'
+    { _negdneRequestId            :: !(Maybe Text)
+    , _negdneProject              :: !Text
+    , _negdneZone                 :: !Text
+    , _negdnePayload              :: !NetworkEndpointGroupsDetachEndpointsRequest
+    , _negdneNetworkEndpointGroup :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsDetachNetworkEndpoints' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negdneRequestId'
+--
+-- * 'negdneProject'
+--
+-- * 'negdneZone'
+--
+-- * 'negdnePayload'
+--
+-- * 'negdneNetworkEndpointGroup'
+networkEndpointGroupsDetachNetworkEndpoints
+    :: Text -- ^ 'negdneProject'
+    -> Text -- ^ 'negdneZone'
+    -> NetworkEndpointGroupsDetachEndpointsRequest -- ^ 'negdnePayload'
+    -> Text -- ^ 'negdneNetworkEndpointGroup'
+    -> NetworkEndpointGroupsDetachNetworkEndpoints
+networkEndpointGroupsDetachNetworkEndpoints pNegdneProject_ pNegdneZone_ pNegdnePayload_ pNegdneNetworkEndpointGroup_ =
+  NetworkEndpointGroupsDetachNetworkEndpoints'
+    { _negdneRequestId = Nothing
+    , _negdneProject = pNegdneProject_
+    , _negdneZone = pNegdneZone_
+    , _negdnePayload = pNegdnePayload_
+    , _negdneNetworkEndpointGroup = pNegdneNetworkEndpointGroup_
+    }
+
+
+-- | 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).
+negdneRequestId :: Lens' NetworkEndpointGroupsDetachNetworkEndpoints (Maybe Text)
+negdneRequestId
+  = lens _negdneRequestId
+      (\ s a -> s{_negdneRequestId = a})
+
+-- | Project ID for this request.
+negdneProject :: Lens' NetworkEndpointGroupsDetachNetworkEndpoints Text
+negdneProject
+  = lens _negdneProject
+      (\ s a -> s{_negdneProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+negdneZone :: Lens' NetworkEndpointGroupsDetachNetworkEndpoints Text
+negdneZone
+  = lens _negdneZone (\ s a -> s{_negdneZone = a})
+
+-- | Multipart request metadata.
+negdnePayload :: Lens' NetworkEndpointGroupsDetachNetworkEndpoints NetworkEndpointGroupsDetachEndpointsRequest
+negdnePayload
+  = lens _negdnePayload
+      (\ s a -> s{_negdnePayload = a})
+
+-- | The name of the network endpoint group where you are removing network
+-- endpoints. It should comply with RFC1035.
+negdneNetworkEndpointGroup :: Lens' NetworkEndpointGroupsDetachNetworkEndpoints Text
+negdneNetworkEndpointGroup
+  = lens _negdneNetworkEndpointGroup
+      (\ s a -> s{_negdneNetworkEndpointGroup = a})
+
+instance GoogleRequest
+           NetworkEndpointGroupsDetachNetworkEndpoints
+         where
+        type Rs NetworkEndpointGroupsDetachNetworkEndpoints =
+             Operation
+        type Scopes
+               NetworkEndpointGroupsDetachNetworkEndpoints
+             =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient
+          NetworkEndpointGroupsDetachNetworkEndpoints'{..}
+          = go _negdneProject _negdneZone
+              _negdneNetworkEndpointGroup
+              _negdneRequestId
+              (Just AltJSON)
+              _negdnePayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           NetworkEndpointGroupsDetachNetworkEndpointsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Get.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Get.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.NetworkEndpointGroups.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 network endpoint group. Gets a list of available
+-- network endpoint groups by making a list() request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.get@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.Get
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsGetResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsGet
+    , NetworkEndpointGroupsGet
+
+    -- * Request Lenses
+    , neggProject
+    , neggZone
+    , neggNetworkEndpointGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.get@ method which the
+-- 'NetworkEndpointGroupsGet' request conforms to.
+type NetworkEndpointGroupsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "networkEndpointGroup" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] NetworkEndpointGroup
+
+-- | Returns the specified network endpoint group. Gets a list of available
+-- network endpoint groups by making a list() request.
+--
+-- /See:/ 'networkEndpointGroupsGet' smart constructor.
+data NetworkEndpointGroupsGet =
+  NetworkEndpointGroupsGet'
+    { _neggProject              :: !Text
+    , _neggZone                 :: !Text
+    , _neggNetworkEndpointGroup :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neggProject'
+--
+-- * 'neggZone'
+--
+-- * 'neggNetworkEndpointGroup'
+networkEndpointGroupsGet
+    :: Text -- ^ 'neggProject'
+    -> Text -- ^ 'neggZone'
+    -> Text -- ^ 'neggNetworkEndpointGroup'
+    -> NetworkEndpointGroupsGet
+networkEndpointGroupsGet pNeggProject_ pNeggZone_ pNeggNetworkEndpointGroup_ =
+  NetworkEndpointGroupsGet'
+    { _neggProject = pNeggProject_
+    , _neggZone = pNeggZone_
+    , _neggNetworkEndpointGroup = pNeggNetworkEndpointGroup_
+    }
+
+
+-- | Project ID for this request.
+neggProject :: Lens' NetworkEndpointGroupsGet Text
+neggProject
+  = lens _neggProject (\ s a -> s{_neggProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+neggZone :: Lens' NetworkEndpointGroupsGet Text
+neggZone = lens _neggZone (\ s a -> s{_neggZone = a})
+
+-- | The name of the network endpoint group. It should comply with RFC1035.
+neggNetworkEndpointGroup :: Lens' NetworkEndpointGroupsGet Text
+neggNetworkEndpointGroup
+  = lens _neggNetworkEndpointGroup
+      (\ s a -> s{_neggNetworkEndpointGroup = a})
+
+instance GoogleRequest NetworkEndpointGroupsGet where
+        type Rs NetworkEndpointGroupsGet =
+             NetworkEndpointGroup
+        type Scopes NetworkEndpointGroupsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NetworkEndpointGroupsGet'{..}
+          = go _neggProject _neggZone _neggNetworkEndpointGroup
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworkEndpointGroupsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Insert.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/Insert.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.NetworkEndpointGroups.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 network endpoint group in the specified project using the
+-- parameters that are included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.insert@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.Insert
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsInsertResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsInsert
+    , NetworkEndpointGroupsInsert
+
+    -- * Request Lenses
+    , negiRequestId
+    , negiProject
+    , negiZone
+    , negiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.insert@ method which the
+-- 'NetworkEndpointGroupsInsert' request conforms to.
+type NetworkEndpointGroupsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] NetworkEndpointGroup :>
+                         Post '[JSON] Operation
+
+-- | Creates a network endpoint group in the specified project using the
+-- parameters that are included in the request.
+--
+-- /See:/ 'networkEndpointGroupsInsert' smart constructor.
+data NetworkEndpointGroupsInsert =
+  NetworkEndpointGroupsInsert'
+    { _negiRequestId :: !(Maybe Text)
+    , _negiProject   :: !Text
+    , _negiZone      :: !Text
+    , _negiPayload   :: !NetworkEndpointGroup
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negiRequestId'
+--
+-- * 'negiProject'
+--
+-- * 'negiZone'
+--
+-- * 'negiPayload'
+networkEndpointGroupsInsert
+    :: Text -- ^ 'negiProject'
+    -> Text -- ^ 'negiZone'
+    -> NetworkEndpointGroup -- ^ 'negiPayload'
+    -> NetworkEndpointGroupsInsert
+networkEndpointGroupsInsert pNegiProject_ pNegiZone_ pNegiPayload_ =
+  NetworkEndpointGroupsInsert'
+    { _negiRequestId = Nothing
+    , _negiProject = pNegiProject_
+    , _negiZone = pNegiZone_
+    , _negiPayload = pNegiPayload_
+    }
+
+
+-- | 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).
+negiRequestId :: Lens' NetworkEndpointGroupsInsert (Maybe Text)
+negiRequestId
+  = lens _negiRequestId
+      (\ s a -> s{_negiRequestId = a})
+
+-- | Project ID for this request.
+negiProject :: Lens' NetworkEndpointGroupsInsert Text
+negiProject
+  = lens _negiProject (\ s a -> s{_negiProject = a})
+
+-- | The name of the zone where you want to create the network endpoint
+-- group. It should comply with RFC1035.
+negiZone :: Lens' NetworkEndpointGroupsInsert Text
+negiZone = lens _negiZone (\ s a -> s{_negiZone = a})
+
+-- | Multipart request metadata.
+negiPayload :: Lens' NetworkEndpointGroupsInsert NetworkEndpointGroup
+negiPayload
+  = lens _negiPayload (\ s a -> s{_negiPayload = a})
+
+instance GoogleRequest NetworkEndpointGroupsInsert
+         where
+        type Rs NetworkEndpointGroupsInsert = Operation
+        type Scopes NetworkEndpointGroupsInsert =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute"]
+        requestClient NetworkEndpointGroupsInsert'{..}
+          = go _negiProject _negiZone _negiRequestId
+              (Just AltJSON)
+              _negiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworkEndpointGroupsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/List.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/List.hs
@@ -0,0 +1,188 @@
+{-# 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.NetworkEndpointGroups.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 network endpoint groups that are located in the
+-- specified project and zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.list@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.List
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsListResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsList
+    , NetworkEndpointGroupsList
+
+    -- * Request Lenses
+    , neglOrderBy
+    , neglProject
+    , neglZone
+    , neglFilter
+    , neglPageToken
+    , neglMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.list@ method which the
+-- 'NetworkEndpointGroupsList' request conforms to.
+type NetworkEndpointGroupsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   QueryParam "orderBy" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "maxResults" (Textual Word32) :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] NetworkEndpointGroupList
+
+-- | Retrieves the list of network endpoint groups that are located in the
+-- specified project and zone.
+--
+-- /See:/ 'networkEndpointGroupsList' smart constructor.
+data NetworkEndpointGroupsList =
+  NetworkEndpointGroupsList'
+    { _neglOrderBy    :: !(Maybe Text)
+    , _neglProject    :: !Text
+    , _neglZone       :: !Text
+    , _neglFilter     :: !(Maybe Text)
+    , _neglPageToken  :: !(Maybe Text)
+    , _neglMaxResults :: !(Textual Word32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglOrderBy'
+--
+-- * 'neglProject'
+--
+-- * 'neglZone'
+--
+-- * 'neglFilter'
+--
+-- * 'neglPageToken'
+--
+-- * 'neglMaxResults'
+networkEndpointGroupsList
+    :: Text -- ^ 'neglProject'
+    -> Text -- ^ 'neglZone'
+    -> NetworkEndpointGroupsList
+networkEndpointGroupsList pNeglProject_ pNeglZone_ =
+  NetworkEndpointGroupsList'
+    { _neglOrderBy = Nothing
+    , _neglProject = pNeglProject_
+    , _neglZone = pNeglZone_
+    , _neglFilter = Nothing
+    , _neglPageToken = Nothing
+    , _neglMaxResults = 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.
+neglOrderBy :: Lens' NetworkEndpointGroupsList (Maybe Text)
+neglOrderBy
+  = lens _neglOrderBy (\ s a -> s{_neglOrderBy = a})
+
+-- | Project ID for this request.
+neglProject :: Lens' NetworkEndpointGroupsList Text
+neglProject
+  = lens _neglProject (\ s a -> s{_neglProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+neglZone :: Lens' NetworkEndpointGroupsList Text
+neglZone = lens _neglZone (\ s a -> s{_neglZone = 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).
+neglFilter :: Lens' NetworkEndpointGroupsList (Maybe Text)
+neglFilter
+  = lens _neglFilter (\ s a -> s{_neglFilter = 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.
+neglPageToken :: Lens' NetworkEndpointGroupsList (Maybe Text)
+neglPageToken
+  = lens _neglPageToken
+      (\ s a -> s{_neglPageToken = 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)
+neglMaxResults :: Lens' NetworkEndpointGroupsList Word32
+neglMaxResults
+  = lens _neglMaxResults
+      (\ s a -> s{_neglMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NetworkEndpointGroupsList
+         where
+        type Rs NetworkEndpointGroupsList =
+             NetworkEndpointGroupList
+        type Scopes NetworkEndpointGroupsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient NetworkEndpointGroupsList'{..}
+          = go _neglProject _neglZone _neglOrderBy _neglFilter
+              _neglPageToken
+              (Just _neglMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy NetworkEndpointGroupsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/ListNetworkEndpoints.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/ListNetworkEndpoints.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/ListNetworkEndpoints.hs
@@ -0,0 +1,231 @@
+{-# 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.NetworkEndpointGroups.ListNetworkEndpoints
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the network endpoints in the specified network endpoint group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networkEndpointGroups.listNetworkEndpoints@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.ListNetworkEndpoints
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsListNetworkEndpointsResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsListNetworkEndpoints'
+    , NetworkEndpointGroupsListNetworkEndpoints'
+
+    -- * Request Lenses
+    , neglneOrderBy
+    , neglneProject
+    , neglneZone
+    , neglnePayload
+    , neglneNetworkEndpointGroup
+    , neglneFilter
+    , neglnePageToken
+    , neglneMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.listNetworkEndpoints@ method which the
+-- 'NetworkEndpointGroupsListNetworkEndpoints'' request conforms to.
+type NetworkEndpointGroupsListNetworkEndpointsResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "networkEndpointGroup" Text :>
+                     "listNetworkEndpoints" :>
+                       QueryParam "orderBy" Text :>
+                         QueryParam "filter" Text :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "maxResults" (Textual Word32) :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON]
+                                   NetworkEndpointGroupsListEndpointsRequest
+                                   :>
+                                   Post '[JSON]
+                                     NetworkEndpointGroupsListNetworkEndpoints
+
+-- | Lists the network endpoints in the specified network endpoint group.
+--
+-- /See:/ 'networkEndpointGroupsListNetworkEndpoints'' smart constructor.
+data NetworkEndpointGroupsListNetworkEndpoints' =
+  NetworkEndpointGroupsListNetworkEndpoints''
+    { _neglneOrderBy              :: !(Maybe Text)
+    , _neglneProject              :: !Text
+    , _neglneZone                 :: !Text
+    , _neglnePayload              :: !NetworkEndpointGroupsListEndpointsRequest
+    , _neglneNetworkEndpointGroup :: !Text
+    , _neglneFilter               :: !(Maybe Text)
+    , _neglnePageToken            :: !(Maybe Text)
+    , _neglneMaxResults           :: !(Textual Word32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsListNetworkEndpoints'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'neglneOrderBy'
+--
+-- * 'neglneProject'
+--
+-- * 'neglneZone'
+--
+-- * 'neglnePayload'
+--
+-- * 'neglneNetworkEndpointGroup'
+--
+-- * 'neglneFilter'
+--
+-- * 'neglnePageToken'
+--
+-- * 'neglneMaxResults'
+networkEndpointGroupsListNetworkEndpoints'
+    :: Text -- ^ 'neglneProject'
+    -> Text -- ^ 'neglneZone'
+    -> NetworkEndpointGroupsListEndpointsRequest -- ^ 'neglnePayload'
+    -> Text -- ^ 'neglneNetworkEndpointGroup'
+    -> NetworkEndpointGroupsListNetworkEndpoints'
+networkEndpointGroupsListNetworkEndpoints' pNeglneProject_ pNeglneZone_ pNeglnePayload_ pNeglneNetworkEndpointGroup_ =
+  NetworkEndpointGroupsListNetworkEndpoints''
+    { _neglneOrderBy = Nothing
+    , _neglneProject = pNeglneProject_
+    , _neglneZone = pNeglneZone_
+    , _neglnePayload = pNeglnePayload_
+    , _neglneNetworkEndpointGroup = pNeglneNetworkEndpointGroup_
+    , _neglneFilter = Nothing
+    , _neglnePageToken = Nothing
+    , _neglneMaxResults = 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.
+neglneOrderBy :: Lens' NetworkEndpointGroupsListNetworkEndpoints' (Maybe Text)
+neglneOrderBy
+  = lens _neglneOrderBy
+      (\ s a -> s{_neglneOrderBy = a})
+
+-- | Project ID for this request.
+neglneProject :: Lens' NetworkEndpointGroupsListNetworkEndpoints' Text
+neglneProject
+  = lens _neglneProject
+      (\ s a -> s{_neglneProject = a})
+
+-- | The name of the zone where the network endpoint group is located. It
+-- should comply with RFC1035.
+neglneZone :: Lens' NetworkEndpointGroupsListNetworkEndpoints' Text
+neglneZone
+  = lens _neglneZone (\ s a -> s{_neglneZone = a})
+
+-- | Multipart request metadata.
+neglnePayload :: Lens' NetworkEndpointGroupsListNetworkEndpoints' NetworkEndpointGroupsListEndpointsRequest
+neglnePayload
+  = lens _neglnePayload
+      (\ s a -> s{_neglnePayload = a})
+
+-- | The name of the network endpoint group from which you want to generate a
+-- list of included network endpoints. It should comply with RFC1035.
+neglneNetworkEndpointGroup :: Lens' NetworkEndpointGroupsListNetworkEndpoints' Text
+neglneNetworkEndpointGroup
+  = lens _neglneNetworkEndpointGroup
+      (\ s a -> s{_neglneNetworkEndpointGroup = 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).
+neglneFilter :: Lens' NetworkEndpointGroupsListNetworkEndpoints' (Maybe Text)
+neglneFilter
+  = lens _neglneFilter (\ s a -> s{_neglneFilter = 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.
+neglnePageToken :: Lens' NetworkEndpointGroupsListNetworkEndpoints' (Maybe Text)
+neglnePageToken
+  = lens _neglnePageToken
+      (\ s a -> s{_neglnePageToken = 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)
+neglneMaxResults :: Lens' NetworkEndpointGroupsListNetworkEndpoints' Word32
+neglneMaxResults
+  = lens _neglneMaxResults
+      (\ s a -> s{_neglneMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+           NetworkEndpointGroupsListNetworkEndpoints'
+         where
+        type Rs NetworkEndpointGroupsListNetworkEndpoints' =
+             NetworkEndpointGroupsListNetworkEndpoints
+        type Scopes
+               NetworkEndpointGroupsListNetworkEndpoints'
+             =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          NetworkEndpointGroupsListNetworkEndpoints''{..}
+          = go _neglneProject _neglneZone
+              _neglneNetworkEndpointGroup
+              _neglneOrderBy
+              _neglneFilter
+              _neglnePageToken
+              (Just _neglneMaxResults)
+              (Just AltJSON)
+              _neglnePayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           NetworkEndpointGroupsListNetworkEndpointsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/NetworkEndpointGroups/TestIAMPermissions.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.NetworkEndpointGroups.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.networkEndpointGroups.testIamPermissions@.
+module Network.Google.Resource.Compute.NetworkEndpointGroups.TestIAMPermissions
+    (
+    -- * REST Resource
+      NetworkEndpointGroupsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , networkEndpointGroupsTestIAMPermissions
+    , NetworkEndpointGroupsTestIAMPermissions
+
+    -- * Request Lenses
+    , negtipProject
+    , negtipZone
+    , negtipPayload
+    , negtipResource
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networkEndpointGroups.testIamPermissions@ method which the
+-- 'NetworkEndpointGroupsTestIAMPermissions' request conforms to.
+type NetworkEndpointGroupsTestIAMPermissionsResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "networkEndpointGroups" :>
+                   Capture "resource" Text :>
+                     "testIamPermissions" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TestPermissionsRequest :>
+                           Post '[JSON] TestPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource.
+--
+-- /See:/ 'networkEndpointGroupsTestIAMPermissions' smart constructor.
+data NetworkEndpointGroupsTestIAMPermissions =
+  NetworkEndpointGroupsTestIAMPermissions'
+    { _negtipProject  :: !Text
+    , _negtipZone     :: !Text
+    , _negtipPayload  :: !TestPermissionsRequest
+    , _negtipResource :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkEndpointGroupsTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'negtipProject'
+--
+-- * 'negtipZone'
+--
+-- * 'negtipPayload'
+--
+-- * 'negtipResource'
+networkEndpointGroupsTestIAMPermissions
+    :: Text -- ^ 'negtipProject'
+    -> Text -- ^ 'negtipZone'
+    -> TestPermissionsRequest -- ^ 'negtipPayload'
+    -> Text -- ^ 'negtipResource'
+    -> NetworkEndpointGroupsTestIAMPermissions
+networkEndpointGroupsTestIAMPermissions pNegtipProject_ pNegtipZone_ pNegtipPayload_ pNegtipResource_ =
+  NetworkEndpointGroupsTestIAMPermissions'
+    { _negtipProject = pNegtipProject_
+    , _negtipZone = pNegtipZone_
+    , _negtipPayload = pNegtipPayload_
+    , _negtipResource = pNegtipResource_
+    }
+
+
+-- | Project ID for this request.
+negtipProject :: Lens' NetworkEndpointGroupsTestIAMPermissions Text
+negtipProject
+  = lens _negtipProject
+      (\ s a -> s{_negtipProject = a})
+
+-- | The name of the zone for this request.
+negtipZone :: Lens' NetworkEndpointGroupsTestIAMPermissions Text
+negtipZone
+  = lens _negtipZone (\ s a -> s{_negtipZone = a})
+
+-- | Multipart request metadata.
+negtipPayload :: Lens' NetworkEndpointGroupsTestIAMPermissions TestPermissionsRequest
+negtipPayload
+  = lens _negtipPayload
+      (\ s a -> s{_negtipPayload = a})
+
+-- | Name or id of the resource for this request.
+negtipResource :: Lens' NetworkEndpointGroupsTestIAMPermissions Text
+negtipResource
+  = lens _negtipResource
+      (\ s a -> s{_negtipResource = a})
+
+instance GoogleRequest
+           NetworkEndpointGroupsTestIAMPermissions
+         where
+        type Rs NetworkEndpointGroupsTestIAMPermissions =
+             TestPermissionsResponse
+        type Scopes NetworkEndpointGroupsTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/compute",
+               "https://www.googleapis.com/auth/compute.readonly"]
+        requestClient
+          NetworkEndpointGroupsTestIAMPermissions'{..}
+          = go _negtipProject _negtipZone _negtipResource
+              (Just AltJSON)
+              _negtipPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           NetworkEndpointGroupsTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs b/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs
--- a/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/AddPeering.hs
@@ -61,13 +61,16 @@
 -- | Adds a peering to the specified network.
 --
 -- /See:/ 'networksAddPeering' smart constructor.
-data NetworksAddPeering = NetworksAddPeering'
+data NetworksAddPeering =
+  NetworksAddPeering'
     { _napRequestId :: !(Maybe Text)
     , _napProject   :: !Text
     , _napNetwork   :: !Text
     , _napPayload   :: !NetworksAddPeeringRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> NetworksAddPeeringRequest -- ^ 'napPayload'
     -> NetworksAddPeering
 networksAddPeering pNapProject_ pNapNetwork_ pNapPayload_ =
-    NetworksAddPeering'
+  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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified network.
 --
 -- /See:/ 'networksDelete' smart constructor.
-data NetworksDelete = NetworksDelete'
+data NetworksDelete =
+  NetworksDelete'
     { _ndRequestId :: !(Maybe Text)
     , _ndProject   :: !Text
     , _ndNetwork   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,9 @@
     -> Text -- ^ 'ndNetwork'
     -> NetworksDelete
 networksDelete pNdProject_ pNdNetwork_ =
-    NetworksDelete'
-    { _ndRequestId = Nothing
-    , _ndProject = pNdProject_
-    , _ndNetwork = pNdNetwork_
-    }
+  NetworksDelete'
+    {_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
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
@@ -57,11 +57,14 @@
 -- making a list() request.
 --
 -- /See:/ 'networksGet' smart constructor.
-data NetworksGet = NetworksGet'
+data NetworksGet =
+  NetworksGet'
     { _ngProject :: !Text
     , _ngNetwork :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NetworksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'ngNetwork'
     -> NetworksGet
 networksGet pNgProject_ pNgNetwork_ =
-    NetworksGet'
-    { _ngProject = pNgProject_
-    , _ngNetwork = pNgNetwork_
-    }
+  NetworksGet' {_ngProject = pNgProject_, _ngNetwork = pNgNetwork_}
+
 
 -- | Project ID for this request.
 ngProject :: Lens' NetworksGet Text
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
@@ -59,12 +59,15 @@
 -- the request.
 --
 -- /See:/ 'networksInsert' smart constructor.
-data NetworksInsert = NetworksInsert'
+data NetworksInsert =
+  NetworksInsert'
     { _niRequestId :: !(Maybe Text)
     , _niProject   :: !Text
     , _niPayload   :: !Network
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,9 @@
     -> Network -- ^ 'niPayload'
     -> NetworksInsert
 networksInsert pNiProject_ pNiPayload_ =
-    NetworksInsert'
-    { _niRequestId = Nothing
-    , _niProject = pNiProject_
-    , _niPayload = pNiPayload_
-    }
+  NetworksInsert'
+    {_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
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
@@ -61,14 +61,17 @@
 -- | Retrieves the list of networks available to the specified project.
 --
 -- /See:/ 'networksList' smart constructor.
-data NetworksList = NetworksList'
+data NetworksList =
+  NetworksList'
     { _nlOrderBy    :: !(Maybe Text)
     , _nlProject    :: !Text
     , _nlFilter     :: !(Maybe Text)
     , _nlPageToken  :: !(Maybe Text)
     , _nlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NetworksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     :: Text -- ^ 'nlProject'
     -> NetworksList
 networksList pNlProject_ =
-    NetworksList'
+  NetworksList'
     { _nlOrderBy = Nothing
     , _nlProject = pNlProject_
     , _nlFilter = Nothing
     , _nlPageToken = Nothing
     , _nlMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/Networks/Patch.hs b/gen/Network/Google/Resource/Compute/Networks/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Networks/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/Patch.hs
@@ -61,13 +61,16 @@
 -- Only the following fields can be modified: routingConfig.routingMode.
 --
 -- /See:/ 'networksPatch' smart constructor.
-data NetworksPatch = NetworksPatch'
+data NetworksPatch =
+  NetworksPatch'
     { _npRequestId :: !(Maybe Text)
     , _npProject   :: !Text
     , _npNetwork   :: !Text
     , _npPayload   :: !Network
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Network -- ^ 'npPayload'
     -> NetworksPatch
 networksPatch pNpProject_ pNpNetwork_ pNpPayload_ =
-    NetworksPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs b/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs
--- a/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs
+++ b/gen/Network/Google/Resource/Compute/Networks/RemovePeering.hs
@@ -61,13 +61,16 @@
 -- | Removes a peering from the specified network.
 --
 -- /See:/ 'networksRemovePeering' smart constructor.
-data NetworksRemovePeering = NetworksRemovePeering'
+data NetworksRemovePeering =
+  NetworksRemovePeering'
     { _nrpRequestId :: !(Maybe Text)
     , _nrpProject   :: !Text
     , _nrpNetwork   :: !Text
     , _nrpPayload   :: !NetworksRemovePeeringRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> NetworksRemovePeeringRequest -- ^ 'nrpPayload'
     -> NetworksRemovePeering
 networksRemovePeering pNrpProject_ pNrpNetwork_ pNrpPayload_ =
-    NetworksRemovePeering'
+  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
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
@@ -58,12 +58,15 @@
 -- | Switches the network mode from auto subnet mode to custom subnet mode.
 --
 -- /See:/ 'networksSwitchToCustomMode' smart constructor.
-data NetworksSwitchToCustomMode = NetworksSwitchToCustomMode'
+data NetworksSwitchToCustomMode =
+  NetworksSwitchToCustomMode'
     { _nstcmRequestId :: !(Maybe Text)
     , _nstcmProject   :: !Text
     , _nstcmNetwork   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'nstcmNetwork'
     -> NetworksSwitchToCustomMode
 networksSwitchToCustomMode pNstcmProject_ pNstcmNetwork_ =
-    NetworksSwitchToCustomMode'
+  NetworksSwitchToCustomMode'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/AddNodes.hs
@@ -63,14 +63,17 @@
 -- | Adds specified number of nodes to the node group.
 --
 -- /See:/ 'nodeGroupsAddNodes' smart constructor.
-data NodeGroupsAddNodes = NodeGroupsAddNodes'
+data NodeGroupsAddNodes =
+  NodeGroupsAddNodes'
     { _nganRequestId :: !(Maybe Text)
     , _nganNodeGroup :: !Text
     , _nganProject   :: !Text
     , _nganZone      :: !Text
     , _nganPayload   :: !NodeGroupsAddNodesRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> NodeGroupsAddNodesRequest -- ^ 'nganPayload'
     -> NodeGroupsAddNodes
 nodeGroupsAddNodes pNganNodeGroup_ pNganProject_ pNganZone_ pNganPayload_ =
-    NodeGroupsAddNodes'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/AggregatedList.hs
@@ -64,14 +64,17 @@
 -- nodeGroups.listNodes for more details about each group.
 --
 -- /See:/ 'nodeGroupsAggregatedList' smart constructor.
-data NodeGroupsAggregatedList = NodeGroupsAggregatedList'
+data NodeGroupsAggregatedList =
+  NodeGroupsAggregatedList'
     { _ngalOrderBy    :: !(Maybe Text)
     , _ngalProject    :: !Text
     , _ngalFilter     :: !(Maybe Text)
     , _ngalPageToken  :: !(Maybe Text)
     , _ngalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'ngalProject'
     -> NodeGroupsAggregatedList
 nodeGroupsAggregatedList pNgalProject_ =
-    NodeGroupsAggregatedList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Delete.hs
@@ -59,13 +59,16 @@
 -- | Deletes the specified NodeGroup resource.
 --
 -- /See:/ 'nodeGroupsDelete' smart constructor.
-data NodeGroupsDelete = NodeGroupsDelete'
+data NodeGroupsDelete =
+  NodeGroupsDelete'
     { _ngdRequestId :: !(Maybe Text)
     , _ngdNodeGroup :: !Text
     , _ngdProject   :: !Text
     , _ngdZone      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'ngdZone'
     -> NodeGroupsDelete
 nodeGroupsDelete pNgdNodeGroup_ pNgdProject_ pNgdZone_ =
-    NodeGroupsDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/DeleteNodes.hs
@@ -63,14 +63,17 @@
 -- | Deletes specified nodes from the node group.
 --
 -- /See:/ 'nodeGroupsDeleteNodes' smart constructor.
-data NodeGroupsDeleteNodes = NodeGroupsDeleteNodes'
+data NodeGroupsDeleteNodes =
+  NodeGroupsDeleteNodes'
     { _ngdnRequestId :: !(Maybe Text)
     , _ngdnNodeGroup :: !Text
     , _ngdnProject   :: !Text
     , _ngdnZone      :: !Text
     , _ngdnPayload   :: !NodeGroupsDeleteNodesRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> NodeGroupsDeleteNodesRequest -- ^ 'ngdnPayload'
     -> NodeGroupsDeleteNodes
 nodeGroupsDeleteNodes pNgdnNodeGroup_ pNgdnProject_ pNgdnZone_ pNgdnPayload_ =
-    NodeGroupsDeleteNodes'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Get.hs
@@ -61,12 +61,15 @@
 -- Use nodeGroups.listNodes instead.
 --
 -- /See:/ 'nodeGroupsGet' smart constructor.
-data NodeGroupsGet = NodeGroupsGet'
+data NodeGroupsGet =
+  NodeGroupsGet'
     { _nggNodeGroup :: !Text
     , _nggProject   :: !Text
     , _nggZone      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'nggZone'
     -> NodeGroupsGet
 nodeGroupsGet pNggNodeGroup_ pNggProject_ pNggZone_ =
-    NodeGroupsGet'
+  NodeGroupsGet'
     { _nggNodeGroup = pNggNodeGroup_
     , _nggProject = pNggProject_
     , _nggZone = pNggZone_
     }
+
 
 -- | Name of the node group to return.
 nggNodeGroup :: Lens' NodeGroupsGet Text
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/GetIAMPolicy.hs
@@ -60,12 +60,15 @@
 -- policy or resource exists.
 --
 -- /See:/ 'nodeGroupsGetIAMPolicy' smart constructor.
-data NodeGroupsGetIAMPolicy = NodeGroupsGetIAMPolicy'
+data NodeGroupsGetIAMPolicy =
+  NodeGroupsGetIAMPolicy'
     { _nggipProject  :: !Text
     , _nggipZone     :: !Text
     , _nggipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'nggipResource'
     -> NodeGroupsGetIAMPolicy
 nodeGroupsGetIAMPolicy pNggipProject_ pNggipZone_ pNggipResource_ =
-    NodeGroupsGetIAMPolicy'
+  NodeGroupsGetIAMPolicy'
     { _nggipProject = pNggipProject_
     , _nggipZone = pNggipZone_
     , _nggipResource = pNggipResource_
     }
+
 
 -- | Project ID for this request.
 nggipProject :: Lens' NodeGroupsGetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs b/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/Insert.hs
@@ -63,14 +63,17 @@
 -- included in the request.
 --
 -- /See:/ 'nodeGroupsInsert' smart constructor.
-data NodeGroupsInsert = NodeGroupsInsert'
+data NodeGroupsInsert =
+  NodeGroupsInsert'
     { _ngiRequestId        :: !(Maybe Text)
     , _ngiProject          :: !Text
     , _ngiInitialNodeCount :: !(Textual Int32)
     , _ngiZone             :: !Text
     , _ngiPayload          :: !NodeGroup
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> NodeGroup -- ^ 'ngiPayload'
     -> NodeGroupsInsert
 nodeGroupsInsert pNgiProject_ pNgiInitialNodeCount_ pNgiZone_ pNgiPayload_ =
-    NodeGroupsInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/List.hs b/gen/Network/Google/Resource/Compute/NodeGroups/List.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/List.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/List.hs
@@ -65,15 +65,18 @@
 -- Note: use nodeGroups.listNodes for more details about each group.
 --
 -- /See:/ 'nodeGroupsList' smart constructor.
-data NodeGroupsList = NodeGroupsList'
+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)
+    }
+  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:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'nglZone'
     -> NodeGroupsList
 nodeGroupsList pNglProject_ pNglZone_ =
-    NodeGroupsList'
+  NodeGroupsList'
     { _nglOrderBy = Nothing
     , _nglProject = pNglProject_
     , _nglZone = pNglZone_
@@ -102,6 +105,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs b/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/ListNodes.hs
@@ -67,7 +67,8 @@
 -- | Lists nodes in the node group.
 --
 -- /See:/ 'nodeGroupsListNodes'' smart constructor.
-data NodeGroupsListNodes' = NodeGroupsListNodes''
+data NodeGroupsListNodes' =
+  NodeGroupsListNodes''
     { _nglnNodeGroup  :: !Text
     , _nglnOrderBy    :: !(Maybe Text)
     , _nglnProject    :: !Text
@@ -75,8 +76,10 @@
     , _nglnFilter     :: !(Maybe Text)
     , _nglnPageToken  :: !(Maybe Text)
     , _nglnMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -100,7 +103,7 @@
     -> Text -- ^ 'nglnZone'
     -> NodeGroupsListNodes'
 nodeGroupsListNodes' pNglnNodeGroup_ pNglnProject_ pNglnZone_ =
-    NodeGroupsListNodes''
+  NodeGroupsListNodes''
     { _nglnNodeGroup = pNglnNodeGroup_
     , _nglnOrderBy = Nothing
     , _nglnProject = pNglnProject_
@@ -109,6 +112,7 @@
     , _nglnPageToken = Nothing
     , _nglnMaxResults = 500
     }
+
 
 -- | Name of the NodeGroup resource whose nodes you want to list.
 nglnNodeGroup :: Lens' NodeGroupsListNodes' Text
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/SetIAMPolicy.hs
@@ -63,13 +63,16 @@
 -- existing policy.
 --
 -- /See:/ 'nodeGroupsSetIAMPolicy' smart constructor.
-data NodeGroupsSetIAMPolicy = NodeGroupsSetIAMPolicy'
+data NodeGroupsSetIAMPolicy =
+  NodeGroupsSetIAMPolicy'
     { _ngsipProject  :: !Text
     , _ngsipZone     :: !Text
     , _ngsipPayload  :: !ZoneSetPolicyRequest
     , _ngsipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'ngsipResource'
     -> NodeGroupsSetIAMPolicy
 nodeGroupsSetIAMPolicy pNgsipProject_ pNgsipZone_ pNgsipPayload_ pNgsipResource_ =
-    NodeGroupsSetIAMPolicy'
+  NodeGroupsSetIAMPolicy'
     { _ngsipProject = pNgsipProject_
     , _ngsipZone = pNgsipZone_
     , _ngsipPayload = pNgsipPayload_
     , _ngsipResource = pNgsipResource_
     }
+
 
 -- | Project ID for this request.
 ngsipProject :: Lens' NodeGroupsSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs b/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/SetNodeTemplate.hs
@@ -63,14 +63,17 @@
 -- | Updates the node template of the node group.
 --
 -- /See:/ 'nodeGroupsSetNodeTemplate' smart constructor.
-data NodeGroupsSetNodeTemplate = NodeGroupsSetNodeTemplate'
+data NodeGroupsSetNodeTemplate =
+  NodeGroupsSetNodeTemplate'
     { _ngsntRequestId :: !(Maybe Text)
     , _ngsntNodeGroup :: !Text
     , _ngsntProject   :: !Text
     , _ngsntZone      :: !Text
     , _ngsntPayload   :: !NodeGroupsSetNodeTemplateRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,7 +94,7 @@
     -> NodeGroupsSetNodeTemplateRequest -- ^ 'ngsntPayload'
     -> NodeGroupsSetNodeTemplate
 nodeGroupsSetNodeTemplate pNgsntNodeGroup_ pNgsntProject_ pNgsntZone_ pNgsntPayload_ =
-    NodeGroupsSetNodeTemplate'
+  NodeGroupsSetNodeTemplate'
     { _ngsntRequestId = Nothing
     , _ngsntNodeGroup = pNgsntNodeGroup_
     , _ngsntProject = pNgsntProject_
@@ -99,6 +102,7 @@
     , _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
@@ -114,7 +118,7 @@
   = lens _ngsntRequestId
       (\ s a -> s{_ngsntRequestId = a})
 
--- | Name of the NodeGroup resource to delete.
+-- | Name of the NodeGroup resource to update.
 ngsntNodeGroup :: Lens' NodeGroupsSetNodeTemplate Text
 ngsntNodeGroup
   = lens _ngsntNodeGroup
diff --git a/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/NodeGroups/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'nodeGroupsTestIAMPermissions' smart constructor.
-data NodeGroupsTestIAMPermissions = NodeGroupsTestIAMPermissions'
+data NodeGroupsTestIAMPermissions =
+  NodeGroupsTestIAMPermissions'
     { _ngtipProject  :: !Text
     , _ngtipZone     :: !Text
     , _ngtipPayload  :: !TestPermissionsRequest
     , _ngtipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'ngtipResource'
     -> NodeGroupsTestIAMPermissions
 nodeGroupsTestIAMPermissions pNgtipProject_ pNgtipZone_ pNgtipPayload_ pNgtipResource_ =
-    NodeGroupsTestIAMPermissions'
+  NodeGroupsTestIAMPermissions'
     { _ngtipProject = pNgtipProject_
     , _ngtipZone = pNgtipZone_
     , _ngtipPayload = pNgtipPayload_
     , _ngtipResource = pNgtipResource_
     }
+
 
 -- | Project ID for this request.
 ngtipProject :: Lens' NodeGroupsTestIAMPermissions Text
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/AggregatedList.hs
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of node templates.
 --
 -- /See:/ 'nodeTemplatesAggregatedList' smart constructor.
-data NodeTemplatesAggregatedList = NodeTemplatesAggregatedList'
+data NodeTemplatesAggregatedList =
+  NodeTemplatesAggregatedList'
     { _nOrderBy    :: !(Maybe Text)
     , _nProject    :: !Text
     , _nFilter     :: !(Maybe Text)
     , _nPageToken  :: !(Maybe Text)
     , _nMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'nProject'
     -> NodeTemplatesAggregatedList
 nodeTemplatesAggregatedList pNProject_ =
-    NodeTemplatesAggregatedList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Delete.hs
@@ -59,13 +59,16 @@
 -- | Deletes the specified NodeTemplate resource.
 --
 -- /See:/ 'nodeTemplatesDelete' smart constructor.
-data NodeTemplatesDelete = NodeTemplatesDelete'
+data NodeTemplatesDelete =
+  NodeTemplatesDelete'
     { _ntdRequestId    :: !(Maybe Text)
     , _ntdProject      :: !Text
     , _ntdNodeTemplate :: !Text
     , _ntdRegion       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'ntdRegion'
     -> NodeTemplatesDelete
 nodeTemplatesDelete pNtdProject_ pNtdNodeTemplate_ pNtdRegion_ =
-    NodeTemplatesDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Get.hs
@@ -59,12 +59,15 @@
 -- templates by making a list() request.
 --
 -- /See:/ 'nodeTemplatesGet' smart constructor.
-data NodeTemplatesGet = NodeTemplatesGet'
+data NodeTemplatesGet =
+  NodeTemplatesGet'
     { _nodProject      :: !Text
     , _nodNodeTemplate :: !Text
     , _nodRegion       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'nodRegion'
     -> NodeTemplatesGet
 nodeTemplatesGet pNodProject_ pNodNodeTemplate_ pNodRegion_ =
-    NodeTemplatesGet'
+  NodeTemplatesGet'
     { _nodProject = pNodProject_
     , _nodNodeTemplate = pNodNodeTemplate_
     , _nodRegion = pNodRegion_
     }
+
 
 -- | Project ID for this request.
 nodProject :: Lens' NodeTemplatesGet Text
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/GetIAMPolicy.hs
@@ -60,12 +60,15 @@
 -- policy or resource exists.
 --
 -- /See:/ 'nodeTemplatesGetIAMPolicy' smart constructor.
-data NodeTemplatesGetIAMPolicy = NodeTemplatesGetIAMPolicy'
+data NodeTemplatesGetIAMPolicy =
+  NodeTemplatesGetIAMPolicy'
     { _ntgipProject  :: !Text
     , _ntgipResource :: !Text
     , _ntgipRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'ntgipRegion'
     -> NodeTemplatesGetIAMPolicy
 nodeTemplatesGetIAMPolicy pNtgipProject_ pNtgipResource_ pNtgipRegion_ =
-    NodeTemplatesGetIAMPolicy'
+  NodeTemplatesGetIAMPolicy'
     { _ntgipProject = pNtgipProject_
     , _ntgipResource = pNtgipResource_
     , _ntgipRegion = pNtgipRegion_
     }
+
 
 -- | Project ID for this request.
 ntgipProject :: Lens' NodeTemplatesGetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/Insert.hs
@@ -62,13 +62,16 @@
 -- included in the request.
 --
 -- /See:/ 'nodeTemplatesInsert' smart constructor.
-data NodeTemplatesInsert = NodeTemplatesInsert'
+data NodeTemplatesInsert =
+  NodeTemplatesInsert'
     { _ntiRequestId :: !(Maybe Text)
     , _ntiProject   :: !Text
     , _ntiPayload   :: !NodeTemplate
     , _ntiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'ntiRegion'
     -> NodeTemplatesInsert
 nodeTemplatesInsert pNtiProject_ pNtiPayload_ pNtiRegion_ =
-    NodeTemplatesInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/List.hs
@@ -64,15 +64,18 @@
 -- | Retrieves a list of node templates available to the specified project.
 --
 -- /See:/ 'nodeTemplatesList' smart constructor.
-data NodeTemplatesList = NodeTemplatesList'
+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)
+    }
+  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:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'ntlRegion'
     -> NodeTemplatesList
 nodeTemplatesList pNtlProject_ pNtlRegion_ =
-    NodeTemplatesList'
+  NodeTemplatesList'
     { _ntlOrderBy = Nothing
     , _ntlProject = pNtlProject_
     , _ntlFilter = Nothing
@@ -101,6 +104,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/SetIAMPolicy.hs
@@ -63,13 +63,16 @@
 -- existing policy.
 --
 -- /See:/ 'nodeTemplatesSetIAMPolicy' smart constructor.
-data NodeTemplatesSetIAMPolicy = NodeTemplatesSetIAMPolicy'
+data NodeTemplatesSetIAMPolicy =
+  NodeTemplatesSetIAMPolicy'
     { _ntsipProject  :: !Text
     , _ntsipPayload  :: !RegionSetPolicyRequest
     , _ntsipResource :: !Text
     , _ntsipRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'ntsipRegion'
     -> NodeTemplatesSetIAMPolicy
 nodeTemplatesSetIAMPolicy pNtsipProject_ pNtsipPayload_ pNtsipResource_ pNtsipRegion_ =
-    NodeTemplatesSetIAMPolicy'
+  NodeTemplatesSetIAMPolicy'
     { _ntsipProject = pNtsipProject_
     , _ntsipPayload = pNtsipPayload_
     , _ntsipResource = pNtsipResource_
     , _ntsipRegion = pNtsipRegion_
     }
+
 
 -- | Project ID for this request.
 ntsipProject :: Lens' NodeTemplatesSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTemplates/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'nodeTemplatesTestIAMPermissions' smart constructor.
-data NodeTemplatesTestIAMPermissions = NodeTemplatesTestIAMPermissions'
+data NodeTemplatesTestIAMPermissions =
+  NodeTemplatesTestIAMPermissions'
     { _nttipProject  :: !Text
     , _nttipPayload  :: !TestPermissionsRequest
     , _nttipResource :: !Text
     , _nttipRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'nttipRegion'
     -> NodeTemplatesTestIAMPermissions
 nodeTemplatesTestIAMPermissions pNttipProject_ pNttipPayload_ pNttipResource_ pNttipRegion_ =
-    NodeTemplatesTestIAMPermissions'
+  NodeTemplatesTestIAMPermissions'
     { _nttipProject = pNttipProject_
     , _nttipPayload = pNttipPayload_
     , _nttipResource = pNttipResource_
     , _nttipRegion = pNttipRegion_
     }
 
+
 -- | Project ID for this request.
 nttipProject :: Lens' NodeTemplatesTestIAMPermissions Text
 nttipProject
@@ -115,7 +119,8 @@
   = lens _nttipRegion (\ s a -> s{_nttipRegion = a})
 
 instance GoogleRequest
-         NodeTemplatesTestIAMPermissions where
+           NodeTemplatesTestIAMPermissions
+         where
         type Rs NodeTemplatesTestIAMPermissions =
              TestPermissionsResponse
         type Scopes NodeTemplatesTestIAMPermissions =
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/AggregatedList.hs
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of node types.
 --
 -- /See:/ 'nodeTypesAggregatedList' smart constructor.
-data NodeTypesAggregatedList = NodeTypesAggregatedList'
+data NodeTypesAggregatedList =
+  NodeTypesAggregatedList'
     { _ntalOrderBy    :: !(Maybe Text)
     , _ntalProject    :: !Text
     , _ntalFilter     :: !(Maybe Text)
     , _ntalPageToken  :: !(Maybe Text)
     , _ntalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'ntalProject'
     -> NodeTypesAggregatedList
 nodeTypesAggregatedList pNtalProject_ =
-    NodeTypesAggregatedList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs b/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs
--- a/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/Get.hs
@@ -59,12 +59,15 @@
 -- making a list() request.
 --
 -- /See:/ 'nodeTypesGet' smart constructor.
-data NodeTypesGet = NodeTypesGet'
+data NodeTypesGet =
+  NodeTypesGet'
     { _ntgProject  :: !Text
     , _ntgZone     :: !Text
     , _ntgNodeType :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'ntgNodeType'
     -> NodeTypesGet
 nodeTypesGet pNtgProject_ pNtgZone_ pNtgNodeType_ =
-    NodeTypesGet'
+  NodeTypesGet'
     { _ntgProject = pNtgProject_
     , _ntgZone = pNtgZone_
     , _ntgNodeType = pNtgNodeType_
     }
+
 
 -- | Project ID for this request.
 ntgProject :: Lens' NodeTypesGet Text
diff --git a/gen/Network/Google/Resource/Compute/NodeTypes/List.hs b/gen/Network/Google/Resource/Compute/NodeTypes/List.hs
--- a/gen/Network/Google/Resource/Compute/NodeTypes/List.hs
+++ b/gen/Network/Google/Resource/Compute/NodeTypes/List.hs
@@ -63,15 +63,18 @@
 -- | Retrieves a list of node types available to the specified project.
 --
 -- /See:/ 'nodeTypesList' smart constructor.
-data NodeTypesList = NodeTypesList'
+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)
+    }
+  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:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'ntltZone'
     -> NodeTypesList
 nodeTypesList pNtltProject_ pNtltZone_ =
-    NodeTypesList'
+  NodeTypesList'
     { _ntltOrderBy = Nothing
     , _ntltProject = pNtltProject_
     , _ntltZone = pNtltZone_
@@ -100,6 +103,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs
--- a/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/DisableXpnHost.hs
@@ -54,11 +54,14 @@
 -- | Disable this project as a shared VPC host project.
 --
 -- /See:/ 'projectsDisableXpnHost' smart constructor.
-data ProjectsDisableXpnHost = ProjectsDisableXpnHost'
+data ProjectsDisableXpnHost =
+  ProjectsDisableXpnHost'
     { _pdxhRequestId :: !(Maybe Text)
     , _pdxhProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -70,10 +73,9 @@
     :: Text -- ^ 'pdxhProject'
     -> ProjectsDisableXpnHost
 projectsDisableXpnHost pPdxhProject_ =
-    ProjectsDisableXpnHost'
-    { _pdxhRequestId = Nothing
-    , _pdxhProject = 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
diff --git a/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs b/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs
--- a/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/DisableXpnResource.hs
@@ -59,12 +59,15 @@
 -- host project.
 --
 -- /See:/ 'projectsDisableXpnResource' smart constructor.
-data ProjectsDisableXpnResource = ProjectsDisableXpnResource'
+data ProjectsDisableXpnResource =
+  ProjectsDisableXpnResource'
     { _pdxrRequestId :: !(Maybe Text)
     , _pdxrProject   :: !Text
     , _pdxrPayload   :: !ProjectsDisableXpnResourceRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> ProjectsDisableXpnResourceRequest -- ^ 'pdxrPayload'
     -> ProjectsDisableXpnResource
 projectsDisableXpnResource pPdxrProject_ pPdxrPayload_ =
-    ProjectsDisableXpnResource'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs
--- a/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/EnableXpnHost.hs
@@ -54,11 +54,14 @@
 -- | Enable this project as a shared VPC host project.
 --
 -- /See:/ 'projectsEnableXpnHost' smart constructor.
-data ProjectsEnableXpnHost = ProjectsEnableXpnHost'
+data ProjectsEnableXpnHost =
+  ProjectsEnableXpnHost'
     { _pexhRequestId :: !(Maybe Text)
     , _pexhProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -70,10 +73,9 @@
     :: Text -- ^ 'pexhProject'
     -> ProjectsEnableXpnHost
 projectsEnableXpnHost pPexhProject_ =
-    ProjectsEnableXpnHost'
-    { _pexhRequestId = Nothing
-    , _pexhProject = 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
diff --git a/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs b/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs
--- a/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/EnableXpnResource.hs
@@ -61,12 +61,15 @@
 -- project.
 --
 -- /See:/ 'projectsEnableXpnResource' smart constructor.
-data ProjectsEnableXpnResource = ProjectsEnableXpnResource'
+data ProjectsEnableXpnResource =
+  ProjectsEnableXpnResource'
     { _pexrRequestId :: !(Maybe Text)
     , _pexrProject   :: !Text
     , _pexrPayload   :: !ProjectsEnableXpnResourceRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> ProjectsEnableXpnResourceRequest -- ^ 'pexrPayload'
     -> ProjectsEnableXpnResource
 projectsEnableXpnResource pPexrProject_ pPexrPayload_ =
-    ProjectsEnableXpnResource'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Projects/Get.hs b/gen/Network/Google/Resource/Compute/Projects/Get.hs
--- a/gen/Network/Google/Resource/Compute/Projects/Get.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/Get.hs
@@ -51,10 +51,13 @@
 -- | Returns the specified Project resource.
 --
 -- /See:/ 'projectsGet' smart constructor.
-newtype ProjectsGet = ProjectsGet'
+newtype ProjectsGet =
+  ProjectsGet'
     { _pgProject :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,10 +66,8 @@
 projectsGet
     :: Text -- ^ 'pgProject'
     -> ProjectsGet
-projectsGet pPgProject_ =
-    ProjectsGet'
-    { _pgProject = pPgProject_
-    }
+projectsGet pPgProject_ = ProjectsGet' {_pgProject = pPgProject_}
+
 
 -- | Project ID for this request.
 pgProject :: Lens' ProjectsGet Text
diff --git a/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs b/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs
--- a/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/GetXpnHost.hs
@@ -54,10 +54,13 @@
 -- empty if no link exists.
 --
 -- /See:/ 'projectsGetXpnHost' smart constructor.
-newtype ProjectsGetXpnHost = ProjectsGetXpnHost'
+newtype ProjectsGetXpnHost =
+  ProjectsGetXpnHost'
     { _pgxhProject :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -67,9 +70,8 @@
     :: Text -- ^ 'pgxhProject'
     -> ProjectsGetXpnHost
 projectsGetXpnHost pPgxhProject_ =
-    ProjectsGetXpnHost'
-    { _pgxhProject = pPgxhProject_
-    }
+  ProjectsGetXpnHost' {_pgxhProject = pPgxhProject_}
+
 
 -- | Project ID for this request.
 pgxhProject :: Lens' ProjectsGetXpnHost Text
diff --git a/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs b/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs
--- a/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/GetXpnResources.hs
@@ -63,14 +63,17 @@
 -- project.
 --
 -- /See:/ 'projectsGetXpnResources'' smart constructor.
-data ProjectsGetXpnResources' = ProjectsGetXpnResources''
+data ProjectsGetXpnResources' =
+  ProjectsGetXpnResources''
     { _pgxrProject    :: !Text
     , _pgxrOrderBy    :: !(Maybe Text)
     , _pgxrFilter     :: !(Maybe Text)
     , _pgxrPageToken  :: !(Maybe Text)
     , _pgxrMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'pgxrProject'
     -> ProjectsGetXpnResources'
 projectsGetXpnResources' pPgxrProject_ =
-    ProjectsGetXpnResources''
+  ProjectsGetXpnResources''
     { _pgxrProject = pPgxrProject_
     , _pgxrOrderBy = Nothing
     , _pgxrFilter = Nothing
     , _pgxrPageToken = Nothing
     , _pgxrMaxResults = 500
     }
+
 
 -- | Project ID for this request.
 pgxrProject :: Lens' ProjectsGetXpnResources' Text
diff --git a/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs b/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs
--- a/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/ListXpnHosts.hs
@@ -65,15 +65,18 @@
 -- organization.
 --
 -- /See:/ 'projectsListXpnHosts' smart constructor.
-data ProjectsListXpnHosts = ProjectsListXpnHosts'
+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)
+    }
+  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:
@@ -94,7 +97,7 @@
     -> ProjectsListXpnHostsRequest -- ^ 'plxhPayload'
     -> ProjectsListXpnHosts
 projectsListXpnHosts pPlxhProject_ pPlxhPayload_ =
-    ProjectsListXpnHosts'
+  ProjectsListXpnHosts'
     { _plxhProject = pPlxhProject_
     , _plxhPayload = pPlxhPayload_
     , _plxhOrderBy = Nothing
@@ -102,6 +105,7 @@
     , _plxhPageToken = Nothing
     , _plxhMaxResults = 500
     }
+
 
 -- | Project ID for this request.
 plxhProject :: Lens' ProjectsListXpnHosts Text
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
@@ -57,12 +57,15 @@
 -- | Moves a persistent disk from one zone to another.
 --
 -- /See:/ 'projectsMoveDisk' smart constructor.
-data ProjectsMoveDisk = ProjectsMoveDisk'
+data ProjectsMoveDisk =
+  ProjectsMoveDisk'
     { _pmdRequestId :: !(Maybe Text)
     , _pmdProject   :: !Text
     , _pmdPayload   :: !DiskMoveRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> DiskMoveRequest -- ^ 'pmdPayload'
     -> ProjectsMoveDisk
 projectsMoveDisk pPmdProject_ pPmdPayload_ =
-    ProjectsMoveDisk'
+  ProjectsMoveDisk'
     { _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
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
@@ -59,12 +59,15 @@
 -- another.
 --
 -- /See:/ 'projectsMoveInstance' smart constructor.
-data ProjectsMoveInstance = ProjectsMoveInstance'
+data ProjectsMoveInstance =
+  ProjectsMoveInstance'
     { _pmiRequestId :: !(Maybe Text)
     , _pmiProject   :: !Text
     , _pmiPayload   :: !InstanceMoveRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> InstanceMoveRequest -- ^ 'pmiPayload'
     -> ProjectsMoveInstance
 projectsMoveInstance pPmiProject_ pPmiPayload_ =
-    ProjectsMoveInstance'
+  ProjectsMoveInstance'
     { _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
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
@@ -58,12 +58,15 @@
 -- the data included in the request.
 --
 -- /See:/ 'projectsSetCommonInstanceMetadata' smart constructor.
-data ProjectsSetCommonInstanceMetadata = ProjectsSetCommonInstanceMetadata'
+data ProjectsSetCommonInstanceMetadata =
+  ProjectsSetCommonInstanceMetadata'
     { _pscimRequestId :: !(Maybe Text)
     , _pscimProject   :: !Text
     , _pscimPayload   :: !Metadata
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -78,12 +81,13 @@
     -> Metadata -- ^ 'pscimPayload'
     -> ProjectsSetCommonInstanceMetadata
 projectsSetCommonInstanceMetadata pPscimProject_ pPscimPayload_ =
-    ProjectsSetCommonInstanceMetadata'
+  ProjectsSetCommonInstanceMetadata'
     { _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
@@ -110,7 +114,8 @@
   = lens _pscimPayload (\ s a -> s{_pscimPayload = a})
 
 instance GoogleRequest
-         ProjectsSetCommonInstanceMetadata where
+           ProjectsSetCommonInstanceMetadata
+         where
         type Rs ProjectsSetCommonInstanceMetadata = Operation
         type Scopes ProjectsSetCommonInstanceMetadata =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs b/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs
--- a/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs
+++ b/gen/Network/Google/Resource/Compute/Projects/SetDefaultNetworkTier.hs
@@ -61,12 +61,15 @@
 -- specifying the network tier field.
 --
 -- /See:/ 'projectsSetDefaultNetworkTier' smart constructor.
-data ProjectsSetDefaultNetworkTier = ProjectsSetDefaultNetworkTier'
+data ProjectsSetDefaultNetworkTier =
+  ProjectsSetDefaultNetworkTier'
     { _psdntRequestId :: !(Maybe Text)
     , _psdntProject   :: !Text
     , _psdntPayload   :: !ProjectsSetDefaultNetworkTierRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> ProjectsSetDefaultNetworkTierRequest -- ^ 'psdntPayload'
     -> ProjectsSetDefaultNetworkTier
 projectsSetDefaultNetworkTier pPsdntProject_ pPsdntPayload_ =
-    ProjectsSetDefaultNetworkTier'
+  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
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
@@ -61,12 +61,15 @@
 -- method, the usage export feature will be disabled.
 --
 -- /See:/ 'projectsSetUsageExportBucket' smart constructor.
-data ProjectsSetUsageExportBucket = ProjectsSetUsageExportBucket'
+data ProjectsSetUsageExportBucket =
+  ProjectsSetUsageExportBucket'
     { _psuebRequestId :: !(Maybe Text)
     , _psuebProject   :: !Text
     , _psuebPayload   :: !UsageExportLocation
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> UsageExportLocation -- ^ 'psuebPayload'
     -> ProjectsSetUsageExportBucket
 projectsSetUsageExportBucket pPsuebProject_ pPsuebPayload_ =
-    ProjectsSetUsageExportBucket'
+  ProjectsSetUsageExportBucket'
     { _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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified autoscaler.
 --
 -- /See:/ 'regionAutoscalersDelete' smart constructor.
-data RegionAutoscalersDelete = RegionAutoscalersDelete'
+data RegionAutoscalersDelete =
+  RegionAutoscalersDelete'
     { _radRequestId  :: !(Maybe Text)
     , _radProject    :: !Text
     , _radAutoscaler :: !Text
     , _radRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionAutoscalersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'radRegion'
     -> RegionAutoscalersDelete
 regionAutoscalersDelete pRadProject_ pRadAutoscaler_ pRadRegion_ =
-    RegionAutoscalersDelete'
+  RegionAutoscalersDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Get.hs b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionAutoscalers/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionAutoscalers/Get.hs
@@ -57,12 +57,15 @@
 -- | Returns the specified autoscaler.
 --
 -- /See:/ 'regionAutoscalersGet' smart constructor.
-data RegionAutoscalersGet = RegionAutoscalersGet'
+data RegionAutoscalersGet =
+  RegionAutoscalersGet'
     { _ragProject    :: !Text
     , _ragAutoscaler :: !Text
     , _ragRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionAutoscalersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'ragRegion'
     -> RegionAutoscalersGet
 regionAutoscalersGet pRagProject_ pRagAutoscaler_ pRagRegion_ =
-    RegionAutoscalersGet'
+  RegionAutoscalersGet'
     { _ragProject = pRagProject_
     , _ragAutoscaler = pRagAutoscaler_
     , _ragRegion = pRagRegion_
     }
+
 
 -- | Project ID for this request.
 ragProject :: Lens' RegionAutoscalersGet Text
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
@@ -61,13 +61,16 @@
 -- in the request.
 --
 -- /See:/ 'regionAutoscalersInsert' smart constructor.
-data RegionAutoscalersInsert = RegionAutoscalersInsert'
+data RegionAutoscalersInsert =
+  RegionAutoscalersInsert'
     { _raiRequestId :: !(Maybe Text)
     , _raiProject   :: !Text
     , _raiPayload   :: !Autoscaler
     , _raiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'raiRegion'
     -> RegionAutoscalersInsert
 regionAutoscalersInsert pRaiProject_ pRaiPayload_ pRaiRegion_ =
-    RegionAutoscalersInsert'
+  RegionAutoscalersInsert'
     { _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
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
@@ -64,15 +64,18 @@
 -- | Retrieves a list of autoscalers contained within the specified region.
 --
 -- /See:/ 'regionAutoscalersList' smart constructor.
-data RegionAutoscalersList = RegionAutoscalersList'
+data RegionAutoscalersList =
+  RegionAutoscalersList'
     { _ralOrderBy    :: !(Maybe Text)
     , _ralProject    :: !Text
     , _ralFilter     :: !(Maybe Text)
     , _ralRegion     :: !Text
     , _ralPageToken  :: !(Maybe Text)
     , _ralMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionAutoscalersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'ralRegion'
     -> RegionAutoscalersList
 regionAutoscalersList pRalProject_ pRalRegion_ =
-    RegionAutoscalersList'
+  RegionAutoscalersList'
     { _ralOrderBy = Nothing
     , _ralProject = pRalProject_
     , _ralFilter = Nothing
@@ -101,6 +104,7 @@
     , _ralPageToken = Nothing
     , _ralMaxResults = 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
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
@@ -65,14 +65,17 @@
 -- merge patch format and processing rules.
 --
 -- /See:/ 'regionAutoscalersPatch' smart constructor.
-data RegionAutoscalersPatch = RegionAutoscalersPatch'
+data RegionAutoscalersPatch =
+  RegionAutoscalersPatch'
     { _rapRequestId  :: !(Maybe Text)
     , _rapProject    :: !Text
     , _rapPayload    :: !Autoscaler
     , _rapAutoscaler :: !(Maybe Text)
     , _rapRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionAutoscalersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,13 +95,14 @@
     -> Text -- ^ 'rapRegion'
     -> RegionAutoscalersPatch
 regionAutoscalersPatch pRapProject_ pRapPayload_ pRapRegion_ =
-    RegionAutoscalersPatch'
+  RegionAutoscalersPatch'
     { _rapRequestId = Nothing
     , _rapProject = pRapProject_
     , _rapPayload = pRapPayload_
     , _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
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
@@ -63,14 +63,17 @@
 -- in the request.
 --
 -- /See:/ 'regionAutoscalersUpdate' smart constructor.
-data RegionAutoscalersUpdate = RegionAutoscalersUpdate'
+data RegionAutoscalersUpdate =
+  RegionAutoscalersUpdate'
     { _rauRequestId  :: !(Maybe Text)
     , _rauProject    :: !Text
     , _rauPayload    :: !Autoscaler
     , _rauAutoscaler :: !(Maybe Text)
     , _rauRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionAutoscalersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'rauRegion'
     -> RegionAutoscalersUpdate
 regionAutoscalersUpdate pRauProject_ pRauPayload_ pRauRegion_ =
-    RegionAutoscalersUpdate'
+  RegionAutoscalersUpdate'
     { _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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified regional BackendService resource.
 --
 -- /See:/ 'regionBackendServicesDelete' smart constructor.
-data RegionBackendServicesDelete = RegionBackendServicesDelete'
+data RegionBackendServicesDelete =
+  RegionBackendServicesDelete'
     { _rbsdRequestId      :: !(Maybe Text)
     , _rbsdProject        :: !Text
     , _rbsdRegion         :: !Text
     , _rbsdBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'rbsdBackendService'
     -> RegionBackendServicesDelete
 regionBackendServicesDelete pRbsdProject_ pRbsdRegion_ pRbsdBackendService_ =
-    RegionBackendServicesDelete'
+  RegionBackendServicesDelete'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/RegionBackendServices/Get.hs b/gen/Network/Google/Resource/Compute/RegionBackendServices/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionBackendServices/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionBackendServices/Get.hs
@@ -58,12 +58,15 @@
 -- | Returns the specified regional BackendService resource.
 --
 -- /See:/ 'regionBackendServicesGet' smart constructor.
-data RegionBackendServicesGet = RegionBackendServicesGet'
+data RegionBackendServicesGet =
+  RegionBackendServicesGet'
     { _rbsgProject        :: !Text
     , _rbsgRegion         :: !Text
     , _rbsgBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'rbsgBackendService'
     -> RegionBackendServicesGet
 regionBackendServicesGet pRbsgProject_ pRbsgRegion_ pRbsgBackendService_ =
-    RegionBackendServicesGet'
+  RegionBackendServicesGet'
     { _rbsgProject = pRbsgProject_
     , _rbsgRegion = pRbsgRegion_
     , _rbsgBackendService = pRbsgBackendService_
     }
+
 
 -- | Project ID for this request.
 rbsgProject :: Lens' RegionBackendServicesGet Text
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
@@ -63,13 +63,16 @@
 -- BackendService.
 --
 -- /See:/ 'regionBackendServicesGetHealth' smart constructor.
-data RegionBackendServicesGetHealth = RegionBackendServicesGetHealth'
+data RegionBackendServicesGetHealth =
+  RegionBackendServicesGetHealth'
     { _rbsghProject        :: !Text
     , _rbsghPayload        :: !ResourceGroupReference
     , _rbsghRegion         :: !Text
     , _rbsghBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesGetHealth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'rbsghBackendService'
     -> RegionBackendServicesGetHealth
 regionBackendServicesGetHealth pRbsghProject_ pRbsghPayload_ pRbsghRegion_ pRbsghBackendService_ =
-    RegionBackendServicesGetHealth'
+  RegionBackendServicesGetHealth'
     { _rbsghProject = pRbsghProject_
     , _rbsghPayload = pRbsghPayload_
     , _rbsghRegion = pRbsghRegion_
     , _rbsghBackendService = pRbsghBackendService_
     }
+
 
 rbsghProject :: Lens' RegionBackendServicesGetHealth Text
 rbsghProject
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
@@ -66,13 +66,16 @@
 -- Read Restrictions and Guidelines for more information.
 --
 -- /See:/ 'regionBackendServicesInsert' smart constructor.
-data RegionBackendServicesInsert = RegionBackendServicesInsert'
+data RegionBackendServicesInsert =
+  RegionBackendServicesInsert'
     { _rbsiRequestId :: !(Maybe Text)
     , _rbsiProject   :: !Text
     , _rbsiPayload   :: !BackendService
     , _rbsiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,12 +93,13 @@
     -> Text -- ^ 'rbsiRegion'
     -> RegionBackendServicesInsert
 regionBackendServicesInsert pRbsiProject_ pRbsiPayload_ pRbsiRegion_ =
-    RegionBackendServicesInsert'
+  RegionBackendServicesInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- specified project in the given region.
 --
 -- /See:/ 'regionBackendServicesList' smart constructor.
-data RegionBackendServicesList = RegionBackendServicesList'
+data RegionBackendServicesList =
+  RegionBackendServicesList'
     { _rbslOrderBy    :: !(Maybe Text)
     , _rbslProject    :: !Text
     , _rbslFilter     :: !(Maybe Text)
     , _rbslRegion     :: !Text
     , _rbslPageToken  :: !(Maybe Text)
     , _rbslMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'rbslRegion'
     -> RegionBackendServicesList
 regionBackendServicesList pRbslProject_ pRbslRegion_ =
-    RegionBackendServicesList'
+  RegionBackendServicesList'
     { _rbslOrderBy = Nothing
     , _rbslProject = pRbslProject_
     , _rbslFilter = Nothing
@@ -103,6 +106,7 @@
     , _rbslPageToken = Nothing
     , _rbslMaxResults = 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
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
@@ -70,14 +70,17 @@
 -- and uses the JSON merge patch format and processing rules.
 --
 -- /See:/ 'regionBackendServicesPatch' smart constructor.
-data RegionBackendServicesPatch = RegionBackendServicesPatch'
+data RegionBackendServicesPatch =
+  RegionBackendServicesPatch'
     { _rbspRequestId      :: !(Maybe Text)
     , _rbspProject        :: !Text
     , _rbspPayload        :: !BackendService
     , _rbspRegion         :: !Text
     , _rbspBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -98,13 +101,14 @@
     -> Text -- ^ 'rbspBackendService'
     -> RegionBackendServicesPatch
 regionBackendServicesPatch pRbspProject_ pRbspPayload_ pRbspRegion_ pRbspBackendService_ =
-    RegionBackendServicesPatch'
+  RegionBackendServicesPatch'
     { _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
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
@@ -68,14 +68,17 @@
 -- Guidelines for more information.
 --
 -- /See:/ 'regionBackendServicesUpdate' smart constructor.
-data RegionBackendServicesUpdate = RegionBackendServicesUpdate'
+data RegionBackendServicesUpdate =
+  RegionBackendServicesUpdate'
     { _rbsuRequestId      :: !(Maybe Text)
     , _rbsuProject        :: !Text
     , _rbsuPayload        :: !BackendService
     , _rbsuRegion         :: !Text
     , _rbsuBackendService :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionBackendServicesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,13 +99,14 @@
     -> Text -- ^ 'rbsuBackendService'
     -> RegionBackendServicesUpdate
 regionBackendServicesUpdate pRbsuProject_ pRbsuPayload_ pRbsuRegion_ pRbsuBackendService_ =
-    RegionBackendServicesUpdate'
+  RegionBackendServicesUpdate'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs
--- a/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/AggregatedList.hs
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of commitments.
 --
 -- /See:/ 'regionCommitmentsAggregatedList' smart constructor.
-data RegionCommitmentsAggregatedList = RegionCommitmentsAggregatedList'
+data RegionCommitmentsAggregatedList =
+  RegionCommitmentsAggregatedList'
     { _rcalOrderBy    :: !(Maybe Text)
     , _rcalProject    :: !Text
     , _rcalFilter     :: !(Maybe Text)
     , _rcalPageToken  :: !(Maybe Text)
     , _rcalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,7 +90,7 @@
     :: Text -- ^ 'rcalProject'
     -> RegionCommitmentsAggregatedList
 regionCommitmentsAggregatedList pRcalProject_ =
-    RegionCommitmentsAggregatedList'
+  RegionCommitmentsAggregatedList'
     { _rcalOrderBy = Nothing
     , _rcalProject = pRcalProject_
     , _rcalFilter = Nothing
@@ -95,6 +98,7 @@
     , _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
@@ -151,7 +155,8 @@
       . _Coerce
 
 instance GoogleRequest
-         RegionCommitmentsAggregatedList where
+           RegionCommitmentsAggregatedList
+         where
         type Rs RegionCommitmentsAggregatedList =
              CommitmentAggregatedList
         type Scopes RegionCommitmentsAggregatedList =
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/Get.hs
@@ -59,12 +59,15 @@
 -- commitments by making a list() request.
 --
 -- /See:/ 'regionCommitmentsGet' smart constructor.
-data RegionCommitmentsGet = RegionCommitmentsGet'
+data RegionCommitmentsGet =
+  RegionCommitmentsGet'
     { _rcgProject    :: !Text
     , _rcgRegion     :: !Text
     , _rcgCommitment :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'rcgCommitment'
     -> RegionCommitmentsGet
 regionCommitmentsGet pRcgProject_ pRcgRegion_ pRcgCommitment_ =
-    RegionCommitmentsGet'
+  RegionCommitmentsGet'
     { _rcgProject = pRcgProject_
     , _rcgRegion = pRcgRegion_
     , _rcgCommitment = pRcgCommitment_
     }
+
 
 -- | Project ID for this request.
 rcgProject :: Lens' RegionCommitmentsGet Text
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs
--- a/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/Insert.hs
@@ -61,13 +61,16 @@
 -- the request.
 --
 -- /See:/ 'regionCommitmentsInsert' smart constructor.
-data RegionCommitmentsInsert = RegionCommitmentsInsert'
+data RegionCommitmentsInsert =
+  RegionCommitmentsInsert'
     { _rciRequestId :: !(Maybe Text)
     , _rciProject   :: !Text
     , _rciPayload   :: !Commitment
     , _rciRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'rciRegion'
     -> RegionCommitmentsInsert
 regionCommitmentsInsert pRciProject_ pRciPayload_ pRciRegion_ =
-    RegionCommitmentsInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs b/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionCommitments/List.hs
@@ -64,15 +64,18 @@
 -- | Retrieves a list of commitments contained within the specified region.
 --
 -- /See:/ 'regionCommitmentsList' smart constructor.
-data RegionCommitmentsList = RegionCommitmentsList'
+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)
+    }
+  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:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'rclRegion'
     -> RegionCommitmentsList
 regionCommitmentsList pRclProject_ pRclRegion_ =
-    RegionCommitmentsList'
+  RegionCommitmentsList'
     { _rclOrderBy = Nothing
     , _rclProject = pRclProject_
     , _rclFilter = Nothing
@@ -101,6 +104,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs b/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDiskTypes/Get.hs
@@ -59,12 +59,15 @@
 -- types by making a list() request.
 --
 -- /See:/ 'regionDiskTypesGet' smart constructor.
-data RegionDiskTypesGet = RegionDiskTypesGet'
+data RegionDiskTypesGet =
+  RegionDiskTypesGet'
     { _rdtgProject  :: !Text
     , _rdtgDiskType :: !Text
     , _rdtgRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'rdtgRegion'
     -> RegionDiskTypesGet
 regionDiskTypesGet pRdtgProject_ pRdtgDiskType_ pRdtgRegion_ =
-    RegionDiskTypesGet'
+  RegionDiskTypesGet'
     { _rdtgProject = pRdtgProject_
     , _rdtgDiskType = pRdtgDiskType_
     , _rdtgRegion = pRdtgRegion_
     }
+
 
 -- | Project ID for this request.
 rdtgProject :: Lens' RegionDiskTypesGet Text
diff --git a/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs b/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDiskTypes/List.hs
@@ -66,15 +66,18 @@
 -- project.
 --
 -- /See:/ 'regionDiskTypesList' smart constructor.
-data RegionDiskTypesList = RegionDiskTypesList'
+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)
+    }
+  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:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'rdtlRegion'
     -> RegionDiskTypesList
 regionDiskTypesList pRdtlProject_ pRdtlRegion_ =
-    RegionDiskTypesList'
+  RegionDiskTypesList'
     { _rdtlOrderBy = Nothing
     , _rdtlProject = pRdtlProject_
     , _rdtlFilter = Nothing
@@ -103,6 +106,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs b/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/CreateSnapshot.hs
@@ -62,14 +62,17 @@
 -- | Creates a snapshot of this regional disk.
 --
 -- /See:/ 'regionDisksCreateSnapshot' smart constructor.
-data RegionDisksCreateSnapshot = RegionDisksCreateSnapshot'
+data RegionDisksCreateSnapshot =
+  RegionDisksCreateSnapshot'
     { _rdcsRequestId :: !(Maybe Text)
     , _rdcsProject   :: !Text
     , _rdcsDisk      :: !Text
     , _rdcsPayload   :: !Snapshot
     , _rdcsRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'rdcsRegion'
     -> RegionDisksCreateSnapshot
 regionDisksCreateSnapshot pRdcsProject_ pRdcsDisk_ pRdcsPayload_ pRdcsRegion_ =
-    RegionDisksCreateSnapshot'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Delete.hs
@@ -65,13 +65,16 @@
 -- from the disk. You must separately delete snapshots.
 --
 -- /See:/ 'regionDisksDelete' smart constructor.
-data RegionDisksDelete = RegionDisksDelete'
+data RegionDisksDelete =
+  RegionDisksDelete'
     { _rddRequestId :: !(Maybe Text)
     , _rddProject   :: !Text
     , _rddDisk      :: !Text
     , _rddRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,12 +92,13 @@
     -> Text -- ^ 'rddRegion'
     -> RegionDisksDelete
 regionDisksDelete pRddProject_ pRddDisk_ pRddRegion_ =
-    RegionDisksDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Get.hs
@@ -57,12 +57,15 @@
 -- | Returns a specified regional persistent disk.
 --
 -- /See:/ 'regionDisksGet' smart constructor.
-data RegionDisksGet = RegionDisksGet'
+data RegionDisksGet =
+  RegionDisksGet'
     { _rdgProject :: !Text
     , _rdgDisk    :: !Text
     , _rdgRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -78,11 +81,9 @@
     -> Text -- ^ 'rdgRegion'
     -> RegionDisksGet
 regionDisksGet pRdgProject_ pRdgDisk_ pRdgRegion_ =
-    RegionDisksGet'
-    { _rdgProject = pRdgProject_
-    , _rdgDisk = pRdgDisk_
-    , _rdgRegion = pRdgRegion_
-    }
+  RegionDisksGet'
+    {_rdgProject = pRdgProject_, _rdgDisk = pRdgDisk_, _rdgRegion = pRdgRegion_}
+
 
 -- | Project ID for this request.
 rdgProject :: Lens' RegionDisksGet Text
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Insert.hs
@@ -63,14 +63,17 @@
 -- data included in the request.
 --
 -- /See:/ 'regionDisksInsert' smart constructor.
-data RegionDisksInsert = RegionDisksInsert'
+data RegionDisksInsert =
+  RegionDisksInsert'
     { _rdiRequestId   :: !(Maybe Text)
     , _rdiSourceImage :: !(Maybe Text)
     , _rdiProject     :: !Text
     , _rdiPayload     :: !Disk
     , _rdiRegion      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'rdiRegion'
     -> RegionDisksInsert
 regionDisksInsert pRdiProject_ pRdiPayload_ pRdiRegion_ =
-    RegionDisksInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/List.hs b/gen/Network/Google/Resource/Compute/RegionDisks/List.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/List.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/List.hs
@@ -65,15 +65,18 @@
 -- region.
 --
 -- /See:/ 'regionDisksList' smart constructor.
-data RegionDisksList = RegionDisksList'
+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)
+    }
+  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:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'rdlRegion'
     -> RegionDisksList
 regionDisksList pRdlProject_ pRdlRegion_ =
-    RegionDisksList'
+  RegionDisksList'
     { _rdlOrderBy = Nothing
     , _rdlProject = pRdlProject_
     , _rdlFilter = Nothing
@@ -102,6 +105,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs b/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/Resize.hs
@@ -63,14 +63,17 @@
 -- | Resizes the specified regional persistent disk.
 --
 -- /See:/ 'regionDisksResize' smart constructor.
-data RegionDisksResize = RegionDisksResize'
+data RegionDisksResize =
+  RegionDisksResize'
     { _rdrRequestId :: !(Maybe Text)
     , _rdrProject   :: !Text
     , _rdrDisk      :: !Text
     , _rdrPayload   :: !RegionDisksResizeRequest
     , _rdrRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'rdrRegion'
     -> RegionDisksResize
 regionDisksResize pRdrProject_ pRdrDisk_ pRdrPayload_ pRdrRegion_ =
-    RegionDisksResize'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs b/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/SetLabels.hs
@@ -63,14 +63,17 @@
 -- | Sets the labels on the target regional disk.
 --
 -- /See:/ 'regionDisksSetLabels' smart constructor.
-data RegionDisksSetLabels = RegionDisksSetLabels'
+data RegionDisksSetLabels =
+  RegionDisksSetLabels'
     { _rdslRequestId :: !(Maybe Text)
     , _rdslProject   :: !Text
     , _rdslPayload   :: !RegionSetLabelsRequest
     , _rdslResource  :: !Text
     , _rdslRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'rdslRegion'
     -> RegionDisksSetLabels
 regionDisksSetLabels pRdslProject_ pRdslPayload_ pRdslResource_ pRdslRegion_ =
-    RegionDisksSetLabels'
+  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
diff --git a/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/RegionDisks/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'regionDisksTestIAMPermissions' smart constructor.
-data RegionDisksTestIAMPermissions = RegionDisksTestIAMPermissions'
+data RegionDisksTestIAMPermissions =
+  RegionDisksTestIAMPermissions'
     { _rdtipProject  :: !Text
     , _rdtipPayload  :: !TestPermissionsRequest
     , _rdtipResource :: !Text
     , _rdtipRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'rdtipRegion'
     -> RegionDisksTestIAMPermissions
 regionDisksTestIAMPermissions pRdtipProject_ pRdtipPayload_ pRdtipResource_ pRdtipRegion_ =
-    RegionDisksTestIAMPermissions'
+  RegionDisksTestIAMPermissions'
     { _rdtipProject = pRdtipProject_
     , _rdtipPayload = pRdtipPayload_
     , _rdtipResource = pRdtipResource_
     , _rdtipRegion = pRdtipRegion_
     }
+
 
 -- | Project ID for this request.
 rdtipProject :: Lens' RegionDisksTestIAMPermissions Text
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
@@ -89,14 +89,17 @@
 -- per request.
 --
 -- /See:/ 'regionInstanceGroupManagersAbandonInstances' smart constructor.
-data RegionInstanceGroupManagersAbandonInstances = RegionInstanceGroupManagersAbandonInstances'
+data RegionInstanceGroupManagersAbandonInstances =
+  RegionInstanceGroupManagersAbandonInstances'
     { _rigmaiRequestId            :: !(Maybe Text)
     , _rigmaiProject              :: !Text
     , _rigmaiInstanceGroupManager :: !Text
     , _rigmaiPayload              :: !RegionInstanceGroupManagersAbandonInstancesRequest
     , _rigmaiRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersAbandonInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,7 +120,7 @@
     -> Text -- ^ 'rigmaiRegion'
     -> RegionInstanceGroupManagersAbandonInstances
 regionInstanceGroupManagersAbandonInstances pRigmaiProject_ pRigmaiInstanceGroupManager_ pRigmaiPayload_ pRigmaiRegion_ =
-    RegionInstanceGroupManagersAbandonInstances'
+  RegionInstanceGroupManagersAbandonInstances'
     { _rigmaiRequestId = Nothing
     , _rigmaiProject = pRigmaiProject_
     , _rigmaiInstanceGroupManager = pRigmaiInstanceGroupManager_
@@ -125,6 +128,7 @@
     , _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
@@ -164,7 +168,8 @@
   = lens _rigmaiRegion (\ s a -> s{_rigmaiRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersAbandonInstances where
+           RegionInstanceGroupManagersAbandonInstances
+         where
         type Rs RegionInstanceGroupManagersAbandonInstances =
              Operation
         type Scopes
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
@@ -61,13 +61,16 @@
 -- that group.
 --
 -- /See:/ 'regionInstanceGroupManagersDelete' smart constructor.
-data RegionInstanceGroupManagersDelete = RegionInstanceGroupManagersDelete'
+data RegionInstanceGroupManagersDelete =
+  RegionInstanceGroupManagersDelete'
     { _rigmdRequestId            :: !(Maybe Text)
     , _rigmdProject              :: !Text
     , _rigmdInstanceGroupManager :: !Text
     , _rigmdRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,13 +88,14 @@
     -> Text -- ^ 'rigmdRegion'
     -> RegionInstanceGroupManagersDelete
 regionInstanceGroupManagersDelete pRigmdProject_ pRigmdInstanceGroupManager_ pRigmdRegion_ =
-    RegionInstanceGroupManagersDelete'
+  RegionInstanceGroupManagersDelete'
     { _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
@@ -124,7 +128,8 @@
   = lens _rigmdRegion (\ s a -> s{_rigmdRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersDelete where
+           RegionInstanceGroupManagersDelete
+         where
         type Rs RegionInstanceGroupManagersDelete = Operation
         type Scopes RegionInstanceGroupManagersDelete =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -87,14 +87,17 @@
 -- this method per request.
 --
 -- /See:/ 'regionInstanceGroupManagersDeleteInstances' smart constructor.
-data RegionInstanceGroupManagersDeleteInstances = RegionInstanceGroupManagersDeleteInstances'
+data RegionInstanceGroupManagersDeleteInstances =
+  RegionInstanceGroupManagersDeleteInstances'
     { _rigmdiRequestId            :: !(Maybe Text)
     , _rigmdiProject              :: !Text
     , _rigmdiInstanceGroupManager :: !Text
     , _rigmdiPayload              :: !RegionInstanceGroupManagersDeleteInstancesRequest
     , _rigmdiRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersDeleteInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -115,7 +118,7 @@
     -> Text -- ^ 'rigmdiRegion'
     -> RegionInstanceGroupManagersDeleteInstances
 regionInstanceGroupManagersDeleteInstances pRigmdiProject_ pRigmdiInstanceGroupManager_ pRigmdiPayload_ pRigmdiRegion_ =
-    RegionInstanceGroupManagersDeleteInstances'
+  RegionInstanceGroupManagersDeleteInstances'
     { _rigmdiRequestId = Nothing
     , _rigmdiProject = pRigmdiProject_
     , _rigmdiInstanceGroupManager = pRigmdiInstanceGroupManager_
@@ -123,6 +126,7 @@
     , _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
@@ -162,7 +166,8 @@
   = lens _rigmdiRegion (\ s a -> s{_rigmdiRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersDeleteInstances where
+           RegionInstanceGroupManagersDeleteInstances
+         where
         type Rs RegionInstanceGroupManagersDeleteInstances =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Get.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Get.hs
@@ -58,12 +58,15 @@
 -- | Returns all of the details about the specified managed instance group.
 --
 -- /See:/ 'regionInstanceGroupManagersGet' smart constructor.
-data RegionInstanceGroupManagersGet = RegionInstanceGroupManagersGet'
+data RegionInstanceGroupManagersGet =
+  RegionInstanceGroupManagersGet'
     { _rigmgProject              :: !Text
     , _rigmgInstanceGroupManager :: !Text
     , _rigmgRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'rigmgRegion'
     -> RegionInstanceGroupManagersGet
 regionInstanceGroupManagersGet pRigmgProject_ pRigmgInstanceGroupManager_ pRigmgRegion_ =
-    RegionInstanceGroupManagersGet'
+  RegionInstanceGroupManagersGet'
     { _rigmgProject = pRigmgProject_
     , _rigmgInstanceGroupManager = pRigmgInstanceGroupManager_
     , _rigmgRegion = pRigmgRegion_
     }
+
 
 -- | Project ID for this request.
 rigmgProject :: Lens' RegionInstanceGroupManagersGet Text
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
@@ -72,13 +72,16 @@
 -- managed instance group can contain up to 2000 instances.
 --
 -- /See:/ 'regionInstanceGroupManagersInsert' smart constructor.
-data RegionInstanceGroupManagersInsert = RegionInstanceGroupManagersInsert'
+data RegionInstanceGroupManagersInsert =
+  RegionInstanceGroupManagersInsert'
     { _rigmiRequestId :: !(Maybe Text)
     , _rigmiProject   :: !Text
     , _rigmiPayload   :: !InstanceGroupManager
     , _rigmiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -96,13 +99,14 @@
     -> Text -- ^ 'rigmiRegion'
     -> RegionInstanceGroupManagersInsert
 regionInstanceGroupManagersInsert pRigmiProject_ pRigmiPayload_ pRigmiRegion_ =
-    RegionInstanceGroupManagersInsert'
+  RegionInstanceGroupManagersInsert'
     { _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
@@ -134,7 +138,8 @@
   = lens _rigmiRegion (\ s a -> s{_rigmiRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersInsert where
+           RegionInstanceGroupManagersInsert
+         where
         type Rs RegionInstanceGroupManagersInsert = Operation
         type Scopes RegionInstanceGroupManagersInsert =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -66,15 +66,18 @@
 -- the specified region.
 --
 -- /See:/ 'regionInstanceGroupManagersList' smart constructor.
-data RegionInstanceGroupManagersList = RegionInstanceGroupManagersList'
+data RegionInstanceGroupManagersList =
+  RegionInstanceGroupManagersList'
     { _rigmlOrderBy    :: !(Maybe Text)
     , _rigmlProject    :: !Text
     , _rigmlFilter     :: !(Maybe Text)
     , _rigmlRegion     :: !Text
     , _rigmlPageToken  :: !(Maybe Text)
     , _rigmlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'rigmlRegion'
     -> RegionInstanceGroupManagersList
 regionInstanceGroupManagersList pRigmlProject_ pRigmlRegion_ =
-    RegionInstanceGroupManagersList'
+  RegionInstanceGroupManagersList'
     { _rigmlOrderBy = Nothing
     , _rigmlProject = pRigmlProject_
     , _rigmlFilter = Nothing
@@ -104,6 +107,7 @@
     , _rigmlMaxResults = 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
@@ -165,7 +169,8 @@
       . _Coerce
 
 instance GoogleRequest
-         RegionInstanceGroupManagersList where
+           RegionInstanceGroupManagersList
+         where
         type Rs RegionInstanceGroupManagersList =
              RegionInstanceGroupManagerList
         type Scopes RegionInstanceGroupManagersList =
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
@@ -73,7 +73,8 @@
 -- group has scheduled for its instances.
 --
 -- /See:/ 'regionInstanceGroupManagersListManagedInstances' smart constructor.
-data RegionInstanceGroupManagersListManagedInstances = RegionInstanceGroupManagersListManagedInstances'
+data RegionInstanceGroupManagersListManagedInstances =
+  RegionInstanceGroupManagersListManagedInstances'
     { _rigmlmiProject              :: !Text
     , _rigmlmiInstanceGroupManager :: !Text
     , _rigmlmiOrderBy              :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _rigmlmiRegion               :: !Text
     , _rigmlmiPageToken            :: !(Maybe Text)
     , _rigmlmiMaxResults           :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersListManagedInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,7 +109,7 @@
     -> Text -- ^ 'rigmlmiRegion'
     -> RegionInstanceGroupManagersListManagedInstances
 regionInstanceGroupManagersListManagedInstances pRigmlmiProject_ pRigmlmiInstanceGroupManager_ pRigmlmiRegion_ =
-    RegionInstanceGroupManagersListManagedInstances'
+  RegionInstanceGroupManagersListManagedInstances'
     { _rigmlmiProject = pRigmlmiProject_
     , _rigmlmiInstanceGroupManager = pRigmlmiInstanceGroupManager_
     , _rigmlmiOrderBy = Nothing
@@ -116,6 +119,7 @@
     , _rigmlmiMaxResults = 500
     }
 
+
 -- | Project ID for this request.
 rigmlmiProject :: Lens' RegionInstanceGroupManagersListManagedInstances Text
 rigmlmiProject
@@ -187,7 +191,8 @@
       . _Coerce
 
 instance GoogleRequest
-         RegionInstanceGroupManagersListManagedInstances where
+           RegionInstanceGroupManagersListManagedInstances
+         where
         type Rs
                RegionInstanceGroupManagersListManagedInstances
              = RegionInstanceGroupManagersListInstancesResponse
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroupManagers/Patch.hs
@@ -74,14 +74,17 @@
 -- rules.
 --
 -- /See:/ 'regionInstanceGroupManagersPatch' smart constructor.
-data RegionInstanceGroupManagersPatch = RegionInstanceGroupManagersPatch'
+data RegionInstanceGroupManagersPatch =
+  RegionInstanceGroupManagersPatch'
     { _rigmpRequestId            :: !(Maybe Text)
     , _rigmpProject              :: !Text
     , _rigmpInstanceGroupManager :: !Text
     , _rigmpPayload              :: !InstanceGroupManager
     , _rigmpRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -102,7 +105,7 @@
     -> Text -- ^ 'rigmpRegion'
     -> RegionInstanceGroupManagersPatch
 regionInstanceGroupManagersPatch pRigmpProject_ pRigmpInstanceGroupManager_ pRigmpPayload_ pRigmpRegion_ =
-    RegionInstanceGroupManagersPatch'
+  RegionInstanceGroupManagersPatch'
     { _rigmpRequestId = Nothing
     , _rigmpProject = pRigmpProject_
     , _rigmpInstanceGroupManager = pRigmpInstanceGroupManager_
@@ -110,6 +113,7 @@
     , _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
@@ -147,7 +151,8 @@
   = lens _rigmpRegion (\ s a -> s{_rigmpRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersPatch where
+           RegionInstanceGroupManagersPatch
+         where
         type Rs RegionInstanceGroupManagersPatch = Operation
         type Scopes RegionInstanceGroupManagersPatch =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -83,14 +83,17 @@
 -- of 1000 instances with this method per request.
 --
 -- /See:/ 'regionInstanceGroupManagersRecreateInstances' smart constructor.
-data RegionInstanceGroupManagersRecreateInstances = RegionInstanceGroupManagersRecreateInstances'
+data RegionInstanceGroupManagersRecreateInstances =
+  RegionInstanceGroupManagersRecreateInstances'
     { _rigmriRequestId            :: !(Maybe Text)
     , _rigmriProject              :: !Text
     , _rigmriInstanceGroupManager :: !Text
     , _rigmriPayload              :: !RegionInstanceGroupManagersRecreateRequest
     , _rigmriRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersRecreateInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,7 +114,7 @@
     -> Text -- ^ 'rigmriRegion'
     -> RegionInstanceGroupManagersRecreateInstances
 regionInstanceGroupManagersRecreateInstances pRigmriProject_ pRigmriInstanceGroupManager_ pRigmriPayload_ pRigmriRegion_ =
-    RegionInstanceGroupManagersRecreateInstances'
+  RegionInstanceGroupManagersRecreateInstances'
     { _rigmriRequestId = Nothing
     , _rigmriProject = pRigmriProject_
     , _rigmriInstanceGroupManager = pRigmriInstanceGroupManager_
@@ -119,6 +122,7 @@
     , _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
@@ -158,7 +162,8 @@
   = lens _rigmriRegion (\ s a -> s{_rigmriRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersRecreateInstances where
+           RegionInstanceGroupManagersRecreateInstances
+         where
         type Rs RegionInstanceGroupManagersRecreateInstances
              = Operation
         type Scopes
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
@@ -80,14 +80,17 @@
 -- instance is removed or deleted.
 --
 -- /See:/ 'regionInstanceGroupManagersResize' smart constructor.
-data RegionInstanceGroupManagersResize = RegionInstanceGroupManagersResize'
+data RegionInstanceGroupManagersResize =
+  RegionInstanceGroupManagersResize'
     { _rigmrRequestId            :: !(Maybe Text)
     , _rigmrProject              :: !Text
     , _rigmrSize                 :: !(Textual Int32)
     , _rigmrInstanceGroupManager :: !Text
     , _rigmrRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersResize' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -108,7 +111,7 @@
     -> Text -- ^ 'rigmrRegion'
     -> RegionInstanceGroupManagersResize
 regionInstanceGroupManagersResize pRigmrProject_ pRigmrSize_ pRigmrInstanceGroupManager_ pRigmrRegion_ =
-    RegionInstanceGroupManagersResize'
+  RegionInstanceGroupManagersResize'
     { _rigmrRequestId = Nothing
     , _rigmrProject = pRigmrProject_
     , _rigmrSize = _Coerce # pRigmrSize_
@@ -116,6 +119,7 @@
     , _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
@@ -154,7 +158,8 @@
   = lens _rigmrRegion (\ s a -> s{_rigmrRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersResize where
+           RegionInstanceGroupManagersResize
+         where
         type Rs RegionInstanceGroupManagersResize = Operation
         type Scopes RegionInstanceGroupManagersResize =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -67,14 +67,17 @@
 -- recreating instances in this group. Existing instances are not affected.
 --
 -- /See:/ 'regionInstanceGroupManagersSetInstanceTemplate' smart constructor.
-data RegionInstanceGroupManagersSetInstanceTemplate = RegionInstanceGroupManagersSetInstanceTemplate'
+data RegionInstanceGroupManagersSetInstanceTemplate =
+  RegionInstanceGroupManagersSetInstanceTemplate'
     { _rigmsitRequestId            :: !(Maybe Text)
     , _rigmsitProject              :: !Text
     , _rigmsitInstanceGroupManager :: !Text
     , _rigmsitPayload              :: !RegionInstanceGroupManagersSetTemplateRequest
     , _rigmsitRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersSetInstanceTemplate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'rigmsitRegion'
     -> RegionInstanceGroupManagersSetInstanceTemplate
 regionInstanceGroupManagersSetInstanceTemplate pRigmsitProject_ pRigmsitInstanceGroupManager_ pRigmsitPayload_ pRigmsitRegion_ =
-    RegionInstanceGroupManagersSetInstanceTemplate'
+  RegionInstanceGroupManagersSetInstanceTemplate'
     { _rigmsitRequestId = Nothing
     , _rigmsitProject = pRigmsitProject_
     , _rigmsitInstanceGroupManager = pRigmsitInstanceGroupManager_
@@ -103,6 +106,7 @@
     , _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
@@ -143,7 +147,8 @@
       (\ s a -> s{_rigmsitRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersSetInstanceTemplate where
+           RegionInstanceGroupManagersSetInstanceTemplate
+         where
         type Rs
                RegionInstanceGroupManagersSetInstanceTemplate
              = Operation
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
@@ -67,14 +67,17 @@
 -- assigned. Existing instances in the group are not affected.
 --
 -- /See:/ 'regionInstanceGroupManagersSetTargetPools' smart constructor.
-data RegionInstanceGroupManagersSetTargetPools = RegionInstanceGroupManagersSetTargetPools'
+data RegionInstanceGroupManagersSetTargetPools =
+  RegionInstanceGroupManagersSetTargetPools'
     { _rigmstpRequestId            :: !(Maybe Text)
     , _rigmstpProject              :: !Text
     , _rigmstpInstanceGroupManager :: !Text
     , _rigmstpPayload              :: !RegionInstanceGroupManagersSetTargetPoolsRequest
     , _rigmstpRegion               :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupManagersSetTargetPools' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'rigmstpRegion'
     -> RegionInstanceGroupManagersSetTargetPools
 regionInstanceGroupManagersSetTargetPools pRigmstpProject_ pRigmstpInstanceGroupManager_ pRigmstpPayload_ pRigmstpRegion_ =
-    RegionInstanceGroupManagersSetTargetPools'
+  RegionInstanceGroupManagersSetTargetPools'
     { _rigmstpRequestId = Nothing
     , _rigmstpProject = pRigmstpProject_
     , _rigmstpInstanceGroupManager = pRigmstpInstanceGroupManager_
@@ -103,6 +106,7 @@
     , _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
@@ -143,7 +147,8 @@
       (\ s a -> s{_rigmstpRegion = a})
 
 instance GoogleRequest
-         RegionInstanceGroupManagersSetTargetPools where
+           RegionInstanceGroupManagersSetTargetPools
+         where
         type Rs RegionInstanceGroupManagersSetTargetPools =
              Operation
         type Scopes RegionInstanceGroupManagersSetTargetPools
diff --git a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/Get.hs b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionInstanceGroups/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionInstanceGroups/Get.hs
@@ -57,12 +57,15 @@
 -- | Returns the specified instance group resource.
 --
 -- /See:/ 'regionInstanceGroupsGet' smart constructor.
-data RegionInstanceGroupsGet = RegionInstanceGroupsGet'
+data RegionInstanceGroupsGet =
+  RegionInstanceGroupsGet'
     { _riggProject       :: !Text
     , _riggRegion        :: !Text
     , _riggInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'riggInstanceGroup'
     -> RegionInstanceGroupsGet
 regionInstanceGroupsGet pRiggProject_ pRiggRegion_ pRiggInstanceGroup_ =
-    RegionInstanceGroupsGet'
+  RegionInstanceGroupsGet'
     { _riggProject = pRiggProject_
     , _riggRegion = pRiggRegion_
     , _riggInstanceGroup = pRiggInstanceGroup_
     }
+
 
 -- | Project ID for this request.
 riggProject :: Lens' RegionInstanceGroupsGet Text
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
@@ -66,15 +66,18 @@
 -- specified region.
 --
 -- /See:/ 'regionInstanceGroupsList' smart constructor.
-data RegionInstanceGroupsList = RegionInstanceGroupsList'
+data RegionInstanceGroupsList =
+  RegionInstanceGroupsList'
     { _riglOrderBy    :: !(Maybe Text)
     , _riglProject    :: !Text
     , _riglFilter     :: !(Maybe Text)
     , _riglRegion     :: !Text
     , _riglPageToken  :: !(Maybe Text)
     , _riglMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'riglRegion'
     -> RegionInstanceGroupsList
 regionInstanceGroupsList pRiglProject_ pRiglRegion_ =
-    RegionInstanceGroupsList'
+  RegionInstanceGroupsList'
     { _riglOrderBy = Nothing
     , _riglProject = pRiglProject_
     , _riglFilter = Nothing
@@ -103,6 +106,7 @@
     , _riglPageToken = Nothing
     , _riglMaxResults = 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
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
@@ -78,7 +78,8 @@
 -- running.
 --
 -- /See:/ 'regionInstanceGroupsListInstances'' smart constructor.
-data RegionInstanceGroupsListInstances' = RegionInstanceGroupsListInstances''
+data RegionInstanceGroupsListInstances' =
+  RegionInstanceGroupsListInstances''
     { _rigliOrderBy       :: !(Maybe Text)
     , _rigliProject       :: !Text
     , _rigliPayload       :: !RegionInstanceGroupsListInstancesRequest
@@ -87,8 +88,10 @@
     , _rigliPageToken     :: !(Maybe Text)
     , _rigliInstanceGroup :: !Text
     , _rigliMaxResults    :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -115,7 +118,7 @@
     -> Text -- ^ 'rigliInstanceGroup'
     -> RegionInstanceGroupsListInstances'
 regionInstanceGroupsListInstances' pRigliProject_ pRigliPayload_ pRigliRegion_ pRigliInstanceGroup_ =
-    RegionInstanceGroupsListInstances''
+  RegionInstanceGroupsListInstances''
     { _rigliOrderBy = Nothing
     , _rigliProject = pRigliProject_
     , _rigliPayload = pRigliPayload_
@@ -126,6 +129,7 @@
     , _rigliMaxResults = 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
@@ -199,7 +203,8 @@
       . _Coerce
 
 instance GoogleRequest
-         RegionInstanceGroupsListInstances' where
+           RegionInstanceGroupsListInstances'
+         where
         type Rs RegionInstanceGroupsListInstances' =
              RegionInstanceGroupsListInstances
         type Scopes RegionInstanceGroupsListInstances' =
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
@@ -64,14 +64,17 @@
 -- | Sets the named ports for the specified regional instance group.
 --
 -- /See:/ 'regionInstanceGroupsSetNamedPorts' smart constructor.
-data RegionInstanceGroupsSetNamedPorts = RegionInstanceGroupsSetNamedPorts'
+data RegionInstanceGroupsSetNamedPorts =
+  RegionInstanceGroupsSetNamedPorts'
     { _rigsnpRequestId     :: !(Maybe Text)
     , _rigsnpProject       :: !Text
     , _rigsnpPayload       :: !RegionInstanceGroupsSetNamedPortsRequest
     , _rigsnpRegion        :: !Text
     , _rigsnpInstanceGroup :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionInstanceGroupsSetNamedPorts' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'rigsnpInstanceGroup'
     -> RegionInstanceGroupsSetNamedPorts
 regionInstanceGroupsSetNamedPorts pRigsnpProject_ pRigsnpPayload_ pRigsnpRegion_ pRigsnpInstanceGroup_ =
-    RegionInstanceGroupsSetNamedPorts'
+  RegionInstanceGroupsSetNamedPorts'
     { _rigsnpRequestId = Nothing
     , _rigsnpProject = pRigsnpProject_
     , _rigsnpPayload = pRigsnpPayload_
@@ -100,6 +103,7 @@
     , _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
@@ -140,7 +144,8 @@
       (\ s a -> s{_rigsnpInstanceGroup = a})
 
 instance GoogleRequest
-         RegionInstanceGroupsSetNamedPorts where
+           RegionInstanceGroupsSetNamedPorts
+         where
         type Rs RegionInstanceGroupsSetNamedPorts = Operation
         type Scopes RegionInstanceGroupsSetNamedPorts =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs b/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs
--- a/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified region-specific Operations resource.
 --
 -- /See:/ 'regionOperationsDelete' smart constructor.
-data RegionOperationsDelete = RegionOperationsDelete'
+data RegionOperationsDelete =
+  RegionOperationsDelete'
     { _rodProject   :: !Text
     , _rodOperation :: !Text
     , _rodRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionOperationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'rodRegion'
     -> RegionOperationsDelete
 regionOperationsDelete pRodProject_ pRodOperation_ pRodRegion_ =
-    RegionOperationsDelete'
+  RegionOperationsDelete'
     { _rodProject = pRodProject_
     , _rodOperation = pRodOperation_
     , _rodRegion = pRodRegion_
     }
+
 
 -- | Project ID for this request.
 rodProject :: Lens' RegionOperationsDelete Text
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs b/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs
--- a/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs
@@ -57,12 +57,15 @@
 -- | Retrieves the specified region-specific Operations resource.
 --
 -- /See:/ 'regionOperationsGet' smart constructor.
-data RegionOperationsGet = RegionOperationsGet'
+data RegionOperationsGet =
+  RegionOperationsGet'
     { _rogProject   :: !Text
     , _rogOperation :: !Text
     , _rogRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'rogRegion'
     -> RegionOperationsGet
 regionOperationsGet pRogProject_ pRogOperation_ pRogRegion_ =
-    RegionOperationsGet'
+  RegionOperationsGet'
     { _rogProject = pRogProject_
     , _rogOperation = pRogOperation_
     , _rogRegion = pRogRegion_
     }
+
 
 -- | Project ID for this request.
 rogProject :: Lens' RegionOperationsGet Text
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
@@ -65,15 +65,18 @@
 -- region.
 --
 -- /See:/ 'regionOperationsList' smart constructor.
-data RegionOperationsList = RegionOperationsList'
+data RegionOperationsList =
+  RegionOperationsList'
     { _rolOrderBy    :: !(Maybe Text)
     , _rolProject    :: !Text
     , _rolFilter     :: !(Maybe Text)
     , _rolRegion     :: !Text
     , _rolPageToken  :: !(Maybe Text)
     , _rolMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'rolRegion'
     -> RegionOperationsList
 regionOperationsList pRolProject_ pRolRegion_ =
-    RegionOperationsList'
+  RegionOperationsList'
     { _rolOrderBy = Nothing
     , _rolProject = pRolProject_
     , _rolFilter = Nothing
@@ -102,6 +105,7 @@
     , _rolPageToken = Nothing
     , _rolMaxResults = 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
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
@@ -56,11 +56,14 @@
 -- by making a list() request.
 --
 -- /See:/ 'regionsGet' smart constructor.
-data RegionsGet = RegionsGet'
+data RegionsGet =
+  RegionsGet'
     { _rgProject :: !Text
     , _rgRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,8 @@
     -> Text -- ^ 'rgRegion'
     -> RegionsGet
 regionsGet pRgProject_ pRgRegion_ =
-    RegionsGet'
-    { _rgProject = pRgProject_
-    , _rgRegion = pRgRegion_
-    }
+  RegionsGet' {_rgProject = pRgProject_, _rgRegion = pRgRegion_}
+
 
 -- | Project ID for this request.
 rgProject :: Lens' RegionsGet Text
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
@@ -62,14 +62,17 @@
 -- project.
 --
 -- /See:/ 'regionsList' smart constructor.
-data RegionsList = RegionsList'
+data RegionsList =
+  RegionsList'
     { _regOrderBy    :: !(Maybe Text)
     , _regProject    :: !Text
     , _regFilter     :: !(Maybe Text)
     , _regPageToken  :: !(Maybe Text)
     , _regMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegionsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'regProject'
     -> RegionsList
 regionsList pRegProject_ =
-    RegionsList'
+  RegionsList'
     { _regOrderBy = Nothing
     , _regProject = pRegProject_
     , _regFilter = Nothing
     , _regPageToken = Nothing
     , _regMaxResults = 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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of routers.
 --
 -- /See:/ 'routersAggregatedList' smart constructor.
-data RoutersAggregatedList = RoutersAggregatedList'
+data RoutersAggregatedList =
+  RoutersAggregatedList'
     { _rOrderBy    :: !(Maybe Text)
     , _rProject    :: !Text
     , _rFilter     :: !(Maybe Text)
     , _rPageToken  :: !(Maybe Text)
     , _rMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutersAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'rProject'
     -> RoutersAggregatedList
 routersAggregatedList pRProject_ =
-    RoutersAggregatedList'
+  RoutersAggregatedList'
     { _rOrderBy = Nothing
     , _rProject = pRProject_
     , _rFilter = Nothing
     , _rPageToken = Nothing
     , _rMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified Router resource.
 --
 -- /See:/ 'routersDelete' smart constructor.
-data RoutersDelete = RoutersDelete'
+data RoutersDelete =
+  RoutersDelete'
     { _rouoRequestId :: !(Maybe Text)
     , _rouoProject   :: !Text
     , _rouoRouter    :: !Text
     , _rouoRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'rouoRegion'
     -> RoutersDelete
 routersDelete pRouoProject_ pRouoRouter_ pRouoRegion_ =
-    RoutersDelete'
+  RoutersDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- by making a list() request.
 --
 -- /See:/ 'routersGet' smart constructor.
-data RoutersGet = RoutersGet'
+data RoutersGet =
+  RoutersGet'
     { _rggProject :: !Text
     , _rggRouter  :: !Text
     , _rggRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'rggRegion'
     -> RoutersGet
 routersGet pRggProject_ pRggRouter_ pRggRegion_ =
-    RoutersGet'
+  RoutersGet'
     { _rggProject = pRggProject_
     , _rggRouter = pRggRouter_
     , _rggRegion = pRggRegion_
     }
+
 
 -- | Project ID for this request.
 rggProject :: Lens' RoutersGet Text
diff --git a/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs b/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs
--- a/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/GetNATMAppingInfo.hs
@@ -67,7 +67,8 @@
 -- | Retrieves runtime Nat mapping information of VM endpoints.
 --
 -- /See:/ 'routersGetNATMAppingInfo' smart constructor.
-data RoutersGetNATMAppingInfo = RoutersGetNATMAppingInfo'
+data RoutersGetNATMAppingInfo =
+  RoutersGetNATMAppingInfo'
     { _rgnatmaiOrderBy    :: !(Maybe Text)
     , _rgnatmaiProject    :: !Text
     , _rgnatmaiRouter     :: !Text
@@ -75,8 +76,10 @@
     , _rgnatmaiRegion     :: !Text
     , _rgnatmaiPageToken  :: !(Maybe Text)
     , _rgnatmaiMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -100,7 +103,7 @@
     -> Text -- ^ 'rgnatmaiRegion'
     -> RoutersGetNATMAppingInfo
 routersGetNATMAppingInfo pRgnatmaiProject_ pRgnatmaiRouter_ pRgnatmaiRegion_ =
-    RoutersGetNATMAppingInfo'
+  RoutersGetNATMAppingInfo'
     { _rgnatmaiOrderBy = Nothing
     , _rgnatmaiProject = pRgnatmaiProject_
     , _rgnatmaiRouter = pRgnatmaiRouter_
@@ -109,6 +112,7 @@
     , _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
diff --git a/gen/Network/Google/Resource/Compute/Routers/GetRouterStatus.hs b/gen/Network/Google/Resource/Compute/Routers/GetRouterStatus.hs
--- a/gen/Network/Google/Resource/Compute/Routers/GetRouterStatus.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/GetRouterStatus.hs
@@ -59,12 +59,15 @@
 -- | Retrieves runtime information of the specified router.
 --
 -- /See:/ 'routersGetRouterStatus' smart constructor.
-data RoutersGetRouterStatus = RoutersGetRouterStatus'
+data RoutersGetRouterStatus =
+  RoutersGetRouterStatus'
     { _rgrsProject :: !Text
     , _rgrsRouter  :: !Text
     , _rgrsRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutersGetRouterStatus' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'rgrsRegion'
     -> RoutersGetRouterStatus
 routersGetRouterStatus pRgrsProject_ pRgrsRouter_ pRgrsRegion_ =
-    RoutersGetRouterStatus'
+  RoutersGetRouterStatus'
     { _rgrsProject = pRgrsProject_
     , _rgrsRouter = pRgrsRouter_
     , _rgrsRegion = pRgrsRegion_
     }
+
 
 -- | Project ID for this request.
 rgrsProject :: Lens' RoutersGetRouterStatus Text
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
@@ -61,13 +61,16 @@
 -- data included in the request.
 --
 -- /See:/ 'routersInsert' smart constructor.
-data RoutersInsert = RoutersInsert'
+data RoutersInsert =
+  RoutersInsert'
     { _riRequestId :: !(Maybe Text)
     , _riProject   :: !Text
     , _riPayload   :: !Router
     , _riRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'riRegion'
     -> RoutersInsert
 routersInsert pRiProject_ pRiPayload_ pRiRegion_ =
-    RoutersInsert'
+  RoutersInsert'
     { _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
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
@@ -63,15 +63,18 @@
 -- | Retrieves a list of Router resources available to the specified project.
 --
 -- /See:/ 'routersList' smart constructor.
-data RoutersList = RoutersList'
+data RoutersList =
+  RoutersList'
     { _rlOrderBy    :: !(Maybe Text)
     , _rlProject    :: !Text
     , _rlFilter     :: !(Maybe Text)
     , _rlRegion     :: !Text
     , _rlPageToken  :: !(Maybe Text)
     , _rlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     -> Text -- ^ 'rlRegion'
     -> RoutersList
 routersList pRlProject_ pRlRegion_ =
-    RoutersList'
+  RoutersList'
     { _rlOrderBy = Nothing
     , _rlProject = pRlProject_
     , _rlFilter = Nothing
@@ -100,6 +103,7 @@
     , _rlPageToken = Nothing
     , _rlMaxResults = 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
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
@@ -65,14 +65,17 @@
 -- format and processing rules.
 --
 -- /See:/ 'routersPatch' smart constructor.
-data RoutersPatch = RoutersPatch'
+data RoutersPatch =
+  RoutersPatch'
     { _rpRequestId :: !(Maybe Text)
     , _rpProject   :: !Text
     , _rpRouter    :: !Text
     , _rpPayload   :: !Router
     , _rpRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -93,13 +96,14 @@
     -> Text -- ^ 'rpRegion'
     -> RoutersPatch
 routersPatch pRpProject_ pRpRouter_ pRpPayload_ pRpRegion_ =
-    RoutersPatch'
+  RoutersPatch'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/Routers/Preview.hs b/gen/Network/Google/Resource/Compute/Routers/Preview.hs
--- a/gen/Network/Google/Resource/Compute/Routers/Preview.hs
+++ b/gen/Network/Google/Resource/Compute/Routers/Preview.hs
@@ -63,13 +63,16 @@
 -- operations. Calling this method does NOT create or update the router.
 --
 -- /See:/ 'routersPreview' smart constructor.
-data RoutersPreview = RoutersPreview'
+data RoutersPreview =
+  RoutersPreview'
     { _rppProject :: !Text
     , _rppRouter  :: !Text
     , _rppPayload :: !Router
     , _rppRegion  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutersPreview' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'rppRegion'
     -> RoutersPreview
 routersPreview pRppProject_ pRppRouter_ pRppPayload_ pRppRegion_ =
-    RoutersPreview'
+  RoutersPreview'
     { _rppProject = pRppProject_
     , _rppRouter = pRppRouter_
     , _rppPayload = pRppPayload_
     , _rppRegion = pRppRegion_
     }
+
 
 -- | Project ID for this request.
 rppProject :: Lens' RoutersPreview Text
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
@@ -63,14 +63,17 @@
 -- request.
 --
 -- /See:/ 'routersUpdate' smart constructor.
-data RoutersUpdate = RoutersUpdate'
+data RoutersUpdate =
+  RoutersUpdate'
     { _ruRequestId :: !(Maybe Text)
     , _ruProject   :: !Text
     , _ruRouter    :: !Text
     , _ruPayload   :: !Router
     , _ruRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'ruRegion'
     -> RoutersUpdate
 routersUpdate pRuProject_ pRuRouter_ pRuPayload_ pRuRegion_ =
-    RoutersUpdate'
+  RoutersUpdate'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified Route resource.
 --
 -- /See:/ 'routesDelete' smart constructor.
-data RoutesDelete = RoutesDelete'
+data RoutesDelete =
+  RoutesDelete'
     { _rdRequestId :: !(Maybe Text)
     , _rdProject   :: !Text
     , _rdRoute     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,9 @@
     -> Text -- ^ 'rdRoute'
     -> RoutesDelete
 routesDelete pRdProject_ pRdRoute_ =
-    RoutesDelete'
-    { _rdRequestId = Nothing
-    , _rdProject = pRdProject_
-    , _rdRoute = pRdRoute_
-    }
+  RoutesDelete'
+    {_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
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
@@ -57,11 +57,14 @@
 -- making a list() request.
 --
 -- /See:/ 'routesGet' smart constructor.
-data RoutesGet = RoutesGet'
+data RoutesGet =
+  RoutesGet'
     { _rrProject :: !Text
     , _rrRoute   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'rrRoute'
     -> RoutesGet
 routesGet pRrProject_ pRrRoute_ =
-    RoutesGet'
-    { _rrProject = pRrProject_
-    , _rrRoute = pRrRoute_
-    }
+  RoutesGet' {_rrProject = pRrProject_, _rrRoute = pRrRoute_}
+
 
 -- | Project ID for this request.
 rrProject :: Lens' RoutesGet Text
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
@@ -59,12 +59,15 @@
 -- included in the request.
 --
 -- /See:/ 'routesInsert' smart constructor.
-data RoutesInsert = RoutesInsert'
+data RoutesInsert =
+  RoutesInsert'
     { _rouRequestId :: !(Maybe Text)
     , _rouProject   :: !Text
     , _rouPayload   :: !Route
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> Route -- ^ 'rouPayload'
     -> RoutesInsert
 routesInsert pRouProject_ pRouPayload_ =
-    RoutesInsert'
+  RoutesInsert'
     { _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
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
@@ -63,14 +63,17 @@
 -- project.
 --
 -- /See:/ 'routesList' smart constructor.
-data RoutesList = RoutesList'
+data RoutesList =
+  RoutesList'
     { _rllOrderBy    :: !(Maybe Text)
     , _rllProject    :: !Text
     , _rllFilter     :: !(Maybe Text)
     , _rllPageToken  :: !(Maybe Text)
     , _rllMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoutesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'rllProject'
     -> RoutesList
 routesList pRllProject_ =
-    RoutesList'
+  RoutesList'
     { _rllOrderBy = Nothing
     , _rllProject = pRllProject_
     , _rllFilter = Nothing
     , _rllPageToken = Nothing
     , _rllMaxResults = 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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified SslCertificate resource.
 --
 -- /See:/ 'sslCertificatesDelete' smart constructor.
-data SSLCertificatesDelete = SSLCertificatesDelete'
+data SSLCertificatesDelete =
+  SSLCertificatesDelete'
     { _scdRequestId      :: !(Maybe Text)
     , _scdProject        :: !Text
     , _scdSSLCertificate :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SSLCertificatesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'scdSSLCertificate'
     -> SSLCertificatesDelete
 sslCertificatesDelete pScdProject_ pScdSSLCertificate_ =
-    SSLCertificatesDelete'
+  SSLCertificatesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- SSL certificates by making a list() request.
 --
 -- /See:/ 'sslCertificatesGet' smart constructor.
-data SSLCertificatesGet = SSLCertificatesGet'
+data SSLCertificatesGet =
+  SSLCertificatesGet'
     { _scgProject        :: !Text
     , _scgSSLCertificate :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SSLCertificatesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'scgSSLCertificate'
     -> SSLCertificatesGet
 sslCertificatesGet pScgProject_ pScgSSLCertificate_ =
-    SSLCertificatesGet'
-    { _scgProject = pScgProject_
-    , _scgSSLCertificate = pScgSSLCertificate_
-    }
+  SSLCertificatesGet'
+    {_scgProject = pScgProject_, _scgSSLCertificate = pScgSSLCertificate_}
+
 
 -- | Project ID for this request.
 scgProject :: Lens' SSLCertificatesGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'sslCertificatesInsert' smart constructor.
-data SSLCertificatesInsert = SSLCertificatesInsert'
+data SSLCertificatesInsert =
+  SSLCertificatesInsert'
     { _sciRequestId :: !(Maybe Text)
     , _sciProject   :: !Text
     , _sciPayload   :: !SSLCertificate
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> SSLCertificate -- ^ 'sciPayload'
     -> SSLCertificatesInsert
 sslCertificatesInsert pSciProject_ pSciPayload_ =
-    SSLCertificatesInsert'
+  SSLCertificatesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'sslCertificatesList' smart constructor.
-data SSLCertificatesList = SSLCertificatesList'
+data SSLCertificatesList =
+  SSLCertificatesList'
     { _sclOrderBy    :: !(Maybe Text)
     , _sclProject    :: !Text
     , _sclFilter     :: !(Maybe Text)
     , _sclPageToken  :: !(Maybe Text)
     , _sclMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SSLCertificatesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'sclProject'
     -> SSLCertificatesList
 sslCertificatesList pSclProject_ =
-    SSLCertificatesList'
+  SSLCertificatesList'
     { _sclOrderBy = Nothing
     , _sclProject = pSclProject_
     , _sclFilter = Nothing
     , _sclPageToken = Nothing
     , _sclMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Delete.hs
@@ -61,12 +61,15 @@
 -- resources.
 --
 -- /See:/ 'sslPoliciesDelete' smart constructor.
-data SSLPoliciesDelete = SSLPoliciesDelete'
+data SSLPoliciesDelete =
+  SSLPoliciesDelete'
     { _spdSSLPolicy :: !Text
     , _spdRequestId :: !(Maybe Text)
     , _spdProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'spdProject'
     -> SSLPoliciesDelete
 sslPoliciesDelete pSpdSSLPolicy_ pSpdProject_ =
-    SSLPoliciesDelete'
+  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.
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Get.hs
@@ -55,11 +55,14 @@
 -- | Lists all of the ordered rules present in a single specified policy.
 --
 -- /See:/ 'sslPoliciesGet' smart constructor.
-data SSLPoliciesGet = SSLPoliciesGet'
+data SSLPoliciesGet =
+  SSLPoliciesGet'
     { _spgSSLPolicy :: !Text
     , _spgProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'spgProject'
     -> SSLPoliciesGet
 sslPoliciesGet pSpgSSLPolicy_ pSpgProject_ =
-    SSLPoliciesGet'
-    { _spgSSLPolicy = pSpgSSLPolicy_
-    , _spgProject = 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.
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Insert.hs
@@ -59,12 +59,15 @@
 -- policies by making a list() request.
 --
 -- /See:/ 'sslPoliciesInsert' smart constructor.
-data SSLPoliciesInsert = SSLPoliciesInsert'
+data SSLPoliciesInsert =
+  SSLPoliciesInsert'
     { _sslpiRequestId :: !(Maybe Text)
     , _sslpiProject   :: !Text
     , _sslpiPayload   :: !SSLPolicy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> SSLPolicy -- ^ 'sslpiPayload'
     -> SSLPoliciesInsert
 sslPoliciesInsert pSslpiProject_ pSslpiPayload_ =
-    SSLPoliciesInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/List.hs
@@ -64,14 +64,17 @@
 -- project.
 --
 -- /See:/ 'sslPoliciesList'' smart constructor.
-data SSLPoliciesList' = SSLPoliciesList''
+data SSLPoliciesList' =
+  SSLPoliciesList''
     { _sslplOrderBy    :: !(Maybe Text)
     , _sslplProject    :: !Text
     , _sslplFilter     :: !(Maybe Text)
     , _sslplPageToken  :: !(Maybe Text)
     , _sslplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'sslplProject'
     -> SSLPoliciesList'
 sslPoliciesList' pSslplProject_ =
-    SSLPoliciesList''
+  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
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/ListAvailableFeatures.hs
@@ -66,14 +66,17 @@
 -- custom profile.
 --
 -- /See:/ 'sslPoliciesListAvailableFeatures' smart constructor.
-data SSLPoliciesListAvailableFeatures = SSLPoliciesListAvailableFeatures'
+data SSLPoliciesListAvailableFeatures =
+  SSLPoliciesListAvailableFeatures'
     { _splafOrderBy    :: !(Maybe Text)
     , _splafProject    :: !Text
     , _splafFilter     :: !(Maybe Text)
     , _splafPageToken  :: !(Maybe Text)
     , _splafMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,7 +94,7 @@
     :: Text -- ^ 'splafProject'
     -> SSLPoliciesListAvailableFeatures
 sslPoliciesListAvailableFeatures pSplafProject_ =
-    SSLPoliciesListAvailableFeatures'
+  SSLPoliciesListAvailableFeatures'
     { _splafOrderBy = Nothing
     , _splafProject = pSplafProject_
     , _splafFilter = Nothing
@@ -99,6 +102,7 @@
     , _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
@@ -155,7 +159,8 @@
       . _Coerce
 
 instance GoogleRequest
-         SSLPoliciesListAvailableFeatures where
+           SSLPoliciesListAvailableFeatures
+         where
         type Rs SSLPoliciesListAvailableFeatures =
              SSLPoliciesListAvailableFeaturesResponse
         type Scopes SSLPoliciesListAvailableFeatures =
diff --git a/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs b/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs
--- a/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/SSLPolicies/Patch.hs
@@ -59,13 +59,16 @@
 -- | Patches the specified SSL policy with the data included in the request.
 --
 -- /See:/ 'sslPoliciesPatch' smart constructor.
-data SSLPoliciesPatch = SSLPoliciesPatch'
+data SSLPoliciesPatch =
+  SSLPoliciesPatch'
     { _sppSSLPolicy :: !Text
     , _sppRequestId :: !(Maybe Text)
     , _sppProject   :: !Text
     , _sppPayload   :: !SSLPolicy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -83,12 +86,13 @@
     -> SSLPolicy -- ^ 'sppPayload'
     -> SSLPoliciesPatch
 sslPoliciesPatch pSppSSLPolicy_ pSppProject_ pSppPayload_ =
-    SSLPoliciesPatch'
+  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.
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/AddRule.hs
@@ -59,12 +59,15 @@
 -- | Inserts a rule into a security policy.
 --
 -- /See:/ 'securityPoliciesAddRule' smart constructor.
-data SecurityPoliciesAddRule = SecurityPoliciesAddRule'
+data SecurityPoliciesAddRule =
+  SecurityPoliciesAddRule'
     { _sparProject        :: !Text
     , _sparPayload        :: !SecurityPolicyRule
     , _sparSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'sparSecurityPolicy'
     -> SecurityPoliciesAddRule
 securityPoliciesAddRule pSparProject_ pSparPayload_ pSparSecurityPolicy_ =
-    SecurityPoliciesAddRule'
+  SecurityPoliciesAddRule'
     { _sparProject = pSparProject_
     , _sparPayload = pSparPayload_
     , _sparSecurityPolicy = pSparSecurityPolicy_
     }
+
 
 -- | Project ID for this request.
 sparProject :: Lens' SecurityPoliciesAddRule Text
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified policy.
 --
 -- /See:/ 'securityPoliciesDelete' smart constructor.
-data SecurityPoliciesDelete = SecurityPoliciesDelete'
+data SecurityPoliciesDelete =
+  SecurityPoliciesDelete'
     { _spdpRequestId      :: !(Maybe Text)
     , _spdpProject        :: !Text
     , _spdpSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'spdpSecurityPolicy'
     -> SecurityPoliciesDelete
 securityPoliciesDelete pSpdpProject_ pSpdpSecurityPolicy_ =
-    SecurityPoliciesDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Get.hs
@@ -56,11 +56,14 @@
 -- | List all of the ordered rules present in a single specified policy.
 --
 -- /See:/ 'securityPoliciesGet' smart constructor.
-data SecurityPoliciesGet = SecurityPoliciesGet'
+data SecurityPoliciesGet =
+  SecurityPoliciesGet'
     { _secProject        :: !Text
     , _secSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'secSecurityPolicy'
     -> SecurityPoliciesGet
 securityPoliciesGet pSecProject_ pSecSecurityPolicy_ =
-    SecurityPoliciesGet'
-    { _secProject = pSecProject_
-    , _secSecurityPolicy = pSecSecurityPolicy_
-    }
+  SecurityPoliciesGet'
+    {_secProject = pSecProject_, _secSecurityPolicy = pSecSecurityPolicy_}
+
 
 -- | Project ID for this request.
 secProject :: Lens' SecurityPoliciesGet Text
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/GetRule.hs
@@ -59,12 +59,15 @@
 -- | Gets a rule at the specified priority.
 --
 -- /See:/ 'securityPoliciesGetRule' smart constructor.
-data SecurityPoliciesGetRule = SecurityPoliciesGetRule'
+data SecurityPoliciesGetRule =
+  SecurityPoliciesGetRule'
     { _spgrPriority       :: !(Maybe (Textual Int32))
     , _spgrProject        :: !Text
     , _spgrSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'spgrSecurityPolicy'
     -> SecurityPoliciesGetRule
 securityPoliciesGetRule pSpgrProject_ pSpgrSecurityPolicy_ =
-    SecurityPoliciesGetRule'
+  SecurityPoliciesGetRule'
     { _spgrPriority = Nothing
     , _spgrProject = pSpgrProject_
     , _spgrSecurityPolicy = pSpgrSecurityPolicy_
     }
+
 
 -- | The priority of the rule to get from the security policy.
 spgrPriority :: Lens' SecurityPoliciesGetRule (Maybe Int32)
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Insert.hs
@@ -60,12 +60,15 @@
 -- the request.
 --
 -- /See:/ 'securityPoliciesInsert' smart constructor.
-data SecurityPoliciesInsert = SecurityPoliciesInsert'
+data SecurityPoliciesInsert =
+  SecurityPoliciesInsert'
     { _spiRequestId :: !(Maybe Text)
     , _spiProject   :: !Text
     , _spiPayload   :: !SecurityPolicy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> SecurityPolicy -- ^ 'spiPayload'
     -> SecurityPoliciesInsert
 securityPoliciesInsert pSpiProject_ pSpiPayload_ =
-    SecurityPoliciesInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/List.hs
@@ -64,14 +64,17 @@
 -- project.
 --
 -- /See:/ 'securityPoliciesList' smart constructor.
-data SecurityPoliciesList = SecurityPoliciesList'
+data SecurityPoliciesList =
+  SecurityPoliciesList'
     { _splOrderBy    :: !(Maybe Text)
     , _splProject    :: !Text
     , _splFilter     :: !(Maybe Text)
     , _splPageToken  :: !(Maybe Text)
     , _splMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'splProject'
     -> SecurityPoliciesList
 securityPoliciesList pSplProject_ =
-    SecurityPoliciesList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/Patch.hs
@@ -60,13 +60,16 @@
 -- | Patches the specified policy with the data included in the request.
 --
 -- /See:/ 'securityPoliciesPatch' smart constructor.
-data SecurityPoliciesPatch = SecurityPoliciesPatch'
+data SecurityPoliciesPatch =
+  SecurityPoliciesPatch'
     { _sRequestId      :: !(Maybe Text)
     , _sProject        :: !Text
     , _sPayload        :: !SecurityPolicy
     , _sSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -84,12 +87,13 @@
     -> Text -- ^ 'sSecurityPolicy'
     -> SecurityPoliciesPatch
 securityPoliciesPatch pSProject_ pSPayload_ pSSecurityPolicy_ =
-    SecurityPoliciesPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/PatchRule.hs
@@ -61,13 +61,16 @@
 -- | Patches a rule at the specified priority.
 --
 -- /See:/ 'securityPoliciesPatchRule' smart constructor.
-data SecurityPoliciesPatchRule = SecurityPoliciesPatchRule'
+data SecurityPoliciesPatchRule =
+  SecurityPoliciesPatchRule'
     { _spprPriority       :: !(Maybe (Textual Int32))
     , _spprProject        :: !Text
     , _spprPayload        :: !SecurityPolicyRule
     , _spprSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'spprSecurityPolicy'
     -> SecurityPoliciesPatchRule
 securityPoliciesPatchRule pSpprProject_ pSpprPayload_ pSpprSecurityPolicy_ =
-    SecurityPoliciesPatchRule'
+  SecurityPoliciesPatchRule'
     { _spprPriority = Nothing
     , _spprProject = pSpprProject_
     , _spprPayload = pSpprPayload_
     , _spprSecurityPolicy = pSpprSecurityPolicy_
     }
+
 
 -- | The priority of the rule to patch.
 spprPriority :: Lens' SecurityPoliciesPatchRule (Maybe Int32)
diff --git a/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs b/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs
--- a/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs
+++ b/gen/Network/Google/Resource/Compute/SecurityPolicies/RemoveRule.hs
@@ -58,12 +58,15 @@
 -- | Deletes a rule at the specified priority.
 --
 -- /See:/ 'securityPoliciesRemoveRule' smart constructor.
-data SecurityPoliciesRemoveRule = SecurityPoliciesRemoveRule'
+data SecurityPoliciesRemoveRule =
+  SecurityPoliciesRemoveRule'
     { _sprrPriority       :: !(Maybe (Textual Int32))
     , _sprrProject        :: !Text
     , _sprrSecurityPolicy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'sprrSecurityPolicy'
     -> SecurityPoliciesRemoveRule
 securityPoliciesRemoveRule pSprrProject_ pSprrSecurityPolicy_ =
-    SecurityPoliciesRemoveRule'
+  SecurityPoliciesRemoveRule'
     { _sprrPriority = Nothing
     , _sprrProject = pSprrProject_
     , _sprrSecurityPolicy = pSprrSecurityPolicy_
     }
+
 
 -- | The priority of the rule to remove from the security policy.
 sprrPriority :: Lens' SecurityPoliciesRemoveRule (Maybe Int32)
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
@@ -65,12 +65,15 @@
 -- corresponding snapshot. For more information, see Deleting snapshots.
 --
 -- /See:/ 'snapshotsDelete' smart constructor.
-data SnapshotsDelete = SnapshotsDelete'
+data SnapshotsDelete =
+  SnapshotsDelete'
     { _sddRequestId :: !(Maybe Text)
     , _sddSnapshot  :: !Text
     , _sddProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,11 +88,12 @@
     -> Text -- ^ 'sddProject'
     -> SnapshotsDelete
 snapshotsDelete pSddSnapshot_ pSddProject_ =
-    SnapshotsDelete'
+  SnapshotsDelete'
     { _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
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
@@ -57,11 +57,14 @@
 -- snapshots by making a list() request.
 --
 -- /See:/ 'snapshotsGet' smart constructor.
-data SnapshotsGet = SnapshotsGet'
+data SnapshotsGet =
+  SnapshotsGet'
     { _sggSnapshot :: !Text
     , _sggProject  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SnapshotsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'sggProject'
     -> SnapshotsGet
 snapshotsGet pSggSnapshot_ pSggProject_ =
-    SnapshotsGet'
-    { _sggSnapshot = pSggSnapshot_
-    , _sggProject = pSggProject_
-    }
+  SnapshotsGet' {_sggSnapshot = pSggSnapshot_, _sggProject = pSggProject_}
+
 
 -- | Name of the Snapshot resource to return.
 sggSnapshot :: Lens' SnapshotsGet Text
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/GetIAMPolicy.hs
@@ -58,11 +58,14 @@
 -- policy or resource exists.
 --
 -- /See:/ 'snapshotsGetIAMPolicy' smart constructor.
-data SnapshotsGetIAMPolicy = SnapshotsGetIAMPolicy'
+data SnapshotsGetIAMPolicy =
+  SnapshotsGetIAMPolicy'
     { _sgiampProject  :: !Text
     , _sgiampResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'sgiampResource'
     -> SnapshotsGetIAMPolicy
 snapshotsGetIAMPolicy pSgiampProject_ pSgiampResource_ =
-    SnapshotsGetIAMPolicy'
-    { _sgiampProject = pSgiampProject_
-    , _sgiampResource = pSgiampResource_
-    }
+  SnapshotsGetIAMPolicy'
+    {_sgiampProject = pSgiampProject_, _sgiampResource = pSgiampResource_}
+
 
 -- | Project ID for this request.
 sgiampProject :: Lens' SnapshotsGetIAMPolicy Text
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
@@ -63,14 +63,17 @@
 -- project.
 --
 -- /See:/ 'snapshotsList' smart constructor.
-data SnapshotsList = SnapshotsList'
+data SnapshotsList =
+  SnapshotsList'
     { _snaOrderBy    :: !(Maybe Text)
     , _snaProject    :: !Text
     , _snaFilter     :: !(Maybe Text)
     , _snaPageToken  :: !(Maybe Text)
     , _snaMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'snaProject'
     -> SnapshotsList
 snapshotsList pSnaProject_ =
-    SnapshotsList'
+  SnapshotsList'
     { _snaOrderBy = Nothing
     , _snaProject = pSnaProject_
     , _snaFilter = Nothing
     , _snaPageToken = Nothing
     , _snaMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/SetIAMPolicy.hs
@@ -61,12 +61,15 @@
 -- existing policy.
 --
 -- /See:/ 'snapshotsSetIAMPolicy' smart constructor.
-data SnapshotsSetIAMPolicy = SnapshotsSetIAMPolicy'
+data SnapshotsSetIAMPolicy =
+  SnapshotsSetIAMPolicy'
     { _ssipProject  :: !Text
     , _ssipPayload  :: !GlobalSetPolicyRequest
     , _ssipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'ssipResource'
     -> SnapshotsSetIAMPolicy
 snapshotsSetIAMPolicy pSsipProject_ pSsipPayload_ pSsipResource_ =
-    SnapshotsSetIAMPolicy'
+  SnapshotsSetIAMPolicy'
     { _ssipProject = pSsipProject_
     , _ssipPayload = pSsipPayload_
     , _ssipResource = pSsipResource_
     }
+
 
 -- | Project ID for this request.
 ssipProject :: Lens' SnapshotsSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs b/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/SetLabels.hs
@@ -61,12 +61,15 @@
 -- Labeling Resources documentation.
 --
 -- /See:/ 'snapshotsSetLabels' smart constructor.
-data SnapshotsSetLabels = SnapshotsSetLabels'
+data SnapshotsSetLabels =
+  SnapshotsSetLabels'
     { _sslProject  :: !Text
     , _sslPayload  :: !GlobalSetLabelsRequest
     , _sslResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -82,11 +85,12 @@
     -> Text -- ^ 'sslResource'
     -> SnapshotsSetLabels
 snapshotsSetLabels pSslProject_ pSslPayload_ pSslResource_ =
-    SnapshotsSetLabels'
+  SnapshotsSetLabels'
     { _sslProject = pSslProject_
     , _sslPayload = pSslPayload_
     , _sslResource = pSslResource_
     }
+
 
 -- | Project ID for this request.
 sslProject :: Lens' SnapshotsSetLabels Text
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Snapshots/TestIAMPermissions.hs
@@ -59,12 +59,15 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'snapshotsTestIAMPermissions' smart constructor.
-data SnapshotsTestIAMPermissions = SnapshotsTestIAMPermissions'
+data SnapshotsTestIAMPermissions =
+  SnapshotsTestIAMPermissions'
     { _stipProject  :: !Text
     , _stipPayload  :: !TestPermissionsRequest
     , _stipResource :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'stipResource'
     -> SnapshotsTestIAMPermissions
 snapshotsTestIAMPermissions pStipProject_ pStipPayload_ pStipResource_ =
-    SnapshotsTestIAMPermissions'
+  SnapshotsTestIAMPermissions'
     { _stipProject = pStipProject_
     , _stipPayload = pStipPayload_
     , _stipResource = pStipResource_
     }
+
 
 -- | Project ID for this request.
 stipProject :: Lens' SnapshotsTestIAMPermissions Text
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of subnetworks.
 --
 -- /See:/ 'subnetworksAggregatedList' smart constructor.
-data SubnetworksAggregatedList = SubnetworksAggregatedList'
+data SubnetworksAggregatedList =
+  SubnetworksAggregatedList'
     { _salOrderBy    :: !(Maybe Text)
     , _salProject    :: !Text
     , _salFilter     :: !(Maybe Text)
     , _salPageToken  :: !(Maybe Text)
     , _salMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SubnetworksAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'salProject'
     -> SubnetworksAggregatedList
 subnetworksAggregatedList pSalProject_ =
-    SubnetworksAggregatedList'
+  SubnetworksAggregatedList'
     { _salOrderBy = Nothing
     , _salProject = pSalProject_
     , _salFilter = Nothing
     , _salPageToken = Nothing
     , _salMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified subnetwork.
 --
 -- /See:/ 'subnetworksDelete' smart constructor.
-data SubnetworksDelete = SubnetworksDelete'
+data SubnetworksDelete =
+  SubnetworksDelete'
     { _sdRequestId  :: !(Maybe Text)
     , _sdProject    :: !Text
     , _sdSubnetwork :: !Text
     , _sdRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SubnetworksDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'sdRegion'
     -> SubnetworksDelete
 subnetworksDelete pSdProject_ pSdSubnetwork_ pSdRegion_ =
-    SubnetworksDelete'
+  SubnetworksDelete'
     { _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
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
@@ -63,14 +63,17 @@
 -- | Expands the IP CIDR range of the subnetwork to a specified value.
 --
 -- /See:/ 'subnetworksExpandIPCIdRRange' smart constructor.
-data SubnetworksExpandIPCIdRRange = SubnetworksExpandIPCIdRRange'
+data SubnetworksExpandIPCIdRRange =
+  SubnetworksExpandIPCIdRRange'
     { _seicirrRequestId  :: !(Maybe Text)
     , _seicirrProject    :: !Text
     , _seicirrPayload    :: !SubnetworksExpandIPCIdRRangeRequest
     , _seicirrSubnetwork :: !Text
     , _seicirrRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SubnetworksExpandIPCIdRRange' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'seicirrRegion'
     -> SubnetworksExpandIPCIdRRange
 subnetworksExpandIPCIdRRange pSeicirrProject_ pSeicirrPayload_ pSeicirrSubnetwork_ pSeicirrRegion_ =
-    SubnetworksExpandIPCIdRRange'
+  SubnetworksExpandIPCIdRRange'
     { _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
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
@@ -59,12 +59,15 @@
 -- list() request.
 --
 -- /See:/ 'subnetworksGet' smart constructor.
-data SubnetworksGet = SubnetworksGet'
+data SubnetworksGet =
+  SubnetworksGet'
     { _sgProject    :: !Text
     , _sgSubnetwork :: !Text
     , _sgRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SubnetworksGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'sgRegion'
     -> SubnetworksGet
 subnetworksGet pSgProject_ pSgSubnetwork_ pSgRegion_ =
-    SubnetworksGet'
+  SubnetworksGet'
     { _sgProject = pSgProject_
     , _sgSubnetwork = pSgSubnetwork_
     , _sgRegion = pSgRegion_
     }
+
 
 -- | Project ID for this request.
 sgProject :: Lens' SubnetworksGet Text
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/GetIAMPolicy.hs
@@ -60,12 +60,15 @@
 -- policy or resource exists.
 --
 -- /See:/ 'subnetworksGetIAMPolicy' smart constructor.
-data SubnetworksGetIAMPolicy = SubnetworksGetIAMPolicy'
+data SubnetworksGetIAMPolicy =
+  SubnetworksGetIAMPolicy'
     { _sgipProject  :: !Text
     , _sgipResource :: !Text
     , _sgipRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'sgipRegion'
     -> SubnetworksGetIAMPolicy
 subnetworksGetIAMPolicy pSgipProject_ pSgipResource_ pSgipRegion_ =
-    SubnetworksGetIAMPolicy'
+  SubnetworksGetIAMPolicy'
     { _sgipProject = pSgipProject_
     , _sgipResource = pSgipResource_
     , _sgipRegion = pSgipRegion_
     }
+
 
 -- | Project ID for this request.
 sgipProject :: Lens' SubnetworksGetIAMPolicy Text
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
@@ -61,13 +61,16 @@
 -- the request.
 --
 -- /See:/ 'subnetworksInsert' smart constructor.
-data SubnetworksInsert = SubnetworksInsert'
+data SubnetworksInsert =
+  SubnetworksInsert'
     { _siRequestId :: !(Maybe Text)
     , _siProject   :: !Text
     , _siPayload   :: !Subnetwork
     , _siRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'siRegion'
     -> SubnetworksInsert
 subnetworksInsert pSiProject_ pSiPayload_ pSiRegion_ =
-    SubnetworksInsert'
+  SubnetworksInsert'
     { _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
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
@@ -64,15 +64,18 @@
 -- | Retrieves a list of subnetworks available to the specified project.
 --
 -- /See:/ 'subnetworksList' smart constructor.
-data SubnetworksList = SubnetworksList'
+data SubnetworksList =
+  SubnetworksList'
     { _slOrderBy    :: !(Maybe Text)
     , _slProject    :: !Text
     , _slFilter     :: !(Maybe Text)
     , _slRegion     :: !Text
     , _slPageToken  :: !(Maybe Text)
     , _slMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SubnetworksList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     -> Text -- ^ 'slRegion'
     -> SubnetworksList
 subnetworksList pSlProject_ pSlRegion_ =
-    SubnetworksList'
+  SubnetworksList'
     { _slOrderBy = Nothing
     , _slProject = pSlProject_
     , _slFilter = Nothing
@@ -101,6 +104,7 @@
     , _slPageToken = Nothing
     , _slMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs b/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/ListUsable.hs
@@ -63,14 +63,17 @@
 -- | Retrieves an aggregated list of usable subnetworks.
 --
 -- /See:/ 'subnetworksListUsable' smart constructor.
-data SubnetworksListUsable = SubnetworksListUsable'
+data SubnetworksListUsable =
+  SubnetworksListUsable'
     { _sluOrderBy    :: !(Maybe Text)
     , _sluProject    :: !Text
     , _sluFilter     :: !(Maybe Text)
     , _sluPageToken  :: !(Maybe Text)
     , _sluMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'sluProject'
     -> SubnetworksListUsable
 subnetworksListUsable pSluProject_ =
-    SubnetworksListUsable'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs b/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/Patch.hs
@@ -67,14 +67,17 @@
 -- subnetwork resource being patched.
 --
 -- /See:/ 'subnetworksPatch' smart constructor.
-data SubnetworksPatch = SubnetworksPatch'
+data SubnetworksPatch =
+  SubnetworksPatch'
     { _spRequestId  :: !(Maybe Text)
     , _spProject    :: !Text
     , _spPayload    :: !Subnetwork
     , _spSubnetwork :: !Text
     , _spRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'spRegion'
     -> SubnetworksPatch
 subnetworksPatch pSpProject_ pSpPayload_ pSpSubnetwork_ pSpRegion_ =
-    SubnetworksPatch'
+  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
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs b/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/SetIAMPolicy.hs
@@ -63,13 +63,16 @@
 -- existing policy.
 --
 -- /See:/ 'subnetworksSetIAMPolicy' smart constructor.
-data SubnetworksSetIAMPolicy = SubnetworksSetIAMPolicy'
+data SubnetworksSetIAMPolicy =
+  SubnetworksSetIAMPolicy'
     { _ssiampProject  :: !Text
     , _ssiampPayload  :: !RegionSetPolicyRequest
     , _ssiampResource :: !Text
     , _ssiampRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'ssiampRegion'
     -> SubnetworksSetIAMPolicy
 subnetworksSetIAMPolicy pSsiampProject_ pSsiampPayload_ pSsiampResource_ pSsiampRegion_ =
-    SubnetworksSetIAMPolicy'
+  SubnetworksSetIAMPolicy'
     { _ssiampProject = pSsiampProject_
     , _ssiampPayload = pSsiampPayload_
     , _ssiampResource = pSsiampResource_
     , _ssiampRegion = pSsiampRegion_
     }
+
 
 -- | Project ID for this request.
 ssiampProject :: Lens' SubnetworksSetIAMPolicy Text
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs b/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/SetPrivateIPGoogleAccess.hs
@@ -66,14 +66,17 @@
 -- assigning external IP addresses through Private Google Access.
 --
 -- /See:/ 'subnetworksSetPrivateIPGoogleAccess' smart constructor.
-data SubnetworksSetPrivateIPGoogleAccess = SubnetworksSetPrivateIPGoogleAccess'
+data SubnetworksSetPrivateIPGoogleAccess =
+  SubnetworksSetPrivateIPGoogleAccess'
     { _sspigaRequestId  :: !(Maybe Text)
     , _sspigaProject    :: !Text
     , _sspigaPayload    :: !SubnetworksSetPrivateIPGoogleAccessRequest
     , _sspigaSubnetwork :: !Text
     , _sspigaRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'sspigaRegion'
     -> SubnetworksSetPrivateIPGoogleAccess
 subnetworksSetPrivateIPGoogleAccess pSspigaProject_ pSspigaPayload_ pSspigaSubnetwork_ pSspigaRegion_ =
-    SubnetworksSetPrivateIPGoogleAccess'
+  SubnetworksSetPrivateIPGoogleAccess'
     { _sspigaRequestId = Nothing
     , _sspigaProject = pSspigaProject_
     , _sspigaPayload = pSspigaPayload_
@@ -102,6 +105,7 @@
     , _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
@@ -141,7 +145,8 @@
   = lens _sspigaRegion (\ s a -> s{_sspigaRegion = a})
 
 instance GoogleRequest
-         SubnetworksSetPrivateIPGoogleAccess where
+           SubnetworksSetPrivateIPGoogleAccess
+         where
         type Rs SubnetworksSetPrivateIPGoogleAccess =
              Operation
         type Scopes SubnetworksSetPrivateIPGoogleAccess =
diff --git a/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs b/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Compute/Subnetworks/TestIAMPermissions.hs
@@ -61,13 +61,16 @@
 -- | Returns permissions that a caller has on the specified resource.
 --
 -- /See:/ 'subnetworksTestIAMPermissions' smart constructor.
-data SubnetworksTestIAMPermissions = SubnetworksTestIAMPermissions'
+data SubnetworksTestIAMPermissions =
+  SubnetworksTestIAMPermissions'
     { _stiampProject  :: !Text
     , _stiampPayload  :: !TestPermissionsRequest
     , _stiampResource :: !Text
     , _stiampRegion   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'stiampRegion'
     -> SubnetworksTestIAMPermissions
 subnetworksTestIAMPermissions pStiampProject_ pStiampPayload_ pStiampResource_ pStiampRegion_ =
-    SubnetworksTestIAMPermissions'
+  SubnetworksTestIAMPermissions'
     { _stiampProject = pStiampProject_
     , _stiampPayload = pStiampPayload_
     , _stiampResource = pStiampResource_
     , _stiampRegion = pStiampRegion_
     }
+
 
 -- | Project ID for this request.
 stiampProject :: Lens' SubnetworksTestIAMPermissions Text
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified TargetHttpProxy resource.
 --
 -- /See:/ 'targetHTTPProxiesDelete' smart constructor.
-data TargetHTTPProxiesDelete = TargetHTTPProxiesDelete'
+data TargetHTTPProxiesDelete =
+  TargetHTTPProxiesDelete'
     { _thttppdRequestId       :: !(Maybe Text)
     , _thttppdProject         :: !Text
     , _thttppdTargetHTTPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPProxiesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'thttppdTargetHTTPProxy'
     -> TargetHTTPProxiesDelete
 targetHTTPProxiesDelete pThttppdProject_ pThttppdTargetHTTPProxy_ =
-    TargetHTTPProxiesDelete'
+  TargetHTTPProxiesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- target HTTP proxies by making a list() request.
 --
 -- /See:/ 'targetHTTPProxiesGet' smart constructor.
-data TargetHTTPProxiesGet = TargetHTTPProxiesGet'
+data TargetHTTPProxiesGet =
+  TargetHTTPProxiesGet'
     { _thttppgProject         :: !Text
     , _thttppgTargetHTTPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPProxiesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'thttppgTargetHTTPProxy'
     -> TargetHTTPProxiesGet
 targetHTTPProxiesGet pThttppgProject_ pThttppgTargetHTTPProxy_ =
-    TargetHTTPProxiesGet'
+  TargetHTTPProxiesGet'
     { _thttppgProject = pThttppgProject_
     , _thttppgTargetHTTPProxy = pThttppgTargetHTTPProxy_
     }
+
 
 -- | Project ID for this request.
 thttppgProject :: Lens' TargetHTTPProxiesGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'targetHTTPProxiesInsert' smart constructor.
-data TargetHTTPProxiesInsert = TargetHTTPProxiesInsert'
+data TargetHTTPProxiesInsert =
+  TargetHTTPProxiesInsert'
     { _thttppiRequestId :: !(Maybe Text)
     , _thttppiProject   :: !Text
     , _thttppiPayload   :: !TargetHTTPProxy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> TargetHTTPProxy -- ^ 'thttppiPayload'
     -> TargetHTTPProxiesInsert
 targetHTTPProxiesInsert pThttppiProject_ pThttppiPayload_ =
-    TargetHTTPProxiesInsert'
+  TargetHTTPProxiesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'targetHTTPProxiesList' smart constructor.
-data TargetHTTPProxiesList = TargetHTTPProxiesList'
+data TargetHTTPProxiesList =
+  TargetHTTPProxiesList'
     { _thttpplOrderBy    :: !(Maybe Text)
     , _thttpplProject    :: !Text
     , _thttpplFilter     :: !(Maybe Text)
     , _thttpplPageToken  :: !(Maybe Text)
     , _thttpplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPProxiesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'thttpplProject'
     -> TargetHTTPProxiesList
 targetHTTPProxiesList pThttpplProject_ =
-    TargetHTTPProxiesList'
+  TargetHTTPProxiesList'
     { _thttpplOrderBy = Nothing
     , _thttpplProject = pThttpplProject_
     , _thttpplFilter = Nothing
     , _thttpplPageToken = Nothing
     , _thttpplMaxResults = 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
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
@@ -60,13 +60,16 @@
 -- | Changes the URL map for TargetHttpProxy.
 --
 -- /See:/ 'targetHTTPProxiesSetURLMap' smart constructor.
-data TargetHTTPProxiesSetURLMap = TargetHTTPProxiesSetURLMap'
+data TargetHTTPProxiesSetURLMap =
+  TargetHTTPProxiesSetURLMap'
     { _thttppsumRequestId       :: !(Maybe Text)
     , _thttppsumProject         :: !Text
     , _thttppsumPayload         :: !URLMapReference
     , _thttppsumTargetHTTPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPProxiesSetURLMap' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,12 +87,13 @@
     -> Text -- ^ 'thttppsumTargetHTTPProxy'
     -> TargetHTTPProxiesSetURLMap
 targetHTTPProxiesSetURLMap pThttppsumProject_ pThttppsumPayload_ pThttppsumTargetHTTPProxy_ =
-    TargetHTTPProxiesSetURLMap'
+  TargetHTTPProxiesSetURLMap'
     { _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified TargetHttpsProxy resource.
 --
 -- /See:/ 'targetHTTPSProxiesDelete' smart constructor.
-data TargetHTTPSProxiesDelete = TargetHTTPSProxiesDelete'
+data TargetHTTPSProxiesDelete =
+  TargetHTTPSProxiesDelete'
     { _thpdRequestId        :: !(Maybe Text)
     , _thpdProject          :: !Text
     , _thpdTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPSProxiesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'thpdTargetHTTPSProxy'
     -> TargetHTTPSProxiesDelete
 targetHTTPSProxiesDelete pThpdProject_ pThpdTargetHTTPSProxy_ =
-    TargetHTTPSProxiesDelete'
+  TargetHTTPSProxiesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- available target HTTPS proxies by making a list() request.
 --
 -- /See:/ 'targetHTTPSProxiesGet' smart constructor.
-data TargetHTTPSProxiesGet = TargetHTTPSProxiesGet'
+data TargetHTTPSProxiesGet =
+  TargetHTTPSProxiesGet'
     { _thpgProject          :: !Text
     , _thpgTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPSProxiesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'thpgTargetHTTPSProxy'
     -> TargetHTTPSProxiesGet
 targetHTTPSProxiesGet pThpgProject_ pThpgTargetHTTPSProxy_ =
-    TargetHTTPSProxiesGet'
+  TargetHTTPSProxiesGet'
     { _thpgProject = pThpgProject_
     , _thpgTargetHTTPSProxy = pThpgTargetHTTPSProxy_
     }
+
 
 -- | Project ID for this request.
 thpgProject :: Lens' TargetHTTPSProxiesGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'targetHTTPSProxiesInsert' smart constructor.
-data TargetHTTPSProxiesInsert = TargetHTTPSProxiesInsert'
+data TargetHTTPSProxiesInsert =
+  TargetHTTPSProxiesInsert'
     { _thpiRequestId :: !(Maybe Text)
     , _thpiProject   :: !Text
     , _thpiPayload   :: !TargetHTTPSProxy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> TargetHTTPSProxy -- ^ 'thpiPayload'
     -> TargetHTTPSProxiesInsert
 targetHTTPSProxiesInsert pThpiProject_ pThpiPayload_ =
-    TargetHTTPSProxiesInsert'
+  TargetHTTPSProxiesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'targetHTTPSProxiesList' smart constructor.
-data TargetHTTPSProxiesList = TargetHTTPSProxiesList'
+data TargetHTTPSProxiesList =
+  TargetHTTPSProxiesList'
     { _thplOrderBy    :: !(Maybe Text)
     , _thplProject    :: !Text
     , _thplFilter     :: !(Maybe Text)
     , _thplPageToken  :: !(Maybe Text)
     , _thplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPSProxiesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'thplProject'
     -> TargetHTTPSProxiesList
 targetHTTPSProxiesList pThplProject_ =
-    TargetHTTPSProxiesList'
+  TargetHTTPSProxiesList'
     { _thplOrderBy = Nothing
     , _thplProject = pThplProject_
     , _thplFilter = Nothing
     , _thplPageToken = Nothing
     , _thplMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetQuicOverride.hs
@@ -62,13 +62,16 @@
 -- | Sets the QUIC override policy for TargetHttpsProxy.
 --
 -- /See:/ 'targetHTTPSProxiesSetQuicOverride' smart constructor.
-data TargetHTTPSProxiesSetQuicOverride = TargetHTTPSProxiesSetQuicOverride'
+data TargetHTTPSProxiesSetQuicOverride =
+  TargetHTTPSProxiesSetQuicOverride'
     { _thpsqoRequestId        :: !(Maybe Text)
     , _thpsqoProject          :: !Text
     , _thpsqoPayload          :: !TargetHTTPSProxiesSetQuicOverrideRequest
     , _thpsqoTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'thpsqoTargetHTTPSProxy'
     -> TargetHTTPSProxiesSetQuicOverride
 targetHTTPSProxiesSetQuicOverride pThpsqoProject_ pThpsqoPayload_ pThpsqoTargetHTTPSProxy_ =
-    TargetHTTPSProxiesSetQuicOverride'
+  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
@@ -128,7 +132,8 @@
       (\ s a -> s{_thpsqoTargetHTTPSProxy = a})
 
 instance GoogleRequest
-         TargetHTTPSProxiesSetQuicOverride where
+           TargetHTTPSProxiesSetQuicOverride
+         where
         type Rs TargetHTTPSProxiesSetQuicOverride = Operation
         type Scopes TargetHTTPSProxiesSetQuicOverride =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -61,13 +61,16 @@
 -- | Replaces SslCertificates for TargetHttpsProxy.
 --
 -- /See:/ 'targetHTTPSProxiesSetSSLCertificates' smart constructor.
-data TargetHTTPSProxiesSetSSLCertificates = TargetHTTPSProxiesSetSSLCertificates'
+data TargetHTTPSProxiesSetSSLCertificates =
+  TargetHTTPSProxiesSetSSLCertificates'
     { _thpsscRequestId        :: !(Maybe Text)
     , _thpsscProject          :: !Text
     , _thpsscPayload          :: !TargetHTTPSProxiesSetSSLCertificatesRequest
     , _thpsscTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificates' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,13 +88,14 @@
     -> Text -- ^ 'thpsscTargetHTTPSProxy'
     -> TargetHTTPSProxiesSetSSLCertificates
 targetHTTPSProxiesSetSSLCertificates pThpsscProject_ pThpsscPayload_ pThpsscTargetHTTPSProxy_ =
-    TargetHTTPSProxiesSetSSLCertificates'
+  TargetHTTPSProxiesSetSSLCertificates'
     { _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
@@ -127,7 +131,8 @@
       (\ s a -> s{_thpsscTargetHTTPSProxy = a})
 
 instance GoogleRequest
-         TargetHTTPSProxiesSetSSLCertificates where
+           TargetHTTPSProxiesSetSSLCertificates
+         where
         type Rs TargetHTTPSProxiesSetSSLCertificates =
              Operation
         type Scopes TargetHTTPSProxiesSetSSLCertificates =
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs
--- a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLPolicy.hs
@@ -67,13 +67,16 @@
 -- connection between the load balancer and the backends.
 --
 -- /See:/ 'targetHTTPSProxiesSetSSLPolicy' smart constructor.
-data TargetHTTPSProxiesSetSSLPolicy = TargetHTTPSProxiesSetSSLPolicy'
+data TargetHTTPSProxiesSetSSLPolicy =
+  TargetHTTPSProxiesSetSSLPolicy'
     { _thpsspRequestId        :: !(Maybe Text)
     , _thpsspProject          :: !Text
     , _thpsspPayload          :: !SSLPolicyReference
     , _thpsspTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,12 +94,13 @@
     -> Text -- ^ 'thpsspTargetHTTPSProxy'
     -> TargetHTTPSProxiesSetSSLPolicy
 targetHTTPSProxiesSetSSLPolicy pThpsspProject_ pThpsspPayload_ pThpsspTargetHTTPSProxy_ =
-    TargetHTTPSProxiesSetSSLPolicy'
+  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
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
@@ -60,13 +60,16 @@
 -- | Changes the URL map for TargetHttpsProxy.
 --
 -- /See:/ 'targetHTTPSProxiesSetURLMap' smart constructor.
-data TargetHTTPSProxiesSetURLMap = TargetHTTPSProxiesSetURLMap'
+data TargetHTTPSProxiesSetURLMap =
+  TargetHTTPSProxiesSetURLMap'
     { _thpsumRequestId        :: !(Maybe Text)
     , _thpsumProject          :: !Text
     , _thpsumPayload          :: !URLMapReference
     , _thpsumTargetHTTPSProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetHTTPSProxiesSetURLMap' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,12 +87,13 @@
     -> Text -- ^ 'thpsumTargetHTTPSProxy'
     -> TargetHTTPSProxiesSetURLMap
 targetHTTPSProxiesSetURLMap pThpsumProject_ pThpsumPayload_ pThpsumTargetHTTPSProxy_ =
-    TargetHTTPSProxiesSetURLMap'
+  TargetHTTPSProxiesSetURLMap'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of target instances.
 --
 -- /See:/ 'targetInstancesAggregatedList' smart constructor.
-data TargetInstancesAggregatedList = TargetInstancesAggregatedList'
+data TargetInstancesAggregatedList =
+  TargetInstancesAggregatedList'
     { _tialOrderBy    :: !(Maybe Text)
     , _tialProject    :: !Text
     , _tialFilter     :: !(Maybe Text)
     , _tialPageToken  :: !(Maybe Text)
     , _tialMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetInstancesAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'tialProject'
     -> TargetInstancesAggregatedList
 targetInstancesAggregatedList pTialProject_ =
-    TargetInstancesAggregatedList'
+  TargetInstancesAggregatedList'
     { _tialOrderBy = Nothing
     , _tialProject = pTialProject_
     , _tialFilter = Nothing
     , _tialPageToken = Nothing
     , _tialMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified TargetInstance resource.
 --
 -- /See:/ 'targetInstancesDelete' smart constructor.
-data TargetInstancesDelete = TargetInstancesDelete'
+data TargetInstancesDelete =
+  TargetInstancesDelete'
     { _tidRequestId      :: !(Maybe Text)
     , _tidProject        :: !Text
     , _tidTargetInstance :: !Text
     , _tidZone           :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetInstancesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'tidZone'
     -> TargetInstancesDelete
 targetInstancesDelete pTidProject_ pTidTargetInstance_ pTidZone_ =
-    TargetInstancesDelete'
+  TargetInstancesDelete'
     { _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
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
@@ -60,12 +60,15 @@
 -- target instances by making a list() request.
 --
 -- /See:/ 'targetInstancesGet' smart constructor.
-data TargetInstancesGet = TargetInstancesGet'
+data TargetInstancesGet =
+  TargetInstancesGet'
     { _tigProject        :: !Text
     , _tigTargetInstance :: !Text
     , _tigZone           :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetInstancesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'tigZone'
     -> TargetInstancesGet
 targetInstancesGet pTigProject_ pTigTargetInstance_ pTigZone_ =
-    TargetInstancesGet'
+  TargetInstancesGet'
     { _tigProject = pTigProject_
     , _tigTargetInstance = pTigTargetInstance_
     , _tigZone = pTigZone_
     }
+
 
 -- | Project ID for this request.
 tigProject :: Lens' TargetInstancesGet Text
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
@@ -62,13 +62,16 @@
 -- using the data included in the request.
 --
 -- /See:/ 'targetInstancesInsert' smart constructor.
-data TargetInstancesInsert = TargetInstancesInsert'
+data TargetInstancesInsert =
+  TargetInstancesInsert'
     { _tiiRequestId :: !(Maybe Text)
     , _tiiProject   :: !Text
     , _tiiZone      :: !Text
     , _tiiPayload   :: !TargetInstance
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> TargetInstance -- ^ 'tiiPayload'
     -> TargetInstancesInsert
 targetInstancesInsert pTiiProject_ pTiiZone_ pTiiPayload_ =
-    TargetInstancesInsert'
+  TargetInstancesInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- project and zone.
 --
 -- /See:/ 'targetInstancesList' smart constructor.
-data TargetInstancesList = TargetInstancesList'
+data TargetInstancesList =
+  TargetInstancesList'
     { _tilOrderBy    :: !(Maybe Text)
     , _tilProject    :: !Text
     , _tilZone       :: !Text
     , _tilFilter     :: !(Maybe Text)
     , _tilPageToken  :: !(Maybe Text)
     , _tilMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetInstancesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'tilZone'
     -> TargetInstancesList
 targetInstancesList pTilProject_ pTilZone_ =
-    TargetInstancesList'
+  TargetInstancesList'
     { _tilOrderBy = Nothing
     , _tilProject = pTilProject_
     , _tilZone = pTilZone_
@@ -103,6 +106,7 @@
     , _tilPageToken = Nothing
     , _tilMaxResults = 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
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
@@ -63,14 +63,17 @@
 -- | Adds health check URLs to a target pool.
 --
 -- /See:/ 'targetPoolsAddHealthCheck' smart constructor.
-data TargetPoolsAddHealthCheck = TargetPoolsAddHealthCheck'
+data TargetPoolsAddHealthCheck =
+  TargetPoolsAddHealthCheck'
     { _tpahcRequestId  :: !(Maybe Text)
     , _tpahcProject    :: !Text
     , _tpahcTargetPool :: !Text
     , _tpahcPayload    :: !TargetPoolsAddHealthCheckRequest
     , _tpahcRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsAddHealthCheck' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'tpahcRegion'
     -> TargetPoolsAddHealthCheck
 targetPoolsAddHealthCheck pTpahcProject_ pTpahcTargetPool_ pTpahcPayload_ pTpahcRegion_ =
-    TargetPoolsAddHealthCheck'
+  TargetPoolsAddHealthCheck'
     { _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
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
@@ -63,14 +63,17 @@
 -- | Adds an instance to a target pool.
 --
 -- /See:/ 'targetPoolsAddInstance' smart constructor.
-data TargetPoolsAddInstance = TargetPoolsAddInstance'
+data TargetPoolsAddInstance =
+  TargetPoolsAddInstance'
     { _tpaiRequestId  :: !(Maybe Text)
     , _tpaiProject    :: !Text
     , _tpaiTargetPool :: !Text
     , _tpaiPayload    :: !TargetPoolsAddInstanceRequest
     , _tpaiRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsAddInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'tpaiRegion'
     -> TargetPoolsAddInstance
 targetPoolsAddInstance pTpaiProject_ pTpaiTargetPool_ pTpaiPayload_ pTpaiRegion_ =
-    TargetPoolsAddInstance'
+  TargetPoolsAddInstance'
     { _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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of target pools.
 --
 -- /See:/ 'targetPoolsAggregatedList' smart constructor.
-data TargetPoolsAggregatedList = TargetPoolsAggregatedList'
+data TargetPoolsAggregatedList =
+  TargetPoolsAggregatedList'
     { _tpalOrderBy    :: !(Maybe Text)
     , _tpalProject    :: !Text
     , _tpalFilter     :: !(Maybe Text)
     , _tpalPageToken  :: !(Maybe Text)
     , _tpalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'tpalProject'
     -> TargetPoolsAggregatedList
 targetPoolsAggregatedList pTpalProject_ =
-    TargetPoolsAggregatedList'
+  TargetPoolsAggregatedList'
     { _tpalOrderBy = Nothing
     , _tpalProject = pTpalProject_
     , _tpalFilter = Nothing
     , _tpalPageToken = Nothing
     , _tpalMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified target pool.
 --
 -- /See:/ 'targetPoolsDelete' smart constructor.
-data TargetPoolsDelete = TargetPoolsDelete'
+data TargetPoolsDelete =
+  TargetPoolsDelete'
     { _tpdRequestId  :: !(Maybe Text)
     , _tpdProject    :: !Text
     , _tpdTargetPool :: !Text
     , _tpdRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'tpdRegion'
     -> TargetPoolsDelete
 targetPoolsDelete pTpdProject_ pTpdTargetPool_ pTpdRegion_ =
-    TargetPoolsDelete'
+  TargetPoolsDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- by making a list() request.
 --
 -- /See:/ 'targetPoolsGet' smart constructor.
-data TargetPoolsGet = TargetPoolsGet'
+data TargetPoolsGet =
+  TargetPoolsGet'
     { _tpgProject    :: !Text
     , _tpgTargetPool :: !Text
     , _tpgRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'tpgRegion'
     -> TargetPoolsGet
 targetPoolsGet pTpgProject_ pTpgTargetPool_ pTpgRegion_ =
-    TargetPoolsGet'
+  TargetPoolsGet'
     { _tpgProject = pTpgProject_
     , _tpgTargetPool = pTpgTargetPool_
     , _tpgRegion = pTpgRegion_
     }
+
 
 -- | Project ID for this request.
 tpgProject :: Lens' TargetPoolsGet Text
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs b/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs
--- a/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs
+++ b/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs
@@ -63,13 +63,16 @@
 -- that is referenced by the given target pool.
 --
 -- /See:/ 'targetPoolsGetHealth' smart constructor.
-data TargetPoolsGetHealth = TargetPoolsGetHealth'
+data TargetPoolsGetHealth =
+  TargetPoolsGetHealth'
     { _tpghProject    :: !Text
     , _tpghTargetPool :: !Text
     , _tpghPayload    :: !InstanceReference
     , _tpghRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsGetHealth' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'tpghRegion'
     -> TargetPoolsGetHealth
 targetPoolsGetHealth pTpghProject_ pTpghTargetPool_ pTpghPayload_ pTpghRegion_ =
-    TargetPoolsGetHealth'
+  TargetPoolsGetHealth'
     { _tpghProject = pTpghProject_
     , _tpghTargetPool = pTpghTargetPool_
     , _tpghPayload = pTpghPayload_
     , _tpghRegion = pTpghRegion_
     }
+
 
 -- | Project ID for this request.
 tpghProject :: Lens' TargetPoolsGetHealth Text
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
@@ -61,13 +61,16 @@
 -- included in the request.
 --
 -- /See:/ 'targetPoolsInsert' smart constructor.
-data TargetPoolsInsert = TargetPoolsInsert'
+data TargetPoolsInsert =
+  TargetPoolsInsert'
     { _tpiRequestId :: !(Maybe Text)
     , _tpiProject   :: !Text
     , _tpiPayload   :: !TargetPool
     , _tpiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'tpiRegion'
     -> TargetPoolsInsert
 targetPoolsInsert pTpiProject_ pTpiPayload_ pTpiRegion_ =
-    TargetPoolsInsert'
+  TargetPoolsInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- region.
 --
 -- /See:/ 'targetPoolsList' smart constructor.
-data TargetPoolsList = TargetPoolsList'
+data TargetPoolsList =
+  TargetPoolsList'
     { _tplOrderBy    :: !(Maybe Text)
     , _tplProject    :: !Text
     , _tplFilter     :: !(Maybe Text)
     , _tplRegion     :: !Text
     , _tplPageToken  :: !(Maybe Text)
     , _tplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'tplRegion'
     -> TargetPoolsList
 targetPoolsList pTplProject_ pTplRegion_ =
-    TargetPoolsList'
+  TargetPoolsList'
     { _tplOrderBy = Nothing
     , _tplProject = pTplProject_
     , _tplFilter = Nothing
@@ -103,6 +106,7 @@
     , _tplPageToken = Nothing
     , _tplMaxResults = 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
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
@@ -63,14 +63,17 @@
 -- | Removes health check URL from a target pool.
 --
 -- /See:/ 'targetPoolsRemoveHealthCheck' smart constructor.
-data TargetPoolsRemoveHealthCheck = TargetPoolsRemoveHealthCheck'
+data TargetPoolsRemoveHealthCheck =
+  TargetPoolsRemoveHealthCheck'
     { _tprhcRequestId  :: !(Maybe Text)
     , _tprhcProject    :: !Text
     , _tprhcTargetPool :: !Text
     , _tprhcPayload    :: !TargetPoolsRemoveHealthCheckRequest
     , _tprhcRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsRemoveHealthCheck' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'tprhcRegion'
     -> TargetPoolsRemoveHealthCheck
 targetPoolsRemoveHealthCheck pTprhcProject_ pTprhcTargetPool_ pTprhcPayload_ pTprhcRegion_ =
-    TargetPoolsRemoveHealthCheck'
+  TargetPoolsRemoveHealthCheck'
     { _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
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
@@ -63,14 +63,17 @@
 -- | Removes instance URL from a target pool.
 --
 -- /See:/ 'targetPoolsRemoveInstance' smart constructor.
-data TargetPoolsRemoveInstance = TargetPoolsRemoveInstance'
+data TargetPoolsRemoveInstance =
+  TargetPoolsRemoveInstance'
     { _tpriRequestId  :: !(Maybe Text)
     , _tpriProject    :: !Text
     , _tpriTargetPool :: !Text
     , _tpriPayload    :: !TargetPoolsRemoveInstanceRequest
     , _tpriRegion     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsRemoveInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,13 +94,14 @@
     -> Text -- ^ 'tpriRegion'
     -> TargetPoolsRemoveInstance
 targetPoolsRemoveInstance pTpriProject_ pTpriTargetPool_ pTpriPayload_ pTpriRegion_ =
-    TargetPoolsRemoveInstance'
+  TargetPoolsRemoveInstance'
     { _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
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
@@ -65,15 +65,18 @@
 -- | Changes a backup target pool\'s configurations.
 --
 -- /See:/ 'targetPoolsSetBackup' smart constructor.
-data TargetPoolsSetBackup = TargetPoolsSetBackup'
+data TargetPoolsSetBackup =
+  TargetPoolsSetBackup'
     { _tpsbRequestId     :: !(Maybe Text)
     , _tpsbProject       :: !Text
     , _tpsbTargetPool    :: !Text
     , _tpsbPayload       :: !TargetReference
     , _tpsbFailoverRatio :: !(Maybe (Textual Double))
     , _tpsbRegion        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetPoolsSetBackup' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'tpsbRegion'
     -> TargetPoolsSetBackup
 targetPoolsSetBackup pTpsbProject_ pTpsbTargetPool_ pTpsbPayload_ pTpsbRegion_ =
-    TargetPoolsSetBackup'
+  TargetPoolsSetBackup'
     { _tpsbRequestId = Nothing
     , _tpsbProject = pTpsbProject_
     , _tpsbTargetPool = pTpsbTargetPool_
@@ -104,6 +107,7 @@
     , _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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified TargetSslProxy resource.
 --
 -- /See:/ 'targetSSLProxiesDelete' smart constructor.
-data TargetSSLProxiesDelete = TargetSSLProxiesDelete'
+data TargetSSLProxiesDelete =
+  TargetSSLProxiesDelete'
     { _tspdRequestId      :: !(Maybe Text)
     , _tspdProject        :: !Text
     , _tspdTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'tspdTargetSSLProxy'
     -> TargetSSLProxiesDelete
 targetSSLProxiesDelete pTspdProject_ pTspdTargetSSLProxy_ =
-    TargetSSLProxiesDelete'
+  TargetSSLProxiesDelete'
     { _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
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
@@ -58,11 +58,14 @@
 -- target SSL proxies by making a list() request.
 --
 -- /See:/ 'targetSSLProxiesGet' smart constructor.
-data TargetSSLProxiesGet = TargetSSLProxiesGet'
+data TargetSSLProxiesGet =
+  TargetSSLProxiesGet'
     { _tspgProject        :: !Text
     , _tspgTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'tspgTargetSSLProxy'
     -> TargetSSLProxiesGet
 targetSSLProxiesGet pTspgProject_ pTspgTargetSSLProxy_ =
-    TargetSSLProxiesGet'
-    { _tspgProject = pTspgProject_
-    , _tspgTargetSSLProxy = pTspgTargetSSLProxy_
-    }
+  TargetSSLProxiesGet'
+    {_tspgProject = pTspgProject_, _tspgTargetSSLProxy = pTspgTargetSSLProxy_}
+
 
 -- | Project ID for this request.
 tspgProject :: Lens' TargetSSLProxiesGet Text
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
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'targetSSLProxiesInsert' smart constructor.
-data TargetSSLProxiesInsert = TargetSSLProxiesInsert'
+data TargetSSLProxiesInsert =
+  TargetSSLProxiesInsert'
     { _tspiRequestId :: !(Maybe Text)
     , _tspiProject   :: !Text
     , _tspiPayload   :: !TargetSSLProxy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> TargetSSLProxy -- ^ 'tspiPayload'
     -> TargetSSLProxiesInsert
 targetSSLProxiesInsert pTspiProject_ pTspiPayload_ =
-    TargetSSLProxiesInsert'
+  TargetSSLProxiesInsert'
     { _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
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
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'targetSSLProxiesList' smart constructor.
-data TargetSSLProxiesList = TargetSSLProxiesList'
+data TargetSSLProxiesList =
+  TargetSSLProxiesList'
     { _tsplOrderBy    :: !(Maybe Text)
     , _tsplProject    :: !Text
     , _tsplFilter     :: !(Maybe Text)
     , _tsplPageToken  :: !(Maybe Text)
     , _tsplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'tsplProject'
     -> TargetSSLProxiesList
 targetSSLProxiesList pTsplProject_ =
-    TargetSSLProxiesList'
+  TargetSSLProxiesList'
     { _tsplOrderBy = Nothing
     , _tsplProject = pTsplProject_
     , _tsplFilter = Nothing
     , _tsplPageToken = Nothing
     , _tsplMaxResults = 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
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
@@ -62,13 +62,16 @@
 -- | Changes the BackendService for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetBackendService' smart constructor.
-data TargetSSLProxiesSetBackendService = TargetSSLProxiesSetBackendService'
+data TargetSSLProxiesSetBackendService =
+  TargetSSLProxiesSetBackendService'
     { _tspsbsRequestId      :: !(Maybe Text)
     , _tspsbsProject        :: !Text
     , _tspsbsPayload        :: !TargetSSLProxiesSetBackendServiceRequest
     , _tspsbsTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesSetBackendService' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'tspsbsTargetSSLProxy'
     -> TargetSSLProxiesSetBackendService
 targetSSLProxiesSetBackendService pTspsbsProject_ pTspsbsPayload_ pTspsbsTargetSSLProxy_ =
-    TargetSSLProxiesSetBackendService'
+  TargetSSLProxiesSetBackendService'
     { _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
@@ -128,7 +132,8 @@
       (\ s a -> s{_tspsbsTargetSSLProxy = a})
 
 instance GoogleRequest
-         TargetSSLProxiesSetBackendService where
+           TargetSSLProxiesSetBackendService
+         where
         type Rs TargetSSLProxiesSetBackendService = Operation
         type Scopes TargetSSLProxiesSetBackendService =
              '["https://www.googleapis.com/auth/cloud-platform",
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
@@ -61,13 +61,16 @@
 -- | Changes the ProxyHeaderType for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetProxyHeader' smart constructor.
-data TargetSSLProxiesSetProxyHeader = TargetSSLProxiesSetProxyHeader'
+data TargetSSLProxiesSetProxyHeader =
+  TargetSSLProxiesSetProxyHeader'
     { _tspsphRequestId      :: !(Maybe Text)
     , _tspsphProject        :: !Text
     , _tspsphPayload        :: !TargetSSLProxiesSetProxyHeaderRequest
     , _tspsphTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesSetProxyHeader' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'tspsphTargetSSLProxy'
     -> TargetSSLProxiesSetProxyHeader
 targetSSLProxiesSetProxyHeader pTspsphProject_ pTspsphPayload_ pTspsphTargetSSLProxy_ =
-    TargetSSLProxiesSetProxyHeader'
+  TargetSSLProxiesSetProxyHeader'
     { _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
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
@@ -62,13 +62,16 @@
 -- | Changes SslCertificates for TargetSslProxy.
 --
 -- /See:/ 'targetSSLProxiesSetSSLCertificates' smart constructor.
-data TargetSSLProxiesSetSSLCertificates = TargetSSLProxiesSetSSLCertificates'
+data TargetSSLProxiesSetSSLCertificates =
+  TargetSSLProxiesSetSSLCertificates'
     { _tspsscRequestId      :: !(Maybe Text)
     , _tspsscProject        :: !Text
     , _tspsscPayload        :: !TargetSSLProxiesSetSSLCertificatesRequest
     , _tspsscTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetSSLProxiesSetSSLCertificates' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'tspsscTargetSSLProxy'
     -> TargetSSLProxiesSetSSLCertificates
 targetSSLProxiesSetSSLCertificates pTspsscProject_ pTspsscPayload_ pTspsscTargetSSLProxy_ =
-    TargetSSLProxiesSetSSLCertificates'
+  TargetSSLProxiesSetSSLCertificates'
     { _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
@@ -128,7 +132,8 @@
       (\ s a -> s{_tspsscTargetSSLProxy = a})
 
 instance GoogleRequest
-         TargetSSLProxiesSetSSLCertificates where
+           TargetSSLProxiesSetSSLCertificates
+         where
         type Rs TargetSSLProxiesSetSSLCertificates =
              Operation
         type Scopes TargetSSLProxiesSetSSLCertificates =
diff --git a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs
--- a/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs
+++ b/gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLPolicy.hs
@@ -67,13 +67,16 @@
 -- connection between the load balancer and the backends.
 --
 -- /See:/ 'targetSSLProxiesSetSSLPolicy' smart constructor.
-data TargetSSLProxiesSetSSLPolicy = TargetSSLProxiesSetSSLPolicy'
+data TargetSSLProxiesSetSSLPolicy =
+  TargetSSLProxiesSetSSLPolicy'
     { _tspsspRequestId      :: !(Maybe Text)
     , _tspsspProject        :: !Text
     , _tspsspPayload        :: !SSLPolicyReference
     , _tspsspTargetSSLProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -91,12 +94,13 @@
     -> Text -- ^ 'tspsspTargetSSLProxy'
     -> TargetSSLProxiesSetSSLPolicy
 targetSSLProxiesSetSSLPolicy pTspsspProject_ pTspsspPayload_ pTspsspTargetSSLProxy_ =
-    TargetSSLProxiesSetSSLPolicy'
+  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
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified TargetTcpProxy resource.
 --
 -- /See:/ 'targetTCPProxiesDelete' smart constructor.
-data TargetTCPProxiesDelete = TargetTCPProxiesDelete'
+data TargetTCPProxiesDelete =
+  TargetTCPProxiesDelete'
     { _ttpdRequestId      :: !(Maybe Text)
     , _ttpdProject        :: !Text
     , _ttpdTargetTCPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'ttpdTargetTCPProxy'
     -> TargetTCPProxiesDelete
 targetTCPProxiesDelete pTtpdProject_ pTtpdTargetTCPProxy_ =
-    TargetTCPProxiesDelete'
+  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
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Get.hs
@@ -58,11 +58,14 @@
 -- target TCP proxies by making a list() request.
 --
 -- /See:/ 'targetTCPProxiesGet' smart constructor.
-data TargetTCPProxiesGet = TargetTCPProxiesGet'
+data TargetTCPProxiesGet =
+  TargetTCPProxiesGet'
     { _ttpgProject        :: !Text
     , _ttpgTargetTCPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'ttpgTargetTCPProxy'
     -> TargetTCPProxiesGet
 targetTCPProxiesGet pTtpgProject_ pTtpgTargetTCPProxy_ =
-    TargetTCPProxiesGet'
-    { _ttpgProject = pTtpgProject_
-    , _ttpgTargetTCPProxy = pTtpgTargetTCPProxy_
-    }
+  TargetTCPProxiesGet'
+    {_ttpgProject = pTtpgProject_, _ttpgTargetTCPProxy = pTtpgTargetTCPProxy_}
+
 
 -- | Project ID for this request.
 ttpgProject :: Lens' TargetTCPProxiesGet Text
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/Insert.hs
@@ -60,12 +60,15 @@
 -- data included in the request.
 --
 -- /See:/ 'targetTCPProxiesInsert' smart constructor.
-data TargetTCPProxiesInsert = TargetTCPProxiesInsert'
+data TargetTCPProxiesInsert =
+  TargetTCPProxiesInsert'
     { _ttpiRequestId :: !(Maybe Text)
     , _ttpiProject   :: !Text
     , _ttpiPayload   :: !TargetTCPProxy
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -80,11 +83,12 @@
     -> TargetTCPProxy -- ^ 'ttpiPayload'
     -> TargetTCPProxiesInsert
 targetTCPProxiesInsert pTtpiProject_ pTtpiPayload_ =
-    TargetTCPProxiesInsert'
+  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
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/List.hs
@@ -64,14 +64,17 @@
 -- specified project.
 --
 -- /See:/ 'targetTCPProxiesList' smart constructor.
-data TargetTCPProxiesList = TargetTCPProxiesList'
+data TargetTCPProxiesList =
+  TargetTCPProxiesList'
     { _ttplOrderBy    :: !(Maybe Text)
     , _ttplProject    :: !Text
     , _ttplFilter     :: !(Maybe Text)
     , _ttplPageToken  :: !(Maybe Text)
     , _ttplMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -89,13 +92,14 @@
     :: Text -- ^ 'ttplProject'
     -> TargetTCPProxiesList
 targetTCPProxiesList pTtplProject_ =
-    TargetTCPProxiesList'
+  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
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetBackendService.hs
@@ -62,13 +62,16 @@
 -- | Changes the BackendService for TargetTcpProxy.
 --
 -- /See:/ 'targetTCPProxiesSetBackendService' smart constructor.
-data TargetTCPProxiesSetBackendService = TargetTCPProxiesSetBackendService'
+data TargetTCPProxiesSetBackendService =
+  TargetTCPProxiesSetBackendService'
     { _ttpsbsRequestId      :: !(Maybe Text)
     , _ttpsbsProject        :: !Text
     , _ttpsbsPayload        :: !TargetTCPProxiesSetBackendServiceRequest
     , _ttpsbsTargetTCPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,13 +89,14 @@
     -> Text -- ^ 'ttpsbsTargetTCPProxy'
     -> TargetTCPProxiesSetBackendService
 targetTCPProxiesSetBackendService pTtpsbsProject_ pTtpsbsPayload_ pTtpsbsTargetTCPProxy_ =
-    TargetTCPProxiesSetBackendService'
+  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
@@ -128,7 +132,8 @@
       (\ s a -> s{_ttpsbsTargetTCPProxy = a})
 
 instance GoogleRequest
-         TargetTCPProxiesSetBackendService where
+           TargetTCPProxiesSetBackendService
+         where
         type Rs TargetTCPProxiesSetBackendService = Operation
         type Scopes TargetTCPProxiesSetBackendService =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs
--- a/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs
+++ b/gen/Network/Google/Resource/Compute/TargetTCPProxies/SetProxyHeader.hs
@@ -61,13 +61,16 @@
 -- | Changes the ProxyHeaderType for TargetTcpProxy.
 --
 -- /See:/ 'targetTCPProxiesSetProxyHeader' smart constructor.
-data TargetTCPProxiesSetProxyHeader = TargetTCPProxiesSetProxyHeader'
+data TargetTCPProxiesSetProxyHeader =
+  TargetTCPProxiesSetProxyHeader'
     { _ttpsphRequestId      :: !(Maybe Text)
     , _ttpsphProject        :: !Text
     , _ttpsphPayload        :: !TargetTCPProxiesSetProxyHeaderRequest
     , _ttpsphTargetTCPProxy :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'ttpsphTargetTCPProxy'
     -> TargetTCPProxiesSetProxyHeader
 targetTCPProxiesSetProxyHeader pTtpsphProject_ pTtpsphPayload_ pTtpsphTargetTCPProxy_ =
-    TargetTCPProxiesSetProxyHeader'
+  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
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of target VPN gateways.
 --
 -- /See:/ 'targetVPNGatewaysAggregatedList' smart constructor.
-data TargetVPNGatewaysAggregatedList = TargetVPNGatewaysAggregatedList'
+data TargetVPNGatewaysAggregatedList =
+  TargetVPNGatewaysAggregatedList'
     { _tvgalOrderBy    :: !(Maybe Text)
     , _tvgalProject    :: !Text
     , _tvgalFilter     :: !(Maybe Text)
     , _tvgalPageToken  :: !(Maybe Text)
     , _tvgalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetVPNGatewaysAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,7 +90,7 @@
     :: Text -- ^ 'tvgalProject'
     -> TargetVPNGatewaysAggregatedList
 targetVPNGatewaysAggregatedList pTvgalProject_ =
-    TargetVPNGatewaysAggregatedList'
+  TargetVPNGatewaysAggregatedList'
     { _tvgalOrderBy = Nothing
     , _tvgalProject = pTvgalProject_
     , _tvgalFilter = Nothing
@@ -95,6 +98,7 @@
     , _tvgalMaxResults = 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
@@ -151,7 +155,8 @@
       . _Coerce
 
 instance GoogleRequest
-         TargetVPNGatewaysAggregatedList where
+           TargetVPNGatewaysAggregatedList
+         where
         type Rs TargetVPNGatewaysAggregatedList =
              TargetVPNGatewayAggregatedList
         type Scopes TargetVPNGatewaysAggregatedList =
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified target VPN gateway.
 --
 -- /See:/ 'targetVPNGatewaysDelete' smart constructor.
-data TargetVPNGatewaysDelete = TargetVPNGatewaysDelete'
+data TargetVPNGatewaysDelete =
+  TargetVPNGatewaysDelete'
     { _tvgdRequestId        :: !(Maybe Text)
     , _tvgdProject          :: !Text
     , _tvgdTargetVPNGateway :: !Text
     , _tvgdRegion           :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetVPNGatewaysDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'tvgdRegion'
     -> TargetVPNGatewaysDelete
 targetVPNGatewaysDelete pTvgdProject_ pTvgdTargetVPNGateway_ pTvgdRegion_ =
-    TargetVPNGatewaysDelete'
+  TargetVPNGatewaysDelete'
     { _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
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
@@ -60,12 +60,15 @@
 -- target VPN gateways by making a list() request.
 --
 -- /See:/ 'targetVPNGatewaysGet' smart constructor.
-data TargetVPNGatewaysGet = TargetVPNGatewaysGet'
+data TargetVPNGatewaysGet =
+  TargetVPNGatewaysGet'
     { _tvggProject          :: !Text
     , _tvggTargetVPNGateway :: !Text
     , _tvggRegion           :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetVPNGatewaysGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'tvggRegion'
     -> TargetVPNGatewaysGet
 targetVPNGatewaysGet pTvggProject_ pTvggTargetVPNGateway_ pTvggRegion_ =
-    TargetVPNGatewaysGet'
+  TargetVPNGatewaysGet'
     { _tvggProject = pTvggProject_
     , _tvggTargetVPNGateway = pTvggTargetVPNGateway_
     , _tvggRegion = pTvggRegion_
     }
+
 
 -- | Project ID for this request.
 tvggProject :: Lens' TargetVPNGatewaysGet Text
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
@@ -62,13 +62,16 @@
 -- the data included in the request.
 --
 -- /See:/ 'targetVPNGatewaysInsert' smart constructor.
-data TargetVPNGatewaysInsert = TargetVPNGatewaysInsert'
+data TargetVPNGatewaysInsert =
+  TargetVPNGatewaysInsert'
     { _tvgiRequestId :: !(Maybe Text)
     , _tvgiProject   :: !Text
     , _tvgiPayload   :: !TargetVPNGateway
     , _tvgiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'tvgiRegion'
     -> TargetVPNGatewaysInsert
 targetVPNGatewaysInsert pTvgiProject_ pTvgiPayload_ pTvgiRegion_ =
-    TargetVPNGatewaysInsert'
+  TargetVPNGatewaysInsert'
     { _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
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
@@ -66,15 +66,18 @@
 -- project and region.
 --
 -- /See:/ 'targetVPNGatewaysList' smart constructor.
-data TargetVPNGatewaysList = TargetVPNGatewaysList'
+data TargetVPNGatewaysList =
+  TargetVPNGatewaysList'
     { _tvglOrderBy    :: !(Maybe Text)
     , _tvglProject    :: !Text
     , _tvglFilter     :: !(Maybe Text)
     , _tvglRegion     :: !Text
     , _tvglPageToken  :: !(Maybe Text)
     , _tvglMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TargetVPNGatewaysList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'tvglRegion'
     -> TargetVPNGatewaysList
 targetVPNGatewaysList pTvglProject_ pTvglRegion_ =
-    TargetVPNGatewaysList'
+  TargetVPNGatewaysList'
     { _tvglOrderBy = Nothing
     , _tvglProject = pTvglProject_
     , _tvglFilter = Nothing
@@ -103,6 +106,7 @@
     , _tvglPageToken = Nothing
     , _tvglMaxResults = 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
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
@@ -57,12 +57,15 @@
 -- | Deletes the specified UrlMap resource.
 --
 -- /See:/ 'urlMapsDelete' smart constructor.
-data URLMapsDelete = URLMapsDelete'
+data URLMapsDelete =
+  URLMapsDelete'
     { _umdRequestId :: !(Maybe Text)
     , _umdURLMap    :: !Text
     , _umdProject   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'umdProject'
     -> URLMapsDelete
 urlMapsDelete pUmdURLMap_ pUmdProject_ =
-    URLMapsDelete'
+  URLMapsDelete'
     { _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
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
@@ -57,11 +57,14 @@
 -- by making a list() request.
 --
 -- /See:/ 'urlMapsGet' smart constructor.
-data URLMapsGet = URLMapsGet'
+data URLMapsGet =
+  URLMapsGet'
     { _umgURLMap  :: !Text
     , _umgProject :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'URLMapsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,8 @@
     -> Text -- ^ 'umgProject'
     -> URLMapsGet
 urlMapsGet pUmgURLMap_ pUmgProject_ =
-    URLMapsGet'
-    { _umgURLMap = pUmgURLMap_
-    , _umgProject = pUmgProject_
-    }
+  URLMapsGet' {_umgURLMap = pUmgURLMap_, _umgProject = pUmgProject_}
+
 
 -- | Name of the UrlMap resource to return.
 umgURLMap :: Lens' URLMapsGet Text
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
@@ -59,12 +59,15 @@
 -- included in the request.
 --
 -- /See:/ 'urlMapsInsert' smart constructor.
-data URLMapsInsert = URLMapsInsert'
+data URLMapsInsert =
+  URLMapsInsert'
     { _umiRequestId :: !(Maybe Text)
     , _umiProject   :: !Text
     , _umiPayload   :: !URLMap
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -79,11 +82,12 @@
     -> URLMap -- ^ 'umiPayload'
     -> URLMapsInsert
 urlMapsInsert pUmiProject_ pUmiPayload_ =
-    URLMapsInsert'
+  URLMapsInsert'
     { _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
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
@@ -63,13 +63,16 @@
 -- path, scoped to the specified UrlMap.
 --
 -- /See:/ 'urlMapsInvalidateCache' smart constructor.
-data URLMapsInvalidateCache = URLMapsInvalidateCache'
+data URLMapsInvalidateCache =
+  URLMapsInvalidateCache'
     { _umicRequestId :: !(Maybe Text)
     , _umicURLMap    :: !Text
     , _umicProject   :: !Text
     , _umicPayload   :: !CacheInvalidationRule
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> CacheInvalidationRule -- ^ 'umicPayload'
     -> URLMapsInvalidateCache
 urlMapsInvalidateCache pUmicURLMap_ pUmicProject_ pUmicPayload_ =
-    URLMapsInvalidateCache'
+  URLMapsInvalidateCache'
     { _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
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
@@ -63,14 +63,17 @@
 -- project.
 --
 -- /See:/ 'urlMapsList' smart constructor.
-data URLMapsList = URLMapsList'
+data URLMapsList =
+  URLMapsList'
     { _umlOrderBy    :: !(Maybe Text)
     , _umlProject    :: !Text
     , _umlFilter     :: !(Maybe Text)
     , _umlPageToken  :: !(Maybe Text)
     , _umlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'URLMapsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'umlProject'
     -> URLMapsList
 urlMapsList pUmlProject_ =
-    URLMapsList'
+  URLMapsList'
     { _umlOrderBy = Nothing
     , _umlProject = pUmlProject_
     , _umlFilter = Nothing
     , _umlPageToken = Nothing
     , _umlMaxResults = 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
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
@@ -63,13 +63,16 @@
 -- patch format and processing rules.
 --
 -- /See:/ 'urlMapsPatch' smart constructor.
-data URLMapsPatch = URLMapsPatch'
+data URLMapsPatch =
+  URLMapsPatch'
     { _umpRequestId :: !(Maybe Text)
     , _umpURLMap    :: !Text
     , _umpProject   :: !Text
     , _umpPayload   :: !URLMap
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -87,12 +90,13 @@
     -> URLMap -- ^ 'umpPayload'
     -> URLMapsPatch
 urlMapsPatch pUmpURLMap_ pUmpProject_ pUmpPayload_ =
-    URLMapsPatch'
+  URLMapsPatch'
     { _umpRequestId = Nothing
     , _umpURLMap = pUmpURLMap_
     , _umpProject = pUmpProject_
     , _umpPayload = pUmpPayload_
     }
+
 
 -- | 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
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
@@ -61,13 +61,16 @@
 -- request.
 --
 -- /See:/ 'urlMapsUpdate' smart constructor.
-data URLMapsUpdate = URLMapsUpdate'
+data URLMapsUpdate =
+  URLMapsUpdate'
     { _umuRequestId :: !(Maybe Text)
     , _umuURLMap    :: !Text
     , _umuProject   :: !Text
     , _umuPayload   :: !URLMap
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> URLMap -- ^ 'umuPayload'
     -> URLMapsUpdate
 urlMapsUpdate pUmuURLMap_ pUmuProject_ pUmuPayload_ =
-    URLMapsUpdate'
+  URLMapsUpdate'
     { _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
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs b/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs
--- a/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs
@@ -63,12 +63,15 @@
 -- UrlMap.
 --
 -- /See:/ 'urlMapsValidate' smart constructor.
-data URLMapsValidate = URLMapsValidate'
+data URLMapsValidate =
+  URLMapsValidate'
     { _umvURLMap  :: !Text
     , _umvProject :: !Text
     , _umvPayload :: !URLMapsValidateRequest
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'URLMapsValidate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,11 +87,12 @@
     -> URLMapsValidateRequest -- ^ 'umvPayload'
     -> URLMapsValidate
 urlMapsValidate pUmvURLMap_ pUmvProject_ pUmvPayload_ =
-    URLMapsValidate'
+  URLMapsValidate'
     { _umvURLMap = pUmvURLMap_
     , _umvProject = pUmvProject_
     , _umvPayload = pUmvPayload_
     }
+
 
 -- | Name of the UrlMap resource to be validated as.
 umvURLMap :: Lens' URLMapsValidate Text
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
@@ -62,14 +62,17 @@
 -- | Retrieves an aggregated list of VPN tunnels.
 --
 -- /See:/ 'vpnTunnelsAggregatedList' smart constructor.
-data VPNTunnelsAggregatedList = VPNTunnelsAggregatedList'
+data VPNTunnelsAggregatedList =
+  VPNTunnelsAggregatedList'
     { _vtalOrderBy    :: !(Maybe Text)
     , _vtalProject    :: !Text
     , _vtalFilter     :: !(Maybe Text)
     , _vtalPageToken  :: !(Maybe Text)
     , _vtalMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPNTunnelsAggregatedList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'vtalProject'
     -> VPNTunnelsAggregatedList
 vpnTunnelsAggregatedList pVtalProject_ =
-    VPNTunnelsAggregatedList'
+  VPNTunnelsAggregatedList'
     { _vtalOrderBy = Nothing
     , _vtalProject = pVtalProject_
     , _vtalFilter = Nothing
     , _vtalPageToken = Nothing
     , _vtalMaxResults = 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
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
@@ -59,13 +59,16 @@
 -- | Deletes the specified VpnTunnel resource.
 --
 -- /See:/ 'vpnTunnelsDelete' smart constructor.
-data VPNTunnelsDelete = VPNTunnelsDelete'
+data VPNTunnelsDelete =
+  VPNTunnelsDelete'
     { _vtdRequestId :: !(Maybe Text)
     , _vtdProject   :: !Text
     , _vtdVPNTunnel :: !Text
     , _vtdRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPNTunnelsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'vtdRegion'
     -> VPNTunnelsDelete
 vpnTunnelsDelete pVtdProject_ pVtdVPNTunnel_ pVtdRegion_ =
-    VPNTunnelsDelete'
+  VPNTunnelsDelete'
     { _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
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
@@ -59,12 +59,15 @@
 -- tunnels by making a list() request.
 --
 -- /See:/ 'vpnTunnelsGet' smart constructor.
-data VPNTunnelsGet = VPNTunnelsGet'
+data VPNTunnelsGet =
+  VPNTunnelsGet'
     { _vtgProject   :: !Text
     , _vtgVPNTunnel :: !Text
     , _vtgRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPNTunnelsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'vtgRegion'
     -> VPNTunnelsGet
 vpnTunnelsGet pVtgProject_ pVtgVPNTunnel_ pVtgRegion_ =
-    VPNTunnelsGet'
+  VPNTunnelsGet'
     { _vtgProject = pVtgProject_
     , _vtgVPNTunnel = pVtgVPNTunnel_
     , _vtgRegion = pVtgRegion_
     }
+
 
 -- | Project ID for this request.
 vtgProject :: Lens' VPNTunnelsGet Text
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
@@ -61,13 +61,16 @@
 -- the data included in the request.
 --
 -- /See:/ 'vpnTunnelsInsert' smart constructor.
-data VPNTunnelsInsert = VPNTunnelsInsert'
+data VPNTunnelsInsert =
+  VPNTunnelsInsert'
     { _vtiRequestId :: !(Maybe Text)
     , _vtiProject   :: !Text
     , _vtiPayload   :: !VPNTunnel
     , _vtiRegion    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  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:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'vtiRegion'
     -> VPNTunnelsInsert
 vpnTunnelsInsert pVtiProject_ pVtiPayload_ pVtiRegion_ =
-    VPNTunnelsInsert'
+  VPNTunnelsInsert'
     { _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
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
@@ -65,15 +65,18 @@
 -- project and region.
 --
 -- /See:/ 'vpnTunnelsList' smart constructor.
-data VPNTunnelsList = VPNTunnelsList'
+data VPNTunnelsList =
+  VPNTunnelsList'
     { _vtlOrderBy    :: !(Maybe Text)
     , _vtlProject    :: !Text
     , _vtlFilter     :: !(Maybe Text)
     , _vtlRegion     :: !Text
     , _vtlPageToken  :: !(Maybe Text)
     , _vtlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPNTunnelsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'vtlRegion'
     -> VPNTunnelsList
 vpnTunnelsList pVtlProject_ pVtlRegion_ =
-    VPNTunnelsList'
+  VPNTunnelsList'
     { _vtlOrderBy = Nothing
     , _vtlProject = pVtlProject_
     , _vtlFilter = Nothing
@@ -102,6 +105,7 @@
     , _vtlPageToken = Nothing
     , _vtlMaxResults = 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
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs
--- a/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes the specified zone-specific Operations resource.
 --
 -- /See:/ 'zoneOperationsDelete' smart constructor.
-data ZoneOperationsDelete = ZoneOperationsDelete'
+data ZoneOperationsDelete =
+  ZoneOperationsDelete'
     { _zodProject   :: !Text
     , _zodOperation :: !Text
     , _zodZone      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ZoneOperationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'zodZone'
     -> ZoneOperationsDelete
 zoneOperationsDelete pZodProject_ pZodOperation_ pZodZone_ =
-    ZoneOperationsDelete'
+  ZoneOperationsDelete'
     { _zodProject = pZodProject_
     , _zodOperation = pZodOperation_
     , _zodZone = pZodZone_
     }
+
 
 -- | Project ID for this request.
 zodProject :: Lens' ZoneOperationsDelete Text
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs
--- a/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs
@@ -57,12 +57,15 @@
 -- | Retrieves the specified zone-specific Operations resource.
 --
 -- /See:/ 'zoneOperationsGet' smart constructor.
-data ZoneOperationsGet = ZoneOperationsGet'
+data ZoneOperationsGet =
+  ZoneOperationsGet'
     { _zogProject   :: !Text
     , _zogOperation :: !Text
     , _zogZone      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ZoneOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'zogZone'
     -> ZoneOperationsGet
 zoneOperationsGet pZogProject_ pZogOperation_ pZogZone_ =
-    ZoneOperationsGet'
+  ZoneOperationsGet'
     { _zogProject = pZogProject_
     , _zogOperation = pZogOperation_
     , _zogZone = pZogZone_
     }
+
 
 -- | Project ID for this request.
 zogProject :: Lens' ZoneOperationsGet Text
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
@@ -65,15 +65,18 @@
 -- zone.
 --
 -- /See:/ 'zoneOperationsList' smart constructor.
-data ZoneOperationsList = ZoneOperationsList'
+data ZoneOperationsList =
+  ZoneOperationsList'
     { _zolOrderBy    :: !(Maybe Text)
     , _zolProject    :: !Text
     , _zolZone       :: !Text
     , _zolFilter     :: !(Maybe Text)
     , _zolPageToken  :: !(Maybe Text)
     , _zolMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ZoneOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> Text -- ^ 'zolZone'
     -> ZoneOperationsList
 zoneOperationsList pZolProject_ pZolZone_ =
-    ZoneOperationsList'
+  ZoneOperationsList'
     { _zolOrderBy = Nothing
     , _zolProject = pZolProject_
     , _zolZone = pZolZone_
@@ -102,6 +105,7 @@
     , _zolPageToken = Nothing
     , _zolMaxResults = 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
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
@@ -56,11 +56,14 @@
 -- making a list() request.
 --
 -- /See:/ 'zonesGet' smart constructor.
-data ZonesGet = ZonesGet'
+data ZonesGet =
+  ZonesGet'
     { _zgProject :: !Text
     , _zgZone    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ZonesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,8 @@
     -> Text -- ^ 'zgZone'
     -> ZonesGet
 zonesGet pZgProject_ pZgZone_ =
-    ZonesGet'
-    { _zgProject = pZgProject_
-    , _zgZone = pZgZone_
-    }
+  ZonesGet' {_zgProject = pZgProject_, _zgZone = pZgZone_}
+
 
 -- | Project ID for this request.
 zgProject :: Lens' ZonesGet Text
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
@@ -60,14 +60,17 @@
 -- | Retrieves the list of Zone resources available to the specified project.
 --
 -- /See:/ 'zonesList' smart constructor.
-data ZonesList = ZonesList'
+data ZonesList =
+  ZonesList'
     { _zlOrderBy    :: !(Maybe Text)
     , _zlProject    :: !Text
     , _zlFilter     :: !(Maybe Text)
     , _zlPageToken  :: !(Maybe Text)
     , _zlMaxResults :: !(Textual Word32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ZonesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,13 +88,14 @@
     :: Text -- ^ 'zlProject'
     -> ZonesList
 zonesList pZlProject_ =
-    ZonesList'
+  ZonesList'
     { _zlOrderBy = Nothing
     , _zlProject = pZlProject_
     , _zlFilter = Nothing
     , _zlPageToken = Nothing
     , _zlMaxResults = 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
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.4.0
+version:               0.5.0
 synopsis:              Google Compute Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -174,6 +174,7 @@
         , Network.Google.Resource.Compute.Instances.Get
         , Network.Google.Resource.Compute.Instances.GetIAMPolicy
         , Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+        , Network.Google.Resource.Compute.Instances.GetShieldedInstanceIdentity
         , Network.Google.Resource.Compute.Instances.Insert
         , Network.Google.Resource.Compute.Instances.List
         , Network.Google.Resource.Compute.Instances.ListReferrers
@@ -188,6 +189,7 @@
         , Network.Google.Resource.Compute.Instances.SetMinCPUPlatform
         , Network.Google.Resource.Compute.Instances.SetScheduling
         , Network.Google.Resource.Compute.Instances.SetServiceAccount
+        , Network.Google.Resource.Compute.Instances.SetShieldedInstanceIntegrityPolicy
         , Network.Google.Resource.Compute.Instances.SetTags
         , Network.Google.Resource.Compute.Instances.SimulateMaintenanceEvent
         , Network.Google.Resource.Compute.Instances.Start
@@ -196,6 +198,7 @@
         , Network.Google.Resource.Compute.Instances.TestIAMPermissions
         , Network.Google.Resource.Compute.Instances.UpdateAccessConfig
         , Network.Google.Resource.Compute.Instances.UpdateNetworkInterface
+        , Network.Google.Resource.Compute.Instances.UpdateShieldedInstanceConfig
         , Network.Google.Resource.Compute.InterconnectAttachments.AggregatedList
         , Network.Google.Resource.Compute.InterconnectAttachments.Delete
         , Network.Google.Resource.Compute.InterconnectAttachments.Get
@@ -222,6 +225,15 @@
         , Network.Google.Resource.Compute.MachineTypes.AggregatedList
         , Network.Google.Resource.Compute.MachineTypes.Get
         , Network.Google.Resource.Compute.MachineTypes.List
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.AggregatedList
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.AttachNetworkEndpoints
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.Delete
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.DetachNetworkEndpoints
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.Get
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.Insert
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.List
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.ListNetworkEndpoints
+        , Network.Google.Resource.Compute.NetworkEndpointGroups.TestIAMPermissions
         , Network.Google.Resource.Compute.Networks.AddPeering
         , Network.Google.Resource.Compute.Networks.Delete
         , Network.Google.Resource.Compute.Networks.Get
@@ -438,5 +450,5 @@
         , Network.Google.Compute.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
