packages feed

gogol-compute 0.1.0 → 0.1.1

raw patch · 89 files changed

+25155/−17578 lines, 89 filesdep ~gogol-corePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

- Network.Google.Compute: AH :: ForwardingRuleIPProtocol
- Network.Google.Compute: ClientIP :: TargetPoolSessionAffinity
- Network.Google.Compute: ClientIPProto :: TargetPoolSessionAffinity
- Network.Google.Compute: Esp :: ForwardingRuleIPProtocol
- Network.Google.Compute: Sctp :: ForwardingRuleIPProtocol
- Network.Google.Compute: Udp :: ForwardingRuleIPProtocol
- Network.Google.Compute: httphcCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute: httphcCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute: httphcDescription :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute: httphcHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute: httphcId :: Lens' HTTPHealthCheck (Maybe Word64)
- Network.Google.Compute: httphcKind :: Lens' HTTPHealthCheck Text
- Network.Google.Compute: httphcName :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute: httphcSelfLink :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute: httphcTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute: httphcUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute: rDestRange :: Lens' Route (Maybe Text)
- Network.Google.Compute: rNextHopGateway :: Lens' Route (Maybe Text)
- Network.Google.Compute: rNextHopIP :: Lens' Route (Maybe Text)
- Network.Google.Compute: rNextHopInstance :: Lens' Route (Maybe Text)
- Network.Google.Compute: rNextHopNetwork :: Lens' Route (Maybe Text)
- Network.Google.Compute: rNextHopVPNTunnel :: Lens' Route (Maybe Text)
- Network.Google.Compute: rPriority :: Lens' Route (Maybe Word32)
- Network.Google.Compute: rTags :: Lens' Route [Text]
- Network.Google.Compute: rWarnings :: Lens' Route [RouteWarningsItem]
- Network.Google.Compute.Types: AH :: ForwardingRuleIPProtocol
- Network.Google.Compute.Types: ClientIP :: TargetPoolSessionAffinity
- Network.Google.Compute.Types: ClientIPProto :: TargetPoolSessionAffinity
- Network.Google.Compute.Types: Esp :: ForwardingRuleIPProtocol
- Network.Google.Compute.Types: Sctp :: ForwardingRuleIPProtocol
- Network.Google.Compute.Types: Udp :: ForwardingRuleIPProtocol
- Network.Google.Compute.Types: httphcCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute.Types: httphcCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute.Types: httphcDescription :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute.Types: httphcHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute.Types: httphcId :: Lens' HTTPHealthCheck (Maybe Word64)
- Network.Google.Compute.Types: httphcKind :: Lens' HTTPHealthCheck Text
- Network.Google.Compute.Types: httphcName :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute.Types: httphcSelfLink :: Lens' HTTPHealthCheck (Maybe Text)
- Network.Google.Compute.Types: httphcTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute.Types: httphcUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
- Network.Google.Compute.Types: rDestRange :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rNextHopGateway :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rNextHopIP :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rNextHopInstance :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rNextHopNetwork :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rNextHopVPNTunnel :: Lens' Route (Maybe Text)
- Network.Google.Compute.Types: rPriority :: Lens' Route (Maybe Word32)
- Network.Google.Compute.Types: rTags :: Lens' Route [Text]
- Network.Google.Compute.Types: rWarnings :: Lens' Route [RouteWarningsItem]
- Network.Google.Resource.Compute.Addresses.Delete: aaAddress :: Lens' AddressesDelete Text
- Network.Google.Resource.Compute.Addresses.Delete: aaProject :: Lens' AddressesDelete Text
- Network.Google.Resource.Compute.Addresses.Delete: aaRegion :: Lens' AddressesDelete Text
- Network.Google.Resource.Compute.Regions.List: rFilter :: Lens' RegionsList (Maybe Text)
- Network.Google.Resource.Compute.Regions.List: rMaxResults :: Lens' RegionsList Word32
- Network.Google.Resource.Compute.Regions.List: rPageToken :: Lens' RegionsList (Maybe Text)
- Network.Google.Resource.Compute.Regions.List: rProject :: Lens' RegionsList Text
- Network.Google.Resource.Compute.Routes.Get: rouProject :: Lens' RoutesGet Text
- Network.Google.Resource.Compute.Routes.Get: rouRoute :: Lens' RoutesGet Text
- Network.Google.Resource.Compute.Routes.Insert: riPayload :: Lens' RoutesInsert Route
- Network.Google.Resource.Compute.Routes.Insert: riProject :: Lens' RoutesInsert Text
- Network.Google.Resource.Compute.Routes.List: rlFilter :: Lens' RoutesList (Maybe Text)
- Network.Google.Resource.Compute.Routes.List: rlMaxResults :: Lens' RoutesList Word32
- Network.Google.Resource.Compute.Routes.List: rlPageToken :: Lens' RoutesList (Maybe Text)
- Network.Google.Resource.Compute.Routes.List: rlProject :: Lens' RoutesList Text
+ Network.Google.Compute: AFieldValueOverriden :: AutoscalersScopedListWarningCode
+ Network.Google.Compute: ASLWCFieldValueOverriden :: AddressesScopedListWarningCode
+ Network.Google.Compute: BSSAClientIP :: BackendServiceSessionAffinity
+ Network.Google.Compute: BSSAClientIPProto :: BackendServiceSessionAffinity
+ Network.Google.Compute: BSSAGeneratedCookie :: BackendServiceSessionAffinity
+ Network.Google.Compute: BSSANone :: BackendServiceSessionAffinity
+ Network.Google.Compute: Connection :: BackendBalancingMode
+ Network.Google.Compute: DSLWCFieldValueOverriden :: DisksScopedListWarningCode
+ Network.Google.Compute: DTSLWCFieldValueOverriden :: DiskTypesScopedListWarningCode
+ Network.Google.Compute: FRIPAH :: ForwardingRuleIPProtocol
+ Network.Google.Compute: FRIPEsp :: ForwardingRuleIPProtocol
+ Network.Google.Compute: FRIPSctp :: ForwardingRuleIPProtocol
+ Network.Google.Compute: FRIPTCP :: ForwardingRuleIPProtocol
+ Network.Google.Compute: FRIPUdp :: ForwardingRuleIPProtocol
+ Network.Google.Compute: FRSLWCFieldValueOverriden :: ForwardingRulesScopedListWarningCode
+ Network.Google.Compute: FieldValueOverriden :: OperationWarningsItemCode
+ Network.Google.Compute: HCTHTTP :: HealthCheckType
+ Network.Google.Compute: HCTHTTP2 :: HealthCheckType
+ Network.Google.Compute: HCTHTTPS :: HealthCheckType
+ Network.Google.Compute: HCTInvalid :: HealthCheckType
+ Network.Google.Compute: HCTSSL :: HealthCheckType
+ Network.Google.Compute: HCTTCP :: HealthCheckType
+ Network.Google.Compute: HTTPHCPHNone :: HTTP2HealthCheckProxyHeader
+ Network.Google.Compute: HTTPHCPHProxyV1 :: HTTP2HealthCheckProxyHeader
+ Network.Google.Compute: IGMSLWCFieldValueOverriden :: InstanceGroupManagersScopedListWarningCode
+ Network.Google.Compute: IGSLWCFieldValueOverriden :: InstanceGroupsScopedListWarningCode
+ Network.Google.Compute: ISLWCFieldValueOverriden :: InstancesScopedListWarningCode
+ Network.Google.Compute: MICACreatingWithoutRetries :: ManagedInstanceCurrentAction
+ Network.Google.Compute: MTSLWCFieldValueOverriden :: MachineTypesScopedListWarningCode
+ Network.Google.Compute: OSLWCFieldValueOverriden :: OperationsScopedListWarningCode
+ Network.Google.Compute: PreemptibleCPUs :: QuotaMetric
+ Network.Google.Compute: ProxyV1 :: TargetSSLProxyProxyHeader
+ Network.Google.Compute: RSBPSSDown :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute: RSBPSSUP :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute: RSBPSSUnknown :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute: RSLWCCleanupFailed :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCDeprecatedResourceUsed :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCDiskSizeLargerThanImageSize :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCFieldValueOverriden :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCInjectedKernelsDeprecated :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNextHopAddressNotAssigned :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNextHopCannotIPForward :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNextHopInstanceNotFound :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNextHopInstanceNotOnNetwork :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNextHopNotRunning :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNoResultsOnPage :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCNotCriticalError :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCRequiredTosAgreement :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCResourceNotDeleted :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCSingleInstancePropertyTemplate :: RoutersScopedListWarningCode
+ Network.Google.Compute: RSLWCUnreachable :: RoutersScopedListWarningCode
+ Network.Google.Compute: RWICFieldValueOverriden :: RouteWarningsItemCode
+ Network.Google.Compute: RegionalAutoscalers :: QuotaMetric
+ Network.Google.Compute: RegionalInstanceGroupManagers :: QuotaMetric
+ Network.Google.Compute: Routers :: QuotaMetric
+ Network.Google.Compute: SHCPHNone :: SSLHealthCheckProxyHeader
+ Network.Google.Compute: SHCPHProxyV1 :: SSLHealthCheckProxyHeader
+ Network.Google.Compute: SSL :: BackendServiceProtocol
+ Network.Google.Compute: SSLWCFieldValueOverriden :: SubnetworksScopedListWarningCode
+ Network.Google.Compute: THCPHNone :: TCPHealthCheckProxyHeader
+ Network.Google.Compute: THCPHProxyV1 :: TCPHealthCheckProxyHeader
+ Network.Google.Compute: TISLWCFieldValueOverriden :: TargetInstancesScopedListWarningCode
+ Network.Google.Compute: TPSAClientIP :: TargetPoolSessionAffinity
+ Network.Google.Compute: TPSAClientIPProto :: TargetPoolSessionAffinity
+ Network.Google.Compute: TPSAGeneratedCookie :: TargetPoolSessionAffinity
+ Network.Google.Compute: TPSANone :: TargetPoolSessionAffinity
+ Network.Google.Compute: TPSLWCFieldValueOverriden :: TargetPoolsScopedListWarningCode
+ Network.Google.Compute: TSPSPHRPHNone :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute: TSPSPHRPHProxyV1 :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute: TVGSLWCFieldValueOverriden :: TargetVPNGatewaysScopedListWarningCode
+ Network.Google.Compute: TargetSSLProxies :: QuotaMetric
+ Network.Google.Compute: VTSLWCFieldValueOverriden :: VPNTunnelsScopedListWarningCode
+ Network.Google.Compute: aaRegion :: Lens' Autoscaler (Maybe Text)
+ Network.Google.Compute: adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: bMaxConnections :: Lens' Backend (Maybe Int32)
+ Network.Google.Compute: bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)
+ Network.Google.Compute: bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
+ Network.Google.Compute: bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)
+ Network.Google.Compute: bsEnableCDN :: Lens' BackendService (Maybe Bool)
+ Network.Google.Compute: bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)
+ Network.Google.Compute: cacheInvalidationRule :: CacheInvalidationRule
+ Network.Google.Compute: cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
+ Network.Google.Compute: cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)
+ Network.Google.Compute: cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)
+ Network.Google.Compute: cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)
+ Network.Google.Compute: cirPath :: Lens' CacheInvalidationRule (Maybe Text)
+ Network.Google.Compute: connectionDraining :: ConnectionDraining
+ Network.Google.Compute: customerEncryptionKey :: CustomerEncryptionKey
+ Network.Google.Compute: customerEncryptionKeyProtectedDisk :: CustomerEncryptionKeyProtectedDisk
+ Network.Google.Compute: dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: data BackendServiceSessionAffinity
+ Network.Google.Compute: data CacheInvalidationRule
+ Network.Google.Compute: data ConnectionDraining
+ Network.Google.Compute: data CustomerEncryptionKey
+ Network.Google.Compute: data CustomerEncryptionKeyProtectedDisk
+ Network.Google.Compute: data HTTP2HealthCheck
+ Network.Google.Compute: data HTTP2HealthCheckProxyHeader
+ Network.Google.Compute: data HealthCheck
+ Network.Google.Compute: data HealthCheckList
+ Network.Google.Compute: data HealthCheckType
+ Network.Google.Compute: data InstancesStartWithEncryptionKeyRequest
+ Network.Google.Compute: data Router
+ Network.Google.Compute: data RouterAggregatedList
+ Network.Google.Compute: data RouterAggregatedListItems
+ Network.Google.Compute: data RouterBGP
+ Network.Google.Compute: data RouterBGPPeer
+ Network.Google.Compute: data RouterInterface
+ Network.Google.Compute: data RouterList
+ Network.Google.Compute: data RouterStatus
+ Network.Google.Compute: data RouterStatusBGPPeerStatus
+ Network.Google.Compute: data RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute: data RouterStatusResponse
+ Network.Google.Compute: data RoutersPreviewResponse
+ Network.Google.Compute: data RoutersScopedList
+ Network.Google.Compute: data RoutersScopedListWarning
+ Network.Google.Compute: data RoutersScopedListWarningCode
+ Network.Google.Compute: data RoutersScopedListWarningDataItem
+ Network.Google.Compute: data SSLHealthCheck
+ Network.Google.Compute: data SSLHealthCheckProxyHeader
+ Network.Google.Compute: data TCPHealthCheck
+ Network.Google.Compute: data TCPHealthCheckProxyHeader
+ Network.Google.Compute: data TargetSSLProxiesSetBackendServiceRequest
+ Network.Google.Compute: data TargetSSLProxiesSetProxyHeaderRequest
+ Network.Google.Compute: data TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute: data TargetSSLProxiesSetSSLCertificatesRequest
+ Network.Google.Compute: data TargetSSLProxy
+ Network.Google.Compute: data TargetSSLProxyList
+ Network.Google.Compute: data TargetSSLProxyProxyHeader
+ Network.Google.Compute: hCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: hCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hDescription :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: hHost :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hId :: Lens' HTTPHealthCheck (Maybe Word64)
+ Network.Google.Compute: hKind :: Lens' HTTPHealthCheck Text
+ Network.Google.Compute: hName :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hPort :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: hRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hSelfLink :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: hTTP2HealthCheck :: HTTP2HealthCheck
+ Network.Google.Compute: hTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: hUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute: hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute: hcDescription :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute: hcHTTP2HealthCheck :: Lens' HealthCheck (Maybe HTTP2HealthCheck)
+ Network.Google.Compute: hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)
+ Network.Google.Compute: hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)
+ Network.Google.Compute: hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute: hcId :: Lens' HealthCheck (Maybe Word64)
+ Network.Google.Compute: hcKind :: Lens' HealthCheck Text
+ Network.Google.Compute: hcName :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute: hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)
+ Network.Google.Compute: hcSelfLink :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute: hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)
+ Network.Google.Compute: hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute: hcType :: Lens' HealthCheck (Maybe HealthCheckType)
+ Network.Google.Compute: hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute: hclId :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute: hclItems :: Lens' HealthCheckList [HealthCheck]
+ Network.Google.Compute: hclKind :: Lens' HealthCheckList Text
+ Network.Google.Compute: hclNextPageToken :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute: hclSelfLink :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute: healthCheck :: HealthCheck
+ Network.Google.Compute: healthCheckList :: HealthCheckList
+ Network.Google.Compute: httphcPortName :: Lens' HTTP2HealthCheck (Maybe Text)
+ Network.Google.Compute: httphcProxyHeader :: Lens' HTTP2HealthCheck (Maybe HTTP2HealthCheckProxyHeader)
+ Network.Google.Compute: iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: igmRegion :: Lens' InstanceGroupManager (Maybe Text)
+ Network.Google.Compute: igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+ Network.Google.Compute: iiRegion :: Lens' InstanceGroup (Maybe Text)
+ Network.Google.Compute: instancesStartWithEncryptionKeyRequest :: InstancesStartWithEncryptionKeyRequest
+ Network.Google.Compute: iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
+ Network.Google.Compute: mtIsSharedCPU :: Lens' MachineType (Maybe Bool)
+ Network.Google.Compute: pDefaultServiceAccount :: Lens' Project (Maybe Text)
+ Network.Google.Compute: rBGP :: Lens' Router (Maybe RouterBGP)
+ Network.Google.Compute: rBGPPeers :: Lens' Router [RouterBGPPeer]
+ Network.Google.Compute: rInterfaces :: Lens' Router [RouterInterface]
+ Network.Google.Compute: rRegion :: Lens' Router (Maybe Text)
+ Network.Google.Compute: ralId :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute: ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)
+ Network.Google.Compute: ralKind :: Lens' RouterAggregatedList Text
+ Network.Google.Compute: ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute: ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute: raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)
+ Network.Google.Compute: rbASN :: Lens' RouterBGP (Maybe Word32)
+ Network.Google.Compute: rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)
+ Network.Google.Compute: rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute: rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute: rbpName :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute: rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)
+ Network.Google.Compute: rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute: riIPRange :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute: riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute: riName :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute: rllId :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute: rllItems :: Lens' RouterList [Router]
+ Network.Google.Compute: rllKind :: Lens' RouterList Text
+ Network.Google.Compute: rllNextPageToken :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute: rllSelfLink :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute: rouCreationTimestamp :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouDescription :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouDestRange :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouId :: Lens' Route (Maybe Word64)
+ Network.Google.Compute: rouKind :: Lens' Route Text
+ Network.Google.Compute: rouName :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNextHopGateway :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNextHopIP :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNextHopInstance :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNextHopNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouNextHopVPNTunnel :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouPriority :: Lens' Route (Maybe Word32)
+ Network.Google.Compute: rouSelfLink :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rouTags :: Lens' Route [Text]
+ Network.Google.Compute: rouWarnings :: Lens' Route [RouteWarningsItem]
+ Network.Google.Compute: router :: Router
+ Network.Google.Compute: routerAggregatedList :: RouterAggregatedList
+ Network.Google.Compute: routerAggregatedListItems :: HashMap Text RoutersScopedList -> RouterAggregatedListItems
+ Network.Google.Compute: routerBGP :: RouterBGP
+ Network.Google.Compute: routerBGPPeer :: RouterBGPPeer
+ Network.Google.Compute: routerInterface :: RouterInterface
+ Network.Google.Compute: routerList :: RouterList
+ Network.Google.Compute: routerStatus :: RouterStatus
+ Network.Google.Compute: routerStatusBGPPeerStatus :: RouterStatusBGPPeerStatus
+ Network.Google.Compute: routerStatusResponse :: RouterStatusResponse
+ Network.Google.Compute: routersPreviewResponse :: RoutersPreviewResponse
+ Network.Google.Compute: routersScopedList :: RoutersScopedList
+ Network.Google.Compute: routersScopedListWarning :: RoutersScopedListWarning
+ Network.Google.Compute: routersScopedListWarningDataItem :: RoutersScopedListWarningDataItem
+ Network.Google.Compute: rprResource :: Lens' RoutersPreviewResponse (Maybe Router)
+ Network.Google.Compute: rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]
+ Network.Google.Compute: rsBestRoutes :: Lens' RouterStatus [Route]
+ Network.Google.Compute: rsNetwork :: Lens' RouterStatus (Maybe Text)
+ Network.Google.Compute: rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]
+ Network.Google.Compute: rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)
+ Network.Google.Compute: rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)
+ Network.Google.Compute: rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute: rslRouters :: Lens' RoutersScopedList [Router]
+ Network.Google.Compute: rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
+ Network.Google.Compute: rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)
+ Network.Google.Compute: rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]
+ Network.Google.Compute: rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)
+ Network.Google.Compute: rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+ Network.Google.Compute: rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+ Network.Google.Compute: rsrKind :: Lens' RouterStatusResponse Text
+ Network.Google.Compute: rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
+ Network.Google.Compute: sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+ Network.Google.Compute: shcPort :: Lens' SSLHealthCheck (Maybe Int32)
+ Network.Google.Compute: shcPortName :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute: shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)
+ Network.Google.Compute: shcRequest :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute: shcResponse :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute: sslHealthCheck :: SSLHealthCheck
+ Network.Google.Compute: targetSSLProxiesSetBackendServiceRequest :: TargetSSLProxiesSetBackendServiceRequest
+ Network.Google.Compute: targetSSLProxiesSetProxyHeaderRequest :: TargetSSLProxiesSetProxyHeaderRequest
+ Network.Google.Compute: targetSSLProxiesSetSSLCertificatesRequest :: TargetSSLProxiesSetSSLCertificatesRequest
+ Network.Google.Compute: targetSSLProxy :: TargetSSLProxy
+ Network.Google.Compute: targetSSLProxyList :: TargetSSLProxyList
+ Network.Google.Compute: tcpHealthCheck :: TCPHealthCheck
+ Network.Google.Compute: thcPort :: Lens' TCPHealthCheck (Maybe Int32)
+ Network.Google.Compute: thcPortName :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute: thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)
+ Network.Google.Compute: thcRequest :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute: thcResponse :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute: tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute: tspDescription :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute: tspId :: Lens' TargetSSLProxy (Maybe Word64)
+ Network.Google.Compute: tspKind :: Lens' TargetSSLProxy Text
+ Network.Google.Compute: tspName :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute: tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)
+ Network.Google.Compute: tspSSLCertificates :: Lens' TargetSSLProxy [Text]
+ Network.Google.Compute: tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute: tspService :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute: tsplId :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute: tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]
+ Network.Google.Compute: tsplKind :: Lens' TargetSSLProxyList Text
+ Network.Google.Compute: tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute: tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute: tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)
+ Network.Google.Compute: tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
+ Network.Google.Compute: tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
+ Network.Google.Compute: vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]
+ Network.Google.Compute: vtRouter :: Lens' VPNTunnel (Maybe Text)
+ Network.Google.Compute.Types: AFieldValueOverriden :: AutoscalersScopedListWarningCode
+ Network.Google.Compute.Types: ASLWCFieldValueOverriden :: AddressesScopedListWarningCode
+ Network.Google.Compute.Types: BSSAClientIP :: BackendServiceSessionAffinity
+ Network.Google.Compute.Types: BSSAClientIPProto :: BackendServiceSessionAffinity
+ Network.Google.Compute.Types: BSSAGeneratedCookie :: BackendServiceSessionAffinity
+ Network.Google.Compute.Types: BSSANone :: BackendServiceSessionAffinity
+ Network.Google.Compute.Types: Connection :: BackendBalancingMode
+ Network.Google.Compute.Types: DSLWCFieldValueOverriden :: DisksScopedListWarningCode
+ Network.Google.Compute.Types: DTSLWCFieldValueOverriden :: DiskTypesScopedListWarningCode
+ Network.Google.Compute.Types: FRIPAH :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: FRIPEsp :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: FRIPSctp :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: FRIPTCP :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: FRIPUdp :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: FRSLWCFieldValueOverriden :: ForwardingRulesScopedListWarningCode
+ Network.Google.Compute.Types: FieldValueOverriden :: OperationWarningsItemCode
+ Network.Google.Compute.Types: HCTHTTP :: HealthCheckType
+ Network.Google.Compute.Types: HCTHTTP2 :: HealthCheckType
+ Network.Google.Compute.Types: HCTHTTPS :: HealthCheckType
+ Network.Google.Compute.Types: HCTInvalid :: HealthCheckType
+ Network.Google.Compute.Types: HCTSSL :: HealthCheckType
+ Network.Google.Compute.Types: HCTTCP :: HealthCheckType
+ Network.Google.Compute.Types: HTTPHCPHNone :: HTTP2HealthCheckProxyHeader
+ Network.Google.Compute.Types: HTTPHCPHProxyV1 :: HTTP2HealthCheckProxyHeader
+ Network.Google.Compute.Types: IGMSLWCFieldValueOverriden :: InstanceGroupManagersScopedListWarningCode
+ Network.Google.Compute.Types: IGSLWCFieldValueOverriden :: InstanceGroupsScopedListWarningCode
+ Network.Google.Compute.Types: ISLWCFieldValueOverriden :: InstancesScopedListWarningCode
+ Network.Google.Compute.Types: MICACreatingWithoutRetries :: ManagedInstanceCurrentAction
+ Network.Google.Compute.Types: MTSLWCFieldValueOverriden :: MachineTypesScopedListWarningCode
+ Network.Google.Compute.Types: OSLWCFieldValueOverriden :: OperationsScopedListWarningCode
+ Network.Google.Compute.Types: PreemptibleCPUs :: QuotaMetric
+ Network.Google.Compute.Types: ProxyV1 :: TargetSSLProxyProxyHeader
+ Network.Google.Compute.Types: RSBPSSDown :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute.Types: RSBPSSUP :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute.Types: RSBPSSUnknown :: RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute.Types: RSLWCCleanupFailed :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCDeprecatedResourceUsed :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCDiskSizeLargerThanImageSize :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCFieldValueOverriden :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCInjectedKernelsDeprecated :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNextHopAddressNotAssigned :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNextHopCannotIPForward :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNextHopInstanceNotFound :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNextHopInstanceNotOnNetwork :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNextHopNotRunning :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNoResultsOnPage :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCNotCriticalError :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCRequiredTosAgreement :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCResourceNotDeleted :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCSingleInstancePropertyTemplate :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RSLWCUnreachable :: RoutersScopedListWarningCode
+ Network.Google.Compute.Types: RWICFieldValueOverriden :: RouteWarningsItemCode
+ Network.Google.Compute.Types: RegionalAutoscalers :: QuotaMetric
+ Network.Google.Compute.Types: RegionalInstanceGroupManagers :: QuotaMetric
+ Network.Google.Compute.Types: Routers :: QuotaMetric
+ Network.Google.Compute.Types: SHCPHNone :: SSLHealthCheckProxyHeader
+ Network.Google.Compute.Types: SHCPHProxyV1 :: SSLHealthCheckProxyHeader
+ Network.Google.Compute.Types: SSL :: BackendServiceProtocol
+ Network.Google.Compute.Types: SSLWCFieldValueOverriden :: SubnetworksScopedListWarningCode
+ Network.Google.Compute.Types: THCPHNone :: TCPHealthCheckProxyHeader
+ Network.Google.Compute.Types: THCPHProxyV1 :: TCPHealthCheckProxyHeader
+ Network.Google.Compute.Types: TISLWCFieldValueOverriden :: TargetInstancesScopedListWarningCode
+ Network.Google.Compute.Types: TPSAClientIP :: TargetPoolSessionAffinity
+ Network.Google.Compute.Types: TPSAClientIPProto :: TargetPoolSessionAffinity
+ Network.Google.Compute.Types: TPSAGeneratedCookie :: TargetPoolSessionAffinity
+ Network.Google.Compute.Types: TPSANone :: TargetPoolSessionAffinity
+ Network.Google.Compute.Types: TPSLWCFieldValueOverriden :: TargetPoolsScopedListWarningCode
+ Network.Google.Compute.Types: TSPSPHRPHNone :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute.Types: TSPSPHRPHProxyV1 :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute.Types: TVGSLWCFieldValueOverriden :: TargetVPNGatewaysScopedListWarningCode
+ Network.Google.Compute.Types: TargetSSLProxies :: QuotaMetric
+ Network.Google.Compute.Types: VTSLWCFieldValueOverriden :: VPNTunnelsScopedListWarningCode
+ Network.Google.Compute.Types: aaRegion :: Lens' Autoscaler (Maybe Text)
+ Network.Google.Compute.Types: adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: bMaxConnections :: Lens' Backend (Maybe Int32)
+ Network.Google.Compute.Types: bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)
+ Network.Google.Compute.Types: bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
+ Network.Google.Compute.Types: bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)
+ Network.Google.Compute.Types: bsEnableCDN :: Lens' BackendService (Maybe Bool)
+ Network.Google.Compute.Types: bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)
+ Network.Google.Compute.Types: cacheInvalidationRule :: CacheInvalidationRule
+ Network.Google.Compute.Types: cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
+ Network.Google.Compute.Types: cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)
+ Network.Google.Compute.Types: cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)
+ Network.Google.Compute.Types: cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)
+ Network.Google.Compute.Types: cirPath :: Lens' CacheInvalidationRule (Maybe Text)
+ Network.Google.Compute.Types: connectionDraining :: ConnectionDraining
+ Network.Google.Compute.Types: customerEncryptionKey :: CustomerEncryptionKey
+ Network.Google.Compute.Types: customerEncryptionKeyProtectedDisk :: CustomerEncryptionKeyProtectedDisk
+ Network.Google.Compute.Types: dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: data BackendServiceSessionAffinity
+ Network.Google.Compute.Types: data CacheInvalidationRule
+ Network.Google.Compute.Types: data ConnectionDraining
+ Network.Google.Compute.Types: data CustomerEncryptionKey
+ Network.Google.Compute.Types: data CustomerEncryptionKeyProtectedDisk
+ Network.Google.Compute.Types: data HTTP2HealthCheck
+ Network.Google.Compute.Types: data HTTP2HealthCheckProxyHeader
+ Network.Google.Compute.Types: data HealthCheck
+ Network.Google.Compute.Types: data HealthCheckList
+ Network.Google.Compute.Types: data HealthCheckType
+ Network.Google.Compute.Types: data InstancesStartWithEncryptionKeyRequest
+ Network.Google.Compute.Types: data Router
+ Network.Google.Compute.Types: data RouterAggregatedList
+ Network.Google.Compute.Types: data RouterAggregatedListItems
+ Network.Google.Compute.Types: data RouterBGP
+ Network.Google.Compute.Types: data RouterBGPPeer
+ Network.Google.Compute.Types: data RouterInterface
+ Network.Google.Compute.Types: data RouterList
+ Network.Google.Compute.Types: data RouterStatus
+ Network.Google.Compute.Types: data RouterStatusBGPPeerStatus
+ Network.Google.Compute.Types: data RouterStatusBGPPeerStatusStatus
+ Network.Google.Compute.Types: data RouterStatusResponse
+ Network.Google.Compute.Types: data RoutersPreviewResponse
+ Network.Google.Compute.Types: data RoutersScopedList
+ Network.Google.Compute.Types: data RoutersScopedListWarning
+ Network.Google.Compute.Types: data RoutersScopedListWarningCode
+ Network.Google.Compute.Types: data RoutersScopedListWarningDataItem
+ Network.Google.Compute.Types: data SSLHealthCheck
+ Network.Google.Compute.Types: data SSLHealthCheckProxyHeader
+ Network.Google.Compute.Types: data TCPHealthCheck
+ Network.Google.Compute.Types: data TCPHealthCheckProxyHeader
+ Network.Google.Compute.Types: data TargetSSLProxiesSetBackendServiceRequest
+ Network.Google.Compute.Types: data TargetSSLProxiesSetProxyHeaderRequest
+ Network.Google.Compute.Types: data TargetSSLProxiesSetProxyHeaderRequestProxyHeader
+ Network.Google.Compute.Types: data TargetSSLProxiesSetSSLCertificatesRequest
+ Network.Google.Compute.Types: data TargetSSLProxy
+ Network.Google.Compute.Types: data TargetSSLProxyList
+ Network.Google.Compute.Types: data TargetSSLProxyProxyHeader
+ Network.Google.Compute.Types: hCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hDescription :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hHost :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hId :: Lens' HTTPHealthCheck (Maybe Word64)
+ Network.Google.Compute.Types: hKind :: Lens' HTTPHealthCheck Text
+ Network.Google.Compute.Types: hName :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hPort :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hSelfLink :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hTTP2HealthCheck :: HTTP2HealthCheck
+ Network.Google.Compute.Types: hTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hcDescription :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hcHTTP2HealthCheck :: Lens' HealthCheck (Maybe HTTP2HealthCheck)
+ Network.Google.Compute.Types: hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)
+ Network.Google.Compute.Types: hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)
+ Network.Google.Compute.Types: hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hcId :: Lens' HealthCheck (Maybe Word64)
+ Network.Google.Compute.Types: hcKind :: Lens' HealthCheck Text
+ Network.Google.Compute.Types: hcName :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)
+ Network.Google.Compute.Types: hcSelfLink :: Lens' HealthCheck (Maybe Text)
+ Network.Google.Compute.Types: hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)
+ Network.Google.Compute.Types: hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hcType :: Lens' HealthCheck (Maybe HealthCheckType)
+ Network.Google.Compute.Types: hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: hclId :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute.Types: hclItems :: Lens' HealthCheckList [HealthCheck]
+ Network.Google.Compute.Types: hclKind :: Lens' HealthCheckList Text
+ Network.Google.Compute.Types: hclNextPageToken :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute.Types: hclSelfLink :: Lens' HealthCheckList (Maybe Text)
+ Network.Google.Compute.Types: healthCheck :: HealthCheck
+ Network.Google.Compute.Types: healthCheckList :: HealthCheckList
+ Network.Google.Compute.Types: httphcPortName :: Lens' HTTP2HealthCheck (Maybe Text)
+ Network.Google.Compute.Types: httphcProxyHeader :: Lens' HTTP2HealthCheck (Maybe HTTP2HealthCheckProxyHeader)
+ Network.Google.Compute.Types: iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: igmRegion :: Lens' InstanceGroupManager (Maybe Text)
+ Network.Google.Compute.Types: igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+ Network.Google.Compute.Types: iiRegion :: Lens' InstanceGroup (Maybe Text)
+ Network.Google.Compute.Types: instancesStartWithEncryptionKeyRequest :: InstancesStartWithEncryptionKeyRequest
+ Network.Google.Compute.Types: iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
+ Network.Google.Compute.Types: mtIsSharedCPU :: Lens' MachineType (Maybe Bool)
+ Network.Google.Compute.Types: pDefaultServiceAccount :: Lens' Project (Maybe Text)
+ Network.Google.Compute.Types: rBGP :: Lens' Router (Maybe RouterBGP)
+ Network.Google.Compute.Types: rBGPPeers :: Lens' Router [RouterBGPPeer]
+ Network.Google.Compute.Types: rInterfaces :: Lens' Router [RouterInterface]
+ Network.Google.Compute.Types: rRegion :: Lens' Router (Maybe Text)
+ Network.Google.Compute.Types: ralId :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute.Types: ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)
+ Network.Google.Compute.Types: ralKind :: Lens' RouterAggregatedList Text
+ Network.Google.Compute.Types: ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute.Types: ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)
+ Network.Google.Compute.Types: raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)
+ Network.Google.Compute.Types: rbASN :: Lens' RouterBGP (Maybe Word32)
+ Network.Google.Compute.Types: rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)
+ Network.Google.Compute.Types: rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute.Types: rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute.Types: rbpName :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute.Types: rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)
+ Network.Google.Compute.Types: rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)
+ Network.Google.Compute.Types: riIPRange :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute.Types: riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute.Types: riName :: Lens' RouterInterface (Maybe Text)
+ Network.Google.Compute.Types: rllId :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute.Types: rllItems :: Lens' RouterList [Router]
+ Network.Google.Compute.Types: rllKind :: Lens' RouterList Text
+ Network.Google.Compute.Types: rllNextPageToken :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute.Types: rllSelfLink :: Lens' RouterList (Maybe Text)
+ Network.Google.Compute.Types: rouCreationTimestamp :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouDescription :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouDestRange :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouId :: Lens' Route (Maybe Word64)
+ Network.Google.Compute.Types: rouKind :: Lens' Route Text
+ Network.Google.Compute.Types: rouName :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNextHopGateway :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNextHopIP :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNextHopInstance :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNextHopNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouNextHopVPNTunnel :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouPriority :: Lens' Route (Maybe Word32)
+ Network.Google.Compute.Types: rouSelfLink :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rouTags :: Lens' Route [Text]
+ Network.Google.Compute.Types: rouWarnings :: Lens' Route [RouteWarningsItem]
+ Network.Google.Compute.Types: router :: Router
+ Network.Google.Compute.Types: routerAggregatedList :: RouterAggregatedList
+ Network.Google.Compute.Types: routerAggregatedListItems :: HashMap Text RoutersScopedList -> RouterAggregatedListItems
+ Network.Google.Compute.Types: routerBGP :: RouterBGP
+ Network.Google.Compute.Types: routerBGPPeer :: RouterBGPPeer
+ Network.Google.Compute.Types: routerInterface :: RouterInterface
+ Network.Google.Compute.Types: routerList :: RouterList
+ Network.Google.Compute.Types: routerStatus :: RouterStatus
+ Network.Google.Compute.Types: routerStatusBGPPeerStatus :: RouterStatusBGPPeerStatus
+ Network.Google.Compute.Types: routerStatusResponse :: RouterStatusResponse
+ Network.Google.Compute.Types: routersPreviewResponse :: RoutersPreviewResponse
+ Network.Google.Compute.Types: routersScopedList :: RoutersScopedList
+ Network.Google.Compute.Types: routersScopedListWarning :: RoutersScopedListWarning
+ Network.Google.Compute.Types: routersScopedListWarningDataItem :: RoutersScopedListWarningDataItem
+ Network.Google.Compute.Types: rprResource :: Lens' RoutersPreviewResponse (Maybe Router)
+ Network.Google.Compute.Types: rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]
+ Network.Google.Compute.Types: rsBestRoutes :: Lens' RouterStatus [Route]
+ Network.Google.Compute.Types: rsNetwork :: Lens' RouterStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]
+ Network.Google.Compute.Types: rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)
+ Network.Google.Compute.Types: rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)
+ Network.Google.Compute.Types: rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
+ Network.Google.Compute.Types: rslRouters :: Lens' RoutersScopedList [Router]
+ Network.Google.Compute.Types: rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
+ Network.Google.Compute.Types: rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)
+ Network.Google.Compute.Types: rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]
+ Network.Google.Compute.Types: rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)
+ Network.Google.Compute.Types: rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+ Network.Google.Compute.Types: rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)
+ Network.Google.Compute.Types: rsrKind :: Lens' RouterStatusResponse Text
+ Network.Google.Compute.Types: rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
+ Network.Google.Compute.Types: sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)
+ Network.Google.Compute.Types: shcPort :: Lens' SSLHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: shcPortName :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)
+ Network.Google.Compute.Types: shcRequest :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: shcResponse :: Lens' SSLHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: sslHealthCheck :: SSLHealthCheck
+ Network.Google.Compute.Types: targetSSLProxiesSetBackendServiceRequest :: TargetSSLProxiesSetBackendServiceRequest
+ Network.Google.Compute.Types: targetSSLProxiesSetProxyHeaderRequest :: TargetSSLProxiesSetProxyHeaderRequest
+ Network.Google.Compute.Types: targetSSLProxiesSetSSLCertificatesRequest :: TargetSSLProxiesSetSSLCertificatesRequest
+ Network.Google.Compute.Types: targetSSLProxy :: TargetSSLProxy
+ Network.Google.Compute.Types: targetSSLProxyList :: TargetSSLProxyList
+ Network.Google.Compute.Types: tcpHealthCheck :: TCPHealthCheck
+ Network.Google.Compute.Types: thcPort :: Lens' TCPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: thcPortName :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)
+ Network.Google.Compute.Types: thcRequest :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: thcResponse :: Lens' TCPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute.Types: tspDescription :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute.Types: tspId :: Lens' TargetSSLProxy (Maybe Word64)
+ Network.Google.Compute.Types: tspKind :: Lens' TargetSSLProxy Text
+ Network.Google.Compute.Types: tspName :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute.Types: tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)
+ Network.Google.Compute.Types: tspSSLCertificates :: Lens' TargetSSLProxy [Text]
+ Network.Google.Compute.Types: tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute.Types: tspService :: Lens' TargetSSLProxy (Maybe Text)
+ Network.Google.Compute.Types: tsplId :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute.Types: tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]
+ Network.Google.Compute.Types: tsplKind :: Lens' TargetSSLProxyList Text
+ Network.Google.Compute.Types: tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute.Types: tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)
+ Network.Google.Compute.Types: tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)
+ Network.Google.Compute.Types: tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
+ Network.Google.Compute.Types: tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
+ Network.Google.Compute.Types: vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]
+ Network.Google.Compute.Types: vtRouter :: Lens' VPNTunnel (Maybe Text)
+ Network.Google.Resource.Compute.Addresses.AggregatedList: aalOrderBy :: Lens' AddressesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Addresses.Delete: adddAddress :: Lens' AddressesDelete Text
+ Network.Google.Resource.Compute.Addresses.Delete: adddProject :: Lens' AddressesDelete Text
+ Network.Google.Resource.Compute.Addresses.Delete: adddRegion :: Lens' AddressesDelete Text
+ Network.Google.Resource.Compute.Addresses.List: alOrderBy :: Lens' AddressesList (Maybe Text)
+ Network.Google.Resource.Compute.Autoscalers.AggregatedList: autOrderBy :: Lens' AutoscalersAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Autoscalers.List: aOrderBy :: Lens' AutoscalersList (Maybe Text)
+ Network.Google.Resource.Compute.BackendServices.List: bslOrderBy :: Lens' BackendServicesList (Maybe Text)
+ Network.Google.Resource.Compute.DiskTypes.AggregatedList: dtalOrderBy :: Lens' DiskTypesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.DiskTypes.List: dtlOrderBy :: Lens' DiskTypesList (Maybe Text)
+ Network.Google.Resource.Compute.Disks.AggregatedList: dalOrderBy :: Lens' DisksAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Disks.List: dlOrderBy :: Lens' DisksList (Maybe Text)
+ Network.Google.Resource.Compute.Firewalls.List: flOrderBy :: Lens' FirewallsList (Maybe Text)
+ Network.Google.Resource.Compute.ForwardingRules.AggregatedList: fralOrderBy :: Lens' ForwardingRulesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.ForwardingRules.List: frlOrderBy :: Lens' ForwardingRulesList (Maybe Text)
+ Network.Google.Resource.Compute.GlobalAddresses.List: galOrderBy :: Lens' GlobalAddressesList (Maybe Text)
+ Network.Google.Resource.Compute.GlobalForwardingRules.List: gfrlOrderBy :: Lens' GlobalForwardingRulesList (Maybe Text)
+ Network.Google.Resource.Compute.GlobalOperations.AggregatedList: goalOrderBy :: Lens' GlobalOperationsAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.GlobalOperations.List: golOrderBy :: Lens' GlobalOperationsList (Maybe Text)
+ Network.Google.Resource.Compute.HTTPHealthChecks.List: httphclOrderBy :: Lens' HTTPHealthChecksList (Maybe Text)
+ Network.Google.Resource.Compute.HTTPSHealthChecks.List: hhclOrderBy :: Lens' HTTPSHealthChecksList (Maybe Text)
+ Network.Google.Resource.Compute.HealthChecks.Delete: data HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: hcdHealthCheck :: Lens' HealthChecksDelete Text
+ Network.Google.Resource.Compute.HealthChecks.Delete: hcdProject :: Lens' HealthChecksDelete Text
+ Network.Google.Resource.Compute.HealthChecks.Delete: healthChecksDelete :: Text -> Text -> HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
+ Network.Google.Resource.Compute.HealthChecks.Delete: type HealthChecksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))
+ Network.Google.Resource.Compute.HealthChecks.Get: data HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: hcgHealthCheck :: Lens' HealthChecksGet Text
+ Network.Google.Resource.Compute.HealthChecks.Get: hcgProject :: Lens' HealthChecksGet Text
+ Network.Google.Resource.Compute.HealthChecks.Get: healthChecksGet :: Text -> Text -> HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
+ Network.Google.Resource.Compute.HealthChecks.Get: type HealthChecksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] HealthCheck)))))))
+ Network.Google.Resource.Compute.HealthChecks.Insert: data HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: hciPayload :: Lens' HealthChecksInsert HealthCheck
+ Network.Google.Resource.Compute.HealthChecks.Insert: hciProject :: Lens' HealthChecksInsert Text
+ Network.Google.Resource.Compute.HealthChecks.Insert: healthChecksInsert :: Text -> HealthCheck -> HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
+ Network.Google.Resource.Compute.HealthChecks.Insert: type HealthChecksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Post '[JSON] Operation)))))))
+ Network.Google.Resource.Compute.HealthChecks.List: data HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: hclFilter :: Lens' HealthChecksList (Maybe Text)
+ Network.Google.Resource.Compute.HealthChecks.List: hclMaxResults :: Lens' HealthChecksList Word32
+ Network.Google.Resource.Compute.HealthChecks.List: hclOrderBy :: Lens' HealthChecksList (Maybe Text)
+ Network.Google.Resource.Compute.HealthChecks.List: hclPageToken :: Lens' HealthChecksList (Maybe Text)
+ Network.Google.Resource.Compute.HealthChecks.List: hclProject :: Lens' HealthChecksList Text
+ Network.Google.Resource.Compute.HealthChecks.List: healthChecksList :: Text -> HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
+ Network.Google.Resource.Compute.HealthChecks.List: type HealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HealthCheckList))))))))))
+ Network.Google.Resource.Compute.HealthChecks.Patch: data HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: hcpHealthCheck :: Lens' HealthChecksPatch Text
+ Network.Google.Resource.Compute.HealthChecks.Patch: hcpPayload :: Lens' HealthChecksPatch HealthCheck
+ Network.Google.Resource.Compute.HealthChecks.Patch: hcpProject :: Lens' HealthChecksPatch Text
+ Network.Google.Resource.Compute.HealthChecks.Patch: healthChecksPatch :: Text -> Text -> HealthCheck -> HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
+ Network.Google.Resource.Compute.HealthChecks.Patch: type HealthChecksPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Patch '[JSON] Operation))))))))
+ Network.Google.Resource.Compute.HealthChecks.Update: data HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: hcuHealthCheck :: Lens' HealthChecksUpdate Text
+ Network.Google.Resource.Compute.HealthChecks.Update: hcuPayload :: Lens' HealthChecksUpdate HealthCheck
+ Network.Google.Resource.Compute.HealthChecks.Update: hcuProject :: Lens' HealthChecksUpdate Text
+ Network.Google.Resource.Compute.HealthChecks.Update: healthChecksUpdate :: Text -> Text -> HealthCheck -> HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
+ Network.Google.Resource.Compute.HealthChecks.Update: type HealthChecksUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Put '[JSON] Operation))))))))
+ Network.Google.Resource.Compute.Images.List: illOrderBy :: Lens' ImagesList (Maybe Text)
+ Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList: igmalOrderBy :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.InstanceGroupManagers.List: igmlOrderBy :: Lens' InstanceGroupManagersList (Maybe Text)
+ Network.Google.Resource.Compute.InstanceGroups.AggregatedList: igalOrderBy :: Lens' InstanceGroupsAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.InstanceGroups.List: iglOrderBy :: Lens' InstanceGroupsList (Maybe Text)
+ Network.Google.Resource.Compute.InstanceGroups.ListInstances: igliOrderBy :: Lens' InstanceGroupsListInstances' (Maybe Text)
+ Network.Google.Resource.Compute.InstanceTemplates.List: itlOrderBy :: Lens' InstanceTemplatesList (Maybe Text)
+ Network.Google.Resource.Compute.Instances.AggregatedList: ialOrderBy :: Lens' InstancesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Instances.List: ilOrderBy :: Lens' InstancesList (Maybe Text)
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: data InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instance Data.Data.Data Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instance GHC.Show.Show Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: instancesStartWithEncryptionKey :: Text -> Text -> InstancesStartWithEncryptionKeyRequest -> Text -> InstancesStartWithEncryptionKey
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: iswekInstance :: Lens' InstancesStartWithEncryptionKey Text
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: iswekPayload :: Lens' InstancesStartWithEncryptionKey InstancesStartWithEncryptionKeyRequest
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: iswekProject :: Lens' InstancesStartWithEncryptionKey Text
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: iswekZone :: Lens' InstancesStartWithEncryptionKey Text
+ Network.Google.Resource.Compute.Instances.StartWithEncryptionKey: type InstancesStartWithEncryptionKeyResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("startWithEncryptionKey" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstancesStartWithEncryptionKeyRequest :> Post '[JSON] Operation))))))))))
+ Network.Google.Resource.Compute.MachineTypes.AggregatedList: mtalOrderBy :: Lens' MachineTypesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.MachineTypes.List: mtlOrderBy :: Lens' MachineTypesList (Maybe Text)
+ Network.Google.Resource.Compute.Networks.List: nlOrderBy :: Lens' NetworksList (Maybe Text)
+ Network.Google.Resource.Compute.RegionOperations.List: rolOrderBy :: Lens' RegionOperationsList (Maybe Text)
+ Network.Google.Resource.Compute.Regions.List: regFilter :: Lens' RegionsList (Maybe Text)
+ Network.Google.Resource.Compute.Regions.List: regMaxResults :: Lens' RegionsList Word32
+ Network.Google.Resource.Compute.Regions.List: regOrderBy :: Lens' RegionsList (Maybe Text)
+ Network.Google.Resource.Compute.Regions.List: regPageToken :: Lens' RegionsList (Maybe Text)
+ Network.Google.Resource.Compute.Regions.List: regProject :: Lens' RegionsList Text
+ Network.Google.Resource.Compute.Routers.AggregatedList: data RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: instance Data.Data.Data Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: ralFilter :: Lens' RoutersAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.AggregatedList: ralMaxResults :: Lens' RoutersAggregatedList Word32
+ Network.Google.Resource.Compute.Routers.AggregatedList: ralOrderBy :: Lens' RoutersAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.AggregatedList: ralPageToken :: Lens' RoutersAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.AggregatedList: ralProject :: Lens' RoutersAggregatedList Text
+ Network.Google.Resource.Compute.Routers.AggregatedList: routersAggregatedList :: Text -> RoutersAggregatedList
+ Network.Google.Resource.Compute.Routers.AggregatedList: type RoutersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("routers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterAggregatedList))))))))))
+ Network.Google.Resource.Compute.Routers.Delete: data RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: rddProject :: Lens' RoutersDelete Text
+ Network.Google.Resource.Compute.Routers.Delete: rddRegion :: Lens' RoutersDelete Text
+ Network.Google.Resource.Compute.Routers.Delete: rddRouter :: Lens' RoutersDelete Text
+ Network.Google.Resource.Compute.Routers.Delete: routersDelete :: Text -> Text -> Text -> RoutersDelete
+ Network.Google.Resource.Compute.Routers.Delete: type RoutersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))
+ Network.Google.Resource.Compute.Routers.Get: data RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Get.RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Get.RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Get.RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Get.RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Get.RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: rggProject :: Lens' RoutersGet Text
+ Network.Google.Resource.Compute.Routers.Get: rggRegion :: Lens' RoutersGet Text
+ Network.Google.Resource.Compute.Routers.Get: rggRouter :: Lens' RoutersGet Text
+ Network.Google.Resource.Compute.Routers.Get: routersGet :: Text -> Text -> Text -> RoutersGet
+ Network.Google.Resource.Compute.Routers.Get: type RoutersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Router))))))))
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: data RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: instance Data.Data.Data Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: rgrsProject :: Lens' RoutersGetRouterStatus Text
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: rgrsRegion :: Lens' RoutersGetRouterStatus Text
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: rgrsRouter :: Lens' RoutersGetRouterStatus Text
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: routersGetRouterStatus :: Text -> Text -> Text -> RoutersGetRouterStatus
+ Network.Google.Resource.Compute.Routers.GetRouterStatus: type RoutersGetRouterStatusResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> ("getRouterStatus" :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterStatusResponse)))))))))
+ Network.Google.Resource.Compute.Routers.Insert: data RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: riPayload :: Lens' RoutersInsert Router
+ Network.Google.Resource.Compute.Routers.Insert: riProject :: Lens' RoutersInsert Text
+ Network.Google.Resource.Compute.Routers.Insert: riRegion :: Lens' RoutersInsert Text
+ Network.Google.Resource.Compute.Routers.Insert: routersInsert :: Text -> Router -> Text -> RoutersInsert
+ Network.Google.Resource.Compute.Routers.Insert: type RoutersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Post '[JSON] Operation))))))))
+ Network.Google.Resource.Compute.Routers.List: data RoutersList
+ Network.Google.Resource.Compute.Routers.List: instance Data.Data.Data Network.Google.Resource.Compute.Routers.List.RoutersList
+ Network.Google.Resource.Compute.Routers.List: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.List.RoutersList
+ Network.Google.Resource.Compute.Routers.List: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.List.RoutersList
+ Network.Google.Resource.Compute.Routers.List: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.List.RoutersList
+ Network.Google.Resource.Compute.Routers.List: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.List.RoutersList
+ Network.Google.Resource.Compute.Routers.List: rlFilter :: Lens' RoutersList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.List: rlMaxResults :: Lens' RoutersList Word32
+ Network.Google.Resource.Compute.Routers.List: rlOrderBy :: Lens' RoutersList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.List: rlPageToken :: Lens' RoutersList (Maybe Text)
+ Network.Google.Resource.Compute.Routers.List: rlProject :: Lens' RoutersList Text
+ Network.Google.Resource.Compute.Routers.List: rlRegion :: Lens' RoutersList Text
+ Network.Google.Resource.Compute.Routers.List: routersList :: Text -> Text -> RoutersList
+ Network.Google.Resource.Compute.Routers.List: type RoutersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterList)))))))))))
+ Network.Google.Resource.Compute.Routers.Patch: data RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: routersPatch :: Text -> Text -> Router -> Text -> RoutersPatch
+ Network.Google.Resource.Compute.Routers.Patch: rpPayload :: Lens' RoutersPatch Router
+ Network.Google.Resource.Compute.Routers.Patch: rpProject :: Lens' RoutersPatch Text
+ Network.Google.Resource.Compute.Routers.Patch: rpRegion :: Lens' RoutersPatch Text
+ Network.Google.Resource.Compute.Routers.Patch: rpRouter :: Lens' RoutersPatch Text
+ Network.Google.Resource.Compute.Routers.Patch: type RoutersPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Patch '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.Routers.Preview: data RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: routersPreview :: Text -> Text -> Router -> Text -> RoutersPreview
+ Network.Google.Resource.Compute.Routers.Preview: rppPayload :: Lens' RoutersPreview Router
+ Network.Google.Resource.Compute.Routers.Preview: rppProject :: Lens' RoutersPreview Text
+ Network.Google.Resource.Compute.Routers.Preview: rppRegion :: Lens' RoutersPreview Text
+ Network.Google.Resource.Compute.Routers.Preview: rppRouter :: Lens' RoutersPreview Text
+ Network.Google.Resource.Compute.Routers.Preview: type RoutersPreviewResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> ("preview" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Post '[JSON] RoutersPreviewResponse))))))))))
+ Network.Google.Resource.Compute.Routers.Update: data RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: instance Data.Data.Data Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: routersUpdate :: Text -> Text -> Router -> Text -> RoutersUpdate
+ Network.Google.Resource.Compute.Routers.Update: ruPayload :: Lens' RoutersUpdate Router
+ Network.Google.Resource.Compute.Routers.Update: ruProject :: Lens' RoutersUpdate Text
+ Network.Google.Resource.Compute.Routers.Update: ruRegion :: Lens' RoutersUpdate Text
+ Network.Google.Resource.Compute.Routers.Update: ruRouter :: Lens' RoutersUpdate Text
+ Network.Google.Resource.Compute.Routers.Update: type RoutersUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Put '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.Routes.Get: rrProject :: Lens' RoutesGet Text
+ Network.Google.Resource.Compute.Routes.Get: rrRoute :: Lens' RoutesGet Text
+ Network.Google.Resource.Compute.Routes.Insert: rPayload :: Lens' RoutesInsert Route
+ Network.Google.Resource.Compute.Routes.Insert: rProject :: Lens' RoutesInsert Text
+ Network.Google.Resource.Compute.Routes.List: rouFilter :: Lens' RoutesList (Maybe Text)
+ Network.Google.Resource.Compute.Routes.List: rouMaxResults :: Lens' RoutesList Word32
+ Network.Google.Resource.Compute.Routes.List: rouOrderBy :: Lens' RoutesList (Maybe Text)
+ Network.Google.Resource.Compute.Routes.List: rouPageToken :: Lens' RoutesList (Maybe Text)
+ Network.Google.Resource.Compute.Routes.List: rouProject :: Lens' RoutesList Text
+ Network.Google.Resource.Compute.SSLCertificates.List: sclOrderBy :: Lens' SSLCertificatesList (Maybe Text)
+ Network.Google.Resource.Compute.Snapshots.List: sOrderBy :: Lens' SnapshotsList (Maybe Text)
+ Network.Google.Resource.Compute.Subnetworks.AggregatedList: salOrderBy :: Lens' SubnetworksAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.Subnetworks.List: slOrderBy :: Lens' SubnetworksList (Maybe Text)
+ Network.Google.Resource.Compute.TargetHTTPProxies.List: thttpplOrderBy :: Lens' TargetHTTPProxiesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetHTTPSProxies.List: thplOrderBy :: Lens' TargetHTTPSProxiesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetInstances.AggregatedList: tialOrderBy :: Lens' TargetInstancesAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.TargetInstances.List: tilOrderBy :: Lens' TargetInstancesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetPools.AggregatedList: tpalOrderBy :: Lens' TargetPoolsAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.TargetPools.List: tplOrderBy :: Lens' TargetPoolsList (Maybe Text)
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: data TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: targetSSLProxiesDelete :: Text -> Text -> TargetSSLProxiesDelete
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: tspdProject :: Lens' TargetSSLProxiesDelete Text
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: tspdTargetSSLProxy :: Lens' TargetSSLProxiesDelete Text
+ Network.Google.Resource.Compute.TargetSSLProxies.Delete: type TargetSSLProxiesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: data TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: targetSSLProxiesGet :: Text -> Text -> TargetSSLProxiesGet
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: tspgProject :: Lens' TargetSSLProxiesGet Text
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: tspgTargetSSLProxy :: Lens' TargetSSLProxiesGet Text
+ Network.Google.Resource.Compute.TargetSSLProxies.Get: type TargetSSLProxiesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetSSLProxy)))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: data TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: targetSSLProxiesInsert :: Text -> TargetSSLProxy -> TargetSSLProxiesInsert
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: tspiPayload :: Lens' TargetSSLProxiesInsert TargetSSLProxy
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: tspiProject :: Lens' TargetSSLProxiesInsert Text
+ Network.Google.Resource.Compute.TargetSSLProxies.Insert: type TargetSSLProxiesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxy :> Post '[JSON] Operation)))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.List: data TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: targetSSLProxiesList :: Text -> TargetSSLProxiesList
+ Network.Google.Resource.Compute.TargetSSLProxies.List: tsplFilter :: Lens' TargetSSLProxiesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetSSLProxies.List: tsplMaxResults :: Lens' TargetSSLProxiesList Word32
+ Network.Google.Resource.Compute.TargetSSLProxies.List: tsplOrderBy :: Lens' TargetSSLProxiesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetSSLProxies.List: tsplPageToken :: Lens' TargetSSLProxiesList (Maybe Text)
+ Network.Google.Resource.Compute.TargetSSLProxies.List: tsplProject :: Lens' TargetSSLProxiesList Text
+ Network.Google.Resource.Compute.TargetSSLProxies.List: type TargetSSLProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetSSLProxyList))))))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: data TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: targetSSLProxiesSetBackendService :: Text -> TargetSSLProxiesSetBackendServiceRequest -> Text -> TargetSSLProxiesSetBackendService
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: tspsbsPayload :: Lens' TargetSSLProxiesSetBackendService TargetSSLProxiesSetBackendServiceRequest
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: tspsbsProject :: Lens' TargetSSLProxiesSetBackendService Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: tspsbsTargetSSLProxy :: Lens' TargetSSLProxiesSetBackendService Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService: type TargetSSLProxiesSetBackendServiceResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setBackendService" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetBackendServiceRequest :> Post '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: data TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: targetSSLProxiesSetProxyHeader :: Text -> TargetSSLProxiesSetProxyHeaderRequest -> Text -> TargetSSLProxiesSetProxyHeader
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: tspsphPayload :: Lens' TargetSSLProxiesSetProxyHeader TargetSSLProxiesSetProxyHeaderRequest
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: tspsphProject :: Lens' TargetSSLProxiesSetProxyHeader Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: tspsphTargetSSLProxy :: Lens' TargetSSLProxiesSetProxyHeader Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader: type TargetSSLProxiesSetProxyHeaderResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setProxyHeader" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetProxyHeaderRequest :> Post '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: data TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: targetSSLProxiesSetSSLCertificates :: Text -> TargetSSLProxiesSetSSLCertificatesRequest -> Text -> TargetSSLProxiesSetSSLCertificates
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: tspsscPayload :: Lens' TargetSSLProxiesSetSSLCertificates TargetSSLProxiesSetSSLCertificatesRequest
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: tspsscProject :: Lens' TargetSSLProxiesSetSSLCertificates Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: tspsscTargetSSLProxy :: Lens' TargetSSLProxiesSetSSLCertificates Text
+ Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates: type TargetSSLProxiesSetSSLCertificatesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setSslCertificates" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetSSLCertificatesRequest :> Post '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList: tvgalOrderBy :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.TargetVPNGateways.List: tvglOrderBy :: Lens' TargetVPNGatewaysList (Maybe Text)
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: data URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: type URLMapsInvalidateCacheResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> ("invalidateCache" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CacheInvalidationRule :> Post '[JSON] Operation)))))))))
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: umicPayload :: Lens' URLMapsInvalidateCache CacheInvalidationRule
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: umicProject :: Lens' URLMapsInvalidateCache Text
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: umicURLMap :: Lens' URLMapsInvalidateCache Text
+ Network.Google.Resource.Compute.URLMaps.InvalidateCache: urlMapsInvalidateCache :: Text -> Text -> CacheInvalidationRule -> URLMapsInvalidateCache
+ Network.Google.Resource.Compute.URLMaps.List: umlOrderBy :: Lens' URLMapsList (Maybe Text)
+ Network.Google.Resource.Compute.VPNTunnels.AggregatedList: vtalOrderBy :: Lens' VPNTunnelsAggregatedList (Maybe Text)
+ Network.Google.Resource.Compute.VPNTunnels.List: vtlOrderBy :: Lens' VPNTunnelsList (Maybe Text)
+ Network.Google.Resource.Compute.ZoneOperations.List: zolOrderBy :: Lens' ZoneOperationsList (Maybe Text)
+ Network.Google.Resource.Compute.Zones.List: zlOrderBy :: Lens' ZonesList (Maybe Text)
- Network.Google.Compute: None :: TargetPoolSessionAffinity
+ Network.Google.Compute: None :: TargetSSLProxyProxyHeader
- Network.Google.Compute: TCP :: ForwardingRuleIPProtocol
+ Network.Google.Compute: TCP :: BackendServiceProtocol
- Network.Google.Compute: httphcHost :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: httphcHost :: Lens' HTTP2HealthCheck (Maybe Text)
- Network.Google.Compute: httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute: httphcPort :: Lens' HTTP2HealthCheck (Maybe Int32)
- Network.Google.Compute: httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute: httphcRequestPath :: Lens' HTTP2HealthCheck (Maybe Text)
- Network.Google.Compute: rCreationTimestamp :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rCreationTimestamp :: Lens' Router (Maybe Text)
- Network.Google.Compute: rDescription :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rDescription :: Lens' Router (Maybe Text)
- Network.Google.Compute: rId :: Lens' Route (Maybe Word64)
+ Network.Google.Compute: rId :: Lens' Router (Maybe Word64)
- Network.Google.Compute: rKind :: Lens' Route Text
+ Network.Google.Compute: rKind :: Lens' Router Text
- Network.Google.Compute: rName :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rName :: Lens' Router (Maybe Text)
- Network.Google.Compute: rNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rNetwork :: Lens' Router (Maybe Text)
- Network.Google.Compute: rSelfLink :: Lens' Route (Maybe Text)
+ Network.Google.Compute: rSelfLink :: Lens' Router (Maybe Text)
- Network.Google.Compute: type ComputeAPI = ImagesInsertResource :<|> (ImagesListResource :<|> (ImagesGetResource :<|> (ImagesGetFromFamilyResource :<|> (ImagesDeprecateResource :<|> (ImagesDeleteResource :<|> (URLMapsInsertResource :<|> (URLMapsListResource :<|> (URLMapsPatchResource :<|> (URLMapsGetResource :<|> (URLMapsValidateResource :<|> (URLMapsDeleteResource :<|> (URLMapsUpdateResource :<|> (RoutesInsertResource :<|> (RoutesListResource :<|> (RoutesGetResource :<|> (RoutesDeleteResource :<|> (InstanceTemplatesInsertResource :<|> (InstanceTemplatesListResource :<|> (InstanceTemplatesGetResource :<|> (InstanceTemplatesDeleteResource :<|> (TargetVPNGatewaysAggregatedListResource :<|> (TargetVPNGatewaysInsertResource :<|> (TargetVPNGatewaysListResource :<|> (TargetVPNGatewaysGetResource :<|> (TargetVPNGatewaysDeleteResource :<|> (SSLCertificatesInsertResource :<|> (SSLCertificatesListResource :<|> (SSLCertificatesGetResource :<|> (SSLCertificatesDeleteResource :<|> (ZonesListResource :<|> (ZonesGetResource :<|> (GlobalForwardingRulesInsertResource :<|> (GlobalForwardingRulesListResource :<|> (GlobalForwardingRulesGetResource :<|> (GlobalForwardingRulesSetTargetResource :<|> (GlobalForwardingRulesDeleteResource :<|> (NetworksInsertResource :<|> (NetworksListResource :<|> (NetworksGetResource :<|> (NetworksDeleteResource :<|> (AddressesAggregatedListResource :<|> (AddressesInsertResource :<|> (AddressesListResource :<|> (AddressesGetResource :<|> (AddressesDeleteResource :<|> (GlobalAddressesInsertResource :<|> (GlobalAddressesListResource :<|> (GlobalAddressesGetResource :<|> (GlobalAddressesDeleteResource :<|> (RegionsListResource :<|> (RegionsGetResource :<|> (TargetHTTPProxiesInsertResource :<|> (TargetHTTPProxiesListResource :<|> (TargetHTTPProxiesSetURLMapResource :<|> (TargetHTTPProxiesGetResource :<|> (TargetHTTPProxiesDeleteResource :<|> (VPNTunnelsAggregatedListResource :<|> (VPNTunnelsInsertResource :<|> (VPNTunnelsListResource :<|> (VPNTunnelsGetResource :<|> (VPNTunnelsDeleteResource :<|> (AutoscalersAggregatedListResource :<|> (AutoscalersInsertResource :<|> (AutoscalersListResource :<|> (AutoscalersPatchResource :<|> (AutoscalersGetResource :<|> (AutoscalersDeleteResource :<|> (AutoscalersUpdateResource :<|> (DiskTypesAggregatedListResource :<|> (DiskTypesListResource :<|> (DiskTypesGetResource :<|> (RegionOperationsListResource :<|> (RegionOperationsGetResource :<|> (RegionOperationsDeleteResource :<|> (MachineTypesAggregatedListResource :<|> (MachineTypesListResource :<|> (MachineTypesGetResource :<|> (HTTPHealthChecksInsertResource :<|> (HTTPHealthChecksListResource :<|> (HTTPHealthChecksPatchResource :<|> (HTTPHealthChecksGetResource :<|> (HTTPHealthChecksDeleteResource :<|> (HTTPHealthChecksUpdateResource :<|> (SubnetworksAggregatedListResource :<|> (SubnetworksInsertResource :<|> (SubnetworksListResource :<|> (SubnetworksGetResource :<|> (SubnetworksDeleteResource :<|> (SnapshotsListResource :<|> (SnapshotsGetResource :<|> (SnapshotsDeleteResource :<|> (HTTPSHealthChecksInsertResource :<|> (HTTPSHealthChecksListResource :<|> (HTTPSHealthChecksPatchResource :<|> (HTTPSHealthChecksGetResource :<|> (HTTPSHealthChecksDeleteResource :<|> (HTTPSHealthChecksUpdateResource :<|> (InstancesAddAccessConfigResource :<|> (InstancesAggregatedListResource :<|> (InstancesInsertResource :<|> (InstancesDetachDiskResource :<|> (InstancesListResource :<|> (InstancesStartResource :<|> (InstancesGetResource :<|> (InstancesSetMachineTypeResource :<|> (InstancesDeleteAccessConfigResource :<|> (InstancesSetMetadataResource :<|> (InstancesSetSchedulingResource :<|> (InstancesResetResource :<|> (InstancesStopResource :<|> (InstancesGetSerialPortOutputResource :<|> (InstancesSetTagsResource :<|> (InstancesAttachDiskResource :<|> (InstancesDeleteResource :<|> (InstancesSetDiskAutoDeleteResource :<|> (BackendServicesInsertResource :<|> (BackendServicesListResource :<|> (BackendServicesGetHealthResource :<|> (BackendServicesPatchResource :<|> (BackendServicesGetResource :<|> (BackendServicesDeleteResource :<|> (BackendServicesUpdateResource :<|> (InstanceGroupsRemoveInstancesResource :<|> (InstanceGroupsAggregatedListResource :<|> (InstanceGroupsInsertResource :<|> (InstanceGroupsListResource :<|> (InstanceGroupsAddInstancesResource :<|> (InstanceGroupsGetResource :<|> (InstanceGroupsListInstancesResource :<|> (InstanceGroupsSetNamedPortsResource :<|> (InstanceGroupsDeleteResource :<|> (FirewallsInsertResource :<|> (FirewallsListResource :<|> (FirewallsPatchResource :<|> (FirewallsGetResource :<|> (FirewallsDeleteResource :<|> (FirewallsUpdateResource :<|> (GlobalOperationsAggregatedListResource :<|> (GlobalOperationsListResource :<|> (GlobalOperationsGetResource :<|> (GlobalOperationsDeleteResource :<|> (LicensesGetResource :<|> (ZoneOperationsListResource :<|> (ZoneOperationsGetResource :<|> (ZoneOperationsDeleteResource :<|> (TargetHTTPSProxiesInsertResource :<|> (TargetHTTPSProxiesListResource :<|> (TargetHTTPSProxiesSetURLMapResource :<|> (TargetHTTPSProxiesSetSSLCertificatesResource :<|> (TargetHTTPSProxiesGetResource :<|> (TargetHTTPSProxiesDeleteResource :<|> (TargetInstancesAggregatedListResource :<|> (TargetInstancesInsertResource :<|> (TargetInstancesListResource :<|> (TargetInstancesGetResource :<|> (TargetInstancesDeleteResource :<|> (DisksAggregatedListResource :<|> (DisksInsertResource :<|> (DisksResizeResource :<|> (DisksListResource :<|> (DisksGetResource :<|> (DisksCreateSnapshotResource :<|> (DisksDeleteResource :<|> (ForwardingRulesAggregatedListResource :<|> (ForwardingRulesInsertResource :<|> (ForwardingRulesListResource :<|> (ForwardingRulesGetResource :<|> (ForwardingRulesSetTargetResource :<|> (ForwardingRulesDeleteResource :<|> (InstanceGroupManagersSetTargetPoolsResource :<|> (InstanceGroupManagersAggregatedListResource :<|> (InstanceGroupManagersInsertResource :<|> (InstanceGroupManagersResizeResource :<|> (InstanceGroupManagersListResource :<|> (InstanceGroupManagersListManagedInstancesResource :<|> (InstanceGroupManagersAbandonInstancesResource :<|> (InstanceGroupManagersSetInstanceTemplateResource :<|> (InstanceGroupManagersGetResource :<|> (InstanceGroupManagersDeleteInstancesResource :<|> (InstanceGroupManagersDeleteResource :<|> (InstanceGroupManagersRecreateInstancesResource :<|> (ProjectsSetUsageExportBucketResource :<|> (ProjectsMoveInstanceResource :<|> (ProjectsGetResource :<|> (ProjectsMoveDiskResource :<|> (ProjectsSetCommonInstanceMetadataResource :<|> (TargetPoolsAggregatedListResource :<|> (TargetPoolsRemoveInstanceResource :<|> (TargetPoolsInsertResource :<|> (TargetPoolsListResource :<|> (TargetPoolsGetHealthResource :<|> (TargetPoolsGetResource :<|> (TargetPoolsRemoveHealthCheckResource :<|> (TargetPoolsSetBackupResource :<|> (TargetPoolsAddInstanceResource :<|> (TargetPoolsAddHealthCheckResource :<|> TargetPoolsDeleteResource))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+ Network.Google.Compute: type ComputeAPI = ImagesInsertResource :<|> (ImagesListResource :<|> (ImagesGetResource :<|> (ImagesGetFromFamilyResource :<|> (ImagesDeprecateResource :<|> (ImagesDeleteResource :<|> (URLMapsInsertResource :<|> (URLMapsListResource :<|> (URLMapsPatchResource :<|> (URLMapsGetResource :<|> (URLMapsInvalidateCacheResource :<|> (URLMapsValidateResource :<|> (URLMapsDeleteResource :<|> (URLMapsUpdateResource :<|> (RoutesInsertResource :<|> (RoutesListResource :<|> (RoutesGetResource :<|> (RoutesDeleteResource :<|> (InstanceTemplatesInsertResource :<|> (InstanceTemplatesListResource :<|> (InstanceTemplatesGetResource :<|> (InstanceTemplatesDeleteResource :<|> (TargetVPNGatewaysAggregatedListResource :<|> (TargetVPNGatewaysInsertResource :<|> (TargetVPNGatewaysListResource :<|> (TargetVPNGatewaysGetResource :<|> (TargetVPNGatewaysDeleteResource :<|> (SSLCertificatesInsertResource :<|> (SSLCertificatesListResource :<|> (SSLCertificatesGetResource :<|> (SSLCertificatesDeleteResource :<|> (ZonesListResource :<|> (ZonesGetResource :<|> (GlobalForwardingRulesInsertResource :<|> (GlobalForwardingRulesListResource :<|> (GlobalForwardingRulesGetResource :<|> (GlobalForwardingRulesSetTargetResource :<|> (GlobalForwardingRulesDeleteResource :<|> (NetworksInsertResource :<|> (NetworksListResource :<|> (NetworksGetResource :<|> (NetworksDeleteResource :<|> (RoutersAggregatedListResource :<|> (RoutersInsertResource :<|> (RoutersListResource :<|> (RoutersPatchResource :<|> (RoutersGetResource :<|> (RoutersPreviewResource :<|> (RoutersDeleteResource :<|> (RoutersUpdateResource :<|> (RoutersGetRouterStatusResource :<|> (AddressesAggregatedListResource :<|> (AddressesInsertResource :<|> (AddressesListResource :<|> (AddressesGetResource :<|> (AddressesDeleteResource :<|> (GlobalAddressesInsertResource :<|> (GlobalAddressesListResource :<|> (GlobalAddressesGetResource :<|> (GlobalAddressesDeleteResource :<|> (RegionsListResource :<|> (RegionsGetResource :<|> (TargetHTTPProxiesInsertResource :<|> (TargetHTTPProxiesListResource :<|> (TargetHTTPProxiesSetURLMapResource :<|> (TargetHTTPProxiesGetResource :<|> (TargetHTTPProxiesDeleteResource :<|> (VPNTunnelsAggregatedListResource :<|> (VPNTunnelsInsertResource :<|> (VPNTunnelsListResource :<|> (VPNTunnelsGetResource :<|> (VPNTunnelsDeleteResource :<|> (AutoscalersAggregatedListResource :<|> (AutoscalersInsertResource :<|> (AutoscalersListResource :<|> (AutoscalersPatchResource :<|> (AutoscalersGetResource :<|> (AutoscalersDeleteResource :<|> (AutoscalersUpdateResource :<|> (DiskTypesAggregatedListResource :<|> (DiskTypesListResource :<|> (DiskTypesGetResource :<|> (RegionOperationsListResource :<|> (RegionOperationsGetResource :<|> (RegionOperationsDeleteResource :<|> (MachineTypesAggregatedListResource :<|> (MachineTypesListResource :<|> (MachineTypesGetResource :<|> (HTTPHealthChecksInsertResource :<|> (HTTPHealthChecksListResource :<|> (HTTPHealthChecksPatchResource :<|> (HTTPHealthChecksGetResource :<|> (HTTPHealthChecksDeleteResource :<|> (HTTPHealthChecksUpdateResource :<|> (SubnetworksAggregatedListResource :<|> (SubnetworksInsertResource :<|> (SubnetworksListResource :<|> (SubnetworksGetResource :<|> (SubnetworksDeleteResource :<|> (SnapshotsListResource :<|> (SnapshotsGetResource :<|> (SnapshotsDeleteResource :<|> (TargetSSLProxiesInsertResource :<|> (TargetSSLProxiesListResource :<|> (TargetSSLProxiesSetSSLCertificatesResource :<|> (TargetSSLProxiesGetResource :<|> (TargetSSLProxiesSetBackendServiceResource :<|> (TargetSSLProxiesDeleteResource :<|> (TargetSSLProxiesSetProxyHeaderResource :<|> (HTTPSHealthChecksInsertResource :<|> (HTTPSHealthChecksListResource :<|> (HTTPSHealthChecksPatchResource :<|> (HTTPSHealthChecksGetResource :<|> (HTTPSHealthChecksDeleteResource :<|> (HTTPSHealthChecksUpdateResource :<|> (InstancesAddAccessConfigResource :<|> (InstancesAggregatedListResource :<|> (InstancesInsertResource :<|> (InstancesDetachDiskResource :<|> (InstancesListResource :<|> (InstancesStartResource :<|> (InstancesGetResource :<|> (InstancesSetMachineTypeResource :<|> (InstancesDeleteAccessConfigResource :<|> (InstancesSetMetadataResource :<|> (InstancesSetSchedulingResource :<|> (InstancesStartWithEncryptionKeyResource :<|> (InstancesResetResource :<|> (InstancesStopResource :<|> (InstancesGetSerialPortOutputResource :<|> (InstancesSetTagsResource :<|> (InstancesAttachDiskResource :<|> (InstancesDeleteResource :<|> (InstancesSetDiskAutoDeleteResource :<|> (BackendServicesInsertResource :<|> (BackendServicesListResource :<|> (BackendServicesGetHealthResource :<|> (BackendServicesPatchResource :<|> (BackendServicesGetResource :<|> (BackendServicesDeleteResource :<|> (BackendServicesUpdateResource :<|> (InstanceGroupsRemoveInstancesResource :<|> (InstanceGroupsAggregatedListResource :<|> (InstanceGroupsInsertResource :<|> (InstanceGroupsListResource :<|> (InstanceGroupsAddInstancesResource :<|> (InstanceGroupsGetResource :<|> (InstanceGroupsListInstancesResource :<|> (InstanceGroupsSetNamedPortsResource :<|> (InstanceGroupsDeleteResource :<|> (FirewallsInsertResource :<|> (FirewallsListResource :<|> (FirewallsPatchResource :<|> (FirewallsGetResource :<|> (FirewallsDeleteResource :<|> (FirewallsUpdateResource :<|> (GlobalOperationsAggregatedListResource :<|> (GlobalOperationsListResource :<|> (GlobalOperationsGetResource :<|> (GlobalOperationsDeleteResource :<|> (LicensesGetResource :<|> (ZoneOperationsListResource :<|> (ZoneOperationsGetResource :<|> (ZoneOperationsDeleteResource :<|> (TargetHTTPSProxiesInsertResource :<|> (TargetHTTPSProxiesListResource :<|> (TargetHTTPSProxiesSetURLMapResource :<|> (TargetHTTPSProxiesSetSSLCertificatesResource :<|> (TargetHTTPSProxiesGetResource :<|> (TargetHTTPSProxiesDeleteResource :<|> (TargetInstancesAggregatedListResource :<|> (TargetInstancesInsertResource :<|> (TargetInstancesListResource :<|> (TargetInstancesGetResource :<|> (TargetInstancesDeleteResource :<|> (DisksAggregatedListResource :<|> (DisksInsertResource :<|> (DisksResizeResource :<|> (DisksListResource :<|> (DisksGetResource :<|> (DisksCreateSnapshotResource :<|> (DisksDeleteResource :<|> (ForwardingRulesAggregatedListResource :<|> (ForwardingRulesInsertResource :<|> (ForwardingRulesListResource :<|> (ForwardingRulesGetResource :<|> (ForwardingRulesSetTargetResource :<|> (ForwardingRulesDeleteResource :<|> (InstanceGroupManagersSetTargetPoolsResource :<|> (InstanceGroupManagersAggregatedListResource :<|> (InstanceGroupManagersInsertResource :<|> (InstanceGroupManagersResizeResource :<|> (InstanceGroupManagersListResource :<|> (InstanceGroupManagersListManagedInstancesResource :<|> (InstanceGroupManagersAbandonInstancesResource :<|> (InstanceGroupManagersSetInstanceTemplateResource :<|> (InstanceGroupManagersGetResource :<|> (InstanceGroupManagersDeleteInstancesResource :<|> (InstanceGroupManagersDeleteResource :<|> (InstanceGroupManagersRecreateInstancesResource :<|> (ProjectsSetUsageExportBucketResource :<|> (ProjectsMoveInstanceResource :<|> (ProjectsGetResource :<|> (ProjectsMoveDiskResource :<|> (ProjectsSetCommonInstanceMetadataResource :<|> (TargetPoolsAggregatedListResource :<|> (TargetPoolsRemoveInstanceResource :<|> (TargetPoolsInsertResource :<|> (TargetPoolsListResource :<|> (TargetPoolsGetHealthResource :<|> (TargetPoolsGetResource :<|> (TargetPoolsRemoveHealthCheckResource :<|> (TargetPoolsSetBackupResource :<|> (TargetPoolsAddInstanceResource :<|> (TargetPoolsAddHealthCheckResource :<|> (TargetPoolsDeleteResource :<|> (HealthChecksInsertResource :<|> (HealthChecksListResource :<|> (HealthChecksPatchResource :<|> (HealthChecksGetResource :<|> (HealthChecksDeleteResource :<|> HealthChecksUpdateResource))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
- Network.Google.Compute.Types: None :: TargetPoolSessionAffinity
+ Network.Google.Compute.Types: None :: TargetSSLProxyProxyHeader
- Network.Google.Compute.Types: TCP :: ForwardingRuleIPProtocol
+ Network.Google.Compute.Types: TCP :: BackendServiceProtocol
- Network.Google.Compute.Types: httphcHost :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: httphcHost :: Lens' HTTP2HealthCheck (Maybe Text)
- Network.Google.Compute.Types: httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
+ Network.Google.Compute.Types: httphcPort :: Lens' HTTP2HealthCheck (Maybe Int32)
- Network.Google.Compute.Types: httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+ Network.Google.Compute.Types: httphcRequestPath :: Lens' HTTP2HealthCheck (Maybe Text)
- Network.Google.Compute.Types: rCreationTimestamp :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rCreationTimestamp :: Lens' Router (Maybe Text)
- Network.Google.Compute.Types: rDescription :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rDescription :: Lens' Router (Maybe Text)
- Network.Google.Compute.Types: rId :: Lens' Route (Maybe Word64)
+ Network.Google.Compute.Types: rId :: Lens' Router (Maybe Word64)
- Network.Google.Compute.Types: rKind :: Lens' Route Text
+ Network.Google.Compute.Types: rKind :: Lens' Router Text
- Network.Google.Compute.Types: rName :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rName :: Lens' Router (Maybe Text)
- Network.Google.Compute.Types: rNetwork :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rNetwork :: Lens' Router (Maybe Text)
- Network.Google.Compute.Types: rSelfLink :: Lens' Route (Maybe Text)
+ Network.Google.Compute.Types: rSelfLink :: Lens' Router (Maybe Text)
- Network.Google.Resource.Compute.Addresses.AggregatedList: type AddressesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("addresses" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressAggregatedList)))))))))
+ Network.Google.Resource.Compute.Addresses.AggregatedList: type AddressesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressAggregatedList))))))))))
- Network.Google.Resource.Compute.Addresses.List: type AddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList))))))))))
+ Network.Google.Resource.Compute.Addresses.List: type AddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList)))))))))))
- Network.Google.Resource.Compute.Autoscalers.AggregatedList: type AutoscalersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("autoscalers" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerAggregatedList)))))))))
+ Network.Google.Resource.Compute.Autoscalers.AggregatedList: type AutoscalersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("autoscalers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerAggregatedList))))))))))
- Network.Google.Resource.Compute.Autoscalers.List: type AutoscalersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerList))))))))))
+ Network.Google.Resource.Compute.Autoscalers.List: type AutoscalersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerList)))))))))))
- Network.Google.Resource.Compute.BackendServices.List: type BackendServicesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendServiceList)))))))))
+ Network.Google.Resource.Compute.BackendServices.List: type BackendServicesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendServiceList))))))))))
- Network.Google.Resource.Compute.DiskTypes.AggregatedList: type DiskTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("diskTypes" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeAggregatedList)))))))))
+ Network.Google.Resource.Compute.DiskTypes.AggregatedList: type DiskTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("diskTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeAggregatedList))))))))))
- Network.Google.Resource.Compute.DiskTypes.List: type DiskTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("diskTypes" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList))))))))))
+ Network.Google.Resource.Compute.DiskTypes.List: type DiskTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("diskTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList)))))))))))
- Network.Google.Resource.Compute.Disks.AggregatedList: type DisksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("disks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskAggregatedList)))))))))
+ Network.Google.Resource.Compute.Disks.AggregatedList: type DisksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("disks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskAggregatedList))))))))))
- Network.Google.Resource.Compute.Disks.List: type DisksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskList))))))))))
+ Network.Google.Resource.Compute.Disks.List: type DisksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskList)))))))))))
- Network.Google.Resource.Compute.Firewalls.List: type FirewallsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] FirewallList)))))))))
+ Network.Google.Resource.Compute.Firewalls.List: type FirewallsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] FirewallList))))))))))
- Network.Google.Resource.Compute.ForwardingRules.AggregatedList: type ForwardingRulesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("forwardingRules" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleAggregatedList)))))))))
+ Network.Google.Resource.Compute.ForwardingRules.AggregatedList: type ForwardingRulesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleAggregatedList))))))))))
- Network.Google.Resource.Compute.ForwardingRules.List: type ForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList))))))))))
+ Network.Google.Resource.Compute.ForwardingRules.List: type ForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList)))))))))))
- Network.Google.Resource.Compute.GlobalAddresses.List: type GlobalAddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList)))))))))
+ Network.Google.Resource.Compute.GlobalAddresses.List: type GlobalAddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList))))))))))
- Network.Google.Resource.Compute.GlobalForwardingRules.List: type GlobalForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList)))))))))
+ Network.Google.Resource.Compute.GlobalForwardingRules.List: type GlobalForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList))))))))))
- Network.Google.Resource.Compute.GlobalOperations.AggregatedList: type GlobalOperationsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("operations" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationAggregatedList)))))))))
+ Network.Google.Resource.Compute.GlobalOperations.AggregatedList: type GlobalOperationsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationAggregatedList))))))))))
- Network.Google.Resource.Compute.GlobalOperations.List: type GlobalOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("operations" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList)))))))))
+ Network.Google.Resource.Compute.GlobalOperations.List: type GlobalOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList))))))))))
- Network.Google.Resource.Compute.HTTPHealthChecks.List: type HTTPHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPHealthCheckList)))))))))
+ Network.Google.Resource.Compute.HTTPHealthChecks.List: type HTTPHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPHealthCheckList))))))))))
- Network.Google.Resource.Compute.HTTPSHealthChecks.List: type HTTPSHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPSHealthCheckList)))))))))
+ Network.Google.Resource.Compute.HTTPSHealthChecks.List: type HTTPSHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPSHealthCheckList))))))))))
- Network.Google.Resource.Compute.Images.List: type ImagesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ImageList)))))))))
+ Network.Google.Resource.Compute.Images.List: type ImagesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ImageList))))))))))
- Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList: type InstanceGroupManagersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroupManagers" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerAggregatedList)))))))))
+ Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList: type InstanceGroupManagersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroupManagers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerAggregatedList))))))))))
- Network.Google.Resource.Compute.InstanceGroupManagers.List: type InstanceGroupManagersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerList))))))))))
+ Network.Google.Resource.Compute.InstanceGroupManagers.List: type InstanceGroupManagersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerList)))))))))))
- Network.Google.Resource.Compute.InstanceGroups.AggregatedList: type InstanceGroupsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroups" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupAggregatedList)))))))))
+ Network.Google.Resource.Compute.InstanceGroups.AggregatedList: type InstanceGroupsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroups" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupAggregatedList))))))))))
- Network.Google.Resource.Compute.InstanceGroups.List: type InstanceGroupsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupList))))))))))
+ Network.Google.Resource.Compute.InstanceGroups.List: type InstanceGroupsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupList)))))))))))
- Network.Google.Resource.Compute.InstanceGroups.ListInstances: type InstanceGroupsListInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("listInstances" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsListInstancesRequest :> Post '[JSON] InstanceGroupsListInstances)))))))))))))
+ Network.Google.Resource.Compute.InstanceGroups.ListInstances: type InstanceGroupsListInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("listInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsListInstancesRequest :> Post '[JSON] InstanceGroupsListInstances))))))))))))))
- Network.Google.Resource.Compute.InstanceTemplates.List: type InstanceTemplatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceTemplateList)))))))))
+ Network.Google.Resource.Compute.InstanceTemplates.List: type InstanceTemplatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceTemplateList))))))))))
- Network.Google.Resource.Compute.Instances.AggregatedList: type InstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instances" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceAggregatedList)))))))))
+ Network.Google.Resource.Compute.Instances.AggregatedList: type InstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceAggregatedList))))))))))
- Network.Google.Resource.Compute.Instances.List: type InstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceList))))))))))
+ Network.Google.Resource.Compute.Instances.List: type InstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceList)))))))))))
- Network.Google.Resource.Compute.MachineTypes.AggregatedList: type MachineTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("machineTypes" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeAggregatedList)))))))))
+ Network.Google.Resource.Compute.MachineTypes.AggregatedList: type MachineTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("machineTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeAggregatedList))))))))))
- Network.Google.Resource.Compute.MachineTypes.List: type MachineTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("machineTypes" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeList))))))))))
+ Network.Google.Resource.Compute.MachineTypes.List: type MachineTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("machineTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeList)))))))))))
- Network.Google.Resource.Compute.Networks.List: type NetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] NetworkList)))))))))
+ Network.Google.Resource.Compute.Networks.List: type NetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] NetworkList))))))))))
- Network.Google.Resource.Compute.RegionOperations.List: type RegionOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("operations" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList))))))))))
+ Network.Google.Resource.Compute.RegionOperations.List: type RegionOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList)))))))))))
- Network.Google.Resource.Compute.Regions.List: type RegionsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionList))))))))
+ Network.Google.Resource.Compute.Regions.List: type RegionsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionList)))))))))
- Network.Google.Resource.Compute.Routes.List: type RoutesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouteList)))))))))
+ Network.Google.Resource.Compute.Routes.List: type RoutesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouteList))))))))))
- Network.Google.Resource.Compute.SSLCertificates.List: type SSLCertificatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SSLCertificateList)))))))))
+ Network.Google.Resource.Compute.SSLCertificates.List: type SSLCertificatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SSLCertificateList))))))))))
- Network.Google.Resource.Compute.Snapshots.List: type SnapshotsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("snapshots" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList)))))))))
+ Network.Google.Resource.Compute.Snapshots.List: type SnapshotsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("snapshots" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList))))))))))
- Network.Google.Resource.Compute.Subnetworks.AggregatedList: type SubnetworksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("subnetworks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkAggregatedList)))))))))
+ Network.Google.Resource.Compute.Subnetworks.AggregatedList: type SubnetworksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("subnetworks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkAggregatedList))))))))))
- Network.Google.Resource.Compute.Subnetworks.List: type SubnetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkList))))))))))
+ Network.Google.Resource.Compute.Subnetworks.List: type SubnetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkList)))))))))))
- Network.Google.Resource.Compute.TargetHTTPProxies.List: type TargetHTTPProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPProxyList)))))))))
+ Network.Google.Resource.Compute.TargetHTTPProxies.List: type TargetHTTPProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPProxyList))))))))))
- Network.Google.Resource.Compute.TargetHTTPSProxies.List: type TargetHTTPSProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPSProxyList)))))))))
+ Network.Google.Resource.Compute.TargetHTTPSProxies.List: type TargetHTTPSProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPSProxyList))))))))))
- Network.Google.Resource.Compute.TargetInstances.AggregatedList: type TargetInstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetInstances" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceAggregatedList)))))))))
+ Network.Google.Resource.Compute.TargetInstances.AggregatedList: type TargetInstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceAggregatedList))))))))))
- Network.Google.Resource.Compute.TargetInstances.List: type TargetInstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceList))))))))))
+ Network.Google.Resource.Compute.TargetInstances.List: type TargetInstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceList)))))))))))
- Network.Google.Resource.Compute.TargetPools.AggregatedList: type TargetPoolsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetPools" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolAggregatedList)))))))))
+ Network.Google.Resource.Compute.TargetPools.AggregatedList: type TargetPoolsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetPools" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolAggregatedList))))))))))
- Network.Google.Resource.Compute.TargetPools.List: type TargetPoolsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolList))))))))))
+ Network.Google.Resource.Compute.TargetPools.List: type TargetPoolsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolList)))))))))))
- Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList: type TargetVPNGatewaysAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetVpnGateways" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayAggregatedList)))))))))
+ Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList: type TargetVPNGatewaysAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetVpnGateways" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayAggregatedList))))))))))
- Network.Google.Resource.Compute.TargetVPNGateways.List: type TargetVPNGatewaysListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayList))))))))))
+ Network.Google.Resource.Compute.TargetVPNGateways.List: type TargetVPNGatewaysListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayList)))))))))))
- Network.Google.Resource.Compute.URLMaps.List: type URLMapsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] URLMapList)))))))))
+ Network.Google.Resource.Compute.URLMaps.List: type URLMapsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] URLMapList))))))))))
- Network.Google.Resource.Compute.VPNTunnels.AggregatedList: type VPNTunnelsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("vpnTunnels" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelAggregatedList)))))))))
+ Network.Google.Resource.Compute.VPNTunnels.AggregatedList: type VPNTunnelsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("vpnTunnels" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelAggregatedList))))))))))
- Network.Google.Resource.Compute.VPNTunnels.List: type VPNTunnelsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList))))))))))
+ Network.Google.Resource.Compute.VPNTunnels.List: type VPNTunnelsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList)))))))))))
- Network.Google.Resource.Compute.ZoneOperations.List: type ZoneOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("operations" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList))))))))))
+ Network.Google.Resource.Compute.ZoneOperations.List: type ZoneOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList)))))))))))
- Network.Google.Resource.Compute.Zones.List: type ZonesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ZoneList))))))))
+ Network.Google.Resource.Compute.Zones.List: type ZonesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ZoneList)))))))))

Files

README.md view
@@ -8,7 +8,7 @@  ## Version -`0.1.0`+`0.1.1`   ## Description
gen/Network/Google/Compute.hs view
@@ -196,6 +196,24 @@     -- ** compute.globalOperations.list     , module Network.Google.Resource.Compute.GlobalOperations.List +    -- ** compute.healthChecks.delete+    , module Network.Google.Resource.Compute.HealthChecks.Delete++    -- ** compute.healthChecks.get+    , module Network.Google.Resource.Compute.HealthChecks.Get++    -- ** compute.healthChecks.insert+    , module Network.Google.Resource.Compute.HealthChecks.Insert++    -- ** compute.healthChecks.list+    , module Network.Google.Resource.Compute.HealthChecks.List++    -- ** compute.healthChecks.patch+    , module Network.Google.Resource.Compute.HealthChecks.Patch++    -- ** compute.healthChecks.update+    , module Network.Google.Resource.Compute.HealthChecks.Update+     -- ** compute.httpHealthChecks.delete     , module Network.Google.Resource.Compute.HTTPHealthChecks.Delete @@ -376,6 +394,9 @@     -- ** compute.instances.start     , module Network.Google.Resource.Compute.Instances.Start +    -- ** compute.instances.startWithEncryptionKey+    , module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey+     -- ** compute.instances.stop     , module Network.Google.Resource.Compute.Instances.Stop @@ -433,6 +454,33 @@     -- ** compute.regions.list     , module Network.Google.Resource.Compute.Regions.List +    -- ** compute.routers.aggregatedList+    , module Network.Google.Resource.Compute.Routers.AggregatedList++    -- ** compute.routers.delete+    , module Network.Google.Resource.Compute.Routers.Delete++    -- ** compute.routers.get+    , module Network.Google.Resource.Compute.Routers.Get++    -- ** compute.routers.getRouterStatus+    , module Network.Google.Resource.Compute.Routers.GetRouterStatus++    -- ** compute.routers.insert+    , module Network.Google.Resource.Compute.Routers.Insert++    -- ** compute.routers.list+    , module Network.Google.Resource.Compute.Routers.List++    -- ** compute.routers.patch+    , module Network.Google.Resource.Compute.Routers.Patch++    -- ** compute.routers.preview+    , module Network.Google.Resource.Compute.Routers.Preview++    -- ** compute.routers.update+    , module Network.Google.Resource.Compute.Routers.Update+     -- ** compute.routes.delete     , module Network.Google.Resource.Compute.Routes.Delete @@ -562,6 +610,27 @@     -- ** compute.targetPools.setBackup     , module Network.Google.Resource.Compute.TargetPools.SetBackup +    -- ** compute.targetSslProxies.delete+    , module Network.Google.Resource.Compute.TargetSSLProxies.Delete++    -- ** compute.targetSslProxies.get+    , module Network.Google.Resource.Compute.TargetSSLProxies.Get++    -- ** compute.targetSslProxies.insert+    , module Network.Google.Resource.Compute.TargetSSLProxies.Insert++    -- ** compute.targetSslProxies.list+    , module Network.Google.Resource.Compute.TargetSSLProxies.List++    -- ** compute.targetSslProxies.setBackendService+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService++    -- ** compute.targetSslProxies.setProxyHeader+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader++    -- ** compute.targetSslProxies.setSslCertificates+    , module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates+     -- ** compute.targetVpnGateways.aggregatedList     , module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList @@ -586,6 +655,9 @@     -- ** compute.urlMaps.insert     , module Network.Google.Resource.Compute.URLMaps.Insert +    -- ** compute.urlMaps.invalidateCache+    , module Network.Google.Resource.Compute.URLMaps.InvalidateCache+     -- ** compute.urlMaps.list     , module Network.Google.Resource.Compute.URLMaps.List @@ -639,6 +711,18 @@     , thplSelfLink     , thplId +    -- ** RoutersScopedList+    , RoutersScopedList+    , routersScopedList+    , rslRouters+    , rslWarning++    -- ** RouterStatusResponse+    , RouterStatusResponse+    , routerStatusResponse+    , rsrKind+    , rsrResult+     -- ** AddressesScopedList     , AddressesScopedList     , addressesScopedList@@ -672,6 +756,15 @@     , diskTypeAggregatedListItems     , dtaliAddtional +    -- ** RouterAggregatedList+    , RouterAggregatedList+    , routerAggregatedList+    , ralNextPageToken+    , ralKind+    , ralItems+    , ralSelfLink+    , ralId+     -- ** FirewallList     , FirewallList     , firewallList@@ -702,6 +795,12 @@     , instancesSetMachineTypeRequest     , ismtrMachineType +    -- ** CustomerEncryptionKey+    , CustomerEncryptionKey+    , customerEncryptionKey+    , cekSha256+    , cekRawKey+     -- ** AutoscalerAggregatedListItems     , AutoscalerAggregatedListItems     , autoscalerAggregatedListItems@@ -732,8 +831,10 @@     , sDiskSizeGb     , sSourceDiskId     , sKind+    , sSourceDiskEncryptionKey     , sStorageBytes     , sSelfLink+    , sSnapshotEncryptionKey     , sName     , sCreationTimestamp     , sId@@ -741,6 +842,13 @@     , sSourceDisk     , sDescription +    -- ** RouterStatus+    , RouterStatus+    , routerStatus+    , rsBGPPeerStatus+    , rsNetwork+    , rsBestRoutes+     -- ** AutoscalingPolicyCustomMetricUtilization     , AutoscalingPolicyCustomMetricUtilization     , autoscalingPolicyCustomMetricUtilization@@ -823,10 +931,12 @@     , Image     , image     , iStatus+    , iImageEncryptionKey     , iDiskSizeGb     , iSourceType     , iSourceDiskId     , iKind+    , iSourceDiskEncryptionKey     , iArchiveSizeBytes     , iFamily     , iRawDisk@@ -889,6 +999,29 @@     , igmslWarning     , igmslInstanceGroupManagers +    -- ** HealthCheck+    , HealthCheck+    , healthCheck+    , hcHealthyThreshold+    , hcTCPHealthCheck+    , hcHTTP2HealthCheck+    , hcKind+    , hcSSLHealthCheck+    , hcSelfLink+    , hcCheckIntervalSec+    , hcName+    , hcCreationTimestamp+    , hcHTTPHealthCheck+    , hcId+    , hcType+    , hcTimeoutSec+    , hcDescription+    , hcUnhealthyThreshold+    , hcHTTPSHealthCheck++    -- ** TargetSSLProxyProxyHeader+    , TargetSSLProxyProxyHeader (..)+     -- ** DiskAggregatedList     , DiskAggregatedList     , diskAggregatedList@@ -993,6 +1126,9 @@     , oslwdiValue     , oslwdiKey +    -- ** BackendServiceSessionAffinity+    , BackendServiceSessionAffinity (..)+     -- ** TargetPool     , TargetPool     , targetPool@@ -1031,6 +1167,11 @@     -- ** OperationsScopedListWarningCode     , OperationsScopedListWarningCode (..) +    -- ** TargetSSLProxiesSetBackendServiceRequest+    , TargetSSLProxiesSetBackendServiceRequest+    , targetSSLProxiesSetBackendServiceRequest+    , tspsbsrService+     -- ** ForwardingRule     , ForwardingRule     , forwardingRule@@ -1083,6 +1224,7 @@     , pUsageExportLocation     , pSelfLink     , pName+    , pDefaultServiceAccount     , pCreationTimestamp     , pEnabledFeatures     , pQuotas@@ -1134,6 +1276,7 @@     , dLastAttachTimestamp     , dUsers     , dSourceImage+    , dDiskEncryptionKey     , dSizeGb     , dKind     , dLastDetachTimestamp@@ -1142,11 +1285,13 @@     , dName     , dSourceImageId     , dCreationTimestamp+    , dSourceImageEncryptionKey     , dId     , dLicenses     , dOptions     , dType     , dDescription+    , dSourceSnapshotEncryptionKey     , dSourceSnapshot      -- ** DiskMoveRequest@@ -1180,14 +1325,27 @@     , igmName     , igmCreationTimestamp     , igmId+    , igmRegion     , igmTargetPools     , igmDescription     , igmInstanceGroup     , igmNamedPorts +    -- ** TCPHealthCheck+    , TCPHealthCheck+    , tcpHealthCheck+    , thcResponse+    , thcProxyHeader+    , thcPortName+    , thcPort+    , thcRequest+     -- ** TargetPoolsScopedListWarningCode     , TargetPoolsScopedListWarningCode (..) +    -- ** SSLHealthCheckProxyHeader+    , SSLHealthCheckProxyHeader (..)+     -- ** TargetVPNGatewayStatus     , TargetVPNGatewayStatus (..) @@ -1220,6 +1378,15 @@     , aslwCode     , aslwMessage +    -- ** HealthCheckList+    , HealthCheckList+    , healthCheckList+    , hclNextPageToken+    , hclKind+    , hclItems+    , hclSelfLink+    , hclId+     -- ** ManagedInstanceLastAttemptErrors     , ManagedInstanceLastAttemptErrors     , managedInstanceLastAttemptErrors@@ -1286,6 +1453,15 @@     , ipDescription     , ipTags +    -- ** HTTP2HealthCheck+    , HTTP2HealthCheck+    , hTTP2HealthCheck+    , httphcRequestPath+    , httphcHost+    , httphcProxyHeader+    , httphcPortName+    , httphcPort+     -- ** DiskTypesScopedListWarning     , DiskTypesScopedListWarning     , diskTypesScopedListWarning@@ -1302,6 +1478,7 @@     , adipSourceImage     , adipDiskSizeGb     , adipDiskName+    , adipSourceImageEncryptionKey     , adipDiskType      -- ** AddressesScopedListWarningDataItem@@ -1327,6 +1504,21 @@     , targetPoolsRemoveHealthCheckRequest     , tprhcrHealthChecks +    -- ** TargetSSLProxyList+    , TargetSSLProxyList+    , targetSSLProxyList+    , tsplNextPageToken+    , tsplKind+    , tsplItems+    , tsplSelfLink+    , tsplId++    -- ** CustomerEncryptionKeyProtectedDisk+    , CustomerEncryptionKeyProtectedDisk+    , customerEncryptionKeyProtectedDisk+    , cekpdDiskEncryptionKey+    , cekpdSource+     -- ** HealthStatusHealthState     , HealthStatusHealthState (..) @@ -1351,6 +1543,30 @@     -- ** DeprecationStatusState     , DeprecationStatusState (..) +    -- ** Router+    , Router+    , router+    , rBGPPeers+    , rBGP+    , rKind+    , rNetwork+    , rInterfaces+    , rSelfLink+    , rName+    , rCreationTimestamp+    , rId+    , rRegion+    , rDescription++    -- ** RoutersScopedListWarningCode+    , RoutersScopedListWarningCode (..)++    -- ** RoutersScopedListWarningDataItem+    , RoutersScopedListWarningDataItem+    , routersScopedListWarningDataItem+    , rslwdiValue+    , rslwdiKey+     -- ** ManagedInstanceCurrentAction     , ManagedInstanceCurrentAction (..) @@ -1395,6 +1611,13 @@     , nGatewayIPv4     , nDescription +    -- ** RoutersScopedListWarning+    , RoutersScopedListWarning+    , routersScopedListWarning+    , rslwData+    , rslwCode+    , rslwMessage+     -- ** AccessConfigType     , AccessConfigType (..) @@ -1421,6 +1644,15 @@     , ialSelfLink     , ialId +    -- ** SSLHealthCheck+    , SSLHealthCheck+    , sslHealthCheck+    , shcResponse+    , shcProxyHeader+    , shcPortName+    , shcPort+    , shcRequest+     -- ** Address     , Address     , address@@ -1448,11 +1680,21 @@     , zDescription     , zDeprecated +    -- ** RouterBGP+    , RouterBGP+    , routerBGP+    , rbASN+     -- ** InstanceGroupManagersRecreateInstancesRequest     , InstanceGroupManagersRecreateInstancesRequest     , instanceGroupManagersRecreateInstancesRequest     , igmrirInstances +    -- ** TargetSSLProxiesSetSSLCertificatesRequest+    , TargetSSLProxiesSetSSLCertificatesRequest+    , targetSSLProxiesSetSSLCertificatesRequest+    , tspsscrSSLCertificates+     -- ** InstancesScopedList     , InstancesScopedList     , instancesScopedList@@ -1484,22 +1726,22 @@     -- ** Route     , Route     , route-    , rPriority-    , rKind-    , rNextHopGateway-    , rNextHopNetwork-    , rNetwork-    , rWarnings-    , rNextHopIP-    , rDestRange-    , rSelfLink-    , rName-    , rCreationTimestamp-    , rId-    , rNextHopVPNTunnel-    , rDescription-    , rTags-    , rNextHopInstance+    , rouPriority+    , rouKind+    , rouNextHopGateway+    , rouNextHopNetwork+    , rouNetwork+    , rouWarnings+    , rouNextHopIP+    , rouDestRange+    , rouSelfLink+    , rouName+    , rouCreationTimestamp+    , rouId+    , rouNextHopVPNTunnel+    , rouDescription+    , rouTags+    , rouNextHopInstance      -- ** TargetVPNGatewaysScopedListWarningDataItem     , TargetVPNGatewaysScopedListWarningDataItem@@ -1526,6 +1768,28 @@     , itDescription     , itProperties +    -- ** RouterList+    , RouterList+    , routerList+    , rllNextPageToken+    , rllKind+    , rllItems+    , rllSelfLink+    , rllId++    -- ** TargetSSLProxy+    , TargetSSLProxy+    , targetSSLProxy+    , tspSSLCertificates+    , tspService+    , tspKind+    , tspSelfLink+    , tspName+    , tspCreationTimestamp+    , tspId+    , tspProxyHeader+    , tspDescription+     -- ** TargetVPNGateway     , TargetVPNGateway     , targetVPNGateway@@ -1564,6 +1828,20 @@     , scCertificate     , scDescription +    -- ** RouterStatusBGPPeerStatus+    , RouterStatusBGPPeerStatus+    , routerStatusBGPPeerStatus+    , rsbpsStatus+    , rsbpsIPAddress+    , rsbpsState+    , rsbpsPeerIPAddress+    , rsbpsUptime+    , rsbpsNumLearnedRoutes+    , rsbpsName+    , rsbpsUptimeSeconds+    , rsbpsAdvertisedRoutes+    , rsbpsLinkedVPNTunnel+     -- ** URLMapReference     , URLMapReference     , urlMapReference@@ -1600,6 +1878,16 @@     -- ** RegionStatus     , RegionStatus (..) +    -- ** RouterBGPPeer+    , RouterBGPPeer+    , routerBGPPeer+    , rbpIPAddress+    , rbpInterfaceName+    , rbpPeerIPAddress+    , rbpAdvertisedRoutePriority+    , rbpPeerASN+    , rbpName+     -- ** ManagedInstance     , ManagedInstance     , managedInstance@@ -1626,6 +1914,8 @@     , bBalancingMode     , bMaxUtilization     , bMaxRate+    , bMaxConnections+    , bMaxConnectionsPerInstance     , bMaxRatePerInstance     , bDescription     , bCapacityScaler@@ -1637,6 +1927,9 @@     , tvgslwCode     , tvgslwMessage +    -- ** TargetSSLProxiesSetProxyHeaderRequestProxyHeader+    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)+     -- ** AddressList     , AddressList     , addressList@@ -1664,6 +1957,7 @@     , igmasNone     , igmasCreating     , igmasRefreshing+    , igmasCreatingWithoutRetries     , igmasRecreating     , igmasAbandoning @@ -1718,6 +2012,11 @@     , autSelfLink     , autId +    -- ** TargetSSLProxiesSetProxyHeaderRequest+    , TargetSSLProxiesSetProxyHeaderRequest+    , targetSSLProxiesSetProxyHeaderRequest+    , tspsphrProxyHeader+     -- ** VPNTunnelAggregatedList     , VPNTunnelAggregatedList     , vpnTunnelAggregatedList@@ -1730,6 +2029,7 @@     -- ** AttachedDisk     , AttachedDisk     , attachedDisk+    , adDiskEncryptionKey     , adKind     , adMode     , adBoot@@ -1793,19 +2093,19 @@     -- ** HTTPHealthCheck     , HTTPHealthCheck     , hTTPHealthCheck-    , httphcHealthyThreshold-    , httphcKind-    , httphcRequestPath-    , httphcSelfLink-    , httphcCheckIntervalSec-    , httphcName-    , httphcCreationTimestamp-    , httphcId-    , httphcHost-    , httphcTimeoutSec-    , httphcDescription-    , httphcUnhealthyThreshold-    , httphcPort+    , hHealthyThreshold+    , hKind+    , hRequestPath+    , hSelfLink+    , hCheckIntervalSec+    , hName+    , hCreationTimestamp+    , hId+    , hHost+    , hTimeoutSec+    , hDescription+    , hUnhealthyThreshold+    , hPort      -- ** BackendServiceGroupHealth     , BackendServiceGroupHealth@@ -1831,6 +2131,11 @@     , aalSelfLink     , aalId +    -- ** RouterAggregatedListItems+    , RouterAggregatedListItems+    , routerAggregatedListItems+    , raliAddtional+     -- ** AutoscalingPolicy     , AutoscalingPolicy     , autoscalingPolicy@@ -1853,6 +2158,9 @@     -- ** AttachedDiskInterface     , AttachedDiskInterface (..) +    -- ** HealthCheckType+    , HealthCheckType (..)+     -- ** ZoneStatus     , ZoneStatus (..) @@ -1979,6 +2287,7 @@     -- ** MachineType     , MachineType     , machineType+    , mtIsSharedCPU     , mtKind     , mtImageSpaceGb     , mtZone@@ -2051,6 +2360,7 @@     , aaCreationTimestamp     , aaAutoscalingPolicy     , aaId+    , aaRegion     , aaDescription     , aaTarget @@ -2066,6 +2376,9 @@     , targetVPNGatewayAggregatedListItems     , tvgaliAddtional +    -- ** RouterStatusBGPPeerStatusStatus+    , RouterStatusBGPPeerStatusStatus (..)+     -- ** TargetPoolsScopedListWarning     , TargetPoolsScopedListWarning     , targetPoolsScopedListWarning@@ -2103,7 +2416,9 @@     , vtLocalTrafficSelector     , vtKind     , vtPeerIP+    , vtRouter     , vtTargetVPNGateway+    , vtRemoteTrafficSelector     , vtSelfLink     , vtSharedSecret     , vtName@@ -2229,6 +2544,9 @@     , managedInstanceLastAttempt     , milaErrors +    -- ** HTTP2HealthCheckProxyHeader+    , HTTP2HealthCheckProxyHeader (..)+     -- ** BackendServiceList     , BackendServiceList     , backendServiceList@@ -2306,12 +2624,23 @@     , iiCreationTimestamp     , iiSubnetwork     , iiId+    , iiRegion     , iiDescription     , iiNamedPorts +    -- ** RouterInterface+    , RouterInterface+    , routerInterface+    , riName+    , riIPRange+    , riLinkedVPNTunnel+     -- ** InstanceWithNamedPortsStatus     , InstanceWithNamedPortsStatus (..) +    -- ** TCPHealthCheckProxyHeader+    , TCPHealthCheckProxyHeader (..)+     -- ** SnapshotList     , SnapshotList     , snapshotList@@ -2363,6 +2692,16 @@     , thpId     , thpDescription +    -- ** ConnectionDraining+    , ConnectionDraining+    , connectionDraining+    , cdDrainingTimeoutSec++    -- ** CacheInvalidationRule+    , CacheInvalidationRule+    , cacheInvalidationRule+    , cirPath+     -- ** TargetVPNGatewaysScopedList     , TargetVPNGatewaysScopedList     , targetVPNGatewaysScopedList@@ -2396,8 +2735,11 @@     -- ** BackendService     , BackendService     , backendService+    , bsSessionAffinity     , bsBackends+    , bsAffinityCookieTtlSec     , bsKind+    , bsEnableCDN     , bsFingerprint     , bsProtocol     , bsSelfLink@@ -2405,6 +2747,7 @@     , bsCreationTimestamp     , bsId     , bsRegion+    , bsConnectionDraining     , bsTimeoutSec     , bsDescription     , bsPortName@@ -2426,6 +2769,11 @@     , igslWarning     , igslInstanceGroups +    -- ** InstancesStartWithEncryptionKeyRequest+    , InstancesStartWithEncryptionKeyRequest+    , instancesStartWithEncryptionKeyRequest+    , iswekrDisks+     -- ** HTTPSHealthCheck     , HTTPSHealthCheck     , httpsHealthCheck@@ -2481,6 +2829,11 @@     , umtHost     , umtDescription +    -- ** RoutersPreviewResponse+    , RoutersPreviewResponse+    , routersPreviewResponse+    , rprResource+     -- ** Instance     , Instance     , instance'@@ -2568,6 +2921,12 @@ import           Network.Google.Resource.Compute.GlobalOperations.Delete import           Network.Google.Resource.Compute.GlobalOperations.Get import           Network.Google.Resource.Compute.GlobalOperations.List+import           Network.Google.Resource.Compute.HealthChecks.Delete+import           Network.Google.Resource.Compute.HealthChecks.Get+import           Network.Google.Resource.Compute.HealthChecks.Insert+import           Network.Google.Resource.Compute.HealthChecks.List+import           Network.Google.Resource.Compute.HealthChecks.Patch+import           Network.Google.Resource.Compute.HealthChecks.Update import           Network.Google.Resource.Compute.HTTPHealthChecks.Delete import           Network.Google.Resource.Compute.HTTPHealthChecks.Get import           Network.Google.Resource.Compute.HTTPHealthChecks.Insert@@ -2624,6 +2983,7 @@ import           Network.Google.Resource.Compute.Instances.SetScheduling import           Network.Google.Resource.Compute.Instances.SetTags import           Network.Google.Resource.Compute.Instances.Start+import           Network.Google.Resource.Compute.Instances.StartWithEncryptionKey import           Network.Google.Resource.Compute.Instances.Stop import           Network.Google.Resource.Compute.InstanceTemplates.Delete import           Network.Google.Resource.Compute.InstanceTemplates.Get@@ -2647,6 +3007,15 @@ import           Network.Google.Resource.Compute.RegionOperations.List import           Network.Google.Resource.Compute.Regions.Get import           Network.Google.Resource.Compute.Regions.List+import           Network.Google.Resource.Compute.Routers.AggregatedList+import           Network.Google.Resource.Compute.Routers.Delete+import           Network.Google.Resource.Compute.Routers.Get+import           Network.Google.Resource.Compute.Routers.GetRouterStatus+import           Network.Google.Resource.Compute.Routers.Insert+import           Network.Google.Resource.Compute.Routers.List+import           Network.Google.Resource.Compute.Routers.Patch+import           Network.Google.Resource.Compute.Routers.Preview+import           Network.Google.Resource.Compute.Routers.Update import           Network.Google.Resource.Compute.Routes.Delete import           Network.Google.Resource.Compute.Routes.Get import           Network.Google.Resource.Compute.Routes.Insert@@ -2690,6 +3059,13 @@ import           Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck import           Network.Google.Resource.Compute.TargetPools.RemoveInstance import           Network.Google.Resource.Compute.TargetPools.SetBackup+import           Network.Google.Resource.Compute.TargetSSLProxies.Delete+import           Network.Google.Resource.Compute.TargetSSLProxies.Get+import           Network.Google.Resource.Compute.TargetSSLProxies.Insert+import           Network.Google.Resource.Compute.TargetSSLProxies.List+import           Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService+import           Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader+import           Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates import           Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList import           Network.Google.Resource.Compute.TargetVPNGateways.Delete import           Network.Google.Resource.Compute.TargetVPNGateways.Get@@ -2698,6 +3074,7 @@ import           Network.Google.Resource.Compute.URLMaps.Delete import           Network.Google.Resource.Compute.URLMaps.Get import           Network.Google.Resource.Compute.URLMaps.Insert+import           Network.Google.Resource.Compute.URLMaps.InvalidateCache import           Network.Google.Resource.Compute.URLMaps.List import           Network.Google.Resource.Compute.URLMaps.Patch import           Network.Google.Resource.Compute.URLMaps.Update@@ -2728,6 +3105,7 @@        :<|> URLMapsListResource        :<|> URLMapsPatchResource        :<|> URLMapsGetResource+       :<|> URLMapsInvalidateCacheResource        :<|> URLMapsValidateResource        :<|> URLMapsDeleteResource        :<|> URLMapsUpdateResource@@ -2759,6 +3137,15 @@        :<|> NetworksListResource        :<|> NetworksGetResource        :<|> NetworksDeleteResource+       :<|> RoutersAggregatedListResource+       :<|> RoutersInsertResource+       :<|> RoutersListResource+       :<|> RoutersPatchResource+       :<|> RoutersGetResource+       :<|> RoutersPreviewResource+       :<|> RoutersDeleteResource+       :<|> RoutersUpdateResource+       :<|> RoutersGetRouterStatusResource        :<|> AddressesAggregatedListResource        :<|> AddressesInsertResource        :<|> AddressesListResource@@ -2810,6 +3197,13 @@        :<|> SnapshotsListResource        :<|> SnapshotsGetResource        :<|> SnapshotsDeleteResource+       :<|> TargetSSLProxiesInsertResource+       :<|> TargetSSLProxiesListResource+       :<|> TargetSSLProxiesSetSSLCertificatesResource+       :<|> TargetSSLProxiesGetResource+       :<|> TargetSSLProxiesSetBackendServiceResource+       :<|> TargetSSLProxiesDeleteResource+       :<|> TargetSSLProxiesSetProxyHeaderResource        :<|> HTTPSHealthChecksInsertResource        :<|> HTTPSHealthChecksListResource        :<|> HTTPSHealthChecksPatchResource@@ -2827,6 +3221,7 @@        :<|> InstancesDeleteAccessConfigResource        :<|> InstancesSetMetadataResource        :<|> InstancesSetSchedulingResource+       :<|> InstancesStartWithEncryptionKeyResource        :<|> InstancesResetResource        :<|> InstancesStopResource        :<|> InstancesGetSerialPortOutputResource@@ -2917,3 +3312,9 @@        :<|> TargetPoolsAddInstanceResource        :<|> TargetPoolsAddHealthCheckResource        :<|> TargetPoolsDeleteResource+       :<|> HealthChecksInsertResource+       :<|> HealthChecksListResource+       :<|> HealthChecksPatchResource+       :<|> HealthChecksGetResource+       :<|> HealthChecksDeleteResource+       :<|> HealthChecksUpdateResource
gen/Network/Google/Compute/Types.hs view
@@ -36,6 +36,18 @@     , thplSelfLink     , thplId +    -- * RoutersScopedList+    , RoutersScopedList+    , routersScopedList+    , rslRouters+    , rslWarning++    -- * RouterStatusResponse+    , RouterStatusResponse+    , routerStatusResponse+    , rsrKind+    , rsrResult+     -- * AddressesScopedList     , AddressesScopedList     , addressesScopedList@@ -69,6 +81,15 @@     , diskTypeAggregatedListItems     , dtaliAddtional +    -- * RouterAggregatedList+    , RouterAggregatedList+    , routerAggregatedList+    , ralNextPageToken+    , ralKind+    , ralItems+    , ralSelfLink+    , ralId+     -- * FirewallList     , FirewallList     , firewallList@@ -99,6 +120,12 @@     , instancesSetMachineTypeRequest     , ismtrMachineType +    -- * CustomerEncryptionKey+    , CustomerEncryptionKey+    , customerEncryptionKey+    , cekSha256+    , cekRawKey+     -- * AutoscalerAggregatedListItems     , AutoscalerAggregatedListItems     , autoscalerAggregatedListItems@@ -129,8 +156,10 @@     , sDiskSizeGb     , sSourceDiskId     , sKind+    , sSourceDiskEncryptionKey     , sStorageBytes     , sSelfLink+    , sSnapshotEncryptionKey     , sName     , sCreationTimestamp     , sId@@ -138,6 +167,13 @@     , sSourceDisk     , sDescription +    -- * RouterStatus+    , RouterStatus+    , routerStatus+    , rsBGPPeerStatus+    , rsNetwork+    , rsBestRoutes+     -- * AutoscalingPolicyCustomMetricUtilization     , AutoscalingPolicyCustomMetricUtilization     , autoscalingPolicyCustomMetricUtilization@@ -220,10 +256,12 @@     , Image     , image     , iStatus+    , iImageEncryptionKey     , iDiskSizeGb     , iSourceType     , iSourceDiskId     , iKind+    , iSourceDiskEncryptionKey     , iArchiveSizeBytes     , iFamily     , iRawDisk@@ -286,6 +324,29 @@     , igmslWarning     , igmslInstanceGroupManagers +    -- * HealthCheck+    , HealthCheck+    , healthCheck+    , hcHealthyThreshold+    , hcTCPHealthCheck+    , hcHTTP2HealthCheck+    , hcKind+    , hcSSLHealthCheck+    , hcSelfLink+    , hcCheckIntervalSec+    , hcName+    , hcCreationTimestamp+    , hcHTTPHealthCheck+    , hcId+    , hcType+    , hcTimeoutSec+    , hcDescription+    , hcUnhealthyThreshold+    , hcHTTPSHealthCheck++    -- * TargetSSLProxyProxyHeader+    , TargetSSLProxyProxyHeader (..)+     -- * DiskAggregatedList     , DiskAggregatedList     , diskAggregatedList@@ -390,6 +451,9 @@     , oslwdiValue     , oslwdiKey +    -- * BackendServiceSessionAffinity+    , BackendServiceSessionAffinity (..)+     -- * TargetPool     , TargetPool     , targetPool@@ -428,6 +492,11 @@     -- * OperationsScopedListWarningCode     , OperationsScopedListWarningCode (..) +    -- * TargetSSLProxiesSetBackendServiceRequest+    , TargetSSLProxiesSetBackendServiceRequest+    , targetSSLProxiesSetBackendServiceRequest+    , tspsbsrService+     -- * ForwardingRule     , ForwardingRule     , forwardingRule@@ -480,6 +549,7 @@     , pUsageExportLocation     , pSelfLink     , pName+    , pDefaultServiceAccount     , pCreationTimestamp     , pEnabledFeatures     , pQuotas@@ -531,6 +601,7 @@     , dLastAttachTimestamp     , dUsers     , dSourceImage+    , dDiskEncryptionKey     , dSizeGb     , dKind     , dLastDetachTimestamp@@ -539,11 +610,13 @@     , dName     , dSourceImageId     , dCreationTimestamp+    , dSourceImageEncryptionKey     , dId     , dLicenses     , dOptions     , dType     , dDescription+    , dSourceSnapshotEncryptionKey     , dSourceSnapshot      -- * DiskMoveRequest@@ -577,14 +650,27 @@     , igmName     , igmCreationTimestamp     , igmId+    , igmRegion     , igmTargetPools     , igmDescription     , igmInstanceGroup     , igmNamedPorts +    -- * TCPHealthCheck+    , TCPHealthCheck+    , tcpHealthCheck+    , thcResponse+    , thcProxyHeader+    , thcPortName+    , thcPort+    , thcRequest+     -- * TargetPoolsScopedListWarningCode     , TargetPoolsScopedListWarningCode (..) +    -- * SSLHealthCheckProxyHeader+    , SSLHealthCheckProxyHeader (..)+     -- * TargetVPNGatewayStatus     , TargetVPNGatewayStatus (..) @@ -617,6 +703,15 @@     , aslwCode     , aslwMessage +    -- * HealthCheckList+    , HealthCheckList+    , healthCheckList+    , hclNextPageToken+    , hclKind+    , hclItems+    , hclSelfLink+    , hclId+     -- * ManagedInstanceLastAttemptErrors     , ManagedInstanceLastAttemptErrors     , managedInstanceLastAttemptErrors@@ -683,6 +778,15 @@     , ipDescription     , ipTags +    -- * HTTP2HealthCheck+    , HTTP2HealthCheck+    , hTTP2HealthCheck+    , httphcRequestPath+    , httphcHost+    , httphcProxyHeader+    , httphcPortName+    , httphcPort+     -- * DiskTypesScopedListWarning     , DiskTypesScopedListWarning     , diskTypesScopedListWarning@@ -699,6 +803,7 @@     , adipSourceImage     , adipDiskSizeGb     , adipDiskName+    , adipSourceImageEncryptionKey     , adipDiskType      -- * AddressesScopedListWarningDataItem@@ -724,6 +829,21 @@     , targetPoolsRemoveHealthCheckRequest     , tprhcrHealthChecks +    -- * TargetSSLProxyList+    , TargetSSLProxyList+    , targetSSLProxyList+    , tsplNextPageToken+    , tsplKind+    , tsplItems+    , tsplSelfLink+    , tsplId++    -- * CustomerEncryptionKeyProtectedDisk+    , CustomerEncryptionKeyProtectedDisk+    , customerEncryptionKeyProtectedDisk+    , cekpdDiskEncryptionKey+    , cekpdSource+     -- * HealthStatusHealthState     , HealthStatusHealthState (..) @@ -748,6 +868,30 @@     -- * DeprecationStatusState     , DeprecationStatusState (..) +    -- * Router+    , Router+    , router+    , rBGPPeers+    , rBGP+    , rKind+    , rNetwork+    , rInterfaces+    , rSelfLink+    , rName+    , rCreationTimestamp+    , rId+    , rRegion+    , rDescription++    -- * RoutersScopedListWarningCode+    , RoutersScopedListWarningCode (..)++    -- * RoutersScopedListWarningDataItem+    , RoutersScopedListWarningDataItem+    , routersScopedListWarningDataItem+    , rslwdiValue+    , rslwdiKey+     -- * ManagedInstanceCurrentAction     , ManagedInstanceCurrentAction (..) @@ -792,6 +936,13 @@     , nGatewayIPv4     , nDescription +    -- * RoutersScopedListWarning+    , RoutersScopedListWarning+    , routersScopedListWarning+    , rslwData+    , rslwCode+    , rslwMessage+     -- * AccessConfigType     , AccessConfigType (..) @@ -818,6 +969,15 @@     , ialSelfLink     , ialId +    -- * SSLHealthCheck+    , SSLHealthCheck+    , sslHealthCheck+    , shcResponse+    , shcProxyHeader+    , shcPortName+    , shcPort+    , shcRequest+     -- * Address     , Address     , address@@ -845,11 +1005,21 @@     , zDescription     , zDeprecated +    -- * RouterBGP+    , RouterBGP+    , routerBGP+    , rbASN+     -- * InstanceGroupManagersRecreateInstancesRequest     , InstanceGroupManagersRecreateInstancesRequest     , instanceGroupManagersRecreateInstancesRequest     , igmrirInstances +    -- * TargetSSLProxiesSetSSLCertificatesRequest+    , TargetSSLProxiesSetSSLCertificatesRequest+    , targetSSLProxiesSetSSLCertificatesRequest+    , tspsscrSSLCertificates+     -- * InstancesScopedList     , InstancesScopedList     , instancesScopedList@@ -881,22 +1051,22 @@     -- * Route     , Route     , route-    , rPriority-    , rKind-    , rNextHopGateway-    , rNextHopNetwork-    , rNetwork-    , rWarnings-    , rNextHopIP-    , rDestRange-    , rSelfLink-    , rName-    , rCreationTimestamp-    , rId-    , rNextHopVPNTunnel-    , rDescription-    , rTags-    , rNextHopInstance+    , rouPriority+    , rouKind+    , rouNextHopGateway+    , rouNextHopNetwork+    , rouNetwork+    , rouWarnings+    , rouNextHopIP+    , rouDestRange+    , rouSelfLink+    , rouName+    , rouCreationTimestamp+    , rouId+    , rouNextHopVPNTunnel+    , rouDescription+    , rouTags+    , rouNextHopInstance      -- * TargetVPNGatewaysScopedListWarningDataItem     , TargetVPNGatewaysScopedListWarningDataItem@@ -923,6 +1093,28 @@     , itDescription     , itProperties +    -- * RouterList+    , RouterList+    , routerList+    , rllNextPageToken+    , rllKind+    , rllItems+    , rllSelfLink+    , rllId++    -- * TargetSSLProxy+    , TargetSSLProxy+    , targetSSLProxy+    , tspSSLCertificates+    , tspService+    , tspKind+    , tspSelfLink+    , tspName+    , tspCreationTimestamp+    , tspId+    , tspProxyHeader+    , tspDescription+     -- * TargetVPNGateway     , TargetVPNGateway     , targetVPNGateway@@ -961,6 +1153,20 @@     , scCertificate     , scDescription +    -- * RouterStatusBGPPeerStatus+    , RouterStatusBGPPeerStatus+    , routerStatusBGPPeerStatus+    , rsbpsStatus+    , rsbpsIPAddress+    , rsbpsState+    , rsbpsPeerIPAddress+    , rsbpsUptime+    , rsbpsNumLearnedRoutes+    , rsbpsName+    , rsbpsUptimeSeconds+    , rsbpsAdvertisedRoutes+    , rsbpsLinkedVPNTunnel+     -- * URLMapReference     , URLMapReference     , urlMapReference@@ -997,6 +1203,16 @@     -- * RegionStatus     , RegionStatus (..) +    -- * RouterBGPPeer+    , RouterBGPPeer+    , routerBGPPeer+    , rbpIPAddress+    , rbpInterfaceName+    , rbpPeerIPAddress+    , rbpAdvertisedRoutePriority+    , rbpPeerASN+    , rbpName+     -- * ManagedInstance     , ManagedInstance     , managedInstance@@ -1023,6 +1239,8 @@     , bBalancingMode     , bMaxUtilization     , bMaxRate+    , bMaxConnections+    , bMaxConnectionsPerInstance     , bMaxRatePerInstance     , bDescription     , bCapacityScaler@@ -1034,6 +1252,9 @@     , tvgslwCode     , tvgslwMessage +    -- * TargetSSLProxiesSetProxyHeaderRequestProxyHeader+    , TargetSSLProxiesSetProxyHeaderRequestProxyHeader (..)+     -- * AddressList     , AddressList     , addressList@@ -1061,6 +1282,7 @@     , igmasNone     , igmasCreating     , igmasRefreshing+    , igmasCreatingWithoutRetries     , igmasRecreating     , igmasAbandoning @@ -1115,6 +1337,11 @@     , autSelfLink     , autId +    -- * TargetSSLProxiesSetProxyHeaderRequest+    , TargetSSLProxiesSetProxyHeaderRequest+    , targetSSLProxiesSetProxyHeaderRequest+    , tspsphrProxyHeader+     -- * VPNTunnelAggregatedList     , VPNTunnelAggregatedList     , vpnTunnelAggregatedList@@ -1127,6 +1354,7 @@     -- * AttachedDisk     , AttachedDisk     , attachedDisk+    , adDiskEncryptionKey     , adKind     , adMode     , adBoot@@ -1190,19 +1418,19 @@     -- * HTTPHealthCheck     , HTTPHealthCheck     , hTTPHealthCheck-    , httphcHealthyThreshold-    , httphcKind-    , httphcRequestPath-    , httphcSelfLink-    , httphcCheckIntervalSec-    , httphcName-    , httphcCreationTimestamp-    , httphcId-    , httphcHost-    , httphcTimeoutSec-    , httphcDescription-    , httphcUnhealthyThreshold-    , httphcPort+    , hHealthyThreshold+    , hKind+    , hRequestPath+    , hSelfLink+    , hCheckIntervalSec+    , hName+    , hCreationTimestamp+    , hId+    , hHost+    , hTimeoutSec+    , hDescription+    , hUnhealthyThreshold+    , hPort      -- * BackendServiceGroupHealth     , BackendServiceGroupHealth@@ -1228,6 +1456,11 @@     , aalSelfLink     , aalId +    -- * RouterAggregatedListItems+    , RouterAggregatedListItems+    , routerAggregatedListItems+    , raliAddtional+     -- * AutoscalingPolicy     , AutoscalingPolicy     , autoscalingPolicy@@ -1250,6 +1483,9 @@     -- * AttachedDiskInterface     , AttachedDiskInterface (..) +    -- * HealthCheckType+    , HealthCheckType (..)+     -- * ZoneStatus     , ZoneStatus (..) @@ -1376,6 +1612,7 @@     -- * MachineType     , MachineType     , machineType+    , mtIsSharedCPU     , mtKind     , mtImageSpaceGb     , mtZone@@ -1448,6 +1685,7 @@     , aaCreationTimestamp     , aaAutoscalingPolicy     , aaId+    , aaRegion     , aaDescription     , aaTarget @@ -1463,6 +1701,9 @@     , targetVPNGatewayAggregatedListItems     , tvgaliAddtional +    -- * RouterStatusBGPPeerStatusStatus+    , RouterStatusBGPPeerStatusStatus (..)+     -- * TargetPoolsScopedListWarning     , TargetPoolsScopedListWarning     , targetPoolsScopedListWarning@@ -1500,7 +1741,9 @@     , vtLocalTrafficSelector     , vtKind     , vtPeerIP+    , vtRouter     , vtTargetVPNGateway+    , vtRemoteTrafficSelector     , vtSelfLink     , vtSharedSecret     , vtName@@ -1626,6 +1869,9 @@     , managedInstanceLastAttempt     , milaErrors +    -- * HTTP2HealthCheckProxyHeader+    , HTTP2HealthCheckProxyHeader (..)+     -- * BackendServiceList     , BackendServiceList     , backendServiceList@@ -1703,12 +1949,23 @@     , iiCreationTimestamp     , iiSubnetwork     , iiId+    , iiRegion     , iiDescription     , iiNamedPorts +    -- * RouterInterface+    , RouterInterface+    , routerInterface+    , riName+    , riIPRange+    , riLinkedVPNTunnel+     -- * InstanceWithNamedPortsStatus     , InstanceWithNamedPortsStatus (..) +    -- * TCPHealthCheckProxyHeader+    , TCPHealthCheckProxyHeader (..)+     -- * SnapshotList     , SnapshotList     , snapshotList@@ -1760,6 +2017,16 @@     , thpId     , thpDescription +    -- * ConnectionDraining+    , ConnectionDraining+    , connectionDraining+    , cdDrainingTimeoutSec++    -- * CacheInvalidationRule+    , CacheInvalidationRule+    , cacheInvalidationRule+    , cirPath+     -- * TargetVPNGatewaysScopedList     , TargetVPNGatewaysScopedList     , targetVPNGatewaysScopedList@@ -1793,8 +2060,11 @@     -- * BackendService     , BackendService     , backendService+    , bsSessionAffinity     , bsBackends+    , bsAffinityCookieTtlSec     , bsKind+    , bsEnableCDN     , bsFingerprint     , bsProtocol     , bsSelfLink@@ -1802,6 +2072,7 @@     , bsCreationTimestamp     , bsId     , bsRegion+    , bsConnectionDraining     , bsTimeoutSec     , bsDescription     , bsPortName@@ -1823,6 +2094,11 @@     , igslWarning     , igslInstanceGroups +    -- * InstancesStartWithEncryptionKeyRequest+    , InstancesStartWithEncryptionKeyRequest+    , instancesStartWithEncryptionKeyRequest+    , iswekrDisks+     -- * HTTPSHealthCheck     , HTTPSHealthCheck     , httpsHealthCheck@@ -1877,6 +2153,11 @@     , umtService     , umtHost     , umtDescription++    -- * RoutersPreviewResponse+    , RoutersPreviewResponse+    , routersPreviewResponse+    , rprResource      -- * Instance     , Instance
gen/Network/Google/Compute/Types/Product.hs view
@@ -109,16599 +109,19124 @@                   ("id" .=) <$> _thplId])  ----- /See:/ 'addressesScopedList' smart constructor.-data AddressesScopedList = AddressesScopedList'-    { _aslAddresses :: !(Maybe [Address])-    , _aslWarning   :: !(Maybe AddressesScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aslAddresses'------ * 'aslWarning'-addressesScopedList-    :: AddressesScopedList-addressesScopedList =-    AddressesScopedList'-    { _aslAddresses = Nothing-    , _aslWarning = Nothing-    }---- | [Output Only] List of addresses contained in this scope.-aslAddresses :: Lens' AddressesScopedList [Address]-aslAddresses-  = lens _aslAddresses (\ s a -> s{_aslAddresses = a})-      . _Default-      . _Coerce---- | [Output Only] Informational warning which replaces the list of addresses--- when the list is empty.-aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)-aslWarning-  = lens _aslWarning (\ s a -> s{_aslWarning = a})--instance FromJSON AddressesScopedList where-        parseJSON-          = withObject "AddressesScopedList"-              (\ o ->-                 AddressesScopedList' <$>-                   (o .:? "addresses" .!= mempty) <*> (o .:? "warning"))--instance ToJSON AddressesScopedList where-        toJSON AddressesScopedList'{..}-          = object-              (catMaybes-                 [("addresses" .=) <$> _aslAddresses,-                  ("warning" .=) <$> _aslWarning])------- /See:/ 'operationWarningsItemDataItem' smart constructor.-data OperationWarningsItemDataItem = OperationWarningsItemDataItem'-    { _owidiValue :: !(Maybe Text)-    , _owidiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'owidiValue'------ * 'owidiKey'-operationWarningsItemDataItem-    :: OperationWarningsItemDataItem-operationWarningsItemDataItem =-    OperationWarningsItemDataItem'-    { _owidiValue = Nothing-    , _owidiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)-owidiValue-  = lens _owidiValue (\ s a -> s{_owidiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)-owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})--instance FromJSON OperationWarningsItemDataItem where-        parseJSON-          = withObject "OperationWarningsItemDataItem"-              (\ o ->-                 OperationWarningsItemDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON OperationWarningsItemDataItem where-        toJSON OperationWarningsItemDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _owidiValue,-                  ("key" .=) <$> _owidiKey])------- /See:/ 'instanceGroupManagersAbandonInstancesRequest' smart constructor.-newtype InstanceGroupManagersAbandonInstancesRequest = InstanceGroupManagersAbandonInstancesRequest'-    { _igmairInstances :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmairInstances'-instanceGroupManagersAbandonInstancesRequest-    :: InstanceGroupManagersAbandonInstancesRequest-instanceGroupManagersAbandonInstancesRequest =-    InstanceGroupManagersAbandonInstancesRequest'-    { _igmairInstances = Nothing-    }---- | The URL for one or more instances to abandon from the managed instance--- group.-igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]-igmairInstances-  = lens _igmairInstances-      (\ s a -> s{_igmairInstances = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupManagersAbandonInstancesRequest where-        parseJSON-          = withObject-              "InstanceGroupManagersAbandonInstancesRequest"-              (\ o ->-                 InstanceGroupManagersAbandonInstancesRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON-         InstanceGroupManagersAbandonInstancesRequest where-        toJSON-          InstanceGroupManagersAbandonInstancesRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _igmairInstances])---- | [Output Only] A map of scoped machine type lists.------ /See:/ 'machineTypeAggregatedListItems' smart constructor.-newtype MachineTypeAggregatedListItems = MachineTypeAggregatedListItems'-    { _mtaliAddtional :: HashMap Text MachineTypesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypeAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtaliAddtional'-machineTypeAggregatedListItems-    :: HashMap Text MachineTypesScopedList -- ^ 'mtaliAddtional'-    -> MachineTypeAggregatedListItems-machineTypeAggregatedListItems pMtaliAddtional_ =-    MachineTypeAggregatedListItems'-    { _mtaliAddtional = _Coerce # pMtaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of machine types.-mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)-mtaliAddtional-  = lens _mtaliAddtional-      (\ s a -> s{_mtaliAddtional = a})-      . _Coerce--instance FromJSON MachineTypeAggregatedListItems-         where-        parseJSON-          = withObject "MachineTypeAggregatedListItems"-              (\ o ->-                 MachineTypeAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON MachineTypeAggregatedListItems where-        toJSON = toJSON . _mtaliAddtional---- | [Output Only] A map of scoped disk type lists.------ /See:/ 'diskTypeAggregatedListItems' smart constructor.-newtype DiskTypeAggregatedListItems = DiskTypeAggregatedListItems'-    { _dtaliAddtional :: HashMap Text DiskTypesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypeAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtaliAddtional'-diskTypeAggregatedListItems-    :: HashMap Text DiskTypesScopedList -- ^ 'dtaliAddtional'-    -> DiskTypeAggregatedListItems-diskTypeAggregatedListItems pDtaliAddtional_ =-    DiskTypeAggregatedListItems'-    { _dtaliAddtional = _Coerce # pDtaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of disk types.-dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)-dtaliAddtional-  = lens _dtaliAddtional-      (\ s a -> s{_dtaliAddtional = a})-      . _Coerce--instance FromJSON DiskTypeAggregatedListItems where-        parseJSON-          = withObject "DiskTypeAggregatedListItems"-              (\ o ->-                 DiskTypeAggregatedListItems' <$> (parseJSONObject o))--instance ToJSON DiskTypeAggregatedListItems where-        toJSON = toJSON . _dtaliAddtional---- | Contains a list of firewalls.------ /See:/ 'firewallList' smart constructor.-data FirewallList = FirewallList'-    { _flNextPageToken :: !(Maybe Text)-    , _flKind          :: !Text-    , _flItems         :: !(Maybe [Firewall])-    , _flSelfLink      :: !(Maybe Text)-    , _flId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FirewallList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'flNextPageToken'------ * 'flKind'------ * 'flItems'------ * 'flSelfLink'------ * 'flId'-firewallList-    :: FirewallList-firewallList =-    FirewallList'-    { _flNextPageToken = Nothing-    , _flKind = "compute#firewallList"-    , _flItems = Nothing-    , _flSelfLink = Nothing-    , _flId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-flNextPageToken :: Lens' FirewallList (Maybe Text)-flNextPageToken-  = lens _flNextPageToken-      (\ s a -> s{_flNextPageToken = a})---- | [Output Only] Type of resource. Always compute#firewallList for lists of--- firewalls.-flKind :: Lens' FirewallList Text-flKind = lens _flKind (\ s a -> s{_flKind = a})---- | [Output Only] A list of Firewall resources.-flItems :: Lens' FirewallList [Firewall]-flItems-  = lens _flItems (\ s a -> s{_flItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-flSelfLink :: Lens' FirewallList (Maybe Text)-flSelfLink-  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-flId :: Lens' FirewallList (Maybe Text)-flId = lens _flId (\ s a -> s{_flId = a})--instance FromJSON FirewallList where-        parseJSON-          = withObject "FirewallList"-              (\ o ->-                 FirewallList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#firewallList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON FirewallList where-        toJSON FirewallList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _flNextPageToken,-                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,-                  ("selfLink" .=) <$> _flSelfLink,-                  ("id" .=) <$> _flId])---- | [Output Only] Informational warning which replaces the list of instances--- when the list is empty.------ /See:/ 'instancesScopedListWarning' smart constructor.-data InstancesScopedListWarning = InstancesScopedListWarning'-    { _islwData    :: !(Maybe [InstancesScopedListWarningDataItem])-    , _islwCode    :: !(Maybe InstancesScopedListWarningCode)-    , _islwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstancesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'islwData'------ * 'islwCode'------ * 'islwMessage'-instancesScopedListWarning-    :: InstancesScopedListWarning-instancesScopedListWarning =-    InstancesScopedListWarning'-    { _islwData = Nothing-    , _islwCode = Nothing-    , _islwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]-islwData-  = lens _islwData (\ s a -> s{_islwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)-islwCode = lens _islwCode (\ s a -> s{_islwCode = a})---- | [Output Only] A human-readable description of the warning code.-islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)-islwMessage-  = lens _islwMessage (\ s a -> s{_islwMessage = a})--instance FromJSON InstancesScopedListWarning where-        parseJSON-          = withObject "InstancesScopedListWarning"-              (\ o ->-                 InstancesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON InstancesScopedListWarning where-        toJSON InstancesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _islwData,-                  ("code" .=) <$> _islwCode,-                  ("message" .=) <$> _islwMessage])---- | A list of InstanceGroup resources.------ /See:/ 'instanceGroupList' smart constructor.-data InstanceGroupList = InstanceGroupList'-    { _iglNextPageToken :: !(Maybe Text)-    , _iglKind          :: !Text-    , _iglItems         :: !(Maybe [InstanceGroup])-    , _iglSelfLink      :: !(Maybe Text)-    , _iglId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iglNextPageToken'------ * 'iglKind'------ * 'iglItems'------ * 'iglSelfLink'------ * 'iglId'-instanceGroupList-    :: InstanceGroupList-instanceGroupList =-    InstanceGroupList'-    { _iglNextPageToken = Nothing-    , _iglKind = "compute#instanceGroupList"-    , _iglItems = Nothing-    , _iglSelfLink = Nothing-    , _iglId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)-iglNextPageToken-  = lens _iglNextPageToken-      (\ s a -> s{_iglNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceGroupList for instance group lists.-iglKind :: Lens' InstanceGroupList Text-iglKind = lens _iglKind (\ s a -> s{_iglKind = a})---- | A list of instance groups.-iglItems :: Lens' InstanceGroupList [InstanceGroup]-iglItems-  = lens _iglItems (\ s a -> s{_iglItems = a}) .-      _Default-      . _Coerce---- | [Output Only] The URL for this resource type. The server generates this--- URL.-iglSelfLink :: Lens' InstanceGroupList (Maybe Text)-iglSelfLink-  = lens _iglSelfLink (\ s a -> s{_iglSelfLink = a})---- | [Output Only] A unique identifier for this list of instance groups. The--- server generates this identifier.-iglId :: Lens' InstanceGroupList (Maybe Text)-iglId = lens _iglId (\ s a -> s{_iglId = a})--instance FromJSON InstanceGroupList where-        parseJSON-          = withObject "InstanceGroupList"-              (\ o ->-                 InstanceGroupList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#instanceGroupList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceGroupList where-        toJSON InstanceGroupList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _iglNextPageToken,-                  Just ("kind" .= _iglKind),-                  ("items" .=) <$> _iglItems,-                  ("selfLink" .=) <$> _iglSelfLink,-                  ("id" .=) <$> _iglId])------- /See:/ 'instancesSetMachineTypeRequest' smart constructor.-newtype InstancesSetMachineTypeRequest = InstancesSetMachineTypeRequest'-    { _ismtrMachineType :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstancesSetMachineTypeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ismtrMachineType'-instancesSetMachineTypeRequest-    :: InstancesSetMachineTypeRequest-instancesSetMachineTypeRequest =-    InstancesSetMachineTypeRequest'-    { _ismtrMachineType = Nothing-    }---- | Full or partial URL of the machine type resource. See Machine Types for--- a full list of machine types. For example:--- zones\/us-central1-f\/machineTypes\/n1-standard-1-ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)-ismtrMachineType-  = lens _ismtrMachineType-      (\ s a -> s{_ismtrMachineType = a})--instance FromJSON InstancesSetMachineTypeRequest-         where-        parseJSON-          = withObject "InstancesSetMachineTypeRequest"-              (\ o ->-                 InstancesSetMachineTypeRequest' <$>-                   (o .:? "machineType"))--instance ToJSON InstancesSetMachineTypeRequest where-        toJSON InstancesSetMachineTypeRequest'{..}-          = object-              (catMaybes-                 [("machineType" .=) <$> _ismtrMachineType])---- | A map of scoped autoscaler lists.------ /See:/ 'autoscalerAggregatedListItems' smart constructor.-newtype AutoscalerAggregatedListItems = AutoscalerAggregatedListItems'-    { _aaliAddtional :: HashMap Text AutoscalersScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalerAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aaliAddtional'-autoscalerAggregatedListItems-    :: HashMap Text AutoscalersScopedList -- ^ 'aaliAddtional'-    -> AutoscalerAggregatedListItems-autoscalerAggregatedListItems pAaliAddtional_ =-    AutoscalerAggregatedListItems'-    { _aaliAddtional = _Coerce # pAaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of autoscalers.-aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)-aaliAddtional-  = lens _aaliAddtional-      (\ s a -> s{_aaliAddtional = a})-      . _Coerce--instance FromJSON AutoscalerAggregatedListItems where-        parseJSON-          = withObject "AutoscalerAggregatedListItems"-              (\ o ->-                 AutoscalerAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON AutoscalerAggregatedListItems where-        toJSON = toJSON . _aaliAddtional------- /See:/ 'instanceGroupManagersSetInstanceTemplateRequest' smart constructor.-newtype InstanceGroupManagersSetInstanceTemplateRequest = InstanceGroupManagersSetInstanceTemplateRequest'-    { _igmsitrInstanceTemplate :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersSetInstanceTemplateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmsitrInstanceTemplate'-instanceGroupManagersSetInstanceTemplateRequest-    :: InstanceGroupManagersSetInstanceTemplateRequest-instanceGroupManagersSetInstanceTemplateRequest =-    InstanceGroupManagersSetInstanceTemplateRequest'-    { _igmsitrInstanceTemplate = Nothing-    }---- | The URL of the instance template that is specified for this managed--- instance group. The group uses this template to create all new instances--- in the managed instance group.-igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)-igmsitrInstanceTemplate-  = lens _igmsitrInstanceTemplate-      (\ s a -> s{_igmsitrInstanceTemplate = a})--instance FromJSON-         InstanceGroupManagersSetInstanceTemplateRequest where-        parseJSON-          = withObject-              "InstanceGroupManagersSetInstanceTemplateRequest"-              (\ o ->-                 InstanceGroupManagersSetInstanceTemplateRequest' <$>-                   (o .:? "instanceTemplate"))--instance ToJSON-         InstanceGroupManagersSetInstanceTemplateRequest where-        toJSON-          InstanceGroupManagersSetInstanceTemplateRequest'{..}-          = object-              (catMaybes-                 [("instanceTemplate" .=) <$>-                    _igmsitrInstanceTemplate])---- | Deprecation status for a public resource.------ /See:/ 'deprecationStatus' smart constructor.-data DeprecationStatus = DeprecationStatus'-    { _dsState       :: !(Maybe DeprecationStatusState)-    , _dsDeleted     :: !(Maybe Text)-    , _dsReplacement :: !(Maybe Text)-    , _dsObsolete    :: !(Maybe Text)-    , _dsDeprecated  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DeprecationStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dsState'------ * 'dsDeleted'------ * 'dsReplacement'------ * 'dsObsolete'------ * 'dsDeprecated'-deprecationStatus-    :: DeprecationStatus-deprecationStatus =-    DeprecationStatus'-    { _dsState = Nothing-    , _dsDeleted = Nothing-    , _dsReplacement = Nothing-    , _dsObsolete = Nothing-    , _dsDeprecated = Nothing-    }---- | The deprecation state of this resource. This can be DEPRECATED,--- OBSOLETE, or DELETED. Operations which create a new resource using a--- DEPRECATED resource will return successfully, but with a warning--- indicating the deprecated resource and recommending its replacement.--- Operations which use OBSOLETE or DELETED resources will be rejected and--- result in an error.-dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)-dsState = lens _dsState (\ s a -> s{_dsState = a})---- | An optional RFC3339 timestamp on or after which the deprecation state of--- this resource will be changed to DELETED.-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 deprecation state of--- this resource will be changed to OBSOLETE.-dsObsolete :: Lens' DeprecationStatus (Maybe Text)-dsObsolete-  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})---- | An optional RFC3339 timestamp on or after which the deprecation state of--- this resource will be changed to DEPRECATED.-dsDeprecated :: Lens' DeprecationStatus (Maybe Text)-dsDeprecated-  = lens _dsDeprecated (\ s a -> s{_dsDeprecated = a})--instance FromJSON DeprecationStatus where-        parseJSON-          = withObject "DeprecationStatus"-              (\ o ->-                 DeprecationStatus' <$>-                   (o .:? "state") <*> (o .:? "deleted") <*>-                     (o .:? "replacement")-                     <*> (o .:? "obsolete")-                     <*> (o .:? "deprecated"))--instance ToJSON DeprecationStatus where-        toJSON DeprecationStatus'{..}-          = object-              (catMaybes-                 [("state" .=) <$> _dsState,-                  ("deleted" .=) <$> _dsDeleted,-                  ("replacement" .=) <$> _dsReplacement,-                  ("obsolete" .=) <$> _dsObsolete,-                  ("deprecated" .=) <$> _dsDeprecated])---- | A persistent disk snapshot resource.------ /See:/ 'snapshot' smart constructor.-data Snapshot = Snapshot'-    { _sStorageBytesStatus :: !(Maybe SnapshotStorageBytesStatus)-    , _sStatus             :: !(Maybe SnapshotStatus)-    , _sDiskSizeGb         :: !(Maybe (Textual Int64))-    , _sSourceDiskId       :: !(Maybe Text)-    , _sKind               :: !Text-    , _sStorageBytes       :: !(Maybe (Textual Int64))-    , _sSelfLink           :: !(Maybe Text)-    , _sName               :: !(Maybe Text)-    , _sCreationTimestamp  :: !(Maybe Text)-    , _sId                 :: !(Maybe (Textual Word64))-    , _sLicenses           :: !(Maybe [Text])-    , _sSourceDisk         :: !(Maybe Text)-    , _sDescription        :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Snapshot' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sStorageBytesStatus'------ * 'sStatus'------ * 'sDiskSizeGb'------ * 'sSourceDiskId'------ * 'sKind'------ * 'sStorageBytes'------ * 'sSelfLink'------ * 'sName'------ * 'sCreationTimestamp'------ * 'sId'------ * 'sLicenses'------ * 'sSourceDisk'------ * 'sDescription'-snapshot-    :: Snapshot-snapshot =-    Snapshot'-    { _sStorageBytesStatus = Nothing-    , _sStatus = Nothing-    , _sDiskSizeGb = Nothing-    , _sSourceDiskId = Nothing-    , _sKind = "compute#snapshot"-    , _sStorageBytes = Nothing-    , _sSelfLink = Nothing-    , _sName = Nothing-    , _sCreationTimestamp = Nothing-    , _sId = Nothing-    , _sLicenses = Nothing-    , _sSourceDisk = Nothing-    , _sDescription = Nothing-    }---- | [Output Only] An indicator whether storageBytes is in a stable state or--- it is being adjusted as a result of shared storage reallocation. This--- status can either be UPDATING, meaning the size of the snapshot is being--- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.-sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)-sStorageBytesStatus-  = lens _sStorageBytesStatus-      (\ s a -> s{_sStorageBytesStatus = a})---- | [Output Only] The status of the snapshot. This can be CREATING,--- DELETING, FAILED, READY, or UPLOADING.-sStatus :: Lens' Snapshot (Maybe SnapshotStatus)-sStatus = lens _sStatus (\ s a -> s{_sStatus = a})---- | [Output Only] Size of the snapshot, specified in GB.-sDiskSizeGb :: Lens' Snapshot (Maybe Int64)-sDiskSizeGb-  = lens _sDiskSizeGb (\ s a -> s{_sDiskSizeGb = a}) .-      mapping _Coerce---- | [Output Only] The ID value of the disk used to create this snapshot.--- This value may be used to determine whether the snapshot was taken from--- the current or a previous instance of a given disk name.-sSourceDiskId :: Lens' Snapshot (Maybe Text)-sSourceDiskId-  = lens _sSourceDiskId-      (\ s a -> s{_sSourceDiskId = a})---- | [Output Only] Type of the resource. Always compute#snapshot for Snapshot--- resources.-sKind :: Lens' Snapshot Text-sKind = lens _sKind (\ s a -> s{_sKind = a})---- | [Output Only] A size of the the storage used by the snapshot. As--- snapshots share storage, this number is expected to change with snapshot--- creation\/deletion.-sStorageBytes :: Lens' Snapshot (Maybe Int64)-sStorageBytes-  = lens _sStorageBytes-      (\ s a -> s{_sStorageBytes = a})-      . mapping _Coerce---- | [Output Only] Server-defined URL for the resource.-sSelfLink :: Lens' Snapshot (Maybe Text)-sSelfLink-  = lens _sSelfLink (\ s a -> s{_sSelfLink = a})---- | Name of the resource; provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-sName :: Lens' Snapshot (Maybe Text)-sName = lens _sName (\ s a -> s{_sName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-sCreationTimestamp :: Lens' Snapshot (Maybe Text)-sCreationTimestamp-  = lens _sCreationTimestamp-      (\ s a -> s{_sCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-sId :: Lens' Snapshot (Maybe Word64)-sId-  = lens _sId (\ s a -> s{_sId = a}) . mapping _Coerce---- | [Output Only] A list of public visible licenses that apply to this--- snapshot. This can be because the original image had licenses attached--- (such as a Windows image).-sLicenses :: Lens' Snapshot [Text]-sLicenses-  = lens _sLicenses (\ s a -> s{_sLicenses = a}) .-      _Default-      . _Coerce---- | [Output Only] The source disk used to create this snapshot.-sSourceDisk :: Lens' Snapshot (Maybe Text)-sSourceDisk-  = lens _sSourceDisk (\ s a -> s{_sSourceDisk = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-sDescription :: Lens' Snapshot (Maybe Text)-sDescription-  = lens _sDescription (\ s a -> s{_sDescription = a})--instance FromJSON Snapshot where-        parseJSON-          = withObject "Snapshot"-              (\ o ->-                 Snapshot' <$>-                   (o .:? "storageBytesStatus") <*> (o .:? "status") <*>-                     (o .:? "diskSizeGb")-                     <*> (o .:? "sourceDiskId")-                     <*> (o .:? "kind" .!= "compute#snapshot")-                     <*> (o .:? "storageBytes")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "licenses" .!= mempty)-                     <*> (o .:? "sourceDisk")-                     <*> (o .:? "description"))--instance ToJSON Snapshot where-        toJSON Snapshot'{..}-          = object-              (catMaybes-                 [("storageBytesStatus" .=) <$> _sStorageBytesStatus,-                  ("status" .=) <$> _sStatus,-                  ("diskSizeGb" .=) <$> _sDiskSizeGb,-                  ("sourceDiskId" .=) <$> _sSourceDiskId,-                  Just ("kind" .= _sKind),-                  ("storageBytes" .=) <$> _sStorageBytes,-                  ("selfLink" .=) <$> _sSelfLink,-                  ("name" .=) <$> _sName,-                  ("creationTimestamp" .=) <$> _sCreationTimestamp,-                  ("id" .=) <$> _sId, ("licenses" .=) <$> _sLicenses,-                  ("sourceDisk" .=) <$> _sSourceDisk,-                  ("description" .=) <$> _sDescription])---- | Custom utilization metric policy.------ /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.-data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization'-    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))-    , _apcmuMetric                :: !(Maybe Text)-    , _apcmuUtilizationTargetType :: !(Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalingPolicyCustomMetricUtilization' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'apcmuUtilizationTarget'------ * 'apcmuMetric'------ * 'apcmuUtilizationTargetType'-autoscalingPolicyCustomMetricUtilization-    :: AutoscalingPolicyCustomMetricUtilization-autoscalingPolicyCustomMetricUtilization =-    AutoscalingPolicyCustomMetricUtilization'-    { _apcmuUtilizationTarget = Nothing-    , _apcmuMetric = Nothing-    , _apcmuUtilizationTargetType = Nothing-    }---- | Target value of the metric which autoscaler should maintain. Must be a--- positive value.-apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)-apcmuUtilizationTarget-  = lens _apcmuUtilizationTarget-      (\ s a -> s{_apcmuUtilizationTarget = a})-      . mapping _Coerce---- | The identifier of the Cloud Monitoring metric. The metric cannot have--- negative values and should be a utilization metric, which means that the--- number of virtual machines handling requests should increase or decrease--- proportionally to the metric. The metric must also have a label of--- compute.googleapis.com\/resource_id with the value of the instance\'s--- unique ID, although this alone does not guarantee that the metric is--- valid. For example, the following is a valid metric:--- compute.googleapis.com\/instance\/network\/received_bytes_count The--- following is not a valid metric because it does not increase or decrease--- based on usage: compute.googleapis.com\/instance\/cpu\/reserved_cores-apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)-apcmuMetric-  = lens _apcmuMetric (\ s a -> s{_apcmuMetric = a})---- | Defines how target utilization value is expressed for a Cloud Monitoring--- metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not--- specified, the default is GAUGE.-apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)-apcmuUtilizationTargetType-  = lens _apcmuUtilizationTargetType-      (\ s a -> s{_apcmuUtilizationTargetType = a})--instance FromJSON-         AutoscalingPolicyCustomMetricUtilization where-        parseJSON-          = withObject-              "AutoscalingPolicyCustomMetricUtilization"-              (\ o ->-                 AutoscalingPolicyCustomMetricUtilization' <$>-                   (o .:? "utilizationTarget") <*> (o .:? "metric") <*>-                     (o .:? "utilizationTargetType"))--instance ToJSON-         AutoscalingPolicyCustomMetricUtilization where-        toJSON AutoscalingPolicyCustomMetricUtilization'{..}-          = object-              (catMaybes-                 [("utilizationTarget" .=) <$>-                    _apcmuUtilizationTarget,-                  ("metric" .=) <$> _apcmuMetric,-                  ("utilizationTargetType" .=) <$>-                    _apcmuUtilizationTargetType])---- | Contains a list of ForwardingRule resources.------ /See:/ 'forwardingRuleList' smart constructor.-data ForwardingRuleList = ForwardingRuleList'-    { _frlNextPageToken :: !(Maybe Text)-    , _frlKind          :: !Text-    , _frlItems         :: !(Maybe [ForwardingRule])-    , _frlSelfLink      :: !(Maybe Text)-    , _frlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRuleList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frlNextPageToken'------ * 'frlKind'------ * 'frlItems'------ * 'frlSelfLink'------ * 'frlId'-forwardingRuleList-    :: ForwardingRuleList-forwardingRuleList =-    ForwardingRuleList'-    { _frlNextPageToken = Nothing-    , _frlKind = "compute#forwardingRuleList"-    , _frlItems = Nothing-    , _frlSelfLink = Nothing-    , _frlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)-frlNextPageToken-  = lens _frlNextPageToken-      (\ s a -> s{_frlNextPageToken = a})---- | Type of resource.-frlKind :: Lens' ForwardingRuleList Text-frlKind = lens _frlKind (\ s a -> s{_frlKind = a})---- | A list of ForwardingRule resources.-frlItems :: Lens' ForwardingRuleList [ForwardingRule]-frlItems-  = lens _frlItems (\ s a -> s{_frlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)-frlSelfLink-  = lens _frlSelfLink (\ s a -> s{_frlSelfLink = a})---- | [Output Only] Unique identifier for the resource. Set by the server.-frlId :: Lens' ForwardingRuleList (Maybe Text)-frlId = lens _frlId (\ s a -> s{_frlId = a})--instance FromJSON ForwardingRuleList where-        parseJSON-          = withObject "ForwardingRuleList"-              (\ o ->-                 ForwardingRuleList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#forwardingRuleList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON ForwardingRuleList where-        toJSON ForwardingRuleList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _frlNextPageToken,-                  Just ("kind" .= _frlKind),-                  ("items" .=) <$> _frlItems,-                  ("selfLink" .=) <$> _frlSelfLink,-                  ("id" .=) <$> _frlId])------- /See:/ 'vpnTunnelsScopedList' smart constructor.-data VPNTunnelsScopedList = VPNTunnelsScopedList'-    { _vtslVPNTunnels :: !(Maybe [VPNTunnel])-    , _vtslWarning    :: !(Maybe VPNTunnelsScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelsScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtslVPNTunnels'------ * 'vtslWarning'-vpnTunnelsScopedList-    :: VPNTunnelsScopedList-vpnTunnelsScopedList =-    VPNTunnelsScopedList'-    { _vtslVPNTunnels = Nothing-    , _vtslWarning = Nothing-    }---- | List of vpn tunnels contained in this scope.-vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]-vtslVPNTunnels-  = lens _vtslVPNTunnels-      (\ s a -> s{_vtslVPNTunnels = a})-      . _Default-      . _Coerce---- | Informational warning which replaces the list of addresses when the list--- is empty.-vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)-vtslWarning-  = lens _vtslWarning (\ s a -> s{_vtslWarning = a})--instance FromJSON VPNTunnelsScopedList where-        parseJSON-          = withObject "VPNTunnelsScopedList"-              (\ o ->-                 VPNTunnelsScopedList' <$>-                   (o .:? "vpnTunnels" .!= mempty) <*>-                     (o .:? "warning"))--instance ToJSON VPNTunnelsScopedList where-        toJSON VPNTunnelsScopedList'{..}-          = object-              (catMaybes-                 [("vpnTunnels" .=) <$> _vtslVPNTunnels,-                  ("warning" .=) <$> _vtslWarning])------- /See:/ 'instanceGroupsSetNamedPortsRequest' smart constructor.-data InstanceGroupsSetNamedPortsRequest = InstanceGroupsSetNamedPortsRequest'-    { _igsnprFingerprint :: !(Maybe Base64)-    , _igsnprNamedPorts  :: !(Maybe [NamedPort])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igsnprFingerprint'------ * 'igsnprNamedPorts'-instanceGroupsSetNamedPortsRequest-    :: InstanceGroupsSetNamedPortsRequest-instanceGroupsSetNamedPortsRequest =-    InstanceGroupsSetNamedPortsRequest'-    { _igsnprFingerprint = Nothing-    , _igsnprNamedPorts = Nothing-    }---- | The fingerprint of the named ports information for this instance group.--- Use this optional property to prevent conflicts when multiple users--- change the named ports settings concurrently. Obtain the fingerprint--- with the instanceGroups.get method. Then, include the fingerprint in--- your request to ensure that you do not overwrite changes that were--- applied from another concurrent request.-igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)-igsnprFingerprint-  = lens _igsnprFingerprint-      (\ s a -> s{_igsnprFingerprint = a})-      . mapping _Base64---- | The list of named ports to set for this instance group.-igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]-igsnprNamedPorts-  = lens _igsnprNamedPorts-      (\ s a -> s{_igsnprNamedPorts = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroupsSetNamedPortsRequest-         where-        parseJSON-          = withObject "InstanceGroupsSetNamedPortsRequest"-              (\ o ->-                 InstanceGroupsSetNamedPortsRequest' <$>-                   (o .:? "fingerprint") <*>-                     (o .:? "namedPorts" .!= mempty))--instance ToJSON InstanceGroupsSetNamedPortsRequest-         where-        toJSON InstanceGroupsSetNamedPortsRequest'{..}-          = object-              (catMaybes-                 [("fingerprint" .=) <$> _igsnprFingerprint,-                  ("namedPorts" .=) <$> _igsnprNamedPorts])---- | Contains a list of Operation resources.------ /See:/ 'operationList' smart constructor.-data OperationList = OperationList'-    { _olNextPageToken :: !(Maybe Text)-    , _olKind          :: !Text-    , _olItems         :: !(Maybe [Operation])-    , _olSelfLink      :: !(Maybe Text)-    , _olId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'olNextPageToken'------ * 'olKind'------ * 'olItems'------ * 'olSelfLink'------ * 'olId'-operationList-    :: OperationList-operationList =-    OperationList'-    { _olNextPageToken = Nothing-    , _olKind = "compute#operationList"-    , _olItems = Nothing-    , _olSelfLink = Nothing-    , _olId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-olNextPageToken :: Lens' OperationList (Maybe Text)-olNextPageToken-  = lens _olNextPageToken-      (\ s a -> s{_olNextPageToken = a})---- | [Output Only] Type of resource. Always compute#operations for Operations--- resource.-olKind :: Lens' OperationList Text-olKind = lens _olKind (\ s a -> s{_olKind = a})---- | [Output Only] A list of Operation resources.-olItems :: Lens' OperationList [Operation]-olItems-  = lens _olItems (\ s a -> s{_olItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-olSelfLink :: Lens' OperationList (Maybe Text)-olSelfLink-  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-olId :: Lens' OperationList (Maybe Text)-olId = lens _olId (\ s a -> s{_olId = a})--instance FromJSON OperationList where-        parseJSON-          = withObject "OperationList"-              (\ o ->-                 OperationList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#operationList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON OperationList where-        toJSON OperationList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _olNextPageToken,-                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,-                  ("selfLink" .=) <$> _olSelfLink,-                  ("id" .=) <$> _olId])---- | A list of Disk resources.------ /See:/ 'diskList' smart constructor.-data DiskList = DiskList'-    { _dlNextPageToken :: !(Maybe Text)-    , _dlKind          :: !Text-    , _dlItems         :: !(Maybe [Disk])-    , _dlSelfLink      :: !(Maybe Text)-    , _dlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dlNextPageToken'------ * 'dlKind'------ * 'dlItems'------ * 'dlSelfLink'------ * 'dlId'-diskList-    :: DiskList-diskList =-    DiskList'-    { _dlNextPageToken = Nothing-    , _dlKind = "compute#diskList"-    , _dlItems = Nothing-    , _dlSelfLink = Nothing-    , _dlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-dlNextPageToken :: Lens' DiskList (Maybe Text)-dlNextPageToken-  = lens _dlNextPageToken-      (\ s a -> s{_dlNextPageToken = a})---- | [Output Only] Type of resource. Always compute#diskList for lists of--- disks.-dlKind :: Lens' DiskList Text-dlKind = lens _dlKind (\ s a -> s{_dlKind = a})---- | [Output Only] A list of persistent disks.-dlItems :: Lens' DiskList [Disk]-dlItems-  = lens _dlItems (\ s a -> s{_dlItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-dlSelfLink :: Lens' DiskList (Maybe Text)-dlSelfLink-  = lens _dlSelfLink (\ s a -> s{_dlSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-dlId :: Lens' DiskList (Maybe Text)-dlId = lens _dlId (\ s a -> s{_dlId = a})--instance FromJSON DiskList where-        parseJSON-          = withObject "DiskList"-              (\ o ->-                 DiskList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#diskList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON DiskList where-        toJSON DiskList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _dlNextPageToken,-                  Just ("kind" .= _dlKind), ("items" .=) <$> _dlItems,-                  ("selfLink" .=) <$> _dlSelfLink,-                  ("id" .=) <$> _dlId])------- /See:/ 'targetPoolsAddInstanceRequest' smart constructor.-newtype TargetPoolsAddInstanceRequest = TargetPoolsAddInstanceRequest'-    { _tpairInstances :: Maybe [InstanceReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsAddInstanceRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpairInstances'-targetPoolsAddInstanceRequest-    :: TargetPoolsAddInstanceRequest-targetPoolsAddInstanceRequest =-    TargetPoolsAddInstanceRequest'-    { _tpairInstances = Nothing-    }---- | A full or partial URL to an instance to add to this target pool. This--- can be a full or partial URL. For example, the following are valid URLs:--- ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project-id\/zones\/zone\/instances\/instance-name--- - projects\/project-id\/zones\/zone\/instances\/instance-name ---- zones\/zone\/instances\/instance-name-tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]-tpairInstances-  = lens _tpairInstances-      (\ s a -> s{_tpairInstances = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolsAddInstanceRequest where-        parseJSON-          = withObject "TargetPoolsAddInstanceRequest"-              (\ o ->-                 TargetPoolsAddInstanceRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON TargetPoolsAddInstanceRequest where-        toJSON TargetPoolsAddInstanceRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _tpairInstances])------- /See:/ 'instanceGroupsAddInstancesRequest' smart constructor.-newtype InstanceGroupsAddInstancesRequest = InstanceGroupsAddInstancesRequest'-    { _igairInstances :: Maybe [InstanceReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsAddInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igairInstances'-instanceGroupsAddInstancesRequest-    :: InstanceGroupsAddInstancesRequest-instanceGroupsAddInstancesRequest =-    InstanceGroupsAddInstancesRequest'-    { _igairInstances = Nothing-    }---- | The list of instances to add to the instance group.-igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]-igairInstances-  = lens _igairInstances-      (\ s a -> s{_igairInstances = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroupsAddInstancesRequest-         where-        parseJSON-          = withObject "InstanceGroupsAddInstancesRequest"-              (\ o ->-                 InstanceGroupsAddInstancesRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON InstanceGroupsAddInstancesRequest-         where-        toJSON InstanceGroupsAddInstancesRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _igairInstances])---- | [Output Only] A list of managed instance groups.------ /See:/ 'instanceGroupManagerList' smart constructor.-data InstanceGroupManagerList = InstanceGroupManagerList'-    { _igmlNextPageToken :: !(Maybe Text)-    , _igmlKind          :: !Text-    , _igmlItems         :: !(Maybe [InstanceGroupManager])-    , _igmlSelfLink      :: !(Maybe Text)-    , _igmlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagerList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmlNextPageToken'------ * 'igmlKind'------ * 'igmlItems'------ * 'igmlSelfLink'------ * 'igmlId'-instanceGroupManagerList-    :: InstanceGroupManagerList-instanceGroupManagerList =-    InstanceGroupManagerList'-    { _igmlNextPageToken = Nothing-    , _igmlKind = "compute#instanceGroupManagerList"-    , _igmlItems = Nothing-    , _igmlSelfLink = Nothing-    , _igmlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)-igmlNextPageToken-  = lens _igmlNextPageToken-      (\ s a -> s{_igmlNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceGroupManagerList for a list of managed instance groups.-igmlKind :: Lens' InstanceGroupManagerList Text-igmlKind = lens _igmlKind (\ s a -> s{_igmlKind = a})---- | [Output Only] A list of managed instance groups.-igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]-igmlItems-  = lens _igmlItems (\ s a -> s{_igmlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] The URL for this resource type. The server generates this--- URL.-igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)-igmlSelfLink-  = lens _igmlSelfLink (\ s a -> s{_igmlSelfLink = a})---- | [Output Only] A unique identifier for this resource type. The server--- generates this identifier.-igmlId :: Lens' InstanceGroupManagerList (Maybe Text)-igmlId = lens _igmlId (\ s a -> s{_igmlId = a})--instance FromJSON InstanceGroupManagerList where-        parseJSON-          = withObject "InstanceGroupManagerList"-              (\ o ->-                 InstanceGroupManagerList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#instanceGroupManagerList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceGroupManagerList where-        toJSON InstanceGroupManagerList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _igmlNextPageToken,-                  Just ("kind" .= _igmlKind),-                  ("items" .=) <$> _igmlItems,-                  ("selfLink" .=) <$> _igmlSelfLink,-                  ("id" .=) <$> _igmlId])---- | An informational warning that appears when the list of addresses is--- empty.------ /See:/ 'subnetworksScopedListWarning' smart constructor.-data SubnetworksScopedListWarning = SubnetworksScopedListWarning'-    { _sslwData    :: !(Maybe [SubnetworksScopedListWarningDataItem])-    , _sslwCode    :: !(Maybe SubnetworksScopedListWarningCode)-    , _sslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworksScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sslwData'------ * 'sslwCode'------ * 'sslwMessage'-subnetworksScopedListWarning-    :: SubnetworksScopedListWarning-subnetworksScopedListWarning =-    SubnetworksScopedListWarning'-    { _sslwData = Nothing-    , _sslwCode = Nothing-    , _sslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]-sslwData-  = lens _sslwData (\ s a -> s{_sslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)-sslwCode = lens _sslwCode (\ s a -> s{_sslwCode = a})---- | [Output Only] A human-readable description of the warning code.-sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)-sslwMessage-  = lens _sslwMessage (\ s a -> s{_sslwMessage = a})--instance FromJSON SubnetworksScopedListWarning where-        parseJSON-          = withObject "SubnetworksScopedListWarning"-              (\ o ->-                 SubnetworksScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON SubnetworksScopedListWarning where-        toJSON SubnetworksScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _sslwData,-                  ("code" .=) <$> _sslwCode,-                  ("message" .=) <$> _sslwMessage])---- | An Image resource.------ /See:/ 'image' smart constructor.-data Image = Image'-    { _iStatus            :: !(Maybe ImageStatus)-    , _iDiskSizeGb        :: !(Maybe (Textual Int64))-    , _iSourceType        :: !ImageSourceType-    , _iSourceDiskId      :: !(Maybe Text)-    , _iKind              :: !Text-    , _iArchiveSizeBytes  :: !(Maybe (Textual Int64))-    , _iFamily            :: !(Maybe Text)-    , _iRawDisk           :: !(Maybe ImageRawDisk)-    , _iSelfLink          :: !(Maybe Text)-    , _iName              :: !(Maybe Text)-    , _iCreationTimestamp :: !(Maybe Text)-    , _iId                :: !(Maybe (Textual Word64))-    , _iLicenses          :: !(Maybe [Text])-    , _iSourceDisk        :: !(Maybe Text)-    , _iDescription       :: !(Maybe Text)-    , _iDeprecated        :: !(Maybe DeprecationStatus)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Image' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iStatus'------ * 'iDiskSizeGb'------ * 'iSourceType'------ * 'iSourceDiskId'------ * 'iKind'------ * 'iArchiveSizeBytes'------ * 'iFamily'------ * 'iRawDisk'------ * 'iSelfLink'------ * 'iName'------ * 'iCreationTimestamp'------ * 'iId'------ * 'iLicenses'------ * 'iSourceDisk'------ * 'iDescription'------ * 'iDeprecated'-image-    :: Image-image =-    Image'-    { _iStatus = Nothing-    , _iDiskSizeGb = Nothing-    , _iSourceType = Raw-    , _iSourceDiskId = Nothing-    , _iKind = "compute#image"-    , _iArchiveSizeBytes = Nothing-    , _iFamily = Nothing-    , _iRawDisk = Nothing-    , _iSelfLink = Nothing-    , _iName = Nothing-    , _iCreationTimestamp = Nothing-    , _iId = Nothing-    , _iLicenses = Nothing-    , _iSourceDisk = Nothing-    , _iDescription = Nothing-    , _iDeprecated = Nothing-    }---- | [Output Only] The status of the image. An image can be used to create--- other resources, such as instances, only after the image has been--- successfully created and the status is set to READY. Possible values are--- FAILED, PENDING, or READY.-iStatus :: Lens' Image (Maybe ImageStatus)-iStatus = lens _iStatus (\ s a -> s{_iStatus = a})---- | Size of the image when restored onto a persistent disk (in GB).-iDiskSizeGb :: Lens' Image (Maybe Int64)-iDiskSizeGb-  = lens _iDiskSizeGb (\ s a -> s{_iDiskSizeGb = a}) .-      mapping _Coerce---- | The type of the image used to create this disk. The default and only--- value is RAW-iSourceType :: Lens' Image ImageSourceType-iSourceType-  = lens _iSourceType (\ s a -> s{_iSourceType = a})---- | The ID value of the disk used to create this image. This value may be--- used to determine whether the image was taken from the current or a--- previous instance of a given disk name.-iSourceDiskId :: Lens' Image (Maybe Text)-iSourceDiskId-  = lens _iSourceDiskId-      (\ s a -> s{_iSourceDiskId = a})---- | [Output Only] Type of the resource. Always compute#image for images.-iKind :: Lens' Image Text-iKind = lens _iKind (\ s a -> s{_iKind = a})---- | 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.-iFamily :: Lens' Image (Maybe Text)-iFamily = lens _iFamily (\ s a -> s{_iFamily = a})---- | The parameters of the raw disk image.-iRawDisk :: Lens' Image (Maybe ImageRawDisk)-iRawDisk = lens _iRawDisk (\ s a -> s{_iRawDisk = a})---- | [Output Only] Server-defined URL for the resource.-iSelfLink :: Lens' Image (Maybe Text)-iSelfLink-  = lens _iSelfLink (\ s a -> s{_iSelfLink = a})---- | Name of the resource; provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-iName :: Lens' Image (Maybe Text)-iName = lens _iName (\ s a -> s{_iName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-iCreationTimestamp :: Lens' Image (Maybe Text)-iCreationTimestamp-  = lens _iCreationTimestamp-      (\ s a -> s{_iCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-iId :: Lens' Image (Maybe Word64)-iId-  = lens _iId (\ s a -> s{_iId = a}) . mapping _Coerce---- | Any applicable publicly visible licenses.-iLicenses :: Lens' Image [Text]-iLicenses-  = lens _iLicenses (\ s a -> s{_iLicenses = a}) .-      _Default-      . _Coerce---- | URL of the 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\/disk\/disk--- - projects\/project\/zones\/zone\/disk\/disk - zones\/zone\/disks\/disk-iSourceDisk :: Lens' Image (Maybe Text)-iSourceDisk-  = lens _iSourceDisk (\ s a -> s{_iSourceDisk = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-iDescription :: Lens' Image (Maybe Text)-iDescription-  = lens _iDescription (\ s a -> s{_iDescription = a})---- | The deprecation status associated with this image.-iDeprecated :: Lens' Image (Maybe DeprecationStatus)-iDeprecated-  = lens _iDeprecated (\ s a -> s{_iDeprecated = a})--instance FromJSON Image where-        parseJSON-          = withObject "Image"-              (\ o ->-                 Image' <$>-                   (o .:? "status") <*> (o .:? "diskSizeGb") <*>-                     (o .:? "sourceType" .!= Raw)-                     <*> (o .:? "sourceDiskId")-                     <*> (o .:? "kind" .!= "compute#image")-                     <*> (o .:? "archiveSizeBytes")-                     <*> (o .:? "family")-                     <*> (o .:? "rawDisk")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "licenses" .!= mempty)-                     <*> (o .:? "sourceDisk")-                     <*> (o .:? "description")-                     <*> (o .:? "deprecated"))--instance ToJSON Image where-        toJSON Image'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _iStatus,-                  ("diskSizeGb" .=) <$> _iDiskSizeGb,-                  Just ("sourceType" .= _iSourceType),-                  ("sourceDiskId" .=) <$> _iSourceDiskId,-                  Just ("kind" .= _iKind),-                  ("archiveSizeBytes" .=) <$> _iArchiveSizeBytes,-                  ("family" .=) <$> _iFamily,-                  ("rawDisk" .=) <$> _iRawDisk,-                  ("selfLink" .=) <$> _iSelfLink,-                  ("name" .=) <$> _iName,-                  ("creationTimestamp" .=) <$> _iCreationTimestamp,-                  ("id" .=) <$> _iId, ("licenses" .=) <$> _iLicenses,-                  ("sourceDisk" .=) <$> _iSourceDisk,-                  ("description" .=) <$> _iDescription,-                  ("deprecated" .=) <$> _iDeprecated])---- | A UrlMap resource. This resource defines the mapping from URL to the--- BackendService resource, based on the \"longest-match\" of the URL\'s--- host and path.------ /See:/ 'urlMap' smart constructor.-data URLMap = URLMap'-    { _umTests             :: !(Maybe [URLMapTest])-    , _umKind              :: !Text-    , _umFingerprint       :: !(Maybe Base64)-    , _umDefaultService    :: !(Maybe Text)-    , _umSelfLink          :: !(Maybe Text)-    , _umName              :: !(Maybe Text)-    , _umCreationTimestamp :: !(Maybe Text)-    , _umPathMatchers      :: !(Maybe [PathMatcher])-    , _umId                :: !(Maybe (Textual Word64))-    , _umHostRules         :: !(Maybe [HostRule])-    , _umDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMap' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umTests'------ * 'umKind'------ * 'umFingerprint'------ * 'umDefaultService'------ * 'umSelfLink'------ * 'umName'------ * 'umCreationTimestamp'------ * 'umPathMatchers'------ * 'umId'------ * 'umHostRules'------ * 'umDescription'-urlMap-    :: URLMap-urlMap =-    URLMap'-    { _umTests = Nothing-    , _umKind = "compute#urlMap"-    , _umFingerprint = Nothing-    , _umDefaultService = Nothing-    , _umSelfLink = Nothing-    , _umName = Nothing-    , _umCreationTimestamp = Nothing-    , _umPathMatchers = Nothing-    , _umId = Nothing-    , _umHostRules = Nothing-    , _umDescription = Nothing-    }---- | The list of expected URL mappings. Request to update this UrlMap will--- succeed only if all of the test cases pass.-umTests :: Lens' URLMap [URLMapTest]-umTests-  = lens _umTests (\ s a -> s{_umTests = a}) . _Default-      . _Coerce---- | [Output Only] Type of the resource. Always compute#urlMaps for url maps.-umKind :: Lens' URLMap Text-umKind = lens _umKind (\ s a -> s{_umKind = a})---- | Fingerprint of this resource. A hash of the contents stored in this--- object. This field is used in optimistic locking. This field will be--- ignored when inserting a UrlMap. An up-to-date fingerprint must be--- provided in order to update the UrlMap.-umFingerprint :: Lens' URLMap (Maybe ByteString)-umFingerprint-  = lens _umFingerprint-      (\ s a -> s{_umFingerprint = a})-      . mapping _Base64---- | The URL of the BackendService resource if none of the hostRules match.-umDefaultService :: Lens' URLMap (Maybe Text)-umDefaultService-  = lens _umDefaultService-      (\ s a -> s{_umDefaultService = a})---- | [Output Only] Server-defined URL for the resource.-umSelfLink :: Lens' URLMap (Maybe Text)-umSelfLink-  = lens _umSelfLink (\ s a -> s{_umSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-umName :: Lens' URLMap (Maybe Text)-umName = lens _umName (\ s a -> s{_umName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-umCreationTimestamp :: Lens' URLMap (Maybe Text)-umCreationTimestamp-  = lens _umCreationTimestamp-      (\ s a -> s{_umCreationTimestamp = a})---- | The list of named PathMatchers to use against the URL.-umPathMatchers :: Lens' URLMap [PathMatcher]-umPathMatchers-  = lens _umPathMatchers-      (\ s a -> s{_umPathMatchers = a})-      . _Default-      . _Coerce---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-umId :: Lens' URLMap (Maybe Word64)-umId-  = lens _umId (\ s a -> s{_umId = a}) .-      mapping _Coerce---- | The list of HostRules to use against the URL.-umHostRules :: Lens' URLMap [HostRule]-umHostRules-  = lens _umHostRules (\ s a -> s{_umHostRules = a}) .-      _Default-      . _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-umDescription :: Lens' URLMap (Maybe Text)-umDescription-  = lens _umDescription-      (\ s a -> s{_umDescription = a})--instance FromJSON URLMap where-        parseJSON-          = withObject "URLMap"-              (\ o ->-                 URLMap' <$>-                   (o .:? "tests" .!= mempty) <*>-                     (o .:? "kind" .!= "compute#urlMap")-                     <*> (o .:? "fingerprint")-                     <*> (o .:? "defaultService")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "pathMatchers" .!= mempty)-                     <*> (o .:? "id")-                     <*> (o .:? "hostRules" .!= mempty)-                     <*> (o .:? "description"))--instance ToJSON URLMap where-        toJSON URLMap'{..}-          = object-              (catMaybes-                 [("tests" .=) <$> _umTests, Just ("kind" .= _umKind),-                  ("fingerprint" .=) <$> _umFingerprint,-                  ("defaultService" .=) <$> _umDefaultService,-                  ("selfLink" .=) <$> _umSelfLink,-                  ("name" .=) <$> _umName,-                  ("creationTimestamp" .=) <$> _umCreationTimestamp,-                  ("pathMatchers" .=) <$> _umPathMatchers,-                  ("id" .=) <$> _umId,-                  ("hostRules" .=) <$> _umHostRules,-                  ("description" .=) <$> _umDescription])---- | A map of scoped instance group lists.------ /See:/ 'instanceGroupAggregatedListItems' smart constructor.-newtype InstanceGroupAggregatedListItems = InstanceGroupAggregatedListItems'-    { _igaliAddtional :: HashMap Text InstanceGroupsScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igaliAddtional'-instanceGroupAggregatedListItems-    :: HashMap Text InstanceGroupsScopedList -- ^ 'igaliAddtional'-    -> InstanceGroupAggregatedListItems-instanceGroupAggregatedListItems pIgaliAddtional_ =-    InstanceGroupAggregatedListItems'-    { _igaliAddtional = _Coerce # pIgaliAddtional_-    }---- | The name of the scope that contains this set of instance groups.-igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)-igaliAddtional-  = lens _igaliAddtional-      (\ s a -> s{_igaliAddtional = a})-      . _Coerce--instance FromJSON InstanceGroupAggregatedListItems-         where-        parseJSON-          = withObject "InstanceGroupAggregatedListItems"-              (\ o ->-                 InstanceGroupAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON InstanceGroupAggregatedListItems-         where-        toJSON = toJSON . _igaliAddtional---- | Contains a list of TargetPool resources.------ /See:/ 'targetPoolList' smart constructor.-data TargetPoolList = TargetPoolList'-    { _tplNextPageToken :: !(Maybe Text)-    , _tplKind          :: !Text-    , _tplItems         :: !(Maybe [TargetPool])-    , _tplSelfLink      :: !(Maybe Text)-    , _tplId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tplNextPageToken'------ * 'tplKind'------ * 'tplItems'------ * 'tplSelfLink'------ * 'tplId'-targetPoolList-    :: TargetPoolList-targetPoolList =-    TargetPoolList'-    { _tplNextPageToken = Nothing-    , _tplKind = "compute#targetPoolList"-    , _tplItems = Nothing-    , _tplSelfLink = Nothing-    , _tplId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tplNextPageToken :: Lens' TargetPoolList (Maybe Text)-tplNextPageToken-  = lens _tplNextPageToken-      (\ s a -> s{_tplNextPageToken = a})---- | [Output Only] Type of resource. Always compute#targetPoolList for lists--- of target pools.-tplKind :: Lens' TargetPoolList Text-tplKind = lens _tplKind (\ s a -> s{_tplKind = a})---- | A list of TargetPool resources.-tplItems :: Lens' TargetPoolList [TargetPool]-tplItems-  = lens _tplItems (\ s a -> s{_tplItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-tplSelfLink :: Lens' TargetPoolList (Maybe Text)-tplSelfLink-  = lens _tplSelfLink (\ s a -> s{_tplSelfLink = a})---- | [Output Only] Unique identifier for the resource. Defined by the server.-tplId :: Lens' TargetPoolList (Maybe Text)-tplId = lens _tplId (\ s a -> s{_tplId = a})--instance FromJSON TargetPoolList where-        parseJSON-          = withObject "TargetPoolList"-              (\ o ->-                 TargetPoolList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#targetPoolList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetPoolList where-        toJSON TargetPoolList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tplNextPageToken,-                  Just ("kind" .= _tplKind),-                  ("items" .=) <$> _tplItems,-                  ("selfLink" .=) <$> _tplSelfLink,-                  ("id" .=) <$> _tplId])------- /See:/ 'targetInstanceAggregatedList' smart constructor.-data TargetInstanceAggregatedList = TargetInstanceAggregatedList'-    { _tialNextPageToken :: !(Maybe Text)-    , _tialKind          :: !Text-    , _tialItems         :: !(Maybe TargetInstanceAggregatedListItems)-    , _tialSelfLink      :: !(Maybe Text)-    , _tialId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstanceAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tialNextPageToken'------ * 'tialKind'------ * 'tialItems'------ * 'tialSelfLink'------ * 'tialId'-targetInstanceAggregatedList-    :: TargetInstanceAggregatedList-targetInstanceAggregatedList =-    TargetInstanceAggregatedList'-    { _tialNextPageToken = Nothing-    , _tialKind = "compute#targetInstanceAggregatedList"-    , _tialItems = Nothing-    , _tialSelfLink = Nothing-    , _tialId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)-tialNextPageToken-  = lens _tialNextPageToken-      (\ s a -> s{_tialNextPageToken = a})---- | Type of resource.-tialKind :: Lens' TargetInstanceAggregatedList Text-tialKind = lens _tialKind (\ s a -> s{_tialKind = a})---- | A map of scoped target instance lists.-tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)-tialItems-  = lens _tialItems (\ s a -> s{_tialItems = a})---- | [Output Only] Server-defined URL for this resource.-tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)-tialSelfLink-  = lens _tialSelfLink (\ s a -> s{_tialSelfLink = a})---- | [Output Only] Unique identifier for the resource; defined by the server.-tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)-tialId = lens _tialId (\ s a -> s{_tialId = a})--instance FromJSON TargetInstanceAggregatedList where-        parseJSON-          = withObject "TargetInstanceAggregatedList"-              (\ o ->-                 TargetInstanceAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#targetInstanceAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetInstanceAggregatedList where-        toJSON TargetInstanceAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tialNextPageToken,-                  Just ("kind" .= _tialKind),-                  ("items" .=) <$> _tialItems,-                  ("selfLink" .=) <$> _tialSelfLink,-                  ("id" .=) <$> _tialId])------- /See:/ 'disksScopedList' smart constructor.-data DisksScopedList = DisksScopedList'-    { _dslWarning :: !(Maybe DisksScopedListWarning)-    , _dslDisks   :: !(Maybe [Disk])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DisksScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dslWarning'------ * 'dslDisks'-disksScopedList-    :: DisksScopedList-disksScopedList =-    DisksScopedList'-    { _dslWarning = Nothing-    , _dslDisks = Nothing-    }---- | [Output Only] Informational warning which replaces the list of disks--- when the list is empty.-dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)-dslWarning-  = lens _dslWarning (\ s a -> s{_dslWarning = a})---- | [Output Only] List of disks contained in this scope.-dslDisks :: Lens' DisksScopedList [Disk]-dslDisks-  = lens _dslDisks (\ s a -> s{_dslDisks = a}) .-      _Default-      . _Coerce--instance FromJSON DisksScopedList where-        parseJSON-          = withObject "DisksScopedList"-              (\ o ->-                 DisksScopedList' <$>-                   (o .:? "warning") <*> (o .:? "disks" .!= mempty))--instance ToJSON DisksScopedList where-        toJSON DisksScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _dslWarning,-                  ("disks" .=) <$> _dslDisks])------- /See:/ 'instanceGroupManagersScopedList' smart constructor.-data InstanceGroupManagersScopedList = InstanceGroupManagersScopedList'-    { _igmslWarning               :: !(Maybe InstanceGroupManagersScopedListWarning)-    , _igmslInstanceGroupManagers :: !(Maybe [InstanceGroupManager])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmslWarning'------ * 'igmslInstanceGroupManagers'-instanceGroupManagersScopedList-    :: InstanceGroupManagersScopedList-instanceGroupManagersScopedList =-    InstanceGroupManagersScopedList'-    { _igmslWarning = Nothing-    , _igmslInstanceGroupManagers = Nothing-    }---- | [Output Only] The warning that replaces the list of managed instance--- groups when the list is empty.-igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)-igmslWarning-  = lens _igmslWarning (\ s a -> s{_igmslWarning = a})---- | [Output Only] The list of managed instance groups that are contained in--- the specified project and zone.-igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]-igmslInstanceGroupManagers-  = lens _igmslInstanceGroupManagers-      (\ s a -> s{_igmslInstanceGroupManagers = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroupManagersScopedList-         where-        parseJSON-          = withObject "InstanceGroupManagersScopedList"-              (\ o ->-                 InstanceGroupManagersScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "instanceGroupManagers" .!= mempty))--instance ToJSON InstanceGroupManagersScopedList where-        toJSON InstanceGroupManagersScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _igmslWarning,-                  ("instanceGroupManagers" .=) <$>-                    _igmslInstanceGroupManagers])------- /See:/ 'diskAggregatedList' smart constructor.-data DiskAggregatedList = DiskAggregatedList'-    { _dalNextPageToken :: !(Maybe Text)-    , _dalKind          :: !Text-    , _dalItems         :: !(Maybe DiskAggregatedListItems)-    , _dalSelfLink      :: !(Maybe Text)-    , _dalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dalNextPageToken'------ * 'dalKind'------ * 'dalItems'------ * 'dalSelfLink'------ * 'dalId'-diskAggregatedList-    :: DiskAggregatedList-diskAggregatedList =-    DiskAggregatedList'-    { _dalNextPageToken = Nothing-    , _dalKind = "compute#diskAggregatedList"-    , _dalItems = Nothing-    , _dalSelfLink = Nothing-    , _dalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)-dalNextPageToken-  = lens _dalNextPageToken-      (\ s a -> s{_dalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#diskAggregatedList for--- aggregated lists of persistent disks.-dalKind :: Lens' DiskAggregatedList Text-dalKind = lens _dalKind (\ s a -> s{_dalKind = a})---- | [Output Only] A map of scoped disk lists.-dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)-dalItems = lens _dalItems (\ s a -> s{_dalItems = a})---- | [Output Only] Server-defined URL for this resource.-dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)-dalSelfLink-  = lens _dalSelfLink (\ s a -> s{_dalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-dalId :: Lens' DiskAggregatedList (Maybe Text)-dalId = lens _dalId (\ s a -> s{_dalId = a})--instance FromJSON DiskAggregatedList where-        parseJSON-          = withObject "DiskAggregatedList"-              (\ o ->-                 DiskAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#diskAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON DiskAggregatedList where-        toJSON DiskAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _dalNextPageToken,-                  Just ("kind" .= _dalKind),-                  ("items" .=) <$> _dalItems,-                  ("selfLink" .=) <$> _dalSelfLink,-                  ("id" .=) <$> _dalId])------- /See:/ 'instanceWithNamedPorts' smart constructor.-data InstanceWithNamedPorts = InstanceWithNamedPorts'-    { _iwnpStatus     :: !(Maybe InstanceWithNamedPortsStatus)-    , _iwnpNamedPorts :: !(Maybe [NamedPort])-    , _iwnpInstance   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceWithNamedPorts' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iwnpStatus'------ * 'iwnpNamedPorts'------ * 'iwnpInstance'-instanceWithNamedPorts-    :: InstanceWithNamedPorts-instanceWithNamedPorts =-    InstanceWithNamedPorts'-    { _iwnpStatus = Nothing-    , _iwnpNamedPorts = Nothing-    , _iwnpInstance = Nothing-    }---- | [Output Only] The status of the instance.-iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)-iwnpStatus-  = lens _iwnpStatus (\ s a -> s{_iwnpStatus = a})---- | [Output Only] The named ports that belong to this instance group.-iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]-iwnpNamedPorts-  = lens _iwnpNamedPorts-      (\ s a -> s{_iwnpNamedPorts = a})-      . _Default-      . _Coerce---- | [Output Only] The URL of the instance.-iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)-iwnpInstance-  = lens _iwnpInstance (\ s a -> s{_iwnpInstance = a})--instance FromJSON InstanceWithNamedPorts where-        parseJSON-          = withObject "InstanceWithNamedPorts"-              (\ o ->-                 InstanceWithNamedPorts' <$>-                   (o .:? "status") <*> (o .:? "namedPorts" .!= mempty)-                     <*> (o .:? "instance"))--instance ToJSON InstanceWithNamedPorts where-        toJSON InstanceWithNamedPorts'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _iwnpStatus,-                  ("namedPorts" .=) <$> _iwnpNamedPorts,-                  ("instance" .=) <$> _iwnpInstance])------- /See:/ 'forwardingRulesScopedList' smart constructor.-data ForwardingRulesScopedList = ForwardingRulesScopedList'-    { _frslWarning         :: !(Maybe ForwardingRulesScopedListWarning)-    , _frslForwardingRules :: !(Maybe [ForwardingRule])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRulesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frslWarning'------ * 'frslForwardingRules'-forwardingRulesScopedList-    :: ForwardingRulesScopedList-forwardingRulesScopedList =-    ForwardingRulesScopedList'-    { _frslWarning = Nothing-    , _frslForwardingRules = Nothing-    }---- | Informational warning which replaces the list of forwarding rules when--- the list is empty.-frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)-frslWarning-  = lens _frslWarning (\ s a -> s{_frslWarning = a})---- | List of forwarding rules contained in this scope.-frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]-frslForwardingRules-  = lens _frslForwardingRules-      (\ s a -> s{_frslForwardingRules = a})-      . _Default-      . _Coerce--instance FromJSON ForwardingRulesScopedList where-        parseJSON-          = withObject "ForwardingRulesScopedList"-              (\ o ->-                 ForwardingRulesScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "forwardingRules" .!= mempty))--instance ToJSON ForwardingRulesScopedList where-        toJSON ForwardingRulesScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _frslWarning,-                  ("forwardingRules" .=) <$> _frslForwardingRules])------- /See:/ 'instanceReference' smart constructor.-newtype InstanceReference = InstanceReference'-    { _iInstance :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceReference' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iInstance'-instanceReference-    :: InstanceReference-instanceReference =-    InstanceReference'-    { _iInstance = Nothing-    }---- | The URL for a specific instance.-iInstance :: Lens' InstanceReference (Maybe Text)-iInstance-  = lens _iInstance (\ s a -> s{_iInstance = a})--instance FromJSON InstanceReference where-        parseJSON-          = withObject "InstanceReference"-              (\ o -> InstanceReference' <$> (o .:? "instance"))--instance ToJSON InstanceReference where-        toJSON InstanceReference'{..}-          = object (catMaybes [("instance" .=) <$> _iInstance])------- /See:/ 'operationAggregatedList' smart constructor.-data OperationAggregatedList = OperationAggregatedList'-    { _oalNextPageToken :: !(Maybe Text)-    , _oalKind          :: !Text-    , _oalItems         :: !(Maybe OperationAggregatedListItems)-    , _oalSelfLink      :: !(Maybe Text)-    , _oalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oalNextPageToken'------ * 'oalKind'------ * 'oalItems'------ * 'oalSelfLink'------ * 'oalId'-operationAggregatedList-    :: OperationAggregatedList-operationAggregatedList =-    OperationAggregatedList'-    { _oalNextPageToken = Nothing-    , _oalKind = "compute#operationAggregatedList"-    , _oalItems = Nothing-    , _oalSelfLink = Nothing-    , _oalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)-oalNextPageToken-  = lens _oalNextPageToken-      (\ s a -> s{_oalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#operationAggregatedList--- for aggregated lists of operations.-oalKind :: Lens' OperationAggregatedList Text-oalKind = lens _oalKind (\ s a -> s{_oalKind = a})---- | [Output Only] A map of scoped operation lists.-oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)-oalItems = lens _oalItems (\ s a -> s{_oalItems = a})---- | [Output Only] Server-defined URL for this resource.-oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)-oalSelfLink-  = lens _oalSelfLink (\ s a -> s{_oalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-oalId :: Lens' OperationAggregatedList (Maybe Text)-oalId = lens _oalId (\ s a -> s{_oalId = a})--instance FromJSON OperationAggregatedList where-        parseJSON-          = withObject "OperationAggregatedList"-              (\ o ->-                 OperationAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#operationAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON OperationAggregatedList where-        toJSON OperationAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _oalNextPageToken,-                  Just ("kind" .= _oalKind),-                  ("items" .=) <$> _oalItems,-                  ("selfLink" .=) <$> _oalSelfLink,-                  ("id" .=) <$> _oalId])------- /See:/ 'operationsScopedList' smart constructor.-data OperationsScopedList = OperationsScopedList'-    { _oslWarning    :: !(Maybe OperationsScopedListWarning)-    , _oslOperations :: !(Maybe [Operation])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationsScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oslWarning'------ * 'oslOperations'-operationsScopedList-    :: OperationsScopedList-operationsScopedList =-    OperationsScopedList'-    { _oslWarning = Nothing-    , _oslOperations = Nothing-    }---- | [Output Only] Informational warning which replaces the list of--- operations when the list is empty.-oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)-oslWarning-  = lens _oslWarning (\ s a -> s{_oslWarning = a})---- | [Output Only] List of operations contained in this scope.-oslOperations :: Lens' OperationsScopedList [Operation]-oslOperations-  = lens _oslOperations-      (\ s a -> s{_oslOperations = a})-      . _Default-      . _Coerce--instance FromJSON OperationsScopedList where-        parseJSON-          = withObject "OperationsScopedList"-              (\ o ->-                 OperationsScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "operations" .!= mempty))--instance ToJSON OperationsScopedList where-        toJSON OperationsScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _oslWarning,-                  ("operations" .=) <$> _oslOperations])---- | The named port. For example: .------ /See:/ 'namedPort' smart constructor.-data NamedPort = NamedPort'-    { _npName :: !(Maybe Text)-    , _npPort :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'NamedPort' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'npName'------ * 'npPort'-namedPort-    :: NamedPort-namedPort =-    NamedPort'-    { _npName = Nothing-    , _npPort = Nothing-    }---- | The name for this named port. The name must be 1-63 characters long, and--- comply with RFC1035.-npName :: Lens' NamedPort (Maybe Text)-npName = lens _npName (\ s a -> s{_npName = a})---- | The port number, which can be a value between 1 and 65535.-npPort :: Lens' NamedPort (Maybe Int32)-npPort-  = lens _npPort (\ s a -> s{_npPort = a}) .-      mapping _Coerce--instance FromJSON NamedPort where-        parseJSON-          = withObject "NamedPort"-              (\ o ->-                 NamedPort' <$> (o .:? "name") <*> (o .:? "port"))--instance ToJSON NamedPort where-        toJSON NamedPort'{..}-          = object-              (catMaybes-                 [("name" .=) <$> _npName, ("port" .=) <$> _npPort])---- | Contains a list of TargetInstance resources.------ /See:/ 'targetInstanceList' smart constructor.-data TargetInstanceList = TargetInstanceList'-    { _tilNextPageToken :: !(Maybe Text)-    , _tilKind          :: !Text-    , _tilItems         :: !(Maybe [TargetInstance])-    , _tilSelfLink      :: !(Maybe Text)-    , _tilId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstanceList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tilNextPageToken'------ * 'tilKind'------ * 'tilItems'------ * 'tilSelfLink'------ * 'tilId'-targetInstanceList-    :: TargetInstanceList-targetInstanceList =-    TargetInstanceList'-    { _tilNextPageToken = Nothing-    , _tilKind = "compute#targetInstanceList"-    , _tilItems = Nothing-    , _tilSelfLink = Nothing-    , _tilId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)-tilNextPageToken-  = lens _tilNextPageToken-      (\ s a -> s{_tilNextPageToken = a})---- | Type of resource.-tilKind :: Lens' TargetInstanceList Text-tilKind = lens _tilKind (\ s a -> s{_tilKind = a})---- | A list of TargetInstance resources.-tilItems :: Lens' TargetInstanceList [TargetInstance]-tilItems-  = lens _tilItems (\ s a -> s{_tilItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-tilSelfLink :: Lens' TargetInstanceList (Maybe Text)-tilSelfLink-  = lens _tilSelfLink (\ s a -> s{_tilSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tilId :: Lens' TargetInstanceList (Maybe Text)-tilId = lens _tilId (\ s a -> s{_tilId = a})--instance FromJSON TargetInstanceList where-        parseJSON-          = withObject "TargetInstanceList"-              (\ o ->-                 TargetInstanceList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#targetInstanceList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetInstanceList where-        toJSON TargetInstanceList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tilNextPageToken,-                  Just ("kind" .= _tilKind),-                  ("items" .=) <$> _tilItems,-                  ("selfLink" .=) <$> _tilSelfLink,-                  ("id" .=) <$> _tilId])------- /See:/ 'instanceGroupManagerAggregatedList' smart constructor.-data InstanceGroupManagerAggregatedList = InstanceGroupManagerAggregatedList'-    { _igmalNextPageToken :: !(Maybe Text)-    , _igmalKind          :: !Text-    , _igmalItems         :: !(Maybe InstanceGroupManagerAggregatedListItems)-    , _igmalSelfLink      :: !(Maybe Text)-    , _igmalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagerAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmalNextPageToken'------ * 'igmalKind'------ * 'igmalItems'------ * 'igmalSelfLink'------ * 'igmalId'-instanceGroupManagerAggregatedList-    :: InstanceGroupManagerAggregatedList-instanceGroupManagerAggregatedList =-    InstanceGroupManagerAggregatedList'-    { _igmalNextPageToken = Nothing-    , _igmalKind = "compute#instanceGroupManagerAggregatedList"-    , _igmalItems = Nothing-    , _igmalSelfLink = Nothing-    , _igmalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)-igmalNextPageToken-  = lens _igmalNextPageToken-      (\ s a -> s{_igmalNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceGroupManagerAggregatedList for an aggregated list of--- managed instance groups.-igmalKind :: Lens' InstanceGroupManagerAggregatedList Text-igmalKind-  = lens _igmalKind (\ s a -> s{_igmalKind = a})---- | [Output Only] A map of filtered managed instance group lists.-igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)-igmalItems-  = lens _igmalItems (\ s a -> s{_igmalItems = a})---- | [Output Only] The URL for this resource type. The server generates this--- URL.-igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)-igmalSelfLink-  = lens _igmalSelfLink-      (\ s a -> s{_igmalSelfLink = a})---- | [Output Only] A unique identifier for this aggregated list of managed--- instance groups. The server generates this identifier.-igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)-igmalId = lens _igmalId (\ s a -> s{_igmalId = a})--instance FromJSON InstanceGroupManagerAggregatedList-         where-        parseJSON-          = withObject "InstanceGroupManagerAggregatedList"-              (\ o ->-                 InstanceGroupManagerAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#instanceGroupManagerAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceGroupManagerAggregatedList-         where-        toJSON InstanceGroupManagerAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _igmalNextPageToken,-                  Just ("kind" .= _igmalKind),-                  ("items" .=) <$> _igmalItems,-                  ("selfLink" .=) <$> _igmalSelfLink,-                  ("id" .=) <$> _igmalId])------- /See:/ 'targetPoolsScopedList' smart constructor.-data TargetPoolsScopedList = TargetPoolsScopedList'-    { _tpslWarning     :: !(Maybe TargetPoolsScopedListWarning)-    , _tpslTargetPools :: !(Maybe [TargetPool])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpslWarning'------ * 'tpslTargetPools'-targetPoolsScopedList-    :: TargetPoolsScopedList-targetPoolsScopedList =-    TargetPoolsScopedList'-    { _tpslWarning = Nothing-    , _tpslTargetPools = Nothing-    }---- | Informational warning which replaces the list of addresses when the list--- is empty.-tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)-tpslWarning-  = lens _tpslWarning (\ s a -> s{_tpslWarning = a})---- | List of target pools contained in this scope.-tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]-tpslTargetPools-  = lens _tpslTargetPools-      (\ s a -> s{_tpslTargetPools = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolsScopedList where-        parseJSON-          = withObject "TargetPoolsScopedList"-              (\ o ->-                 TargetPoolsScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "targetPools" .!= mempty))--instance ToJSON TargetPoolsScopedList where-        toJSON TargetPoolsScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _tpslWarning,-                  ("targetPools" .=) <$> _tpslTargetPools])------- /See:/ 'forwardingRuleAggregatedList' smart constructor.-data ForwardingRuleAggregatedList = ForwardingRuleAggregatedList'-    { _fralNextPageToken :: !(Maybe Text)-    , _fralKind          :: !Text-    , _fralItems         :: !(Maybe ForwardingRuleAggregatedListItems)-    , _fralSelfLink      :: !(Maybe Text)-    , _fralId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRuleAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fralNextPageToken'------ * 'fralKind'------ * 'fralItems'------ * 'fralSelfLink'------ * 'fralId'-forwardingRuleAggregatedList-    :: ForwardingRuleAggregatedList-forwardingRuleAggregatedList =-    ForwardingRuleAggregatedList'-    { _fralNextPageToken = Nothing-    , _fralKind = "compute#forwardingRuleAggregatedList"-    , _fralItems = Nothing-    , _fralSelfLink = Nothing-    , _fralId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)-fralNextPageToken-  = lens _fralNextPageToken-      (\ s a -> s{_fralNextPageToken = a})---- | [Output Only] Type of resource. Always--- compute#forwardingRuleAggregatedList for lists of forwarding rules.-fralKind :: Lens' ForwardingRuleAggregatedList Text-fralKind = lens _fralKind (\ s a -> s{_fralKind = a})---- | A map of scoped forwarding rule lists.-fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)-fralItems-  = lens _fralItems (\ s a -> s{_fralItems = a})---- | [Output Only] Server-defined URL for this resource.-fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)-fralSelfLink-  = lens _fralSelfLink (\ s a -> s{_fralSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)-fralId = lens _fralId (\ s a -> s{_fralId = a})--instance FromJSON ForwardingRuleAggregatedList where-        parseJSON-          = withObject "ForwardingRuleAggregatedList"-              (\ o ->-                 ForwardingRuleAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#forwardingRuleAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON ForwardingRuleAggregatedList where-        toJSON ForwardingRuleAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _fralNextPageToken,-                  Just ("kind" .= _fralKind),-                  ("items" .=) <$> _fralItems,-                  ("selfLink" .=) <$> _fralSelfLink,-                  ("id" .=) <$> _fralId])------- /See:/ 'targetReference' smart constructor.-newtype TargetReference = TargetReference'-    { _trTarget :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetReference' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'trTarget'-targetReference-    :: TargetReference-targetReference =-    TargetReference'-    { _trTarget = Nothing-    }--trTarget :: Lens' TargetReference (Maybe Text)-trTarget = lens _trTarget (\ s a -> s{_trTarget = a})--instance FromJSON TargetReference where-        parseJSON-          = withObject "TargetReference"-              (\ o -> TargetReference' <$> (o .:? "target"))--instance ToJSON TargetReference where-        toJSON TargetReference'{..}-          = object (catMaybes [("target" .=) <$> _trTarget])------- /See:/ 'targetPoolAggregatedList' smart constructor.-data TargetPoolAggregatedList = TargetPoolAggregatedList'-    { _tpalNextPageToken :: !(Maybe Text)-    , _tpalKind          :: !Text-    , _tpalItems         :: !(Maybe TargetPoolAggregatedListItems)-    , _tpalSelfLink      :: !(Maybe Text)-    , _tpalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpalNextPageToken'------ * 'tpalKind'------ * 'tpalItems'------ * 'tpalSelfLink'------ * 'tpalId'-targetPoolAggregatedList-    :: TargetPoolAggregatedList-targetPoolAggregatedList =-    TargetPoolAggregatedList'-    { _tpalNextPageToken = Nothing-    , _tpalKind = "compute#targetPoolAggregatedList"-    , _tpalItems = Nothing-    , _tpalSelfLink = Nothing-    , _tpalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)-tpalNextPageToken-  = lens _tpalNextPageToken-      (\ s a -> s{_tpalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#targetPoolAggregatedList--- for aggregated lists of target pools.-tpalKind :: Lens' TargetPoolAggregatedList Text-tpalKind = lens _tpalKind (\ s a -> s{_tpalKind = a})---- | [Output Only] A map of scoped target pool lists.-tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)-tpalItems-  = lens _tpalItems (\ s a -> s{_tpalItems = a})---- | [Output Only] Server-defined URL for this resource.-tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)-tpalSelfLink-  = lens _tpalSelfLink (\ s a -> s{_tpalSelfLink = a})---- | [Output Only] Unique identifier for the resource. Defined by the server.-tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)-tpalId = lens _tpalId (\ s a -> s{_tpalId = a})--instance FromJSON TargetPoolAggregatedList where-        parseJSON-          = withObject "TargetPoolAggregatedList"-              (\ o ->-                 TargetPoolAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#targetPoolAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetPoolAggregatedList where-        toJSON TargetPoolAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tpalNextPageToken,-                  Just ("kind" .= _tpalKind),-                  ("items" .=) <$> _tpalItems,-                  ("selfLink" .=) <$> _tpalSelfLink,-                  ("id" .=) <$> _tpalId])------- /See:/ 'operationsScopedListWarningDataItem' smart constructor.-data OperationsScopedListWarningDataItem = OperationsScopedListWarningDataItem'-    { _oslwdiValue :: !(Maybe Text)-    , _oslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationsScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oslwdiValue'------ * 'oslwdiKey'-operationsScopedListWarningDataItem-    :: OperationsScopedListWarningDataItem-operationsScopedListWarningDataItem =-    OperationsScopedListWarningDataItem'-    { _oslwdiValue = Nothing-    , _oslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)-oslwdiValue-  = lens _oslwdiValue (\ s a -> s{_oslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)-oslwdiKey-  = lens _oslwdiKey (\ s a -> s{_oslwdiKey = a})--instance FromJSON OperationsScopedListWarningDataItem-         where-        parseJSON-          = withObject "OperationsScopedListWarningDataItem"-              (\ o ->-                 OperationsScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON OperationsScopedListWarningDataItem-         where-        toJSON OperationsScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _oslwdiValue,-                  ("key" .=) <$> _oslwdiKey])---- | A TargetPool resource. This resource defines a pool of instances,--- associated HttpHealthCheck resources, and the fallback target pool.------ /See:/ 'targetPool' smart constructor.-data TargetPool = TargetPool'-    { _tpSessionAffinity   :: !(Maybe TargetPoolSessionAffinity)-    , _tpBackupPool        :: !(Maybe Text)-    , _tpKind              :: !Text-    , _tpSelfLink          :: !(Maybe Text)-    , _tpName              :: !(Maybe Text)-    , _tpCreationTimestamp :: !(Maybe Text)-    , _tpInstances         :: !(Maybe [Text])-    , _tpId                :: !(Maybe (Textual Word64))-    , _tpFailoverRatio     :: !(Maybe (Textual Double))-    , _tpRegion            :: !(Maybe Text)-    , _tpDescription       :: !(Maybe Text)-    , _tpHealthChecks      :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPool' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpSessionAffinity'------ * 'tpBackupPool'------ * 'tpKind'------ * 'tpSelfLink'------ * 'tpName'------ * 'tpCreationTimestamp'------ * 'tpInstances'------ * 'tpId'------ * 'tpFailoverRatio'------ * 'tpRegion'------ * 'tpDescription'------ * 'tpHealthChecks'-targetPool-    :: TargetPool-targetPool =-    TargetPool'-    { _tpSessionAffinity = Nothing-    , _tpBackupPool = Nothing-    , _tpKind = "compute#targetPool"-    , _tpSelfLink = Nothing-    , _tpName = Nothing-    , _tpCreationTimestamp = Nothing-    , _tpInstances = Nothing-    , _tpId = Nothing-    , _tpFailoverRatio = Nothing-    , _tpRegion = Nothing-    , _tpDescription = Nothing-    , _tpHealthChecks = Nothing-    }---- | Sesssion affinity option, must be one of the following values: NONE:--- Connections from the same client IP may go to any instance in the pool.--- CLIENT_IP: Connections from the same client IP will go to the same--- instance in the pool while that instance remains healthy.--- CLIENT_IP_PROTO: Connections from the same client IP with the same IP--- protocol will go to the same instance in the pool while that instance--- remains healthy.-tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)-tpSessionAffinity-  = lens _tpSessionAffinity-      (\ s a -> s{_tpSessionAffinity = a})---- | This field is applicable only when the containing target pool is serving--- a forwarding rule as the primary pool, and its failoverRatio field is--- properly set to a value between [0, 1]. backupPool and failoverRatio--- together define the fallback behavior of the primary target pool: if the--- ratio of the healthy instances in the primary pool is at or below--- failoverRatio, traffic arriving at the load-balanced IP will be directed--- to the backup pool. In case where failoverRatio and backupPool are not--- set, or all the instances in the backup pool are unhealthy, the traffic--- will be directed back to the primary pool in the \"force\" mode, where--- traffic will be spread to the healthy instances with the best effort, or--- to all instances when no instance is healthy.-tpBackupPool :: Lens' TargetPool (Maybe Text)-tpBackupPool-  = lens _tpBackupPool (\ s a -> s{_tpBackupPool = a})---- | [Output Only] Type of the resource. Always compute#targetPool for target--- pools.-tpKind :: Lens' TargetPool Text-tpKind = lens _tpKind (\ s a -> s{_tpKind = a})---- | [Output Only] Server-defined URL for the resource.-tpSelfLink :: Lens' TargetPool (Maybe Text)-tpSelfLink-  = lens _tpSelfLink (\ s a -> s{_tpSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-tpName :: Lens' TargetPool (Maybe Text)-tpName = lens _tpName (\ s a -> s{_tpName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-tpCreationTimestamp :: Lens' TargetPool (Maybe Text)-tpCreationTimestamp-  = lens _tpCreationTimestamp-      (\ s a -> s{_tpCreationTimestamp = a})---- | A list of resource URLs to the virtual machine instances serving this--- pool. They must live in zones contained in the same region as this pool.-tpInstances :: Lens' TargetPool [Text]-tpInstances-  = lens _tpInstances (\ s a -> s{_tpInstances = a}) .-      _Default-      . _Coerce---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tpId :: Lens' TargetPool (Maybe Word64)-tpId-  = lens _tpId (\ s a -> s{_tpId = a}) .-      mapping _Coerce---- | This field is applicable only when the containing target pool is serving--- a forwarding rule as the primary pool (i.e., not as a backup pool to--- some other target pool). The value of the field must be in [0, 1]. If--- set, backupPool must also be set. They together define the fallback--- behavior of the primary target pool: if the ratio of the healthy--- instances in the primary pool is at or below this number, traffic--- arriving at the load-balanced IP will be directed to the backup pool. In--- case where failoverRatio is not set or all the instances in the backup--- pool are unhealthy, the traffic will be directed back to the primary--- pool in the \"force\" mode, where traffic will be spread to the healthy--- instances with the best effort, or to all instances when no instance is--- healthy.-tpFailoverRatio :: Lens' TargetPool (Maybe Double)-tpFailoverRatio-  = lens _tpFailoverRatio-      (\ s a -> s{_tpFailoverRatio = a})-      . mapping _Coerce---- | [Output Only] URL of the region where the target pool resides.-tpRegion :: Lens' TargetPool (Maybe Text)-tpRegion = lens _tpRegion (\ s a -> s{_tpRegion = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-tpDescription :: Lens' TargetPool (Maybe Text)-tpDescription-  = lens _tpDescription-      (\ s a -> s{_tpDescription = a})---- | A list of URLs to the HttpHealthCheck resource. A member instance in--- this pool is considered healthy if and only if all specified health--- checks pass. An empty list means all member instances will be considered--- healthy at all times.-tpHealthChecks :: Lens' TargetPool [Text]-tpHealthChecks-  = lens _tpHealthChecks-      (\ s a -> s{_tpHealthChecks = a})-      . _Default-      . _Coerce--instance FromJSON TargetPool where-        parseJSON-          = withObject "TargetPool"-              (\ o ->-                 TargetPool' <$>-                   (o .:? "sessionAffinity") <*> (o .:? "backupPool")-                     <*> (o .:? "kind" .!= "compute#targetPool")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "instances" .!= mempty)-                     <*> (o .:? "id")-                     <*> (o .:? "failoverRatio")-                     <*> (o .:? "region")-                     <*> (o .:? "description")-                     <*> (o .:? "healthChecks" .!= mempty))--instance ToJSON TargetPool where-        toJSON TargetPool'{..}-          = object-              (catMaybes-                 [("sessionAffinity" .=) <$> _tpSessionAffinity,-                  ("backupPool" .=) <$> _tpBackupPool,-                  Just ("kind" .= _tpKind),-                  ("selfLink" .=) <$> _tpSelfLink,-                  ("name" .=) <$> _tpName,-                  ("creationTimestamp" .=) <$> _tpCreationTimestamp,-                  ("instances" .=) <$> _tpInstances,-                  ("id" .=) <$> _tpId,-                  ("failoverRatio" .=) <$> _tpFailoverRatio,-                  ("region" .=) <$> _tpRegion,-                  ("description" .=) <$> _tpDescription,-                  ("healthChecks" .=) <$> _tpHealthChecks])---- | Contains a list of images.------ /See:/ 'imageList' smart constructor.-data ImageList = ImageList'-    { _ilNextPageToken :: !(Maybe Text)-    , _ilKind          :: !Text-    , _ilItems         :: !(Maybe [Image])-    , _ilSelfLink      :: !(Maybe Text)-    , _ilId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ImageList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ilNextPageToken'------ * 'ilKind'------ * 'ilItems'------ * 'ilSelfLink'------ * 'ilId'-imageList-    :: ImageList-imageList =-    ImageList'-    { _ilNextPageToken = Nothing-    , _ilKind = "compute#imageList"-    , _ilItems = Nothing-    , _ilSelfLink = Nothing-    , _ilId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-ilNextPageToken :: Lens' ImageList (Maybe Text)-ilNextPageToken-  = lens _ilNextPageToken-      (\ s a -> s{_ilNextPageToken = a})---- | Type of resource.-ilKind :: Lens' ImageList Text-ilKind = lens _ilKind (\ s a -> s{_ilKind = a})---- | [Output Only] A list of Image resources.-ilItems :: Lens' ImageList [Image]-ilItems-  = lens _ilItems (\ s a -> s{_ilItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-ilSelfLink :: Lens' ImageList (Maybe Text)-ilSelfLink-  = lens _ilSelfLink (\ s a -> s{_ilSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-ilId :: Lens' ImageList (Maybe Text)-ilId = lens _ilId (\ s a -> s{_ilId = a})--instance FromJSON ImageList where-        parseJSON-          = withObject "ImageList"-              (\ o ->-                 ImageList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#imageList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON ImageList where-        toJSON ImageList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _ilNextPageToken,-                  Just ("kind" .= _ilKind), ("items" .=) <$> _ilItems,-                  ("selfLink" .=) <$> _ilSelfLink,-                  ("id" .=) <$> _ilId])---- | Informational warning which replaces the list of addresses when the list--- is empty.------ /See:/ 'vpnTunnelsScopedListWarning' smart constructor.-data VPNTunnelsScopedListWarning = VPNTunnelsScopedListWarning'-    { _vtslwData    :: !(Maybe [VPNTunnelsScopedListWarningDataItem])-    , _vtslwCode    :: !(Maybe VPNTunnelsScopedListWarningCode)-    , _vtslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelsScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtslwData'------ * 'vtslwCode'------ * 'vtslwMessage'-vpnTunnelsScopedListWarning-    :: VPNTunnelsScopedListWarning-vpnTunnelsScopedListWarning =-    VPNTunnelsScopedListWarning'-    { _vtslwData = Nothing-    , _vtslwCode = Nothing-    , _vtslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]-vtslwData-  = lens _vtslwData (\ s a -> s{_vtslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)-vtslwCode-  = lens _vtslwCode (\ s a -> s{_vtslwCode = a})---- | [Output Only] A human-readable description of the warning code.-vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)-vtslwMessage-  = lens _vtslwMessage (\ s a -> s{_vtslwMessage = a})--instance FromJSON VPNTunnelsScopedListWarning where-        parseJSON-          = withObject "VPNTunnelsScopedListWarning"-              (\ o ->-                 VPNTunnelsScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON VPNTunnelsScopedListWarning where-        toJSON VPNTunnelsScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _vtslwData,-                  ("code" .=) <$> _vtslwCode,-                  ("message" .=) <$> _vtslwMessage])---- | A ForwardingRule resource. A ForwardingRule resource specifies which--- pool of target virtual machines to forward a packet to if it matches the--- given [IPAddress, IPProtocol, portRange] tuple.------ /See:/ 'forwardingRule' smart constructor.-data ForwardingRule = ForwardingRule'-    { _frIPAddress         :: !(Maybe Text)-    , _frKind              :: !Text-    , _frPortRange         :: !(Maybe Text)-    , _frSelfLink          :: !(Maybe Text)-    , _frName              :: !(Maybe Text)-    , _frIPProtocol        :: !(Maybe ForwardingRuleIPProtocol)-    , _frCreationTimestamp :: !(Maybe Text)-    , _frId                :: !(Maybe (Textual Word64))-    , _frRegion            :: !(Maybe Text)-    , _frDescription       :: !(Maybe Text)-    , _frTarget            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frIPAddress'------ * 'frKind'------ * 'frPortRange'------ * 'frSelfLink'------ * 'frName'------ * 'frIPProtocol'------ * 'frCreationTimestamp'------ * 'frId'------ * 'frRegion'------ * 'frDescription'------ * 'frTarget'-forwardingRule-    :: ForwardingRule-forwardingRule =-    ForwardingRule'-    { _frIPAddress = Nothing-    , _frKind = "compute#forwardingRule"-    , _frPortRange = Nothing-    , _frSelfLink = Nothing-    , _frName = Nothing-    , _frIPProtocol = Nothing-    , _frCreationTimestamp = Nothing-    , _frId = Nothing-    , _frRegion = Nothing-    , _frDescription = Nothing-    , _frTarget = Nothing-    }---- | Value of the reserved IP address that this forwarding rule is serving on--- behalf of. For global forwarding rules, the address must be a global IP;--- for regional forwarding rules, the address must live in the same region--- as the forwarding rule. If left empty (default value), an ephemeral IP--- from the same scope (global or regional) will be assigned.-frIPAddress :: Lens' ForwardingRule (Maybe Text)-frIPAddress-  = lens _frIPAddress (\ s a -> s{_frIPAddress = 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})---- | 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.-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.-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 unique identifier for the resource. This identifier is--- defined by the server.-frId :: Lens' ForwardingRule (Maybe Word64)-frId-  = lens _frId (\ s a -> s{_frId = a}) .-      mapping _Coerce---- | [Output Only] URL of the region where the regional forwarding rule--- resides. This field is not applicable to global forwarding rules.-frRegion :: Lens' ForwardingRule (Maybe Text)-frRegion = lens _frRegion (\ s a -> s{_frRegion = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-frDescription :: Lens' ForwardingRule (Maybe Text)-frDescription-  = lens _frDescription-      (\ s a -> s{_frDescription = a})---- | The URL of the target resource to receive the matched traffic. For--- regional forwarding rules, this target must live in the same region as--- the forwarding rule. For global forwarding rules, this target must be a--- global TargetHttpProxy or TargetHttpsProxy resource. The forwarded--- traffic must be of a type appropriate to the target object. For example,--- TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires--- HTTPS traffic.-frTarget :: Lens' ForwardingRule (Maybe Text)-frTarget = lens _frTarget (\ s a -> s{_frTarget = a})--instance FromJSON ForwardingRule where-        parseJSON-          = withObject "ForwardingRule"-              (\ o ->-                 ForwardingRule' <$>-                   (o .:? "IPAddress") <*>-                     (o .:? "kind" .!= "compute#forwardingRule")-                     <*> (o .:? "portRange")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "IPProtocol")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "description")-                     <*> (o .:? "target"))--instance ToJSON ForwardingRule where-        toJSON ForwardingRule'{..}-          = object-              (catMaybes-                 [("IPAddress" .=) <$> _frIPAddress,-                  Just ("kind" .= _frKind),-                  ("portRange" .=) <$> _frPortRange,-                  ("selfLink" .=) <$> _frSelfLink,-                  ("name" .=) <$> _frName,-                  ("IPProtocol" .=) <$> _frIPProtocol,-                  ("creationTimestamp" .=) <$> _frCreationTimestamp,-                  ("id" .=) <$> _frId, ("region" .=) <$> _frRegion,-                  ("description" .=) <$> _frDescription,-                  ("target" .=) <$> _frTarget])---- | Contains a list of UrlMap resources.------ /See:/ 'urlMapList' smart constructor.-data URLMapList = URLMapList'-    { _umlNextPageToken :: !(Maybe Text)-    , _umlKind          :: !Text-    , _umlItems         :: !(Maybe [URLMap])-    , _umlSelfLink      :: !(Maybe Text)-    , _umlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umlNextPageToken'------ * 'umlKind'------ * 'umlItems'------ * 'umlSelfLink'------ * 'umlId'-urlMapList-    :: URLMapList-urlMapList =-    URLMapList'-    { _umlNextPageToken = Nothing-    , _umlKind = "compute#urlMapList"-    , _umlItems = Nothing-    , _umlSelfLink = Nothing-    , _umlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-umlNextPageToken :: Lens' URLMapList (Maybe Text)-umlNextPageToken-  = lens _umlNextPageToken-      (\ s a -> s{_umlNextPageToken = a})---- | Type of resource.-umlKind :: Lens' URLMapList Text-umlKind = lens _umlKind (\ s a -> s{_umlKind = a})---- | A list of UrlMap resources.-umlItems :: Lens' URLMapList [URLMap]-umlItems-  = lens _umlItems (\ s a -> s{_umlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-umlSelfLink :: Lens' URLMapList (Maybe Text)-umlSelfLink-  = lens _umlSelfLink (\ s a -> s{_umlSelfLink = a})---- | [Output Only] Unique identifier for the resource. Set by the server.-umlId :: Lens' URLMapList (Maybe Text)-umlId = lens _umlId (\ s a -> s{_umlId = a})--instance FromJSON URLMapList where-        parseJSON-          = withObject "URLMapList"-              (\ o ->-                 URLMapList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#urlMapList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON URLMapList where-        toJSON URLMapList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _umlNextPageToken,-                  Just ("kind" .= _umlKind),-                  ("items" .=) <$> _umlItems,-                  ("selfLink" .=) <$> _umlSelfLink,-                  ("id" .=) <$> _umlId])------- /See:/ 'forwardingRulesScopedListWarningDataItem' smart constructor.-data ForwardingRulesScopedListWarningDataItem = ForwardingRulesScopedListWarningDataItem'-    { _frslwdiValue :: !(Maybe Text)-    , _frslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRulesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frslwdiValue'------ * 'frslwdiKey'-forwardingRulesScopedListWarningDataItem-    :: ForwardingRulesScopedListWarningDataItem-forwardingRulesScopedListWarningDataItem =-    ForwardingRulesScopedListWarningDataItem'-    { _frslwdiValue = Nothing-    , _frslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)-frslwdiValue-  = lens _frslwdiValue (\ s a -> s{_frslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)-frslwdiKey-  = lens _frslwdiKey (\ s a -> s{_frslwdiKey = a})--instance FromJSON-         ForwardingRulesScopedListWarningDataItem where-        parseJSON-          = withObject-              "ForwardingRulesScopedListWarningDataItem"-              (\ o ->-                 ForwardingRulesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON-         ForwardingRulesScopedListWarningDataItem where-        toJSON ForwardingRulesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _frslwdiValue,-                  ("key" .=) <$> _frslwdiKey])------- /See:/ 'instanceGroupManagersScopedListWarningDataItem' smart constructor.-data InstanceGroupManagersScopedListWarningDataItem = InstanceGroupManagersScopedListWarningDataItem'-    { _igmslwdiValue :: !(Maybe Text)-    , _igmslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmslwdiValue'------ * 'igmslwdiKey'-instanceGroupManagersScopedListWarningDataItem-    :: InstanceGroupManagersScopedListWarningDataItem-instanceGroupManagersScopedListWarningDataItem =-    InstanceGroupManagersScopedListWarningDataItem'-    { _igmslwdiValue = Nothing-    , _igmslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)-igmslwdiValue-  = lens _igmslwdiValue-      (\ s a -> s{_igmslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)-igmslwdiKey-  = lens _igmslwdiKey (\ s a -> s{_igmslwdiKey = a})--instance FromJSON-         InstanceGroupManagersScopedListWarningDataItem where-        parseJSON-          = withObject-              "InstanceGroupManagersScopedListWarningDataItem"-              (\ o ->-                 InstanceGroupManagersScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON-         InstanceGroupManagersScopedListWarningDataItem where-        toJSON-          InstanceGroupManagersScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _igmslwdiValue,-                  ("key" .=) <$> _igmslwdiKey])------- /See:/ 'subnetworksScopedList' smart constructor.-data SubnetworksScopedList = SubnetworksScopedList'-    { _sslSubnetworks :: !(Maybe [Subnetwork])-    , _sslWarning     :: !(Maybe SubnetworksScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworksScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sslSubnetworks'------ * 'sslWarning'-subnetworksScopedList-    :: SubnetworksScopedList-subnetworksScopedList =-    SubnetworksScopedList'-    { _sslSubnetworks = Nothing-    , _sslWarning = Nothing-    }---- | List of subnetworks contained in this scope.-sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]-sslSubnetworks-  = lens _sslSubnetworks-      (\ s a -> s{_sslSubnetworks = a})-      . _Default-      . _Coerce---- | An informational warning that appears when the list of addresses is--- empty.-sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)-sslWarning-  = lens _sslWarning (\ s a -> s{_sslWarning = a})--instance FromJSON SubnetworksScopedList where-        parseJSON-          = withObject "SubnetworksScopedList"-              (\ o ->-                 SubnetworksScopedList' <$>-                   (o .:? "subnetworks" .!= mempty) <*>-                     (o .:? "warning"))--instance ToJSON SubnetworksScopedList where-        toJSON SubnetworksScopedList'{..}-          = object-              (catMaybes-                 [("subnetworks" .=) <$> _sslSubnetworks,-                  ("warning" .=) <$> _sslWarning])---- | A Project resource. Projects can only be created in the Google Cloud--- Platform Console. Unless marked otherwise, values can only be modified--- in the console.------ /See:/ 'project' smart constructor.-data Project = Project'-    { _pKind                   :: !Text-    , _pUsageExportLocation    :: !(Maybe UsageExportLocation)-    , _pSelfLink               :: !(Maybe Text)-    , _pName                   :: !(Maybe Text)-    , _pCreationTimestamp      :: !(Maybe Text)-    , _pEnabledFeatures        :: !(Maybe [Text])-    , _pQuotas                 :: !(Maybe [Quota])-    , _pId                     :: !(Maybe (Textual Word64))-    , _pDescription            :: !(Maybe Text)-    , _pCommonInstanceMetadata :: !(Maybe Metadata)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Project' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'pKind'------ * 'pUsageExportLocation'------ * 'pSelfLink'------ * 'pName'------ * 'pCreationTimestamp'------ * 'pEnabledFeatures'------ * 'pQuotas'------ * 'pId'------ * 'pDescription'------ * 'pCommonInstanceMetadata'-project-    :: Project-project =-    Project'-    { _pKind = "compute#project"-    , _pUsageExportLocation = Nothing-    , _pSelfLink = Nothing-    , _pName = Nothing-    , _pCreationTimestamp = Nothing-    , _pEnabledFeatures = Nothing-    , _pQuotas = Nothing-    , _pId = Nothing-    , _pDescription = Nothing-    , _pCommonInstanceMetadata = Nothing-    }---- | [Output Only] Type of the resource. Always compute#project for projects.-pKind :: Lens' Project Text-pKind = lens _pKind (\ s a -> s{_pKind = a})---- | The naming prefix for daily usage reports and the Google Cloud Storage--- bucket where they are stored.-pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)-pUsageExportLocation-  = lens _pUsageExportLocation-      (\ s a -> s{_pUsageExportLocation = a})---- | [Output Only] Server-defined URL for the resource.-pSelfLink :: Lens' Project (Maybe Text)-pSelfLink-  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})---- | The project ID. For example: my-example-project. Use the project ID to--- make requests to Compute Engine.-pName :: Lens' Project (Maybe Text)-pName = lens _pName (\ s a -> s{_pName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-pCreationTimestamp :: Lens' Project (Maybe Text)-pCreationTimestamp-  = lens _pCreationTimestamp-      (\ s a -> s{_pCreationTimestamp = a})---- | Restricted features enabled for use on this project.-pEnabledFeatures :: Lens' Project [Text]-pEnabledFeatures-  = lens _pEnabledFeatures-      (\ s a -> s{_pEnabledFeatures = a})-      . _Default-      . _Coerce---- | [Output Only] Quotas assigned to this project.-pQuotas :: Lens' Project [Quota]-pQuotas-  = lens _pQuotas (\ s a -> s{_pQuotas = a}) . _Default-      . _Coerce---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server. This is not the project ID, and is just a unique--- ID used by Compute Engine to identify resources.-pId :: Lens' Project (Maybe Word64)-pId-  = lens _pId (\ s a -> s{_pId = a}) . mapping _Coerce---- | An optional textual description of the resource.-pDescription :: Lens' Project (Maybe Text)-pDescription-  = lens _pDescription (\ s a -> s{_pDescription = a})---- | Metadata key\/value pairs available to all instances contained in this--- project. See Custom metadata for more information.-pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)-pCommonInstanceMetadata-  = lens _pCommonInstanceMetadata-      (\ s a -> s{_pCommonInstanceMetadata = a})--instance FromJSON Project where-        parseJSON-          = withObject "Project"-              (\ o ->-                 Project' <$>-                   (o .:? "kind" .!= "compute#project") <*>-                     (o .:? "usageExportLocation")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "enabledFeatures" .!= mempty)-                     <*> (o .:? "quotas" .!= mempty)-                     <*> (o .:? "id")-                     <*> (o .:? "description")-                     <*> (o .:? "commonInstanceMetadata"))--instance ToJSON Project where-        toJSON Project'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _pKind),-                  ("usageExportLocation" .=) <$> _pUsageExportLocation,-                  ("selfLink" .=) <$> _pSelfLink,-                  ("name" .=) <$> _pName,-                  ("creationTimestamp" .=) <$> _pCreationTimestamp,-                  ("enabledFeatures" .=) <$> _pEnabledFeatures,-                  ("quotas" .=) <$> _pQuotas, ("id" .=) <$> _pId,-                  ("description" .=) <$> _pDescription,-                  ("commonInstanceMetadata" .=) <$>-                    _pCommonInstanceMetadata])---- | An Operation resource, used to manage asynchronous API requests.------ /See:/ 'operation' smart constructor.-data Operation = Operation'-    { _oTargetId            :: !(Maybe (Textual Word64))-    , _oStatus              :: !(Maybe OperationStatus)-    , _oInsertTime          :: !(Maybe Text)-    , _oProgress            :: !(Maybe (Textual Int32))-    , _oStartTime           :: !(Maybe Text)-    , _oKind                :: !Text-    , _oError               :: !(Maybe OperationError)-    , _oHTTPErrorMessage    :: !(Maybe Text)-    , _oZone                :: !(Maybe Text)-    , _oWarnings            :: !(Maybe [OperationWarningsItem])-    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))-    , _oUser                :: !(Maybe Text)-    , _oSelfLink            :: !(Maybe Text)-    , _oName                :: !(Maybe Text)-    , _oStatusMessage       :: !(Maybe Text)-    , _oCreationTimestamp   :: !(Maybe Text)-    , _oEndTime             :: !(Maybe Text)-    , _oId                  :: !(Maybe (Textual Word64))-    , _oOperationType       :: !(Maybe Text)-    , _oRegion              :: !(Maybe Text)-    , _oDescription         :: !(Maybe Text)-    , _oTargetLink          :: !(Maybe Text)-    , _oClientOperationId   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Operation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oTargetId'------ * 'oStatus'------ * 'oInsertTime'------ * 'oProgress'------ * 'oStartTime'------ * 'oKind'------ * 'oError'------ * 'oHTTPErrorMessage'------ * 'oZone'------ * 'oWarnings'------ * 'oHTTPErrorStatusCode'------ * 'oUser'------ * 'oSelfLink'------ * 'oName'------ * 'oStatusMessage'------ * 'oCreationTimestamp'------ * 'oEndTime'------ * 'oId'------ * 'oOperationType'------ * 'oRegion'------ * 'oDescription'------ * 'oTargetLink'------ * 'oClientOperationId'-operation-    :: Operation-operation =-    Operation'-    { _oTargetId = Nothing-    , _oStatus = Nothing-    , _oInsertTime = Nothing-    , _oProgress = Nothing-    , _oStartTime = Nothing-    , _oKind = "compute#operation"-    , _oError = Nothing-    , _oHTTPErrorMessage = Nothing-    , _oZone = Nothing-    , _oWarnings = Nothing-    , _oHTTPErrorStatusCode = Nothing-    , _oUser = Nothing-    , _oSelfLink = Nothing-    , _oName = Nothing-    , _oStatusMessage = Nothing-    , _oCreationTimestamp = Nothing-    , _oEndTime = Nothing-    , _oId = Nothing-    , _oOperationType = Nothing-    , _oRegion = Nothing-    , _oDescription = Nothing-    , _oTargetLink = Nothing-    , _oClientOperationId = Nothing-    }---- | [Output Only] The unique target ID, which identifies a specific--- incarnation of the target resource.-oTargetId :: Lens' Operation (Maybe Word64)-oTargetId-  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .-      mapping _Coerce---- | [Output Only] The status of the operation, which can be one of the--- following: PENDING, RUNNING, or DONE.-oStatus :: Lens' Operation (Maybe OperationStatus)-oStatus = lens _oStatus (\ s a -> s{_oStatus = a})---- | [Output Only] The time that this operation was requested. This value is--- in RFC3339 text format.-oInsertTime :: Lens' Operation (Maybe Text)-oInsertTime-  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})---- | [Output Only] An optional progress indicator that ranges from 0 to 100.--- There is no requirement that this be linear or support any granularity--- of operations. This should not be used to guess when the operation will--- be complete. This number should monotonically increase as the operation--- progresses.-oProgress :: Lens' Operation (Maybe Int32)-oProgress-  = lens _oProgress (\ s a -> s{_oProgress = a}) .-      mapping _Coerce---- | [Output Only] The time that this operation was started by the server.--- This value is in RFC3339 text format.-oStartTime :: Lens' Operation (Maybe Text)-oStartTime-  = lens _oStartTime (\ s a -> s{_oStartTime = a})---- | [Output Only] Type of the resource. Always compute#operation for--- Operation resources.-oKind :: Lens' Operation Text-oKind = lens _oKind (\ s a -> s{_oKind = a})---- | [Output Only] If errors are generated during processing of the--- operation, this field will be populated.-oError :: Lens' Operation (Maybe OperationError)-oError = lens _oError (\ s a -> s{_oError = a})---- | [Output Only] If the operation fails, this field contains the HTTP error--- message that was returned, such as NOT FOUND.-oHTTPErrorMessage :: Lens' Operation (Maybe Text)-oHTTPErrorMessage-  = lens _oHTTPErrorMessage-      (\ s a -> s{_oHTTPErrorMessage = a})---- | [Output Only] The URL of the zone where the operation resides. Only--- available when performing per-zone operations.-oZone :: Lens' Operation (Maybe Text)-oZone = lens _oZone (\ s a -> s{_oZone = a})---- | [Output Only] If warning messages are generated during processing of the--- operation, this field will be populated.-oWarnings :: Lens' Operation [OperationWarningsItem]-oWarnings-  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .-      _Default-      . _Coerce---- | [Output Only] If the operation fails, this field contains the HTTP error--- status code that was returned. For example, a 404 means the resource was--- not found.-oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)-oHTTPErrorStatusCode-  = lens _oHTTPErrorStatusCode-      (\ s a -> s{_oHTTPErrorStatusCode = a})-      . mapping _Coerce---- | [Output Only] User who requested the operation, for example:--- user\'example.com.-oUser :: Lens' Operation (Maybe Text)-oUser = lens _oUser (\ s a -> s{_oUser = a})---- | [Output Only] Server-defined URL for the resource.-oSelfLink :: Lens' Operation (Maybe Text)-oSelfLink-  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})---- | [Output Only] Name of the resource.-oName :: Lens' Operation (Maybe Text)-oName = lens _oName (\ s a -> s{_oName = a})---- | [Output Only] An optional textual description of the current status of--- the operation.-oStatusMessage :: Lens' Operation (Maybe Text)-oStatusMessage-  = lens _oStatusMessage-      (\ s a -> s{_oStatusMessage = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-oCreationTimestamp :: Lens' Operation (Maybe Text)-oCreationTimestamp-  = lens _oCreationTimestamp-      (\ s a -> s{_oCreationTimestamp = a})---- | [Output Only] The time that this operation was completed. This value is--- in RFC3339 text format.-oEndTime :: Lens' Operation (Maybe Text)-oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-oId :: Lens' Operation (Maybe Word64)-oId-  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce---- | [Output Only] The type of operation, such as insert, update, or delete,--- and so on.-oOperationType :: Lens' Operation (Maybe Text)-oOperationType-  = lens _oOperationType-      (\ s a -> s{_oOperationType = a})---- | [Output Only] The URL of the region where the operation resides. Only--- available when performing regional operations.-oRegion :: Lens' Operation (Maybe Text)-oRegion = lens _oRegion (\ s a -> s{_oRegion = a})---- | [Output Only] A textual description of the operation, which is set when--- the operation is created.-oDescription :: Lens' Operation (Maybe Text)-oDescription-  = lens _oDescription (\ s a -> s{_oDescription = a})---- | [Output Only] The URL of the resource that the operation modifies.-oTargetLink :: Lens' Operation (Maybe Text)-oTargetLink-  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})---- | [Output Only] Reserved for future use.-oClientOperationId :: Lens' Operation (Maybe Text)-oClientOperationId-  = lens _oClientOperationId-      (\ s a -> s{_oClientOperationId = a})--instance FromJSON Operation where-        parseJSON-          = withObject "Operation"-              (\ o ->-                 Operation' <$>-                   (o .:? "targetId") <*> (o .:? "status") <*>-                     (o .:? "insertTime")-                     <*> (o .:? "progress")-                     <*> (o .:? "startTime")-                     <*> (o .:? "kind" .!= "compute#operation")-                     <*> (o .:? "error")-                     <*> (o .:? "httpErrorMessage")-                     <*> (o .:? "zone")-                     <*> (o .:? "warnings" .!= mempty)-                     <*> (o .:? "httpErrorStatusCode")-                     <*> (o .:? "user")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "statusMessage")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "endTime")-                     <*> (o .:? "id")-                     <*> (o .:? "operationType")-                     <*> (o .:? "region")-                     <*> (o .:? "description")-                     <*> (o .:? "targetLink")-                     <*> (o .:? "clientOperationId"))--instance ToJSON Operation where-        toJSON Operation'{..}-          = object-              (catMaybes-                 [("targetId" .=) <$> _oTargetId,-                  ("status" .=) <$> _oStatus,-                  ("insertTime" .=) <$> _oInsertTime,-                  ("progress" .=) <$> _oProgress,-                  ("startTime" .=) <$> _oStartTime,-                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,-                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,-                  ("zone" .=) <$> _oZone,-                  ("warnings" .=) <$> _oWarnings,-                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,-                  ("user" .=) <$> _oUser,-                  ("selfLink" .=) <$> _oSelfLink,-                  ("name" .=) <$> _oName,-                  ("statusMessage" .=) <$> _oStatusMessage,-                  ("creationTimestamp" .=) <$> _oCreationTimestamp,-                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,-                  ("operationType" .=) <$> _oOperationType,-                  ("region" .=) <$> _oRegion,-                  ("description" .=) <$> _oDescription,-                  ("targetLink" .=) <$> _oTargetLink,-                  ("clientOperationId" .=) <$> _oClientOperationId])------- /See:/ 'disksScopedListWarningDataItem' smart constructor.-data DisksScopedListWarningDataItem = DisksScopedListWarningDataItem'-    { _dslwdiValue :: !(Maybe Text)-    , _dslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DisksScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dslwdiValue'------ * 'dslwdiKey'-disksScopedListWarningDataItem-    :: DisksScopedListWarningDataItem-disksScopedListWarningDataItem =-    DisksScopedListWarningDataItem'-    { _dslwdiValue = Nothing-    , _dslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)-dslwdiValue-  = lens _dslwdiValue (\ s a -> s{_dslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)-dslwdiKey-  = lens _dslwdiKey (\ s a -> s{_dslwdiKey = a})--instance FromJSON DisksScopedListWarningDataItem-         where-        parseJSON-          = withObject "DisksScopedListWarningDataItem"-              (\ o ->-                 DisksScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON DisksScopedListWarningDataItem where-        toJSON DisksScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _dslwdiValue,-                  ("key" .=) <$> _dslwdiKey])---- | A Disk resource.------ /See:/ 'disk' smart constructor.-data Disk = Disk'-    { _dStatus              :: !(Maybe DiskStatus)-    , _dSourceSnapshotId    :: !(Maybe Text)-    , _dLastAttachTimestamp :: !(Maybe Text)-    , _dUsers               :: !(Maybe [Text])-    , _dSourceImage         :: !(Maybe Text)-    , _dSizeGb              :: !(Maybe (Textual Int64))-    , _dKind                :: !Text-    , _dLastDetachTimestamp :: !(Maybe Text)-    , _dZone                :: !(Maybe Text)-    , _dSelfLink            :: !(Maybe Text)-    , _dName                :: !(Maybe Text)-    , _dSourceImageId       :: !(Maybe Text)-    , _dCreationTimestamp   :: !(Maybe Text)-    , _dId                  :: !(Maybe (Textual Word64))-    , _dLicenses            :: !(Maybe [Text])-    , _dOptions             :: !(Maybe Text)-    , _dType                :: !(Maybe Text)-    , _dDescription         :: !(Maybe Text)-    , _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'------ * 'dSizeGb'------ * 'dKind'------ * 'dLastDetachTimestamp'------ * 'dZone'------ * 'dSelfLink'------ * 'dName'------ * 'dSourceImageId'------ * 'dCreationTimestamp'------ * 'dId'------ * 'dLicenses'------ * 'dOptions'------ * 'dType'------ * 'dDescription'------ * 'dSourceSnapshot'-disk-    :: Disk-disk =-    Disk'-    { _dStatus = Nothing-    , _dSourceSnapshotId = Nothing-    , _dLastAttachTimestamp = Nothing-    , _dUsers = Nothing-    , _dSourceImage = Nothing-    , _dSizeGb = Nothing-    , _dKind = "compute#disk"-    , _dLastDetachTimestamp = Nothing-    , _dZone = Nothing-    , _dSelfLink = Nothing-    , _dName = Nothing-    , _dSourceImageId = Nothing-    , _dCreationTimestamp = Nothing-    , _dId = Nothing-    , _dLicenses = Nothing-    , _dOptions = Nothing-    , _dType = Nothing-    , _dDescription = Nothing-    , _dSourceSnapshot = Nothing-    }---- | [Output Only] The status of disk creation. Applicable statuses includes:--- CREATING, FAILED, READY, RESTORING.-dStatus :: Lens' Disk (Maybe DiskStatus)-dStatus = lens _dStatus (\ s a -> s{_dStatus = a})---- | [Output Only] The unique ID of the snapshot used to create this disk.--- This value identifies the exact snapshot that was used to create this--- persistent disk. For example, if you created the persistent disk from a--- snapshot that was later deleted and recreated under the same name, the--- source snapshot ID would identify the exact version of the snapshot that--- was used.-dSourceSnapshotId :: Lens' Disk (Maybe Text)-dSourceSnapshotId-  = lens _dSourceSnapshotId-      (\ s a -> s{_dSourceSnapshotId = a})---- | [Output Only] Last attach timestamp in RFC3339 text format.-dLastAttachTimestamp :: Lens' Disk (Maybe Text)-dLastAttachTimestamp-  = lens _dLastAttachTimestamp-      (\ s a -> s{_dLastAttachTimestamp = a})---- | [Output Only] Links to the users of the disk (attached instances) in--- form: project\/zones\/zone\/instances\/instance-dUsers :: Lens' Disk [Text]-dUsers-  = lens _dUsers (\ s a -> s{_dUsers = a}) . _Default .-      _Coerce---- | The source image used to create this disk. If the source image is--- deleted, this field will not be set. To create a disk with one of the--- public operating system images, specify the image by its family name.--- For example, specify family\/debian-8 to use the latest Debian 8 image:--- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,--- use a specific version of a public operating system image:--- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To--- create a disk with a private image that you created, specify the image--- name in the following format: global\/images\/my-private-image You can--- also specify a private image by its image family, which returns the--- latest version of the image in that family. Replace the image name with--- family\/family-name: global\/images\/family\/my-private-family-dSourceImage :: Lens' Disk (Maybe Text)-dSourceImage-  = lens _dSourceImage (\ s a -> s{_dSourceImage = a})---- | Size of the persistent disk, specified in GB. You can specify this field--- when creating a persistent disk using the sourceImage or sourceSnapshot--- parameter, or specify it alone to create an empty persistent disk. If--- you specify this field along with sourceImage or sourceSnapshot, the--- value of sizeGb must not be less than the size of the sourceImage or the--- size of the snapshot.-dSizeGb :: Lens' Disk (Maybe Int64)-dSizeGb-  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .-      mapping _Coerce---- | [Output Only] Type of the resource. Always compute#disk for disks.-dKind :: Lens' Disk Text-dKind = lens _dKind (\ s a -> s{_dKind = a})---- | [Output Only] Last detach timestamp in RFC3339 text format.-dLastDetachTimestamp :: Lens' Disk (Maybe Text)-dLastDetachTimestamp-  = lens _dLastDetachTimestamp-      (\ s a -> s{_dLastDetachTimestamp = a})---- | [Output Only] URL of the zone where the disk resides.-dZone :: Lens' Disk (Maybe Text)-dZone = lens _dZone (\ s a -> s{_dZone = a})---- | [Output Only] Server-defined fully-qualified URL for this resource.-dSelfLink :: Lens' Disk (Maybe Text)-dSelfLink-  = lens _dSelfLink (\ s a -> s{_dSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-dName :: Lens' Disk (Maybe Text)-dName = lens _dName (\ s a -> s{_dName = a})---- | [Output Only] The ID value of the image used to create this disk. This--- value identifies the exact image that was used to create this persistent--- disk. For example, if you created the persistent disk from an image that--- was later deleted and recreated under the same name, the source image ID--- would identify the exact version of the image that was used.-dSourceImageId :: Lens' Disk (Maybe Text)-dSourceImageId-  = lens _dSourceImageId-      (\ s a -> s{_dSourceImageId = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-dCreationTimestamp :: Lens' Disk (Maybe Text)-dCreationTimestamp-  = lens _dCreationTimestamp-      (\ s a -> s{_dCreationTimestamp = a})---- | [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---- | [Output Only] Any applicable publicly visible licenses.-dLicenses :: Lens' Disk [Text]-dLicenses-  = lens _dLicenses (\ s a -> s{_dLicenses = a}) .-      _Default-      . _Coerce---- | Internal use only.-dOptions :: Lens' Disk (Maybe Text)-dOptions = lens _dOptions (\ s a -> s{_dOptions = a})---- | URL of the disk type resource describing which disk type to use to--- create the disk. Provide this when creating the disk.-dType :: Lens' Disk (Maybe Text)-dType = lens _dType (\ s a -> s{_dType = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-dDescription :: Lens' Disk (Maybe Text)-dDescription-  = lens _dDescription (\ s a -> s{_dDescription = a})---- | The 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 .:? "sizeGb")-                     <*> (o .:? "kind" .!= "compute#disk")-                     <*> (o .:? "lastDetachTimestamp")-                     <*> (o .:? "zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "sourceImageId")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "licenses" .!= mempty)-                     <*> (o .:? "options")-                     <*> (o .:? "type")-                     <*> (o .:? "description")-                     <*> (o .:? "sourceSnapshot"))--instance ToJSON Disk where-        toJSON Disk'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _dStatus,-                  ("sourceSnapshotId" .=) <$> _dSourceSnapshotId,-                  ("lastAttachTimestamp" .=) <$> _dLastAttachTimestamp,-                  ("users" .=) <$> _dUsers,-                  ("sourceImage" .=) <$> _dSourceImage,-                  ("sizeGb" .=) <$> _dSizeGb, Just ("kind" .= _dKind),-                  ("lastDetachTimestamp" .=) <$> _dLastDetachTimestamp,-                  ("zone" .=) <$> _dZone,-                  ("selfLink" .=) <$> _dSelfLink,-                  ("name" .=) <$> _dName,-                  ("sourceImageId" .=) <$> _dSourceImageId,-                  ("creationTimestamp" .=) <$> _dCreationTimestamp,-                  ("id" .=) <$> _dId, ("licenses" .=) <$> _dLicenses,-                  ("options" .=) <$> _dOptions, ("type" .=) <$> _dType,-                  ("description" .=) <$> _dDescription,-                  ("sourceSnapshot" .=) <$> _dSourceSnapshot])------- /See:/ 'diskMoveRequest' smart constructor.-data DiskMoveRequest = DiskMoveRequest'-    { _dmrTargetDisk      :: !(Maybe Text)-    , _dmrDestinationZone :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskMoveRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dmrTargetDisk'------ * 'dmrDestinationZone'-diskMoveRequest-    :: DiskMoveRequest-diskMoveRequest =-    DiskMoveRequest'-    { _dmrTargetDisk = Nothing-    , _dmrDestinationZone = Nothing-    }---- | The URL of the target disk to move. This can be a full or partial URL.--- For example, the following are all valid URLs to a disk: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk--- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk-dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)-dmrTargetDisk-  = lens _dmrTargetDisk-      (\ s a -> s{_dmrTargetDisk = a})---- | The URL of the destination zone to move the disk. This can be a full or--- partial URL. For example, the following are all valid URLs to a zone: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone--- - projects\/project\/zones\/zone - zones\/zone-dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)-dmrDestinationZone-  = lens _dmrDestinationZone-      (\ s a -> s{_dmrDestinationZone = a})--instance FromJSON DiskMoveRequest where-        parseJSON-          = withObject "DiskMoveRequest"-              (\ o ->-                 DiskMoveRequest' <$>-                   (o .:? "targetDisk") <*> (o .:? "destinationZone"))--instance ToJSON DiskMoveRequest where-        toJSON DiskMoveRequest'{..}-          = object-              (catMaybes-                 [("targetDisk" .=) <$> _dmrTargetDisk,-                  ("destinationZone" .=) <$> _dmrDestinationZone])---- | Configuration parameters of autoscaling based on load balancing.------ /See:/ 'autoscalingPolicyLoadBalancingUtilization' smart constructor.-newtype AutoscalingPolicyLoadBalancingUtilization = AutoscalingPolicyLoadBalancingUtilization'-    { _aplbuUtilizationTarget :: Maybe (Textual Double)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalingPolicyLoadBalancingUtilization' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aplbuUtilizationTarget'-autoscalingPolicyLoadBalancingUtilization-    :: AutoscalingPolicyLoadBalancingUtilization-autoscalingPolicyLoadBalancingUtilization =-    AutoscalingPolicyLoadBalancingUtilization'-    { _aplbuUtilizationTarget = Nothing-    }---- | Fraction of backend capacity utilization (set in HTTP(s) load balancing--- configuration) that autoscaler should maintain. Must be a positive float--- value. If not defined, the default is 0.8.-aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)-aplbuUtilizationTarget-  = lens _aplbuUtilizationTarget-      (\ s a -> s{_aplbuUtilizationTarget = a})-      . mapping _Coerce--instance FromJSON-         AutoscalingPolicyLoadBalancingUtilization where-        parseJSON-          = withObject-              "AutoscalingPolicyLoadBalancingUtilization"-              (\ o ->-                 AutoscalingPolicyLoadBalancingUtilization' <$>-                   (o .:? "utilizationTarget"))--instance ToJSON-         AutoscalingPolicyLoadBalancingUtilization where-        toJSON AutoscalingPolicyLoadBalancingUtilization'{..}-          = object-              (catMaybes-                 [("utilizationTarget" .=) <$>-                    _aplbuUtilizationTarget])------- /See:/ 'targetPoolsScopedListWarningDataItem' smart constructor.-data TargetPoolsScopedListWarningDataItem = TargetPoolsScopedListWarningDataItem'-    { _tpslwdiValue :: !(Maybe Text)-    , _tpslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpslwdiValue'------ * 'tpslwdiKey'-targetPoolsScopedListWarningDataItem-    :: TargetPoolsScopedListWarningDataItem-targetPoolsScopedListWarningDataItem =-    TargetPoolsScopedListWarningDataItem'-    { _tpslwdiValue = Nothing-    , _tpslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)-tpslwdiValue-  = lens _tpslwdiValue (\ s a -> s{_tpslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)-tpslwdiKey-  = lens _tpslwdiKey (\ s a -> s{_tpslwdiKey = a})--instance FromJSON-         TargetPoolsScopedListWarningDataItem where-        parseJSON-          = withObject "TargetPoolsScopedListWarningDataItem"-              (\ o ->-                 TargetPoolsScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON TargetPoolsScopedListWarningDataItem-         where-        toJSON TargetPoolsScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _tpslwdiValue,-                  ("key" .=) <$> _tpslwdiKey])------- /See:/ 'instanceGroupManager' smart constructor.-data InstanceGroupManager = InstanceGroupManager'-    { _igmKind              :: !Text-    , _igmFingerprint       :: !(Maybe Base64)-    , _igmBaseInstanceName  :: !(Maybe Text)-    , _igmZone              :: !(Maybe Text)-    , _igmInstanceTemplate  :: !(Maybe Text)-    , _igmTargetSize        :: !(Maybe (Textual Int32))-    , _igmSelfLink          :: !(Maybe Text)-    , _igmCurrentActions    :: !(Maybe InstanceGroupManagerActionsSummary)-    , _igmName              :: !(Maybe Text)-    , _igmCreationTimestamp :: !(Maybe Text)-    , _igmId                :: !(Maybe (Textual Word64))-    , _igmTargetPools       :: !(Maybe [Text])-    , _igmDescription       :: !(Maybe Text)-    , _igmInstanceGroup     :: !(Maybe Text)-    , _igmNamedPorts        :: !(Maybe [NamedPort])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManager' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmKind'------ * 'igmFingerprint'------ * 'igmBaseInstanceName'------ * 'igmZone'------ * 'igmInstanceTemplate'------ * 'igmTargetSize'------ * 'igmSelfLink'------ * 'igmCurrentActions'------ * 'igmName'------ * 'igmCreationTimestamp'------ * 'igmId'------ * 'igmTargetPools'------ * 'igmDescription'------ * 'igmInstanceGroup'------ * 'igmNamedPorts'-instanceGroupManager-    :: InstanceGroupManager-instanceGroupManager =-    InstanceGroupManager'-    { _igmKind = "compute#instanceGroupManager"-    , _igmFingerprint = Nothing-    , _igmBaseInstanceName = Nothing-    , _igmZone = Nothing-    , _igmInstanceTemplate = Nothing-    , _igmTargetSize = Nothing-    , _igmSelfLink = Nothing-    , _igmCurrentActions = Nothing-    , _igmName = Nothing-    , _igmCreationTimestamp = Nothing-    , _igmId = Nothing-    , _igmTargetPools = Nothing-    , _igmDescription = Nothing-    , _igmInstanceGroup = Nothing-    , _igmNamedPorts = Nothing-    }---- | [Output Only] The resource type, which is always--- compute#instanceGroupManager for managed instance groups.-igmKind :: Lens' InstanceGroupManager Text-igmKind = lens _igmKind (\ s a -> s{_igmKind = a})---- | [Output Only] The fingerprint of the resource data. You can use this--- optional field for optimistic locking when you update the resource.-igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)-igmFingerprint-  = lens _igmFingerprint-      (\ s a -> s{_igmFingerprint = a})-      . mapping _Base64---- | 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})---- | The name of the zone where the managed instance group is located.-igmZone :: Lens' InstanceGroupManager (Maybe Text)-igmZone = lens _igmZone (\ s a -> s{_igmZone = a})---- | The URL of the instance template that is specified for this managed--- instance group. The group uses this template to create all new instances--- in the managed instance group.-igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)-igmInstanceTemplate-  = lens _igmInstanceTemplate-      (\ s a -> s{_igmInstanceTemplate = a})---- | The target number of running instances for this managed instance group.--- Deleting or abandoning instances reduces this number. Resizing the group--- changes this number.-igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)-igmTargetSize-  = lens _igmTargetSize-      (\ s a -> s{_igmTargetSize = a})-      . mapping _Coerce---- | [Output Only] The URL for this managed instance group. The server--- defines this URL.-igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)-igmSelfLink-  = lens _igmSelfLink (\ s a -> s{_igmSelfLink = a})---- | [Output Only] The list of instance actions and the number of instances--- in this managed instance group that are scheduled for each of those--- actions.-igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)-igmCurrentActions-  = lens _igmCurrentActions-      (\ s a -> s{_igmCurrentActions = a})---- | The name of the managed instance group. The name must be 1-63 characters--- long, and comply with RFC1035.-igmName :: Lens' InstanceGroupManager (Maybe Text)-igmName = lens _igmName (\ s a -> s{_igmName = a})---- | [Output Only] The creation timestamp for this managed instance group in--- RFC3339 text format.-igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)-igmCreationTimestamp-  = lens _igmCreationTimestamp-      (\ s a -> s{_igmCreationTimestamp = a})---- | [Output Only] A unique identifier for this resource type. The server--- generates this identifier.-igmId :: Lens' InstanceGroupManager (Maybe Word64)-igmId-  = lens _igmId (\ s a -> s{_igmId = a}) .-      mapping _Coerce---- | The URLs for all TargetPool resources to which instances in the--- instanceGroup field are added. The target pools automatically apply to--- all of the instances in the managed instance group.-igmTargetPools :: Lens' InstanceGroupManager [Text]-igmTargetPools-  = lens _igmTargetPools-      (\ s a -> s{_igmTargetPools = a})-      . _Default-      . _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-igmDescription :: Lens' InstanceGroupManager (Maybe Text)-igmDescription-  = lens _igmDescription-      (\ s a -> s{_igmDescription = a})---- | [Output Only] The URL of the Instance Group resource.-igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)-igmInstanceGroup-  = lens _igmInstanceGroup-      (\ s a -> s{_igmInstanceGroup = a})---- | Named ports configured for the Instance Groups complementary to this--- Instance Group Manager.-igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]-igmNamedPorts-  = lens _igmNamedPorts-      (\ s a -> s{_igmNamedPorts = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroupManager where-        parseJSON-          = withObject "InstanceGroupManager"-              (\ o ->-                 InstanceGroupManager' <$>-                   (o .:? "kind" .!= "compute#instanceGroupManager") <*>-                     (o .:? "fingerprint")-                     <*> (o .:? "baseInstanceName")-                     <*> (o .:? "zone")-                     <*> (o .:? "instanceTemplate")-                     <*> (o .:? "targetSize")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "currentActions")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "targetPools" .!= mempty)-                     <*> (o .:? "description")-                     <*> (o .:? "instanceGroup")-                     <*> (o .:? "namedPorts" .!= mempty))--instance ToJSON InstanceGroupManager where-        toJSON InstanceGroupManager'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _igmKind),-                  ("fingerprint" .=) <$> _igmFingerprint,-                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,-                  ("zone" .=) <$> _igmZone,-                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,-                  ("targetSize" .=) <$> _igmTargetSize,-                  ("selfLink" .=) <$> _igmSelfLink,-                  ("currentActions" .=) <$> _igmCurrentActions,-                  ("name" .=) <$> _igmName,-                  ("creationTimestamp" .=) <$> _igmCreationTimestamp,-                  ("id" .=) <$> _igmId,-                  ("targetPools" .=) <$> _igmTargetPools,-                  ("description" .=) <$> _igmDescription,-                  ("instanceGroup" .=) <$> _igmInstanceGroup,-                  ("namedPorts" .=) <$> _igmNamedPorts])------- /See:/ 'instanceGroupsRemoveInstancesRequest' smart constructor.-newtype InstanceGroupsRemoveInstancesRequest = InstanceGroupsRemoveInstancesRequest'-    { _igrirInstances :: Maybe [InstanceReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsRemoveInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igrirInstances'-instanceGroupsRemoveInstancesRequest-    :: InstanceGroupsRemoveInstancesRequest-instanceGroupsRemoveInstancesRequest =-    InstanceGroupsRemoveInstancesRequest'-    { _igrirInstances = Nothing-    }---- | The list of instances to remove from the instance group.-igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]-igrirInstances-  = lens _igrirInstances-      (\ s a -> s{_igrirInstances = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupsRemoveInstancesRequest where-        parseJSON-          = withObject "InstanceGroupsRemoveInstancesRequest"-              (\ o ->-                 InstanceGroupsRemoveInstancesRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON InstanceGroupsRemoveInstancesRequest-         where-        toJSON InstanceGroupsRemoveInstancesRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _igrirInstances])------- /See:/ 'routeWarningsItemDataItem' smart constructor.-data RouteWarningsItemDataItem = RouteWarningsItemDataItem'-    { _rwidiValue :: !(Maybe Text)-    , _rwidiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RouteWarningsItemDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rwidiValue'------ * 'rwidiKey'-routeWarningsItemDataItem-    :: RouteWarningsItemDataItem-routeWarningsItemDataItem =-    RouteWarningsItemDataItem'-    { _rwidiValue = Nothing-    , _rwidiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)-rwidiValue-  = lens _rwidiValue (\ s a -> s{_rwidiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)-rwidiKey = lens _rwidiKey (\ s a -> s{_rwidiKey = a})--instance FromJSON RouteWarningsItemDataItem where-        parseJSON-          = withObject "RouteWarningsItemDataItem"-              (\ o ->-                 RouteWarningsItemDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON RouteWarningsItemDataItem where-        toJSON RouteWarningsItemDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _rwidiValue,-                  ("key" .=) <$> _rwidiKey])---- | [Output Only] A map of scoped instance lists.------ /See:/ 'instanceAggregatedListItems' smart constructor.-newtype InstanceAggregatedListItems = InstanceAggregatedListItems'-    { _ialiAddtional :: HashMap Text InstancesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ialiAddtional'-instanceAggregatedListItems-    :: HashMap Text InstancesScopedList -- ^ 'ialiAddtional'-    -> InstanceAggregatedListItems-instanceAggregatedListItems pIaliAddtional_ =-    InstanceAggregatedListItems'-    { _ialiAddtional = _Coerce # pIaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of instances.-ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)-ialiAddtional-  = lens _ialiAddtional-      (\ s a -> s{_ialiAddtional = a})-      . _Coerce--instance FromJSON InstanceAggregatedListItems where-        parseJSON-          = withObject "InstanceAggregatedListItems"-              (\ o ->-                 InstanceAggregatedListItems' <$> (parseJSONObject o))--instance ToJSON InstanceAggregatedListItems where-        toJSON = toJSON . _ialiAddtional---- | [Output Only] Informational warning which replaces the list of--- autoscalers when the list is empty.------ /See:/ 'autoscalersScopedListWarning' smart constructor.-data AutoscalersScopedListWarning = AutoscalersScopedListWarning'-    { _aslwData    :: !(Maybe [AutoscalersScopedListWarningDataItem])-    , _aslwCode    :: !(Maybe AutoscalersScopedListWarningCode)-    , _aslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalersScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aslwData'------ * 'aslwCode'------ * 'aslwMessage'-autoscalersScopedListWarning-    :: AutoscalersScopedListWarning-autoscalersScopedListWarning =-    AutoscalersScopedListWarning'-    { _aslwData = Nothing-    , _aslwCode = Nothing-    , _aslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]-aslwData-  = lens _aslwData (\ s a -> s{_aslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)-aslwCode = lens _aslwCode (\ s a -> s{_aslwCode = a})---- | [Output Only] A human-readable description of the warning code.-aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)-aslwMessage-  = lens _aslwMessage (\ s a -> s{_aslwMessage = a})--instance FromJSON AutoscalersScopedListWarning where-        parseJSON-          = withObject "AutoscalersScopedListWarning"-              (\ o ->-                 AutoscalersScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON AutoscalersScopedListWarning where-        toJSON AutoscalersScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _aslwData,-                  ("code" .=) <$> _aslwCode,-                  ("message" .=) <$> _aslwMessage])---- | [Output Only] Encountered errors during the last attempt to create or--- delete the instance.------ /See:/ 'managedInstanceLastAttemptErrors' smart constructor.-newtype ManagedInstanceLastAttemptErrors = ManagedInstanceLastAttemptErrors'-    { _milaeErrors :: Maybe [ManagedInstanceLastAttemptErrorsErrorsItem]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ManagedInstanceLastAttemptErrors' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'milaeErrors'-managedInstanceLastAttemptErrors-    :: ManagedInstanceLastAttemptErrors-managedInstanceLastAttemptErrors =-    ManagedInstanceLastAttemptErrors'-    { _milaeErrors = Nothing-    }---- | [Output Only] The array of errors encountered while processing this--- operation.-milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]-milaeErrors-  = lens _milaeErrors (\ s a -> s{_milaeErrors = a}) .-      _Default-      . _Coerce--instance FromJSON ManagedInstanceLastAttemptErrors-         where-        parseJSON-          = withObject "ManagedInstanceLastAttemptErrors"-              (\ o ->-                 ManagedInstanceLastAttemptErrors' <$>-                   (o .:? "errors" .!= mempty))--instance ToJSON ManagedInstanceLastAttemptErrors-         where-        toJSON ManagedInstanceLastAttemptErrors'{..}-          = object (catMaybes [("errors" .=) <$> _milaeErrors])------- /See:/ 'targetPoolsRemoveInstanceRequest' smart constructor.-newtype TargetPoolsRemoveInstanceRequest = TargetPoolsRemoveInstanceRequest'-    { _tprirInstances :: Maybe [InstanceReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsRemoveInstanceRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tprirInstances'-targetPoolsRemoveInstanceRequest-    :: TargetPoolsRemoveInstanceRequest-targetPoolsRemoveInstanceRequest =-    TargetPoolsRemoveInstanceRequest'-    { _tprirInstances = Nothing-    }---- | URLs of the instances to be removed from target pool.-tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]-tprirInstances-  = lens _tprirInstances-      (\ s a -> s{_tprirInstances = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolsRemoveInstanceRequest-         where-        parseJSON-          = withObject "TargetPoolsRemoveInstanceRequest"-              (\ o ->-                 TargetPoolsRemoveInstanceRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON TargetPoolsRemoveInstanceRequest-         where-        toJSON TargetPoolsRemoveInstanceRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _tprirInstances])------- /See:/ 'targetInstancesScopedListWarningDataItem' smart constructor.-data TargetInstancesScopedListWarningDataItem = TargetInstancesScopedListWarningDataItem'-    { _tislwdiValue :: !(Maybe Text)-    , _tislwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstancesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tislwdiValue'------ * 'tislwdiKey'-targetInstancesScopedListWarningDataItem-    :: TargetInstancesScopedListWarningDataItem-targetInstancesScopedListWarningDataItem =-    TargetInstancesScopedListWarningDataItem'-    { _tislwdiValue = Nothing-    , _tislwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)-tislwdiValue-  = lens _tislwdiValue (\ s a -> s{_tislwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)-tislwdiKey-  = lens _tislwdiKey (\ s a -> s{_tislwdiKey = a})--instance FromJSON-         TargetInstancesScopedListWarningDataItem where-        parseJSON-          = withObject-              "TargetInstancesScopedListWarningDataItem"-              (\ o ->-                 TargetInstancesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON-         TargetInstancesScopedListWarningDataItem where-        toJSON TargetInstancesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _tislwdiValue,-                  ("key" .=) <$> _tislwdiKey])---- | [Output Only] An informational warning that appears when the machine--- types list is empty.------ /See:/ 'machineTypesScopedListWarning' smart constructor.-data MachineTypesScopedListWarning = MachineTypesScopedListWarning'-    { _mtslwData    :: !(Maybe [MachineTypesScopedListWarningDataItem])-    , _mtslwCode    :: !(Maybe MachineTypesScopedListWarningCode)-    , _mtslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtslwData'------ * 'mtslwCode'------ * 'mtslwMessage'-machineTypesScopedListWarning-    :: MachineTypesScopedListWarning-machineTypesScopedListWarning =-    MachineTypesScopedListWarning'-    { _mtslwData = Nothing-    , _mtslwCode = Nothing-    , _mtslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]-mtslwData-  = lens _mtslwData (\ s a -> s{_mtslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)-mtslwCode-  = lens _mtslwCode (\ s a -> s{_mtslwCode = a})---- | [Output Only] A human-readable description of the warning code.-mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)-mtslwMessage-  = lens _mtslwMessage (\ s a -> s{_mtslwMessage = a})--instance FromJSON MachineTypesScopedListWarning where-        parseJSON-          = withObject "MachineTypesScopedListWarning"-              (\ o ->-                 MachineTypesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON MachineTypesScopedListWarning where-        toJSON MachineTypesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _mtslwData,-                  ("code" .=) <$> _mtslwCode,-                  ("message" .=) <$> _mtslwMessage])---- | A TargetInstance resource. This resource defines an endpoint instance--- that terminates traffic of certain protocols.------ /See:/ 'targetInstance' smart constructor.-data TargetInstance = TargetInstance'-    { _tiKind              :: !Text-    , _tiNATPolicy         :: !(Maybe TargetInstanceNATPolicy)-    , _tiZone              :: !(Maybe Text)-    , _tiSelfLink          :: !(Maybe Text)-    , _tiName              :: !(Maybe Text)-    , _tiCreationTimestamp :: !(Maybe Text)-    , _tiId                :: !(Maybe (Textual Word64))-    , _tiDescription       :: !(Maybe Text)-    , _tiInstance          :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstance' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tiKind'------ * 'tiNATPolicy'------ * 'tiZone'------ * 'tiSelfLink'------ * 'tiName'------ * 'tiCreationTimestamp'------ * 'tiId'------ * 'tiDescription'------ * 'tiInstance'-targetInstance-    :: TargetInstance-targetInstance =-    TargetInstance'-    { _tiKind = "compute#targetInstance"-    , _tiNATPolicy = Nothing-    , _tiZone = Nothing-    , _tiSelfLink = Nothing-    , _tiName = Nothing-    , _tiCreationTimestamp = Nothing-    , _tiId = Nothing-    , _tiDescription = Nothing-    , _tiInstance = Nothing-    }---- | [Output Only] The type of the resource. Always compute#targetInstance--- for target instances.-tiKind :: Lens' TargetInstance Text-tiKind = lens _tiKind (\ s a -> s{_tiKind = a})---- | NAT option controlling how IPs are NAT\'ed to the instance. Currently--- only NO_NAT (default value) is supported.-tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)-tiNATPolicy-  = lens _tiNATPolicy (\ s a -> s{_tiNATPolicy = a})---- | [Output Only] URL of the zone where the target instance resides.-tiZone :: Lens' TargetInstance (Maybe Text)-tiZone = lens _tiZone (\ s a -> s{_tiZone = a})---- | [Output Only] Server-defined URL for the resource.-tiSelfLink :: Lens' TargetInstance (Maybe Text)-tiSelfLink-  = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-tiName :: Lens' TargetInstance (Maybe Text)-tiName = lens _tiName (\ s a -> s{_tiName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)-tiCreationTimestamp-  = lens _tiCreationTimestamp-      (\ s a -> s{_tiCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tiId :: Lens' TargetInstance (Maybe Word64)-tiId-  = lens _tiId (\ s a -> s{_tiId = a}) .-      mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-tiDescription :: Lens' TargetInstance (Maybe Text)-tiDescription-  = lens _tiDescription-      (\ s a -> s{_tiDescription = a})---- | A URL to the virtual machine instance that handles traffic for this--- target instance. When creating a target instance, you can provide the--- fully-qualified URL or a valid partial URL to the desired virtual--- machine. For example, the following are all valid URLs: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance--- - projects\/project\/zones\/zone\/instances\/instance ---- zones\/zone\/instances\/instance-tiInstance :: Lens' TargetInstance (Maybe Text)-tiInstance-  = lens _tiInstance (\ s a -> s{_tiInstance = a})--instance FromJSON TargetInstance where-        parseJSON-          = withObject "TargetInstance"-              (\ o ->-                 TargetInstance' <$>-                   (o .:? "kind" .!= "compute#targetInstance") <*>-                     (o .:? "natPolicy")-                     <*> (o .:? "zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "description")-                     <*> (o .:? "instance"))--instance ToJSON TargetInstance where-        toJSON TargetInstance'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _tiKind),-                  ("natPolicy" .=) <$> _tiNATPolicy,-                  ("zone" .=) <$> _tiZone,-                  ("selfLink" .=) <$> _tiSelfLink,-                  ("name" .=) <$> _tiName,-                  ("creationTimestamp" .=) <$> _tiCreationTimestamp,-                  ("id" .=) <$> _tiId,-                  ("description" .=) <$> _tiDescription,-                  ("instance" .=) <$> _tiInstance])------- /See:/ 'targetPoolInstanceHealth' smart constructor.-data TargetPoolInstanceHealth = TargetPoolInstanceHealth'-    { _tpihKind         :: !Text-    , _tpihHealthStatus :: !(Maybe [HealthStatus])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolInstanceHealth' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpihKind'------ * 'tpihHealthStatus'-targetPoolInstanceHealth-    :: TargetPoolInstanceHealth-targetPoolInstanceHealth =-    TargetPoolInstanceHealth'-    { _tpihKind = "compute#targetPoolInstanceHealth"-    , _tpihHealthStatus = Nothing-    }---- | [Output Only] Type of resource. Always compute#targetPoolInstanceHealth--- when checking the health of an instance.-tpihKind :: Lens' TargetPoolInstanceHealth Text-tpihKind = lens _tpihKind (\ s a -> s{_tpihKind = a})--tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]-tpihHealthStatus-  = lens _tpihHealthStatus-      (\ s a -> s{_tpihHealthStatus = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolInstanceHealth where-        parseJSON-          = withObject "TargetPoolInstanceHealth"-              (\ o ->-                 TargetPoolInstanceHealth' <$>-                   (o .:? "kind" .!= "compute#targetPoolInstanceHealth")-                     <*> (o .:? "healthStatus" .!= mempty))--instance ToJSON TargetPoolInstanceHealth where-        toJSON TargetPoolInstanceHealth'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _tpihKind),-                  ("healthStatus" .=) <$> _tpihHealthStatus])------- /See:/ 'instanceGroupManagersListManagedInstancesResponse' smart constructor.-newtype InstanceGroupManagersListManagedInstancesResponse = InstanceGroupManagersListManagedInstancesResponse'-    { _igmlmirManagedInstances :: Maybe [ManagedInstance]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersListManagedInstancesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmlmirManagedInstances'-instanceGroupManagersListManagedInstancesResponse-    :: InstanceGroupManagersListManagedInstancesResponse-instanceGroupManagersListManagedInstancesResponse =-    InstanceGroupManagersListManagedInstancesResponse'-    { _igmlmirManagedInstances = Nothing-    }---- | [Output Only] The list of instances in the managed instance group.-igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]-igmlmirManagedInstances-  = lens _igmlmirManagedInstances-      (\ s a -> s{_igmlmirManagedInstances = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupManagersListManagedInstancesResponse-         where-        parseJSON-          = withObject-              "InstanceGroupManagersListManagedInstancesResponse"-              (\ o ->-                 InstanceGroupManagersListManagedInstancesResponse'-                   <$> (o .:? "managedInstances" .!= mempty))--instance ToJSON-         InstanceGroupManagersListManagedInstancesResponse-         where-        toJSON-          InstanceGroupManagersListManagedInstancesResponse'{..}-          = object-              (catMaybes-                 [("managedInstances" .=) <$>-                    _igmlmirManagedInstances])---- |------ /See:/ 'instanceProperties' smart constructor.-data InstanceProperties = InstanceProperties'-    { _ipServiceAccounts   :: !(Maybe [ServiceAccount])-    , _ipNetworkInterfaces :: !(Maybe [NetworkInterface])-    , _ipMachineType       :: !(Maybe Text)-    , _ipMetadata          :: !(Maybe Metadata)-    , _ipScheduling        :: !(Maybe Scheduling)-    , _ipDisks             :: !(Maybe [AttachedDisk])-    , _ipCanIPForward      :: !(Maybe Bool)-    , _ipDescription       :: !(Maybe Text)-    , _ipTags              :: !(Maybe Tags)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceProperties' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ipServiceAccounts'------ * 'ipNetworkInterfaces'------ * 'ipMachineType'------ * 'ipMetadata'------ * 'ipScheduling'------ * 'ipDisks'------ * 'ipCanIPForward'------ * 'ipDescription'------ * 'ipTags'-instanceProperties-    :: InstanceProperties-instanceProperties =-    InstanceProperties'-    { _ipServiceAccounts = Nothing-    , _ipNetworkInterfaces = Nothing-    , _ipMachineType = Nothing-    , _ipMetadata = Nothing-    , _ipScheduling = Nothing-    , _ipDisks = Nothing-    , _ipCanIPForward = Nothing-    , _ipDescription = Nothing-    , _ipTags = Nothing-    }---- | A list of service accounts with specified scopes. Access tokens for--- these service accounts are available to the instances that are created--- from this template. Use metadata queries to obtain the access tokens for--- these instances.-ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]-ipServiceAccounts-  = lens _ipServiceAccounts-      (\ s a -> s{_ipServiceAccounts = a})-      . _Default-      . _Coerce---- | An array of network access configurations for this interface.-ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]-ipNetworkInterfaces-  = lens _ipNetworkInterfaces-      (\ s a -> s{_ipNetworkInterfaces = a})-      . _Default-      . _Coerce---- | The machine type to use for instances that are created from this--- template.-ipMachineType :: Lens' InstanceProperties (Maybe Text)-ipMachineType-  = lens _ipMachineType-      (\ s a -> s{_ipMachineType = a})---- | The metadata key\/value pairs to assign to instances that are created--- from this template. These pairs can consist of custom metadata or--- predefined keys. See Project and instance metadata for more information.-ipMetadata :: Lens' InstanceProperties (Maybe Metadata)-ipMetadata-  = lens _ipMetadata (\ s a -> s{_ipMetadata = a})---- | Specifies the scheduling options for the instances that are created from--- this template.-ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)-ipScheduling-  = lens _ipScheduling (\ s a -> s{_ipScheduling = a})---- | An array of disks that are associated with the instances that are--- created from this template.-ipDisks :: Lens' InstanceProperties [AttachedDisk]-ipDisks-  = lens _ipDisks (\ s a -> s{_ipDisks = a}) . _Default-      . _Coerce---- | Enables instances created based on this template to send packets with--- source IP addresses other than their own and receive packets with--- destination IP addresses other than their own. If these instances will--- be used as an IP gateway or it will be set as the next-hop in a Route--- resource, specify true. If unsure, leave this set to false. See the--- canIpForward documentation for more information.-ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)-ipCanIPForward-  = lens _ipCanIPForward-      (\ s a -> s{_ipCanIPForward = a})---- | An optional text description for the instances that are created from--- this instance template.-ipDescription :: Lens' InstanceProperties (Maybe Text)-ipDescription-  = lens _ipDescription-      (\ s a -> s{_ipDescription = a})---- | A list of tags to apply to the instances that are created from this--- template. The tags identify valid sources or targets for network--- firewalls. The setTags method can modify this list of tags. Each tag--- within the list must comply with RFC1035.-ipTags :: Lens' InstanceProperties (Maybe Tags)-ipTags = lens _ipTags (\ s a -> s{_ipTags = a})--instance FromJSON InstanceProperties where-        parseJSON-          = withObject "InstanceProperties"-              (\ o ->-                 InstanceProperties' <$>-                   (o .:? "serviceAccounts" .!= mempty) <*>-                     (o .:? "networkInterfaces" .!= mempty)-                     <*> (o .:? "machineType")-                     <*> (o .:? "metadata")-                     <*> (o .:? "scheduling")-                     <*> (o .:? "disks" .!= mempty)-                     <*> (o .:? "canIpForward")-                     <*> (o .:? "description")-                     <*> (o .:? "tags"))--instance ToJSON InstanceProperties where-        toJSON InstanceProperties'{..}-          = object-              (catMaybes-                 [("serviceAccounts" .=) <$> _ipServiceAccounts,-                  ("networkInterfaces" .=) <$> _ipNetworkInterfaces,-                  ("machineType" .=) <$> _ipMachineType,-                  ("metadata" .=) <$> _ipMetadata,-                  ("scheduling" .=) <$> _ipScheduling,-                  ("disks" .=) <$> _ipDisks,-                  ("canIpForward" .=) <$> _ipCanIPForward,-                  ("description" .=) <$> _ipDescription,-                  ("tags" .=) <$> _ipTags])---- | [Output Only] Informational warning which replaces the list of disk--- types when the list is empty.------ /See:/ 'diskTypesScopedListWarning' smart constructor.-data DiskTypesScopedListWarning = DiskTypesScopedListWarning'-    { _dtslwData    :: !(Maybe [DiskTypesScopedListWarningDataItem])-    , _dtslwCode    :: !(Maybe DiskTypesScopedListWarningCode)-    , _dtslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtslwData'------ * 'dtslwCode'------ * 'dtslwMessage'-diskTypesScopedListWarning-    :: DiskTypesScopedListWarning-diskTypesScopedListWarning =-    DiskTypesScopedListWarning'-    { _dtslwData = Nothing-    , _dtslwCode = Nothing-    , _dtslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]-dtslwData-  = lens _dtslwData (\ s a -> s{_dtslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)-dtslwCode-  = lens _dtslwCode (\ s a -> s{_dtslwCode = a})---- | [Output Only] A human-readable description of the warning code.-dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)-dtslwMessage-  = lens _dtslwMessage (\ s a -> s{_dtslwMessage = a})--instance FromJSON DiskTypesScopedListWarning where-        parseJSON-          = withObject "DiskTypesScopedListWarning"-              (\ o ->-                 DiskTypesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON DiskTypesScopedListWarning where-        toJSON DiskTypesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _dtslwData,-                  ("code" .=) <$> _dtslwCode,-                  ("message" .=) <$> _dtslwMessage])---- | [Input Only] Specifies the parameters for a new disk that will be--- created alongside the new instance. Use initialization parameters to--- create boot disks or local SSDs attached to the new instance. This--- property is mutually exclusive with the source property; you can only--- define one or the other, but not both.------ /See:/ 'attachedDiskInitializeParams' smart constructor.-data AttachedDiskInitializeParams = AttachedDiskInitializeParams'-    { _adipSourceImage :: !(Maybe Text)-    , _adipDiskSizeGb  :: !(Maybe (Textual Int64))-    , _adipDiskName    :: !(Maybe Text)-    , _adipDiskType    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AttachedDiskInitializeParams' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adipSourceImage'------ * 'adipDiskSizeGb'------ * 'adipDiskName'------ * 'adipDiskType'-attachedDiskInitializeParams-    :: AttachedDiskInitializeParams-attachedDiskInitializeParams =-    AttachedDiskInitializeParams'-    { _adipSourceImage = Nothing-    , _adipDiskSizeGb = Nothing-    , _adipDiskName = Nothing-    , _adipDiskType = Nothing-    }---- | The source image used to create this disk. If the source image is--- deleted, this field will not be set. To create a disk with one of the--- public operating system images, specify the image by its family name.--- For example, specify family\/debian-8 to use the latest Debian 8 image:--- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,--- use a specific version of a public operating system image:--- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To--- create a disk with a private image that you created, specify the image--- name in the following format: global\/images\/my-private-image You can--- also specify a private image by its image family, which returns the--- latest version of the image in that family. Replace the image name with--- family\/family-name: global\/images\/family\/my-private-family-adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)-adipSourceImage-  = lens _adipSourceImage-      (\ s a -> s{_adipSourceImage = a})---- | Specifies the size of the disk in base-2 GB.-adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)-adipDiskSizeGb-  = lens _adipDiskSizeGb-      (\ s a -> s{_adipDiskSizeGb = a})-      . mapping _Coerce---- | Specifies the disk name. If not specified, the default is to use the--- name of the instance.-adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)-adipDiskName-  = lens _adipDiskName (\ s a -> s{_adipDiskName = a})---- | 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-adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)-adipDiskType-  = lens _adipDiskType (\ s a -> s{_adipDiskType = a})--instance FromJSON AttachedDiskInitializeParams where-        parseJSON-          = withObject "AttachedDiskInitializeParams"-              (\ o ->-                 AttachedDiskInitializeParams' <$>-                   (o .:? "sourceImage") <*> (o .:? "diskSizeGb") <*>-                     (o .:? "diskName")-                     <*> (o .:? "diskType"))--instance ToJSON AttachedDiskInitializeParams where-        toJSON AttachedDiskInitializeParams'{..}-          = object-              (catMaybes-                 [("sourceImage" .=) <$> _adipSourceImage,-                  ("diskSizeGb" .=) <$> _adipDiskSizeGb,-                  ("diskName" .=) <$> _adipDiskName,-                  ("diskType" .=) <$> _adipDiskType])------- /See:/ 'addressesScopedListWarningDataItem' smart constructor.-data AddressesScopedListWarningDataItem = AddressesScopedListWarningDataItem'-    { _aslwdiValue :: !(Maybe Text)-    , _aslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aslwdiValue'------ * 'aslwdiKey'-addressesScopedListWarningDataItem-    :: AddressesScopedListWarningDataItem-addressesScopedListWarningDataItem =-    AddressesScopedListWarningDataItem'-    { _aslwdiValue = Nothing-    , _aslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)-aslwdiValue-  = lens _aslwdiValue (\ s a -> s{_aslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)-aslwdiKey-  = lens _aslwdiKey (\ s a -> s{_aslwdiKey = a})--instance FromJSON AddressesScopedListWarningDataItem-         where-        parseJSON-          = withObject "AddressesScopedListWarningDataItem"-              (\ o ->-                 AddressesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON AddressesScopedListWarningDataItem-         where-        toJSON AddressesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _aslwdiValue,-                  ("key" .=) <$> _aslwdiKey])---- | A network interface resource attached to an instance.------ /See:/ 'networkInterface' smart constructor.-data NetworkInterface = NetworkInterface'-    { _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:------ * 'niNetwork'------ * 'niName'------ * 'niNetworkIP'------ * 'niSubnetwork'------ * 'niAccessConfigs'-networkInterface-    :: NetworkInterface-networkInterface =-    NetworkInterface'-    { _niNetwork = Nothing-    , _niName = Nothing-    , _niNetworkIP = Nothing-    , _niSubnetwork = Nothing-    , _niAccessConfigs = Nothing-    }---- | URL of the network resource for this instance. This is required for--- creating an instance but optional when creating a firewall rule. If not--- specified when creating a firewall rule, the default network is used:--- global\/networks\/default If you specify this property, you can specify--- the network as a full or partial URL. For example, the following are all--- valid URLs: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/networks\/network--- - projects\/project\/global\/networks\/network ---- global\/networks\/default-niNetwork :: Lens' NetworkInterface (Maybe Text)-niNetwork-  = lens _niNetwork (\ s a -> s{_niNetwork = a})---- | [Output Only] The name of the network interface, generated by the--- server. For network devices, these are eth0, eth1, etc.-niName :: Lens' NetworkInterface (Maybe Text)-niName = lens _niName (\ s a -> s{_niName = a})---- | An IPv4 internal network address to assign to the instance for this--- network interface. If not specified by the user, an unused internal IP--- is assigned by the system.-niNetworkIP :: Lens' NetworkInterface (Maybe Text)-niNetworkIP-  = lens _niNetworkIP (\ s a -> s{_niNetworkIP = a})---- | The URL of the Subnetwork resource for this instance. If the network--- resource is in legacy mode, do not provide this property. If the network--- is in auto subnet mode, providing the subnetwork is optional. If the--- network is in custom subnet mode, then this field should be specified.--- If you specify this property, you can specify the subnetwork as a full--- or partial URL. For example, the following are all valid URLs: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/regions\/region\/subnetworks\/subnetwork--- - regions\/region\/subnetworks\/subnetwork-niSubnetwork :: Lens' NetworkInterface (Maybe Text)-niSubnetwork-  = lens _niSubnetwork (\ s a -> s{_niSubnetwork = a})---- | An array of configurations for this interface. Currently, ONE_TO_ONE_NAT--- is the only access config 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 .:? "network") <*> (o .:? "name") <*>-                     (o .:? "networkIP")-                     <*> (o .:? "subnetwork")-                     <*> (o .:? "accessConfigs" .!= mempty))--instance ToJSON NetworkInterface where-        toJSON NetworkInterface'{..}-          = object-              (catMaybes-                 [("network" .=) <$> _niNetwork,-                  ("name" .=) <$> _niName,-                  ("networkIP" .=) <$> _niNetworkIP,-                  ("subnetwork" .=) <$> _niSubnetwork,-                  ("accessConfigs" .=) <$> _niAccessConfigs])------- /See:/ 'targetPoolsRemoveHealthCheckRequest' smart constructor.-newtype TargetPoolsRemoveHealthCheckRequest = TargetPoolsRemoveHealthCheckRequest'-    { _tprhcrHealthChecks :: Maybe [HealthCheckReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsRemoveHealthCheckRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tprhcrHealthChecks'-targetPoolsRemoveHealthCheckRequest-    :: TargetPoolsRemoveHealthCheckRequest-targetPoolsRemoveHealthCheckRequest =-    TargetPoolsRemoveHealthCheckRequest'-    { _tprhcrHealthChecks = Nothing-    }---- | Health check URL to be removed. This can be a full or valid partial URL.--- For example, the following are valid URLs: ---- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project\/global\/httpHealthChecks\/health-check--- - projects\/project\/global\/httpHealthChecks\/health-check ---- global\/httpHealthChecks\/health-check-tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]-tprhcrHealthChecks-  = lens _tprhcrHealthChecks-      (\ s a -> s{_tprhcrHealthChecks = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolsRemoveHealthCheckRequest-         where-        parseJSON-          = withObject "TargetPoolsRemoveHealthCheckRequest"-              (\ o ->-                 TargetPoolsRemoveHealthCheckRequest' <$>-                   (o .:? "healthChecks" .!= mempty))--instance ToJSON TargetPoolsRemoveHealthCheckRequest-         where-        toJSON TargetPoolsRemoveHealthCheckRequest'{..}-          = object-              (catMaybes-                 [("healthChecks" .=) <$> _tprhcrHealthChecks])---- | A list of instance templates.------ /See:/ 'instanceTemplateList' smart constructor.-data InstanceTemplateList = InstanceTemplateList'-    { _itlNextPageToken :: !(Maybe Text)-    , _itlKind          :: !Text-    , _itlItems         :: !(Maybe [InstanceTemplate])-    , _itlSelfLink      :: !(Maybe Text)-    , _itlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceTemplateList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'itlNextPageToken'------ * 'itlKind'------ * 'itlItems'------ * 'itlSelfLink'------ * 'itlId'-instanceTemplateList-    :: InstanceTemplateList-instanceTemplateList =-    InstanceTemplateList'-    { _itlNextPageToken = Nothing-    , _itlKind = "compute#instanceTemplateList"-    , _itlItems = Nothing-    , _itlSelfLink = Nothing-    , _itlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)-itlNextPageToken-  = lens _itlNextPageToken-      (\ s a -> s{_itlNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceTemplatesListResponse for instance template lists.-itlKind :: Lens' InstanceTemplateList Text-itlKind = lens _itlKind (\ s a -> s{_itlKind = a})---- | [Output Only] list of InstanceTemplate resources.-itlItems :: Lens' InstanceTemplateList [InstanceTemplate]-itlItems-  = lens _itlItems (\ s a -> s{_itlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] The URL for this instance template list. The server--- defines this URL.-itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)-itlSelfLink-  = lens _itlSelfLink (\ s a -> s{_itlSelfLink = a})---- | [Output Only] A unique identifier for this instance template. The server--- defines this identifier.-itlId :: Lens' InstanceTemplateList (Maybe Text)-itlId = lens _itlId (\ s a -> s{_itlId = a})--instance FromJSON InstanceTemplateList where-        parseJSON-          = withObject "InstanceTemplateList"-              (\ o ->-                 InstanceTemplateList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#instanceTemplateList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceTemplateList where-        toJSON InstanceTemplateList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _itlNextPageToken,-                  Just ("kind" .= _itlKind),-                  ("items" .=) <$> _itlItems,-                  ("selfLink" .=) <$> _itlSelfLink,-                  ("id" .=) <$> _itlId])---- | Contains a list of Route resources.------ /See:/ 'routeList' smart constructor.-data RouteList = RouteList'-    { _rlNextPageToken :: !(Maybe Text)-    , _rlKind          :: !Text-    , _rlItems         :: !(Maybe [Route])-    , _rlSelfLink      :: !(Maybe Text)-    , _rlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RouteList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rlNextPageToken'------ * 'rlKind'------ * 'rlItems'------ * 'rlSelfLink'------ * 'rlId'-routeList-    :: RouteList-routeList =-    RouteList'-    { _rlNextPageToken = Nothing-    , _rlKind = "compute#routeList"-    , _rlItems = Nothing-    , _rlSelfLink = Nothing-    , _rlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-rlNextPageToken :: Lens' RouteList (Maybe Text)-rlNextPageToken-  = lens _rlNextPageToken-      (\ s a -> s{_rlNextPageToken = a})---- | Type of resource.-rlKind :: Lens' RouteList Text-rlKind = lens _rlKind (\ s a -> s{_rlKind = a})---- | [Output Only] A list of Route resources.-rlItems :: Lens' RouteList [Route]-rlItems-  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-rlSelfLink :: Lens' RouteList (Maybe Text)-rlSelfLink-  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})---- | [Output Only] Unique identifier for the resource. Defined by the server.-rlId :: Lens' RouteList (Maybe Text)-rlId = lens _rlId (\ s a -> s{_rlId = a})--instance FromJSON RouteList where-        parseJSON-          = withObject "RouteList"-              (\ o ->-                 RouteList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#routeList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON RouteList where-        toJSON RouteList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _rlNextPageToken,-                  Just ("kind" .= _rlKind), ("items" .=) <$> _rlItems,-                  ("selfLink" .=) <$> _rlSelfLink,-                  ("id" .=) <$> _rlId])---- | Contains a list of TargetVpnGateway resources.------ /See:/ 'targetVPNGatewayList' smart constructor.-data TargetVPNGatewayList = TargetVPNGatewayList'-    { _tvglNextPageToken :: !(Maybe Text)-    , _tvglKind          :: !Text-    , _tvglItems         :: !(Maybe [TargetVPNGateway])-    , _tvglSelfLink      :: !(Maybe Text)-    , _tvglId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewayList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvglNextPageToken'------ * 'tvglKind'------ * 'tvglItems'------ * 'tvglSelfLink'------ * 'tvglId'-targetVPNGatewayList-    :: TargetVPNGatewayList-targetVPNGatewayList =-    TargetVPNGatewayList'-    { _tvglNextPageToken = Nothing-    , _tvglKind = "compute#targetVpnGatewayList"-    , _tvglItems = Nothing-    , _tvglSelfLink = Nothing-    , _tvglId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)-tvglNextPageToken-  = lens _tvglNextPageToken-      (\ s a -> s{_tvglNextPageToken = a})---- | [Output Only] Type of resource. Always compute#targetVpnGateway for--- target VPN gateways.-tvglKind :: Lens' TargetVPNGatewayList Text-tvglKind = lens _tvglKind (\ s a -> s{_tvglKind = a})---- | [Output Only] A list of TargetVpnGateway resources.-tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]-tvglItems-  = lens _tvglItems (\ s a -> s{_tvglItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for the resource.-tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)-tvglSelfLink-  = lens _tvglSelfLink (\ s a -> s{_tvglSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tvglId :: Lens' TargetVPNGatewayList (Maybe Text)-tvglId = lens _tvglId (\ s a -> s{_tvglId = a})--instance FromJSON TargetVPNGatewayList where-        parseJSON-          = withObject "TargetVPNGatewayList"-              (\ o ->-                 TargetVPNGatewayList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#targetVpnGatewayList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetVPNGatewayList where-        toJSON TargetVPNGatewayList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tvglNextPageToken,-                  Just ("kind" .= _tvglKind),-                  ("items" .=) <$> _tvglItems,-                  ("selfLink" .=) <$> _tvglSelfLink,-                  ("id" .=) <$> _tvglId])---- | Contains a list of SslCertificate resources.------ /See:/ 'sslCertificateList' smart constructor.-data SSLCertificateList = SSLCertificateList'-    { _sclNextPageToken :: !(Maybe Text)-    , _sclKind          :: !Text-    , _sclItems         :: !(Maybe [SSLCertificate])-    , _sclSelfLink      :: !(Maybe Text)-    , _sclId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SSLCertificateList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sclNextPageToken'------ * 'sclKind'------ * 'sclItems'------ * 'sclSelfLink'------ * 'sclId'-sslCertificateList-    :: SSLCertificateList-sslCertificateList =-    SSLCertificateList'-    { _sclNextPageToken = Nothing-    , _sclKind = "compute#sslCertificateList"-    , _sclItems = Nothing-    , _sclSelfLink = Nothing-    , _sclId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)-sclNextPageToken-  = lens _sclNextPageToken-      (\ s a -> s{_sclNextPageToken = a})---- | Type of resource.-sclKind :: Lens' SSLCertificateList Text-sclKind = lens _sclKind (\ s a -> s{_sclKind = a})---- | A list of SslCertificate resources.-sclItems :: Lens' SSLCertificateList [SSLCertificate]-sclItems-  = lens _sclItems (\ s a -> s{_sclItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-sclSelfLink :: Lens' SSLCertificateList (Maybe Text)-sclSelfLink-  = lens _sclSelfLink (\ s a -> s{_sclSelfLink = a})---- | [Output Only] Unique identifier for the resource. Defined by the server.-sclId :: Lens' SSLCertificateList (Maybe Text)-sclId = lens _sclId (\ s a -> s{_sclId = a})--instance FromJSON SSLCertificateList where-        parseJSON-          = withObject "SSLCertificateList"-              (\ o ->-                 SSLCertificateList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#sslCertificateList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON SSLCertificateList where-        toJSON SSLCertificateList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _sclNextPageToken,-                  Just ("kind" .= _sclKind),-                  ("items" .=) <$> _sclItems,-                  ("selfLink" .=) <$> _sclSelfLink,-                  ("id" .=) <$> _sclId])------- /See:/ 'firewallAllowedItem' smart constructor.-data FirewallAllowedItem = FirewallAllowedItem'-    { _faiIPProtocol :: !(Maybe Text)-    , _faiPorts      :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'FirewallAllowedItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'faiIPProtocol'------ * 'faiPorts'-firewallAllowedItem-    :: FirewallAllowedItem-firewallAllowedItem =-    FirewallAllowedItem'-    { _faiIPProtocol = Nothing-    , _faiPorts = Nothing-    }---- | The IP protocol that is allowed for this rule. The protocol type is--- required when creating a firewall rule. This value can either be one of--- the following well known protocol strings (tcp, udp, icmp, esp, ah,--- sctp), or the IP protocol number.-faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)-faiIPProtocol-  = lens _faiIPProtocol-      (\ s a -> s{_faiIPProtocol = a})---- | An optional list of ports which are allowed. This field is only--- applicable for UDP or TCP protocol. Each entry must be either an integer--- or a range. If not specified, connections through any port are allowed--- 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])---- | Represents a Network resource. Read Networks and Firewalls for more--- information.------ /See:/ 'network' smart constructor.-data Network = Network'-    { _nAutoCreateSubnetworks :: !(Maybe Bool)-    , _nKind                  :: !Text-    , _nSubnetworks           :: !(Maybe [Text])-    , _nIPv4Range             :: !(Maybe Text)-    , _nSelfLink              :: !(Maybe Text)-    , _nName                  :: !(Maybe Text)-    , _nCreationTimestamp     :: !(Maybe Text)-    , _nId                    :: !(Maybe (Textual Word64))-    , _nGatewayIPv4           :: !(Maybe Text)-    , _nDescription           :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Network' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'nAutoCreateSubnetworks'------ * 'nKind'------ * 'nSubnetworks'------ * 'nIPv4Range'------ * 'nSelfLink'------ * 'nName'------ * 'nCreationTimestamp'------ * 'nId'------ * 'nGatewayIPv4'------ * 'nDescription'-network-    :: Network-network =-    Network'-    { _nAutoCreateSubnetworks = Nothing-    , _nKind = "compute#network"-    , _nSubnetworks = Nothing-    , _nIPv4Range = Nothing-    , _nSelfLink = Nothing-    , _nName = Nothing-    , _nCreationTimestamp = Nothing-    , _nId = Nothing-    , _nGatewayIPv4 = Nothing-    , _nDescription = Nothing-    }---- | When set to true, the network is created in \"auto subnet mode\". When--- set to false, the network is in \"custom subnet mode\". In \"auto subnet--- mode\", a newly created network is assigned the default CIDR of--- 10.128.0.0\/9 and it automatically creates one subnetwork per region.-nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)-nAutoCreateSubnetworks-  = lens _nAutoCreateSubnetworks-      (\ s a -> s{_nAutoCreateSubnetworks = a})---- | [Output Only] Type of the resource. Always compute#network for networks.-nKind :: Lens' Network Text-nKind = lens _nKind (\ s a -> s{_nKind = a})---- | [Output Only] Server-defined fully-qualified URLs for all subnetworks in--- this network.-nSubnetworks :: Lens' Network [Text]-nSubnetworks-  = lens _nSubnetworks (\ s a -> s{_nSubnetworks = a})-      . _Default-      . _Coerce---- | The range of internal addresses that are legal on this network. This--- range is a CIDR specification, for example: 192.168.0.0\/16. Provided by--- the client when the network is created.-nIPv4Range :: Lens' Network (Maybe Text)-nIPv4Range-  = lens _nIPv4Range (\ s a -> s{_nIPv4Range = a})---- | [Output Only] Server-defined URL for the resource.-nSelfLink :: Lens' Network (Maybe Text)-nSelfLink-  = lens _nSelfLink (\ s a -> s{_nSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-nName :: Lens' Network (Maybe Text)-nName = lens _nName (\ s a -> s{_nName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-nCreationTimestamp :: Lens' Network (Maybe Text)-nCreationTimestamp-  = lens _nCreationTimestamp-      (\ s a -> s{_nCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-nId :: Lens' Network (Maybe Word64)-nId-  = lens _nId (\ s a -> s{_nId = a}) . mapping _Coerce---- | A gateway address for default routing to other networks. This value is--- read only and is selected by the Google Compute Engine, typically as the--- first usable address in the IPv4Range.-nGatewayIPv4 :: Lens' Network (Maybe Text)-nGatewayIPv4-  = lens _nGatewayIPv4 (\ s a -> s{_nGatewayIPv4 = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-nDescription :: Lens' Network (Maybe Text)-nDescription-  = lens _nDescription (\ s a -> s{_nDescription = a})--instance FromJSON Network where-        parseJSON-          = withObject "Network"-              (\ o ->-                 Network' <$>-                   (o .:? "autoCreateSubnetworks") <*>-                     (o .:? "kind" .!= "compute#network")-                     <*> (o .:? "subnetworks" .!= mempty)-                     <*> (o .:? "IPv4Range")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "gatewayIPv4")-                     <*> (o .:? "description"))--instance ToJSON Network where-        toJSON Network'{..}-          = object-              (catMaybes-                 [("autoCreateSubnetworks" .=) <$>-                    _nAutoCreateSubnetworks,-                  Just ("kind" .= _nKind),-                  ("subnetworks" .=) <$> _nSubnetworks,-                  ("IPv4Range" .=) <$> _nIPv4Range,-                  ("selfLink" .=) <$> _nSelfLink,-                  ("name" .=) <$> _nName,-                  ("creationTimestamp" .=) <$> _nCreationTimestamp,-                  ("id" .=) <$> _nId,-                  ("gatewayIPv4" .=) <$> _nGatewayIPv4,-                  ("description" .=) <$> _nDescription])---- | [Output Only] Informational warning which replaces the list of addresses--- when the list is empty.------ /See:/ 'addressesScopedListWarning' smart constructor.-data AddressesScopedListWarning = AddressesScopedListWarning'-    { _aData    :: !(Maybe [AddressesScopedListWarningDataItem])-    , _aCode    :: !(Maybe AddressesScopedListWarningCode)-    , _aMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aData'------ * 'aCode'------ * 'aMessage'-addressesScopedListWarning-    :: AddressesScopedListWarning-addressesScopedListWarning =-    AddressesScopedListWarning'-    { _aData = Nothing-    , _aCode = Nothing-    , _aMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]-aData-  = lens _aData (\ s a -> s{_aData = a}) . _Default .-      _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)-aCode = lens _aCode (\ s a -> s{_aCode = a})---- | [Output Only] A human-readable description of the warning code.-aMessage :: Lens' AddressesScopedListWarning (Maybe Text)-aMessage = lens _aMessage (\ s a -> s{_aMessage = a})--instance FromJSON AddressesScopedListWarning where-        parseJSON-          = withObject "AddressesScopedListWarning"-              (\ o ->-                 AddressesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON AddressesScopedListWarning where-        toJSON AddressesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _aData, ("code" .=) <$> _aCode,-                  ("message" .=) <$> _aMessage])---- | The parameters of the raw disk image.------ /See:/ 'imageRawDisk' smart constructor.-data ImageRawDisk = ImageRawDisk'-    { _irdContainerType :: !(Maybe ImageRawDiskContainerType)-    , _irdSource        :: !(Maybe Text)-    , _irdSha1Checksum  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ImageRawDisk' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'irdContainerType'------ * 'irdSource'------ * 'irdSha1Checksum'-imageRawDisk-    :: ImageRawDisk-imageRawDisk =-    ImageRawDisk'-    { _irdContainerType = Nothing-    , _irdSource = Nothing-    , _irdSha1Checksum = Nothing-    }---- | The format used to encode and transmit the block device, which should be--- TAR. This is just a container and transmission format and not a runtime--- format. Provided by the client when the disk image is created.-irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)-irdContainerType-  = lens _irdContainerType-      (\ s a -> s{_irdContainerType = a})---- | The full Google Cloud Storage URL where the disk image is stored. You--- must provide either this property or the sourceDisk property but not--- both.-irdSource :: Lens' ImageRawDisk (Maybe Text)-irdSource-  = lens _irdSource (\ s a -> s{_irdSource = a})---- | An optional SHA1 checksum of the disk image before unpackaging; provided--- by the client when the disk image is created.-irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)-irdSha1Checksum-  = lens _irdSha1Checksum-      (\ s a -> s{_irdSha1Checksum = a})--instance FromJSON ImageRawDisk where-        parseJSON-          = withObject "ImageRawDisk"-              (\ o ->-                 ImageRawDisk' <$>-                   (o .:? "containerType") <*> (o .:? "source") <*>-                     (o .:? "sha1Checksum"))--instance ToJSON ImageRawDisk where-        toJSON ImageRawDisk'{..}-          = object-              (catMaybes-                 [("containerType" .=) <$> _irdContainerType,-                  ("source" .=) <$> _irdSource,-                  ("sha1Checksum" .=) <$> _irdSha1Checksum])------- /See:/ 'instanceAggregatedList' smart constructor.-data InstanceAggregatedList = InstanceAggregatedList'-    { _ialNextPageToken :: !(Maybe Text)-    , _ialKind          :: !Text-    , _ialItems         :: !(Maybe InstanceAggregatedListItems)-    , _ialSelfLink      :: !(Maybe Text)-    , _ialId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ialNextPageToken'------ * 'ialKind'------ * 'ialItems'------ * 'ialSelfLink'------ * 'ialId'-instanceAggregatedList-    :: InstanceAggregatedList-instanceAggregatedList =-    InstanceAggregatedList'-    { _ialNextPageToken = Nothing-    , _ialKind = "compute#instanceAggregatedList"-    , _ialItems = Nothing-    , _ialSelfLink = Nothing-    , _ialId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)-ialNextPageToken-  = lens _ialNextPageToken-      (\ s a -> s{_ialNextPageToken = a})---- | [Output Only] Type of resource. Always compute#instanceAggregatedList--- for aggregated lists of Instance resources.-ialKind :: Lens' InstanceAggregatedList Text-ialKind = lens _ialKind (\ s a -> s{_ialKind = a})---- | [Output Only] A map of scoped instance lists.-ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)-ialItems = lens _ialItems (\ s a -> s{_ialItems = a})---- | [Output Only] Server-defined URL for this resource.-ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)-ialSelfLink-  = lens _ialSelfLink (\ s a -> s{_ialSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-ialId :: Lens' InstanceAggregatedList (Maybe Text)-ialId = lens _ialId (\ s a -> s{_ialId = a})--instance FromJSON InstanceAggregatedList where-        parseJSON-          = withObject "InstanceAggregatedList"-              (\ o ->-                 InstanceAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#instanceAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceAggregatedList where-        toJSON InstanceAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _ialNextPageToken,-                  Just ("kind" .= _ialKind),-                  ("items" .=) <$> _ialItems,-                  ("selfLink" .=) <$> _ialSelfLink,-                  ("id" .=) <$> _ialId])---- | A reserved address resource.------ /See:/ 'address' smart constructor.-data Address = Address'-    { _aStatus            :: !(Maybe AddressStatus)-    , _aUsers             :: !(Maybe [Text])-    , _aKind              :: !Text-    , _aAddress           :: !(Maybe Text)-    , _aSelfLink          :: !(Maybe Text)-    , _aName              :: !(Maybe Text)-    , _aCreationTimestamp :: !(Maybe Text)-    , _aId                :: !(Maybe (Textual Word64))-    , _aRegion            :: !(Maybe Text)-    , _aDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Address' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aStatus'------ * 'aUsers'------ * 'aKind'------ * 'aAddress'------ * 'aSelfLink'------ * 'aName'------ * 'aCreationTimestamp'------ * 'aId'------ * 'aRegion'------ * 'aDescription'-address-    :: Address-address =-    Address'-    { _aStatus = Nothing-    , _aUsers = Nothing-    , _aKind = "compute#address"-    , _aAddress = Nothing-    , _aSelfLink = Nothing-    , _aName = Nothing-    , _aCreationTimestamp = Nothing-    , _aId = Nothing-    , _aRegion = Nothing-    , _aDescription = Nothing-    }---- | [Output Only] The status of the address, which can be either IN_USE or--- RESERVED. An address that is RESERVED is currently reserved and--- available to use. An IN_USE address is currently being used by another--- resource and is not available.-aStatus :: Lens' Address (Maybe AddressStatus)-aStatus = lens _aStatus (\ s a -> s{_aStatus = a})---- | [Output Only] The URLs of the resources that are using this address.-aUsers :: Lens' Address [Text]-aUsers-  = lens _aUsers (\ s a -> s{_aUsers = a}) . _Default .-      _Coerce---- | [Output Only] Type of the resource. Always compute#address for--- addresses.-aKind :: Lens' Address Text-aKind = lens _aKind (\ s a -> s{_aKind = a})---- | The static external IP address represented by this resource.-aAddress :: Lens' Address (Maybe Text)-aAddress = lens _aAddress (\ s a -> s{_aAddress = a})---- | [Output Only] Server-defined URL for the resource.-aSelfLink :: Lens' Address (Maybe Text)-aSelfLink-  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-aName :: Lens' Address (Maybe Text)-aName = lens _aName (\ s a -> s{_aName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-aCreationTimestamp :: Lens' Address (Maybe Text)-aCreationTimestamp-  = lens _aCreationTimestamp-      (\ s a -> s{_aCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-aId :: Lens' Address (Maybe Word64)-aId-  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce---- | [Output Only] URL of the region where the regional address resides. This--- field is not applicable to global addresses.-aRegion :: Lens' Address (Maybe Text)-aRegion = lens _aRegion (\ s a -> s{_aRegion = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-aDescription :: Lens' Address (Maybe Text)-aDescription-  = lens _aDescription (\ s a -> s{_aDescription = a})--instance FromJSON Address where-        parseJSON-          = withObject "Address"-              (\ o ->-                 Address' <$>-                   (o .:? "status") <*> (o .:? "users" .!= mempty) <*>-                     (o .:? "kind" .!= "compute#address")-                     <*> (o .:? "address")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "description"))--instance ToJSON Address where-        toJSON Address'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _aStatus,-                  ("users" .=) <$> _aUsers, Just ("kind" .= _aKind),-                  ("address" .=) <$> _aAddress,-                  ("selfLink" .=) <$> _aSelfLink,-                  ("name" .=) <$> _aName,-                  ("creationTimestamp" .=) <$> _aCreationTimestamp,-                  ("id" .=) <$> _aId, ("region" .=) <$> _aRegion,-                  ("description" .=) <$> _aDescription])---- | A Zone resource.------ /See:/ 'zone' smart constructor.-data Zone = Zone'-    { _zStatus            :: !(Maybe ZoneStatus)-    , _zKind              :: !Text-    , _zSelfLink          :: !(Maybe Text)-    , _zName              :: !(Maybe Text)-    , _zCreationTimestamp :: !(Maybe Text)-    , _zId                :: !(Maybe (Textual Word64))-    , _zRegion            :: !(Maybe Text)-    , _zDescription       :: !(Maybe Text)-    , _zDeprecated        :: !(Maybe DeprecationStatus)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Zone' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'zStatus'------ * 'zKind'------ * 'zSelfLink'------ * 'zName'------ * 'zCreationTimestamp'------ * 'zId'------ * 'zRegion'------ * 'zDescription'------ * 'zDeprecated'-zone-    :: Zone-zone =-    Zone'-    { _zStatus = Nothing-    , _zKind = "compute#zone"-    , _zSelfLink = Nothing-    , _zName = Nothing-    , _zCreationTimestamp = Nothing-    , _zId = Nothing-    , _zRegion = Nothing-    , _zDescription = Nothing-    , _zDeprecated = Nothing-    }---- | [Output Only] Status of the zone, either UP or DOWN.-zStatus :: Lens' Zone (Maybe ZoneStatus)-zStatus = lens _zStatus (\ s a -> s{_zStatus = a})---- | [Output Only] Type of the resource. Always compute#zone for zones.-zKind :: Lens' Zone Text-zKind = lens _zKind (\ s a -> s{_zKind = a})---- | [Output Only] Server-defined URL for the resource.-zSelfLink :: Lens' Zone (Maybe Text)-zSelfLink-  = lens _zSelfLink (\ s a -> s{_zSelfLink = a})---- | [Output Only] Name of the resource.-zName :: Lens' Zone (Maybe Text)-zName = lens _zName (\ s a -> s{_zName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-zCreationTimestamp :: Lens' Zone (Maybe Text)-zCreationTimestamp-  = lens _zCreationTimestamp-      (\ s a -> s{_zCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-zId :: Lens' Zone (Maybe Word64)-zId-  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce---- | [Output Only] Full URL reference to the region which hosts the zone.-zRegion :: Lens' Zone (Maybe Text)-zRegion = lens _zRegion (\ s a -> s{_zRegion = a})---- | [Output Only] Textual description of the resource.-zDescription :: Lens' Zone (Maybe Text)-zDescription-  = lens _zDescription (\ s a -> s{_zDescription = a})---- | [Output Only] The deprecation status associated with this zone.-zDeprecated :: Lens' Zone (Maybe DeprecationStatus)-zDeprecated-  = lens _zDeprecated (\ s a -> s{_zDeprecated = a})--instance FromJSON Zone where-        parseJSON-          = withObject "Zone"-              (\ o ->-                 Zone' <$>-                   (o .:? "status") <*>-                     (o .:? "kind" .!= "compute#zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "description")-                     <*> (o .:? "deprecated"))--instance ToJSON Zone where-        toJSON Zone'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _zStatus, Just ("kind" .= _zKind),-                  ("selfLink" .=) <$> _zSelfLink,-                  ("name" .=) <$> _zName,-                  ("creationTimestamp" .=) <$> _zCreationTimestamp,-                  ("id" .=) <$> _zId, ("region" .=) <$> _zRegion,-                  ("description" .=) <$> _zDescription,-                  ("deprecated" .=) <$> _zDeprecated])------- /See:/ 'instanceGroupManagersRecreateInstancesRequest' smart constructor.-newtype InstanceGroupManagersRecreateInstancesRequest = InstanceGroupManagersRecreateInstancesRequest'-    { _igmrirInstances :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersRecreateInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmrirInstances'-instanceGroupManagersRecreateInstancesRequest-    :: InstanceGroupManagersRecreateInstancesRequest-instanceGroupManagersRecreateInstancesRequest =-    InstanceGroupManagersRecreateInstancesRequest'-    { _igmrirInstances = Nothing-    }---- | The URL for one or more instances to recreate.-igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]-igmrirInstances-  = lens _igmrirInstances-      (\ s a -> s{_igmrirInstances = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupManagersRecreateInstancesRequest where-        parseJSON-          = withObject-              "InstanceGroupManagersRecreateInstancesRequest"-              (\ o ->-                 InstanceGroupManagersRecreateInstancesRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON-         InstanceGroupManagersRecreateInstancesRequest where-        toJSON-          InstanceGroupManagersRecreateInstancesRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _igmrirInstances])------- /See:/ 'instancesScopedList' smart constructor.-data InstancesScopedList = InstancesScopedList'-    { _islWarning   :: !(Maybe InstancesScopedListWarning)-    , _islInstances :: !(Maybe [Instance])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstancesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'islWarning'------ * 'islInstances'-instancesScopedList-    :: InstancesScopedList-instancesScopedList =-    InstancesScopedList'-    { _islWarning = Nothing-    , _islInstances = Nothing-    }---- | [Output Only] Informational warning which replaces the list of instances--- when the list is empty.-islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)-islWarning-  = lens _islWarning (\ s a -> s{_islWarning = a})---- | [Output Only] List of instances contained in this scope.-islInstances :: Lens' InstancesScopedList [Instance]-islInstances-  = lens _islInstances (\ s a -> s{_islInstances = a})-      . _Default-      . _Coerce--instance FromJSON InstancesScopedList where-        parseJSON-          = withObject "InstancesScopedList"-              (\ o ->-                 InstancesScopedList' <$>-                   (o .:? "warning") <*> (o .:? "instances" .!= mempty))--instance ToJSON InstancesScopedList where-        toJSON InstancesScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _islWarning,-                  ("instances" .=) <$> _islInstances])---- | A full or valid partial URL to a health check. For example, the--- following are valid URLs: ---- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project-id\/global\/httpHealthChecks\/health-check--- - projects\/project-id\/global\/httpHealthChecks\/health-check ---- global\/httpHealthChecks\/health-check------ /See:/ 'healthCheckReference' smart constructor.-newtype HealthCheckReference = HealthCheckReference'-    { _hcrHealthCheck :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HealthCheckReference' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hcrHealthCheck'-healthCheckReference-    :: HealthCheckReference-healthCheckReference =-    HealthCheckReference'-    { _hcrHealthCheck = Nothing-    }--hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)-hcrHealthCheck-  = lens _hcrHealthCheck-      (\ s a -> s{_hcrHealthCheck = a})--instance FromJSON HealthCheckReference where-        parseJSON-          = withObject "HealthCheckReference"-              (\ o ->-                 HealthCheckReference' <$> (o .:? "healthCheck"))--instance ToJSON HealthCheckReference where-        toJSON HealthCheckReference'{..}-          = object-              (catMaybes [("healthCheck" .=) <$> _hcrHealthCheck])---- | A map of scoped target instance lists.------ /See:/ 'targetInstanceAggregatedListItems' smart constructor.-newtype TargetInstanceAggregatedListItems = TargetInstanceAggregatedListItems'-    { _tialiAddtional :: HashMap Text TargetInstancesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstanceAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tialiAddtional'-targetInstanceAggregatedListItems-    :: HashMap Text TargetInstancesScopedList -- ^ 'tialiAddtional'-    -> TargetInstanceAggregatedListItems-targetInstanceAggregatedListItems pTialiAddtional_ =-    TargetInstanceAggregatedListItems'-    { _tialiAddtional = _Coerce # pTialiAddtional_-    }---- | Name of the scope containing this set of target instances.-tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)-tialiAddtional-  = lens _tialiAddtional-      (\ s a -> s{_tialiAddtional = a})-      . _Coerce--instance FromJSON TargetInstanceAggregatedListItems-         where-        parseJSON-          = withObject "TargetInstanceAggregatedListItems"-              (\ o ->-                 TargetInstanceAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON TargetInstanceAggregatedListItems-         where-        toJSON = toJSON . _tialiAddtional------- /See:/ 'instanceGroupAggregatedList' smart constructor.-data InstanceGroupAggregatedList = InstanceGroupAggregatedList'-    { _igalNextPageToken :: !(Maybe Text)-    , _igalKind          :: !Text-    , _igalItems         :: !(Maybe InstanceGroupAggregatedListItems)-    , _igalSelfLink      :: !(Maybe Text)-    , _igalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igalNextPageToken'------ * 'igalKind'------ * 'igalItems'------ * 'igalSelfLink'------ * 'igalId'-instanceGroupAggregatedList-    :: InstanceGroupAggregatedList-instanceGroupAggregatedList =-    InstanceGroupAggregatedList'-    { _igalNextPageToken = Nothing-    , _igalKind = "compute#instanceGroupAggregatedList"-    , _igalItems = Nothing-    , _igalSelfLink = Nothing-    , _igalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)-igalNextPageToken-  = lens _igalNextPageToken-      (\ s a -> s{_igalNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceGroupAggregatedList for aggregated lists of instance--- groups.-igalKind :: Lens' InstanceGroupAggregatedList Text-igalKind = lens _igalKind (\ s a -> s{_igalKind = a})---- | A map of scoped instance group lists.-igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)-igalItems-  = lens _igalItems (\ s a -> s{_igalItems = a})---- | [Output Only] The URL for this resource type. The server generates this--- URL.-igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)-igalSelfLink-  = lens _igalSelfLink (\ s a -> s{_igalSelfLink = a})---- | [Output Only] A unique identifier for this aggregated list of instance--- groups. The server generates this identifier.-igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)-igalId = lens _igalId (\ s a -> s{_igalId = a})--instance FromJSON InstanceGroupAggregatedList where-        parseJSON-          = withObject "InstanceGroupAggregatedList"-              (\ o ->-                 InstanceGroupAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#instanceGroupAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceGroupAggregatedList where-        toJSON InstanceGroupAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _igalNextPageToken,-                  Just ("kind" .= _igalKind),-                  ("items" .=) <$> _igalItems,-                  ("selfLink" .=) <$> _igalSelfLink,-                  ("id" .=) <$> _igalId])---- | Represents a Route resource. A route specifies how certain packets--- should be handled by the network. Routes are associated with instances--- by tags and the set of routes for a particular instance is called its--- routing table. For each packet leaving a instance, the system searches--- that instance\'s routing table for a single best matching route. Routes--- match packets by destination IP address, preferring smaller or more--- specific ranges over larger ones. If there is a tie, the system selects--- the route with the smallest priority value. If there is still a tie, it--- uses the layer three and four packet headers to select just one of the--- remaining matching routes. The packet is then forwarded as specified by--- the nextHop field of the winning route - either to another instance--- destination, a instance gateway or a Google Compute Engine-operated--- gateway. Packets that do not match any route in the sending instance\'s--- routing table are dropped.------ /See:/ 'route' smart constructor.-data Route = Route'-    { _rPriority          :: !(Maybe (Textual Word32))-    , _rKind              :: !Text-    , _rNextHopGateway    :: !(Maybe Text)-    , _rNextHopNetwork    :: !(Maybe Text)-    , _rNetwork           :: !(Maybe Text)-    , _rWarnings          :: !(Maybe [RouteWarningsItem])-    , _rNextHopIP         :: !(Maybe Text)-    , _rDestRange         :: !(Maybe Text)-    , _rSelfLink          :: !(Maybe Text)-    , _rName              :: !(Maybe Text)-    , _rCreationTimestamp :: !(Maybe Text)-    , _rId                :: !(Maybe (Textual Word64))-    , _rNextHopVPNTunnel  :: !(Maybe Text)-    , _rDescription       :: !(Maybe Text)-    , _rTags              :: !(Maybe [Text])-    , _rNextHopInstance   :: !(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:------ * 'rPriority'------ * 'rKind'------ * 'rNextHopGateway'------ * 'rNextHopNetwork'------ * 'rNetwork'------ * 'rWarnings'------ * 'rNextHopIP'------ * 'rDestRange'------ * 'rSelfLink'------ * 'rName'------ * 'rCreationTimestamp'------ * 'rId'------ * 'rNextHopVPNTunnel'------ * 'rDescription'------ * 'rTags'------ * 'rNextHopInstance'-route-    :: Route-route =-    Route'-    { _rPriority = Nothing-    , _rKind = "compute#route"-    , _rNextHopGateway = Nothing-    , _rNextHopNetwork = Nothing-    , _rNetwork = Nothing-    , _rWarnings = Nothing-    , _rNextHopIP = Nothing-    , _rDestRange = Nothing-    , _rSelfLink = Nothing-    , _rName = Nothing-    , _rCreationTimestamp = Nothing-    , _rId = Nothing-    , _rNextHopVPNTunnel = Nothing-    , _rDescription = Nothing-    , _rTags = Nothing-    , _rNextHopInstance = Nothing-    }---- | The priority of this route. Priority is used to break ties in cases--- where there is more than one matching route of equal prefix length. In--- the case of two routes with equal prefix length, the one with the--- lowest-numbered priority value wins. Default value is 1000. Valid range--- is 0 through 65535.-rPriority :: Lens' Route (Maybe Word32)-rPriority-  = lens _rPriority (\ s a -> s{_rPriority = a}) .-      mapping _Coerce---- | [Output Only] Type of this resource. Always compute#routes for Route--- resources.-rKind :: Lens' Route Text-rKind = lens _rKind (\ s a -> s{_rKind = 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-rNextHopGateway :: Lens' Route (Maybe Text)-rNextHopGateway-  = lens _rNextHopGateway-      (\ s a -> s{_rNextHopGateway = a})---- | The URL of the local network if it should handle matching packets.-rNextHopNetwork :: Lens' Route (Maybe Text)-rNextHopNetwork-  = lens _rNextHopNetwork-      (\ s a -> s{_rNextHopNetwork = a})---- | Fully-qualified URL of the network that this route applies to.-rNetwork :: Lens' Route (Maybe Text)-rNetwork = lens _rNetwork (\ s a -> s{_rNetwork = a})---- | [Output Only] If potential misconfigurations are detected for this--- route, this field will be populated with warning messages.-rWarnings :: Lens' Route [RouteWarningsItem]-rWarnings-  = lens _rWarnings (\ s a -> s{_rWarnings = a}) .-      _Default-      . _Coerce---- | The network IP address of an instance that should handle matching--- packets.-rNextHopIP :: Lens' Route (Maybe Text)-rNextHopIP-  = lens _rNextHopIP (\ s a -> s{_rNextHopIP = a})---- | The destination range of outgoing packets that this route applies to.-rDestRange :: Lens' Route (Maybe Text)-rDestRange-  = lens _rDestRange (\ s a -> s{_rDestRange = a})---- | [Output Only] Server-defined fully-qualified URL for this resource.-rSelfLink :: Lens' Route (Maybe Text)-rSelfLink-  = lens _rSelfLink (\ s a -> s{_rSelfLink = 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.-rName :: Lens' Route (Maybe Text)-rName = lens _rName (\ s a -> s{_rName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-rCreationTimestamp :: Lens' Route (Maybe Text)-rCreationTimestamp-  = lens _rCreationTimestamp-      (\ s a -> s{_rCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-rId :: Lens' Route (Maybe Word64)-rId-  = lens _rId (\ s a -> s{_rId = a}) . mapping _Coerce---- | The URL to a VpnTunnel that should handle matching packets.-rNextHopVPNTunnel :: Lens' Route (Maybe Text)-rNextHopVPNTunnel-  = lens _rNextHopVPNTunnel-      (\ s a -> s{_rNextHopVPNTunnel = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-rDescription :: Lens' Route (Maybe Text)-rDescription-  = lens _rDescription (\ s a -> s{_rDescription = a})---- | A list of instance tags to which this route applies.-rTags :: Lens' Route [Text]-rTags-  = lens _rTags (\ s a -> s{_rTags = 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\/-rNextHopInstance :: Lens' Route (Maybe Text)-rNextHopInstance-  = lens _rNextHopInstance-      (\ s a -> s{_rNextHopInstance = a})--instance FromJSON Route where-        parseJSON-          = withObject "Route"-              (\ o ->-                 Route' <$>-                   (o .:? "priority") <*>-                     (o .:? "kind" .!= "compute#route")-                     <*> (o .:? "nextHopGateway")-                     <*> (o .:? "nextHopNetwork")-                     <*> (o .:? "network")-                     <*> (o .:? "warnings" .!= mempty)-                     <*> (o .:? "nextHopIp")-                     <*> (o .:? "destRange")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "nextHopVpnTunnel")-                     <*> (o .:? "description")-                     <*> (o .:? "tags" .!= mempty)-                     <*> (o .:? "nextHopInstance"))--instance ToJSON Route where-        toJSON Route'{..}-          = object-              (catMaybes-                 [("priority" .=) <$> _rPriority,-                  Just ("kind" .= _rKind),-                  ("nextHopGateway" .=) <$> _rNextHopGateway,-                  ("nextHopNetwork" .=) <$> _rNextHopNetwork,-                  ("network" .=) <$> _rNetwork,-                  ("warnings" .=) <$> _rWarnings,-                  ("nextHopIp" .=) <$> _rNextHopIP,-                  ("destRange" .=) <$> _rDestRange,-                  ("selfLink" .=) <$> _rSelfLink,-                  ("name" .=) <$> _rName,-                  ("creationTimestamp" .=) <$> _rCreationTimestamp,-                  ("id" .=) <$> _rId,-                  ("nextHopVpnTunnel" .=) <$> _rNextHopVPNTunnel,-                  ("description" .=) <$> _rDescription,-                  ("tags" .=) <$> _rTags,-                  ("nextHopInstance" .=) <$> _rNextHopInstance])------- /See:/ 'targetVPNGatewaysScopedListWarningDataItem' smart constructor.-data TargetVPNGatewaysScopedListWarningDataItem = TargetVPNGatewaysScopedListWarningDataItem'-    { _tvgslwdiValue :: !(Maybe Text)-    , _tvgslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewaysScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgslwdiValue'------ * 'tvgslwdiKey'-targetVPNGatewaysScopedListWarningDataItem-    :: TargetVPNGatewaysScopedListWarningDataItem-targetVPNGatewaysScopedListWarningDataItem =-    TargetVPNGatewaysScopedListWarningDataItem'-    { _tvgslwdiValue = Nothing-    , _tvgslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)-tvgslwdiValue-  = lens _tvgslwdiValue-      (\ s a -> s{_tvgslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)-tvgslwdiKey-  = lens _tvgslwdiKey (\ s a -> s{_tvgslwdiKey = a})--instance FromJSON-         TargetVPNGatewaysScopedListWarningDataItem where-        parseJSON-          = withObject-              "TargetVPNGatewaysScopedListWarningDataItem"-              (\ o ->-                 TargetVPNGatewaysScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON-         TargetVPNGatewaysScopedListWarningDataItem where-        toJSON-          TargetVPNGatewaysScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _tvgslwdiValue,-                  ("key" .=) <$> _tvgslwdiKey])------- /See:/ 'targetHTTPSProxiesSetSSLCertificatesRequest' smart constructor.-newtype TargetHTTPSProxiesSetSSLCertificatesRequest = TargetHTTPSProxiesSetSSLCertificatesRequest'-    { _thpsscrSSLCertificates :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'thpsscrSSLCertificates'-targetHTTPSProxiesSetSSLCertificatesRequest-    :: TargetHTTPSProxiesSetSSLCertificatesRequest-targetHTTPSProxiesSetSSLCertificatesRequest =-    TargetHTTPSProxiesSetSSLCertificatesRequest'-    { _thpsscrSSLCertificates = Nothing-    }---- | New set of SslCertificate resources to associate with this--- TargetHttpsProxy resource. Currently exactly one SslCertificate resource--- must be specified.-thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]-thpsscrSSLCertificates-  = lens _thpsscrSSLCertificates-      (\ s a -> s{_thpsscrSSLCertificates = a})-      . _Default-      . _Coerce--instance FromJSON-         TargetHTTPSProxiesSetSSLCertificatesRequest where-        parseJSON-          = withObject-              "TargetHTTPSProxiesSetSSLCertificatesRequest"-              (\ o ->-                 TargetHTTPSProxiesSetSSLCertificatesRequest' <$>-                   (o .:? "sslCertificates" .!= mempty))--instance ToJSON-         TargetHTTPSProxiesSetSSLCertificatesRequest where-        toJSON-          TargetHTTPSProxiesSetSSLCertificatesRequest'{..}-          = object-              (catMaybes-                 [("sslCertificates" .=) <$> _thpsscrSSLCertificates])---- | An Instance Template resource.------ /See:/ 'instanceTemplate' smart constructor.-data InstanceTemplate = InstanceTemplate'-    { _itKind              :: !Text-    , _itSelfLink          :: !(Maybe Text)-    , _itName              :: !(Maybe Text)-    , _itCreationTimestamp :: !(Maybe Text)-    , _itId                :: !(Maybe (Textual Word64))-    , _itDescription       :: !(Maybe Text)-    , _itProperties        :: !(Maybe InstanceProperties)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceTemplate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'itKind'------ * 'itSelfLink'------ * 'itName'------ * 'itCreationTimestamp'------ * 'itId'------ * 'itDescription'------ * 'itProperties'-instanceTemplate-    :: InstanceTemplate-instanceTemplate =-    InstanceTemplate'-    { _itKind = "compute#instanceTemplate"-    , _itSelfLink = Nothing-    , _itName = Nothing-    , _itCreationTimestamp = Nothing-    , _itId = Nothing-    , _itDescription = Nothing-    , _itProperties = Nothing-    }---- | [Output Only] The resource type, which is always--- compute#instanceTemplate for instance templates.-itKind :: Lens' InstanceTemplate Text-itKind = lens _itKind (\ s a -> s{_itKind = a})---- | [Output Only] The URL for this instance template. The server defines--- this URL.-itSelfLink :: Lens' InstanceTemplate (Maybe Text)-itSelfLink-  = lens _itSelfLink (\ s a -> s{_itSelfLink = a})---- | Name of the resource; provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-itName :: Lens' InstanceTemplate (Maybe Text)-itName = lens _itName (\ s a -> s{_itName = a})---- | [Output Only] The creation timestamp for this instance template in--- RFC3339 text format.-itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)-itCreationTimestamp-  = lens _itCreationTimestamp-      (\ s a -> s{_itCreationTimestamp = a})---- | [Output Only] A unique identifier for this instance template. The server--- defines this identifier.-itId :: Lens' InstanceTemplate (Maybe Word64)-itId-  = lens _itId (\ s a -> s{_itId = a}) .-      mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-itDescription :: Lens' InstanceTemplate (Maybe Text)-itDescription-  = lens _itDescription-      (\ s a -> s{_itDescription = a})---- | The instance properties for this instance template.-itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)-itProperties-  = lens _itProperties (\ s a -> s{_itProperties = a})--instance FromJSON InstanceTemplate where-        parseJSON-          = withObject "InstanceTemplate"-              (\ o ->-                 InstanceTemplate' <$>-                   (o .:? "kind" .!= "compute#instanceTemplate") <*>-                     (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "description")-                     <*> (o .:? "properties"))--instance ToJSON InstanceTemplate where-        toJSON InstanceTemplate'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _itKind),-                  ("selfLink" .=) <$> _itSelfLink,-                  ("name" .=) <$> _itName,-                  ("creationTimestamp" .=) <$> _itCreationTimestamp,-                  ("id" .=) <$> _itId,-                  ("description" .=) <$> _itDescription,-                  ("properties" .=) <$> _itProperties])---- | Represents a Target VPN gateway resource.------ /See:/ 'targetVPNGateway' smart constructor.-data TargetVPNGateway = TargetVPNGateway'-    { _tvgStatus            :: !(Maybe TargetVPNGatewayStatus)-    , _tvgKind              :: !Text-    , _tvgNetwork           :: !(Maybe Text)-    , _tvgSelfLink          :: !(Maybe Text)-    , _tvgName              :: !(Maybe Text)-    , _tvgCreationTimestamp :: !(Maybe Text)-    , _tvgId                :: !(Maybe (Textual Word64))-    , _tvgRegion            :: !(Maybe Text)-    , _tvgTunnels           :: !(Maybe [Text])-    , _tvgDescription       :: !(Maybe Text)-    , _tvgForwardingRules   :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGateway' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgStatus'------ * 'tvgKind'------ * 'tvgNetwork'------ * 'tvgSelfLink'------ * 'tvgName'------ * 'tvgCreationTimestamp'------ * 'tvgId'------ * 'tvgRegion'------ * 'tvgTunnels'------ * 'tvgDescription'------ * 'tvgForwardingRules'-targetVPNGateway-    :: TargetVPNGateway-targetVPNGateway =-    TargetVPNGateway'-    { _tvgStatus = Nothing-    , _tvgKind = "compute#targetVpnGateway"-    , _tvgNetwork = Nothing-    , _tvgSelfLink = Nothing-    , _tvgName = Nothing-    , _tvgCreationTimestamp = Nothing-    , _tvgId = Nothing-    , _tvgRegion = Nothing-    , _tvgTunnels = Nothing-    , _tvgDescription = Nothing-    , _tvgForwardingRules = Nothing-    }---- | [Output Only] The status of the VPN gateway.-tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)-tvgStatus-  = lens _tvgStatus (\ s a -> s{_tvgStatus = a})---- | [Output Only] Type of resource. Always compute#targetVpnGateway for--- target VPN gateways.-tvgKind :: Lens' TargetVPNGateway Text-tvgKind = lens _tvgKind (\ s a -> s{_tvgKind = a})---- | URL of the network to which this VPN gateway is attached. Provided by--- the client when the VPN gateway is created.-tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)-tvgNetwork-  = lens _tvgNetwork (\ s a -> s{_tvgNetwork = a})---- | [Output Only] Server-defined URL for the resource.-tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)-tvgSelfLink-  = lens _tvgSelfLink (\ s a -> s{_tvgSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-tvgName :: Lens' TargetVPNGateway (Maybe Text)-tvgName = lens _tvgName (\ s a -> s{_tvgName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)-tvgCreationTimestamp-  = lens _tvgCreationTimestamp-      (\ s a -> s{_tvgCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tvgId :: Lens' TargetVPNGateway (Maybe Word64)-tvgId-  = lens _tvgId (\ s a -> s{_tvgId = a}) .-      mapping _Coerce---- | [Output Only] URL of the region where the target VPN gateway resides.-tvgRegion :: Lens' TargetVPNGateway (Maybe Text)-tvgRegion-  = lens _tvgRegion (\ s a -> s{_tvgRegion = a})---- | [Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are--- created using compute.vpntunnels.insert method and associated to a VPN--- gateway.-tvgTunnels :: Lens' TargetVPNGateway [Text]-tvgTunnels-  = lens _tvgTunnels (\ s a -> s{_tvgTunnels = a}) .-      _Default-      . _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-tvgDescription :: Lens' TargetVPNGateway (Maybe Text)-tvgDescription-  = lens _tvgDescription-      (\ s a -> s{_tvgDescription = a})---- | [Output Only] A list of URLs to the ForwardingRule resources.--- ForwardingRules are created using compute.forwardingRules.insert and--- associated to a VPN gateway.-tvgForwardingRules :: Lens' TargetVPNGateway [Text]-tvgForwardingRules-  = lens _tvgForwardingRules-      (\ s a -> s{_tvgForwardingRules = a})-      . _Default-      . _Coerce--instance FromJSON TargetVPNGateway where-        parseJSON-          = withObject "TargetVPNGateway"-              (\ o ->-                 TargetVPNGateway' <$>-                   (o .:? "status") <*>-                     (o .:? "kind" .!= "compute#targetVpnGateway")-                     <*> (o .:? "network")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "tunnels" .!= mempty)-                     <*> (o .:? "description")-                     <*> (o .:? "forwardingRules" .!= mempty))--instance ToJSON TargetVPNGateway where-        toJSON TargetVPNGateway'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _tvgStatus,-                  Just ("kind" .= _tvgKind),-                  ("network" .=) <$> _tvgNetwork,-                  ("selfLink" .=) <$> _tvgSelfLink,-                  ("name" .=) <$> _tvgName,-                  ("creationTimestamp" .=) <$> _tvgCreationTimestamp,-                  ("id" .=) <$> _tvgId, ("region" .=) <$> _tvgRegion,-                  ("tunnels" .=) <$> _tvgTunnels,-                  ("description" .=) <$> _tvgDescription,-                  ("forwardingRules" .=) <$> _tvgForwardingRules])------- /See:/ 'urlMapsValidateResponse' smart constructor.-newtype URLMapsValidateResponse = URLMapsValidateResponse'-    { _umvrResult :: Maybe URLMapValidationResult-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapsValidateResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umvrResult'-urlMapsValidateResponse-    :: URLMapsValidateResponse-urlMapsValidateResponse =-    URLMapsValidateResponse'-    { _umvrResult = Nothing-    }--umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)-umvrResult-  = lens _umvrResult (\ s a -> s{_umvrResult = a})--instance FromJSON URLMapsValidateResponse where-        parseJSON-          = withObject "URLMapsValidateResponse"-              (\ o ->-                 URLMapsValidateResponse' <$> (o .:? "result"))--instance ToJSON URLMapsValidateResponse where-        toJSON URLMapsValidateResponse'{..}-          = object (catMaybes [("result" .=) <$> _umvrResult])---- | An SslCertificate resource. This resource provides a mechanism to upload--- an SSL key and certificate to the load balancer to serve secure--- connections from the user.------ /See:/ 'sslCertificate' smart constructor.-data SSLCertificate = SSLCertificate'-    { _scPrivateKey        :: !(Maybe Text)-    , _scKind              :: !Text-    , _scSelfLink          :: !(Maybe Text)-    , _scName              :: !(Maybe Text)-    , _scCreationTimestamp :: !(Maybe Text)-    , _scId                :: !(Maybe (Textual Word64))-    , _scCertificate       :: !(Maybe Text)-    , _scDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SSLCertificate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'scPrivateKey'------ * 'scKind'------ * 'scSelfLink'------ * 'scName'------ * 'scCreationTimestamp'------ * 'scId'------ * 'scCertificate'------ * 'scDescription'-sslCertificate-    :: SSLCertificate-sslCertificate =-    SSLCertificate'-    { _scPrivateKey = Nothing-    , _scKind = "compute#sslCertificate"-    , _scSelfLink = Nothing-    , _scName = Nothing-    , _scCreationTimestamp = Nothing-    , _scId = Nothing-    , _scCertificate = Nothing-    , _scDescription = Nothing-    }---- | A write-only private key in PEM format. Only insert RPCs 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:/ 'urlMapReference' smart constructor.-newtype URLMapReference = URLMapReference'-    { _umrURLMap :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapReference' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umrURLMap'-urlMapReference-    :: URLMapReference-urlMapReference =-    URLMapReference'-    { _umrURLMap = Nothing-    }--umrURLMap :: Lens' URLMapReference (Maybe Text)-umrURLMap-  = lens _umrURLMap (\ s a -> s{_umrURLMap = a})--instance FromJSON URLMapReference where-        parseJSON-          = withObject "URLMapReference"-              (\ o -> URLMapReference' <$> (o .:? "urlMap"))--instance ToJSON URLMapReference where-        toJSON URLMapReference'{..}-          = object (catMaybes [("urlMap" .=) <$> _umrURLMap])------- /See:/ 'targetPoolsAddHealthCheckRequest' smart constructor.-newtype TargetPoolsAddHealthCheckRequest = TargetPoolsAddHealthCheckRequest'-    { _tpahcrHealthChecks :: Maybe [HealthCheckReference]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsAddHealthCheckRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpahcrHealthChecks'-targetPoolsAddHealthCheckRequest-    :: TargetPoolsAddHealthCheckRequest-targetPoolsAddHealthCheckRequest =-    TargetPoolsAddHealthCheckRequest'-    { _tpahcrHealthChecks = Nothing-    }---- | A list of HttpHealthCheck resources to add to the target pool.-tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]-tpahcrHealthChecks-  = lens _tpahcrHealthChecks-      (\ s a -> s{_tpahcrHealthChecks = a})-      . _Default-      . _Coerce--instance FromJSON TargetPoolsAddHealthCheckRequest-         where-        parseJSON-          = withObject "TargetPoolsAddHealthCheckRequest"-              (\ o ->-                 TargetPoolsAddHealthCheckRequest' <$>-                   (o .:? "healthChecks" .!= mempty))--instance ToJSON TargetPoolsAddHealthCheckRequest-         where-        toJSON TargetPoolsAddHealthCheckRequest'{..}-          = object-              (catMaybes-                 [("healthChecks" .=) <$> _tpahcrHealthChecks])---- | [Output Only] A map of scoped disk lists.------ /See:/ 'diskAggregatedListItems' smart constructor.-newtype DiskAggregatedListItems = DiskAggregatedListItems'-    { _daliAddtional :: HashMap Text DisksScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'daliAddtional'-diskAggregatedListItems-    :: HashMap Text DisksScopedList -- ^ 'daliAddtional'-    -> DiskAggregatedListItems-diskAggregatedListItems pDaliAddtional_ =-    DiskAggregatedListItems'-    { _daliAddtional = _Coerce # pDaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of disks.-daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)-daliAddtional-  = lens _daliAddtional-      (\ s a -> s{_daliAddtional = a})-      . _Coerce--instance FromJSON DiskAggregatedListItems where-        parseJSON-          = withObject "DiskAggregatedListItems"-              (\ o ->-                 DiskAggregatedListItems' <$> (parseJSONObject o))--instance ToJSON DiskAggregatedListItems where-        toJSON = toJSON . _daliAddtional---- | The location in Cloud Storage and naming method of the daily usage--- report. Contains bucket_name and report_name prefix.------ /See:/ 'usageExportLocation' smart constructor.-data UsageExportLocation = UsageExportLocation'-    { _uelReportNamePrefix :: !(Maybe Text)-    , _uelBucketName       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'UsageExportLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'uelReportNamePrefix'------ * 'uelBucketName'-usageExportLocation-    :: UsageExportLocation-usageExportLocation =-    UsageExportLocation'-    { _uelReportNamePrefix = Nothing-    , _uelBucketName = Nothing-    }---- | An optional prefix for the name of the usage report object stored in--- bucketName. If not supplied, defaults to usage. The report is stored as--- a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is--- the day of the usage according to Pacific Time. If you supply a prefix,--- it should conform to Cloud Storage object naming conventions.-uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)-uelReportNamePrefix-  = lens _uelReportNamePrefix-      (\ s a -> s{_uelReportNamePrefix = a})---- | The name of an existing bucket in Cloud Storage where the usage report--- object is stored. The Google Service Account is granted write access to--- this bucket. This can either be the bucket name by itself, such as--- example-bucket, or the bucket name with gs:\/\/ or--- https:\/\/storage.googleapis.com\/ in front of it, such as--- gs:\/\/example-bucket.-uelBucketName :: Lens' UsageExportLocation (Maybe Text)-uelBucketName-  = lens _uelBucketName-      (\ s a -> s{_uelBucketName = a})--instance FromJSON UsageExportLocation where-        parseJSON-          = withObject "UsageExportLocation"-              (\ o ->-                 UsageExportLocation' <$>-                   (o .:? "reportNamePrefix") <*> (o .:? "bucketName"))--instance ToJSON UsageExportLocation where-        toJSON UsageExportLocation'{..}-          = object-              (catMaybes-                 [("reportNamePrefix" .=) <$> _uelReportNamePrefix,-                  ("bucketName" .=) <$> _uelBucketName])---- | Contains a list of zone resources.------ /See:/ 'zoneList' smart constructor.-data ZoneList = ZoneList'-    { _zlNextPageToken :: !(Maybe Text)-    , _zlKind          :: !Text-    , _zlItems         :: !(Maybe [Zone])-    , _zlSelfLink      :: !(Maybe Text)-    , _zlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ZoneList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'zlNextPageToken'------ * 'zlKind'------ * 'zlItems'------ * 'zlSelfLink'------ * 'zlId'-zoneList-    :: ZoneList-zoneList =-    ZoneList'-    { _zlNextPageToken = Nothing-    , _zlKind = "compute#zoneList"-    , _zlItems = Nothing-    , _zlSelfLink = Nothing-    , _zlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-zlNextPageToken :: Lens' ZoneList (Maybe Text)-zlNextPageToken-  = lens _zlNextPageToken-      (\ s a -> s{_zlNextPageToken = a})---- | Type of resource.-zlKind :: Lens' ZoneList Text-zlKind = lens _zlKind (\ s a -> s{_zlKind = a})---- | [Output Only] A list of Zone resources.-zlItems :: Lens' ZoneList [Zone]-zlItems-  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-zlSelfLink :: Lens' ZoneList (Maybe Text)-zlSelfLink-  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})---- | [Output Only] Unique identifier for the resource; defined by the server.-zlId :: Lens' ZoneList (Maybe Text)-zlId = lens _zlId (\ s a -> s{_zlId = a})--instance FromJSON ZoneList where-        parseJSON-          = withObject "ZoneList"-              (\ o ->-                 ZoneList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#zoneList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON ZoneList where-        toJSON ZoneList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _zlNextPageToken,-                  Just ("kind" .= _zlKind), ("items" .=) <$> _zlItems,-                  ("selfLink" .=) <$> _zlSelfLink,-                  ("id" .=) <$> _zlId])------- /See:/ '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 target_size value is decreased. - RECREATING The managed--- instance group is recreating this instance. - DELETING The managed--- instance group is permanently deleting this instance. - ABANDONING The--- managed instance group is abandoning this instance. The instance will be--- removed from the instance group and from any target pools that are--- associated with this group. - RESTARTING The managed instance group is--- restarting the instance. - REFRESHING The managed instance group is--- applying configuration changes to the instance without stopping it. For--- example, the group can update the target pool list for an instance--- without stopping that instance.-miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)-miCurrentAction-  = lens _miCurrentAction-      (\ s a -> s{_miCurrentAction = a})---- | [Output only] The unique identifier for this resource. This field is--- empty when instance does not exist.-miId :: Lens' ManagedInstance (Maybe Word64)-miId-  = lens _miId (\ s a -> s{_miId = a}) .-      mapping _Coerce---- | [Output Only] The status of the instance. This field is empty when the--- instance does not exist.-miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)-miInstanceStatus-  = lens _miInstanceStatus-      (\ s a -> s{_miInstanceStatus = a})---- | [Output Only] The URL of the instance. The URL can exist even if the--- instance has not yet been created.-miInstance :: Lens' ManagedInstance (Maybe Text)-miInstance-  = lens _miInstance (\ s a -> s{_miInstance = a})--instance FromJSON ManagedInstance where-        parseJSON-          = withObject "ManagedInstance"-              (\ o ->-                 ManagedInstance' <$>-                   (o .:? "lastAttempt") <*> (o .:? "currentAction") <*>-                     (o .:? "id")-                     <*> (o .:? "instanceStatus")-                     <*> (o .:? "instance"))--instance ToJSON ManagedInstance where-        toJSON ManagedInstance'{..}-          = object-              (catMaybes-                 [("lastAttempt" .=) <$> _miLastAttempt,-                  ("currentAction" .=) <$> _miCurrentAction,-                  ("id" .=) <$> _miId,-                  ("instanceStatus" .=) <$> _miInstanceStatus,-                  ("instance" .=) <$> _miInstance])---- | [Output Only] A map of filtered managed instance group lists.------ /See:/ 'instanceGroupManagerAggregatedListItems' smart constructor.-newtype InstanceGroupManagerAggregatedListItems = InstanceGroupManagerAggregatedListItems'-    { _igmaliAddtional :: HashMap Text InstanceGroupManagersScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagerAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmaliAddtional'-instanceGroupManagerAggregatedListItems-    :: HashMap Text InstanceGroupManagersScopedList -- ^ 'igmaliAddtional'-    -> InstanceGroupManagerAggregatedListItems-instanceGroupManagerAggregatedListItems pIgmaliAddtional_ =-    InstanceGroupManagerAggregatedListItems'-    { _igmaliAddtional = _Coerce # pIgmaliAddtional_-    }---- | [Output Only] The name of the scope that contains this set of managed--- instance groups.-igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)-igmaliAddtional-  = lens _igmaliAddtional-      (\ s a -> s{_igmaliAddtional = a})-      . _Coerce--instance FromJSON-         InstanceGroupManagerAggregatedListItems where-        parseJSON-          = withObject-              "InstanceGroupManagerAggregatedListItems"-              (\ o ->-                 InstanceGroupManagerAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON-         InstanceGroupManagerAggregatedListItems where-        toJSON = toJSON . _igmaliAddtional------- /See:/ 'instanceGroupManagersDeleteInstancesRequest' smart constructor.-newtype InstanceGroupManagersDeleteInstancesRequest = InstanceGroupManagersDeleteInstancesRequest'-    { _igmdirInstances :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmdirInstances'-instanceGroupManagersDeleteInstancesRequest-    :: InstanceGroupManagersDeleteInstancesRequest-instanceGroupManagersDeleteInstancesRequest =-    InstanceGroupManagersDeleteInstancesRequest'-    { _igmdirInstances = Nothing-    }---- | The list of instances to delete from this managed instance group.--- Specify one or more instance URLs.-igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]-igmdirInstances-  = lens _igmdirInstances-      (\ s a -> s{_igmdirInstances = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupManagersDeleteInstancesRequest where-        parseJSON-          = withObject-              "InstanceGroupManagersDeleteInstancesRequest"-              (\ o ->-                 InstanceGroupManagersDeleteInstancesRequest' <$>-                   (o .:? "instances" .!= mempty))--instance ToJSON-         InstanceGroupManagersDeleteInstancesRequest where-        toJSON-          InstanceGroupManagersDeleteInstancesRequest'{..}-          = object-              (catMaybes [("instances" .=) <$> _igmdirInstances])---- | Message containing information of one individual backend.------ /See:/ 'backend' smart constructor.-data Backend = Backend'-    { _bGroup              :: !(Maybe Text)-    , _bBalancingMode      :: !(Maybe BackendBalancingMode)-    , _bMaxUtilization     :: !(Maybe (Textual Double))-    , _bMaxRate            :: !(Maybe (Textual Int32))-    , _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'------ * 'bMaxRatePerInstance'------ * 'bDescription'------ * 'bCapacityScaler'-backend-    :: Backend-backend =-    Backend'-    { _bGroup = Nothing-    , _bBalancingMode = Nothing-    , _bMaxUtilization = Nothing-    , _bMaxRate = Nothing-    , _bMaxRatePerInstance = Nothing-    , _bDescription = Nothing-    , _bCapacityScaler = Nothing-    }---- | The fully-qualified URL of a zonal Instance Group resource. This--- instance group defines the list of instances that serve traffic. Member--- virtual machine instances from each instance group must live in the same--- zone as the instance group itself. No two backends in a backend service--- are allowed to use same Instance Group resource. Note that you must--- specify an Instance Group resource using the fully-qualified URL, rather--- than a partial URL.-bGroup :: Lens' Backend (Maybe Text)-bGroup = lens _bGroup (\ s a -> s{_bGroup = a})---- | Specifies the balancing mode for this backend. For global HTTP(S) load--- balancing, the default is UTILIZATION. Valid values are UTILIZATION and--- RATE.-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].-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.-bMaxRate :: Lens' Backend (Maybe Int32)-bMaxRate-  = lens _bMaxRate (\ s a -> s{_bMaxRate = 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.-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 (either--- UTILIZATION or RATE). Default value is 1, which means the group will--- serve up to 100% of its configured CPU or RPS (depending on--- balancingMode). A setting of 0 means the group is completely drained,--- offering 0% of its available CPU or RPS. Valid range is [0.0,1.0].-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 .:? "maxRatePerInstance")-                     <*> (o .:? "description")-                     <*> (o .:? "capacityScaler"))--instance ToJSON Backend where-        toJSON Backend'{..}-          = object-              (catMaybes-                 [("group" .=) <$> _bGroup,-                  ("balancingMode" .=) <$> _bBalancingMode,-                  ("maxUtilization" .=) <$> _bMaxUtilization,-                  ("maxRate" .=) <$> _bMaxRate,-                  ("maxRatePerInstance" .=) <$> _bMaxRatePerInstance,-                  ("description" .=) <$> _bDescription,-                  ("capacityScaler" .=) <$> _bCapacityScaler])---- | [Output Only] Informational warning which replaces the list of addresses--- when the list is empty.------ /See:/ 'targetVPNGatewaysScopedListWarning' smart constructor.-data TargetVPNGatewaysScopedListWarning = TargetVPNGatewaysScopedListWarning'-    { _tvgslwData    :: !(Maybe [TargetVPNGatewaysScopedListWarningDataItem])-    , _tvgslwCode    :: !(Maybe TargetVPNGatewaysScopedListWarningCode)-    , _tvgslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewaysScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgslwData'------ * 'tvgslwCode'------ * 'tvgslwMessage'-targetVPNGatewaysScopedListWarning-    :: TargetVPNGatewaysScopedListWarning-targetVPNGatewaysScopedListWarning =-    TargetVPNGatewaysScopedListWarning'-    { _tvgslwData = Nothing-    , _tvgslwCode = Nothing-    , _tvgslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]-tvgslwData-  = lens _tvgslwData (\ s a -> s{_tvgslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)-tvgslwCode-  = lens _tvgslwCode (\ s a -> s{_tvgslwCode = a})---- | [Output Only] A human-readable description of the warning code.-tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)-tvgslwMessage-  = lens _tvgslwMessage-      (\ s a -> s{_tvgslwMessage = a})--instance FromJSON TargetVPNGatewaysScopedListWarning-         where-        parseJSON-          = withObject "TargetVPNGatewaysScopedListWarning"-              (\ o ->-                 TargetVPNGatewaysScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON TargetVPNGatewaysScopedListWarning-         where-        toJSON TargetVPNGatewaysScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _tvgslwData,-                  ("code" .=) <$> _tvgslwCode,-                  ("message" .=) <$> _tvgslwMessage])---- | Contains a list of addresses.------ /See:/ 'addressList' smart constructor.-data AddressList = AddressList'-    { _alNextPageToken :: !(Maybe Text)-    , _alKind          :: !Text-    , _alItems         :: !(Maybe [Address])-    , _alSelfLink      :: !(Maybe Text)-    , _alId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'alNextPageToken'------ * 'alKind'------ * 'alItems'------ * 'alSelfLink'------ * 'alId'-addressList-    :: AddressList-addressList =-    AddressList'-    { _alNextPageToken = Nothing-    , _alKind = "compute#addressList"-    , _alItems = Nothing-    , _alSelfLink = Nothing-    , _alId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-alNextPageToken :: Lens' AddressList (Maybe Text)-alNextPageToken-  = lens _alNextPageToken-      (\ s a -> s{_alNextPageToken = a})---- | [Output Only] Type of resource. Always compute#addressList for lists of--- addresses.-alKind :: Lens' AddressList Text-alKind = lens _alKind (\ s a -> s{_alKind = a})---- | [Output Only] A list of addresses.-alItems :: Lens' AddressList [Address]-alItems-  = lens _alItems (\ s a -> s{_alItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for the resource.-alSelfLink :: Lens' AddressList (Maybe Text)-alSelfLink-  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-alId :: Lens' AddressList (Maybe Text)-alId = lens _alId (\ s a -> s{_alId = a})--instance FromJSON AddressList where-        parseJSON-          = withObject "AddressList"-              (\ o ->-                 AddressList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#addressList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON AddressList where-        toJSON AddressList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _alNextPageToken,-                  Just ("kind" .= _alKind), ("items" .=) <$> _alItems,-                  ("selfLink" .=) <$> _alSelfLink,-                  ("id" .=) <$> _alId])---- | A map of scoped forwarding rule lists.------ /See:/ 'forwardingRuleAggregatedListItems' smart constructor.-newtype ForwardingRuleAggregatedListItems = ForwardingRuleAggregatedListItems'-    { _fraliAddtional :: HashMap Text ForwardingRulesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRuleAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fraliAddtional'-forwardingRuleAggregatedListItems-    :: HashMap Text ForwardingRulesScopedList -- ^ 'fraliAddtional'-    -> ForwardingRuleAggregatedListItems-forwardingRuleAggregatedListItems pFraliAddtional_ =-    ForwardingRuleAggregatedListItems'-    { _fraliAddtional = _Coerce # pFraliAddtional_-    }---- | Name of the scope containing this set of addresses.-fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)-fraliAddtional-  = lens _fraliAddtional-      (\ s a -> s{_fraliAddtional = a})-      . _Coerce--instance FromJSON ForwardingRuleAggregatedListItems-         where-        parseJSON-          = withObject "ForwardingRuleAggregatedListItems"-              (\ o ->-                 ForwardingRuleAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON ForwardingRuleAggregatedListItems-         where-        toJSON = toJSON . _fraliAddtional---- | [Output Only] A map of scoped operation lists.------ /See:/ 'operationAggregatedListItems' smart constructor.-newtype OperationAggregatedListItems = OperationAggregatedListItems'-    { _oaliAddtional :: HashMap Text OperationsScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oaliAddtional'-operationAggregatedListItems-    :: HashMap Text OperationsScopedList -- ^ 'oaliAddtional'-    -> OperationAggregatedListItems-operationAggregatedListItems pOaliAddtional_ =-    OperationAggregatedListItems'-    { _oaliAddtional = _Coerce # pOaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of operations.-oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)-oaliAddtional-  = lens _oaliAddtional-      (\ s a -> s{_oaliAddtional = a})-      . _Coerce--instance FromJSON OperationAggregatedListItems where-        parseJSON-          = withObject "OperationAggregatedListItems"-              (\ o ->-                 OperationAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON OperationAggregatedListItems where-        toJSON = toJSON . _oaliAddtional------- /See:/ 'instanceGroupManagerActionsSummary' smart constructor.-data InstanceGroupManagerActionsSummary = InstanceGroupManagerActionsSummary'-    { _igmasDeleting   :: !(Maybe (Textual Int32))-    , _igmasRestarting :: !(Maybe (Textual Int32))-    , _igmasNone       :: !(Maybe (Textual Int32))-    , _igmasCreating   :: !(Maybe (Textual Int32))-    , _igmasRefreshing :: !(Maybe (Textual Int32))-    , _igmasRecreating :: !(Maybe (Textual Int32))-    , _igmasAbandoning :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagerActionsSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmasDeleting'------ * 'igmasRestarting'------ * 'igmasNone'------ * 'igmasCreating'------ * 'igmasRefreshing'------ * 'igmasRecreating'------ * 'igmasAbandoning'-instanceGroupManagerActionsSummary-    :: InstanceGroupManagerActionsSummary-instanceGroupManagerActionsSummary =-    InstanceGroupManagerActionsSummary'-    { _igmasDeleting = Nothing-    , _igmasRestarting = Nothing-    , _igmasNone = Nothing-    , _igmasCreating = Nothing-    , _igmasRefreshing = 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 one of these instances, it tries again until it creates--- the instance successfully.-igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)-igmasCreating-  = lens _igmasCreating-      (\ s a -> s{_igmasCreating = a})-      . mapping _Coerce---- | [Output Only] The number of instances in the managed instance group that--- are being reconfigured with properties that do not require a restart or--- a recreate action. For example, setting or removing target pools for the--- instance.-igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)-igmasRefreshing-  = lens _igmasRefreshing-      (\ s a -> s{_igmasRefreshing = a})-      . mapping _Coerce---- | [Output Only] The number of instances in the managed instance group that--- are scheduled to be recreated or are currently being being recreated.--- Recreating an instance deletes the existing root persistent disk and--- creates a new disk from the image that is defined in the instance--- template.-igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)-igmasRecreating-  = lens _igmasRecreating-      (\ s a -> s{_igmasRecreating = a})-      . mapping _Coerce---- | [Output Only] The total number of instances in the managed instance--- group that are scheduled to be abandoned. Abandoning an instance removes--- it from the managed instance group without deleting it.-igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)-igmasAbandoning-  = lens _igmasAbandoning-      (\ s a -> s{_igmasAbandoning = a})-      . mapping _Coerce--instance FromJSON InstanceGroupManagerActionsSummary-         where-        parseJSON-          = withObject "InstanceGroupManagerActionsSummary"-              (\ o ->-                 InstanceGroupManagerActionsSummary' <$>-                   (o .:? "deleting") <*> (o .:? "restarting") <*>-                     (o .:? "none")-                     <*> (o .:? "creating")-                     <*> (o .:? "refreshing")-                     <*> (o .:? "recreating")-                     <*> (o .:? "abandoning"))--instance ToJSON InstanceGroupManagerActionsSummary-         where-        toJSON InstanceGroupManagerActionsSummary'{..}-          = object-              (catMaybes-                 [("deleting" .=) <$> _igmasDeleting,-                  ("restarting" .=) <$> _igmasRestarting,-                  ("none" .=) <$> _igmasNone,-                  ("creating" .=) <$> _igmasCreating,-                  ("refreshing" .=) <$> _igmasRefreshing,-                  ("recreating" .=) <$> _igmasRecreating,-                  ("abandoning" .=) <$> _igmasAbandoning])---- | A service account.------ /See:/ 'serviceAccount' smart constructor.-data ServiceAccount = ServiceAccount'-    { _saEmail  :: !(Maybe Text)-    , _saScopes :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'saEmail'------ * 'saScopes'-serviceAccount-    :: ServiceAccount-serviceAccount =-    ServiceAccount'-    { _saEmail = Nothing-    , _saScopes = Nothing-    }---- | Email address of the service account.-saEmail :: Lens' ServiceAccount (Maybe Text)-saEmail = lens _saEmail (\ s a -> s{_saEmail = a})---- | The list of scopes to be made available for this service account.-saScopes :: Lens' ServiceAccount [Text]-saScopes-  = lens _saScopes (\ s a -> s{_saScopes = a}) .-      _Default-      . _Coerce--instance FromJSON ServiceAccount where-        parseJSON-          = withObject "ServiceAccount"-              (\ o ->-                 ServiceAccount' <$>-                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))--instance ToJSON ServiceAccount where-        toJSON ServiceAccount'{..}-          = object-              (catMaybes-                 [("email" .=) <$> _saEmail,-                  ("scopes" .=) <$> _saScopes])---- | Contains a list of networks.------ /See:/ 'networkList' smart constructor.-data NetworkList = NetworkList'-    { _nlNextPageToken :: !(Maybe Text)-    , _nlKind          :: !Text-    , _nlItems         :: !(Maybe [Network])-    , _nlSelfLink      :: !(Maybe Text)-    , _nlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'NetworkList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'nlNextPageToken'------ * 'nlKind'------ * 'nlItems'------ * 'nlSelfLink'------ * 'nlId'-networkList-    :: NetworkList-networkList =-    NetworkList'-    { _nlNextPageToken = Nothing-    , _nlKind = "compute#networkList"-    , _nlItems = Nothing-    , _nlSelfLink = Nothing-    , _nlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-nlNextPageToken :: Lens' NetworkList (Maybe Text)-nlNextPageToken-  = lens _nlNextPageToken-      (\ s a -> s{_nlNextPageToken = a})---- | [Output Only] Type of resource. Always compute#networkList for lists of--- networks.-nlKind :: Lens' NetworkList Text-nlKind = lens _nlKind (\ s a -> s{_nlKind = a})---- | [Output Only] A list of Network resources.-nlItems :: Lens' NetworkList [Network]-nlItems-  = lens _nlItems (\ s a -> s{_nlItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource .-nlSelfLink :: Lens' NetworkList (Maybe Text)-nlSelfLink-  = lens _nlSelfLink (\ s a -> s{_nlSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-nlId :: Lens' NetworkList (Maybe Text)-nlId = lens _nlId (\ s a -> s{_nlId = a})--instance FromJSON NetworkList where-        parseJSON-          = withObject "NetworkList"-              (\ o ->-                 NetworkList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#networkList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON NetworkList where-        toJSON NetworkList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _nlNextPageToken,-                  Just ("kind" .= _nlKind), ("items" .=) <$> _nlItems,-                  ("selfLink" .=) <$> _nlSelfLink,-                  ("id" .=) <$> _nlId])------- /See:/ 'instanceGroupsListInstancesRequest' smart constructor.-newtype InstanceGroupsListInstancesRequest = InstanceGroupsListInstancesRequest'-    { _iglirInstanceState :: Maybe InstanceGroupsListInstancesRequestInstanceState-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsListInstancesRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iglirInstanceState'-instanceGroupsListInstancesRequest-    :: InstanceGroupsListInstancesRequest-instanceGroupsListInstancesRequest =-    InstanceGroupsListInstancesRequest'-    { _iglirInstanceState = Nothing-    }---- | A filter for the state of the instances in the instance group. Valid--- options are ALL or RUNNING. If you do not specify this parameter the--- list includes all instances regardless of their state.-iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)-iglirInstanceState-  = lens _iglirInstanceState-      (\ s a -> s{_iglirInstanceState = a})--instance FromJSON InstanceGroupsListInstancesRequest-         where-        parseJSON-          = withObject "InstanceGroupsListInstancesRequest"-              (\ o ->-                 InstanceGroupsListInstancesRequest' <$>-                   (o .:? "instanceState"))--instance ToJSON InstanceGroupsListInstancesRequest-         where-        toJSON InstanceGroupsListInstancesRequest'{..}-          = object-              (catMaybes-                 [("instanceState" .=) <$> _iglirInstanceState])---- | [Output Only] A map of scoped target pool lists.------ /See:/ 'targetPoolAggregatedListItems' smart constructor.-newtype TargetPoolAggregatedListItems = TargetPoolAggregatedListItems'-    { _tpaliAddtional :: HashMap Text TargetPoolsScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpaliAddtional'-targetPoolAggregatedListItems-    :: HashMap Text TargetPoolsScopedList -- ^ 'tpaliAddtional'-    -> TargetPoolAggregatedListItems-targetPoolAggregatedListItems pTpaliAddtional_ =-    TargetPoolAggregatedListItems'-    { _tpaliAddtional = _Coerce # pTpaliAddtional_-    }---- | Name of the scope containing this set of target pools.-tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)-tpaliAddtional-  = lens _tpaliAddtional-      (\ s a -> s{_tpaliAddtional = a})-      . _Coerce--instance FromJSON TargetPoolAggregatedListItems where-        parseJSON-          = withObject "TargetPoolAggregatedListItems"-              (\ o ->-                 TargetPoolAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON TargetPoolAggregatedListItems where-        toJSON = toJSON . _tpaliAddtional------- /See:/ 'targetInstancesScopedList' smart constructor.-data TargetInstancesScopedList = TargetInstancesScopedList'-    { _tislWarning         :: !(Maybe TargetInstancesScopedListWarning)-    , _tislTargetInstances :: !(Maybe [TargetInstance])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstancesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tislWarning'------ * 'tislTargetInstances'-targetInstancesScopedList-    :: TargetInstancesScopedList-targetInstancesScopedList =-    TargetInstancesScopedList'-    { _tislWarning = Nothing-    , _tislTargetInstances = Nothing-    }---- | Informational warning which replaces the list of addresses when the list--- is empty.-tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)-tislWarning-  = lens _tislWarning (\ s a -> s{_tislWarning = a})---- | List of target instances contained in this scope.-tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]-tislTargetInstances-  = lens _tislTargetInstances-      (\ s a -> s{_tislTargetInstances = a})-      . _Default-      . _Coerce--instance FromJSON TargetInstancesScopedList where-        parseJSON-          = withObject "TargetInstancesScopedList"-              (\ o ->-                 TargetInstancesScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "targetInstances" .!= mempty))--instance ToJSON TargetInstancesScopedList where-        toJSON TargetInstancesScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _tislWarning,-                  ("targetInstances" .=) <$> _tislTargetInstances])---- | [Output Only] A map of scoped address lists.------ /See:/ 'addressAggregatedListItems' smart constructor.-newtype AddressAggregatedListItems = AddressAggregatedListItems'-    { _aAddtional :: HashMap Text AddressesScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aAddtional'-addressAggregatedListItems-    :: HashMap Text AddressesScopedList -- ^ 'aAddtional'-    -> AddressAggregatedListItems-addressAggregatedListItems pAAddtional_ =-    AddressAggregatedListItems'-    { _aAddtional = _Coerce # pAAddtional_-    }---- | [Output Only] Name of the scope containing this set of addresses.-aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)-aAddtional-  = lens _aAddtional (\ s a -> s{_aAddtional = a}) .-      _Coerce--instance FromJSON AddressAggregatedListItems where-        parseJSON-          = withObject "AddressAggregatedListItems"-              (\ o ->-                 AddressAggregatedListItems' <$> (parseJSONObject o))--instance ToJSON AddressAggregatedListItems where-        toJSON = toJSON . _aAddtional---- | Contains a list of Autoscaler resources.------ /See:/ 'autoscalerList' smart constructor.-data AutoscalerList = AutoscalerList'-    { _autNextPageToken :: !(Maybe Text)-    , _autKind          :: !Text-    , _autItems         :: !(Maybe [Autoscaler])-    , _autSelfLink      :: !(Maybe Text)-    , _autId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalerList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'autNextPageToken'------ * 'autKind'------ * 'autItems'------ * 'autSelfLink'------ * 'autId'-autoscalerList-    :: AutoscalerList-autoscalerList =-    AutoscalerList'-    { _autNextPageToken = Nothing-    , _autKind = "compute#autoscalerList"-    , _autItems = Nothing-    , _autSelfLink = Nothing-    , _autId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-autNextPageToken :: Lens' AutoscalerList (Maybe Text)-autNextPageToken-  = lens _autNextPageToken-      (\ s a -> s{_autNextPageToken = a})---- | [Output Only] Type of resource. Always compute#autoscalerList for lists--- of autoscalers.-autKind :: Lens' AutoscalerList Text-autKind = lens _autKind (\ s a -> s{_autKind = a})---- | A list of Autoscaler resources.-autItems :: Lens' AutoscalerList [Autoscaler]-autItems-  = lens _autItems (\ s a -> s{_autItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-autSelfLink :: Lens' AutoscalerList (Maybe Text)-autSelfLink-  = lens _autSelfLink (\ s a -> s{_autSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-autId :: Lens' AutoscalerList (Maybe Text)-autId = lens _autId (\ s a -> s{_autId = a})--instance FromJSON AutoscalerList where-        parseJSON-          = withObject "AutoscalerList"-              (\ o ->-                 AutoscalerList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#autoscalerList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON AutoscalerList where-        toJSON AutoscalerList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _autNextPageToken,-                  Just ("kind" .= _autKind),-                  ("items" .=) <$> _autItems,-                  ("selfLink" .=) <$> _autSelfLink,-                  ("id" .=) <$> _autId])------- /See:/ 'vpnTunnelAggregatedList' smart constructor.-data VPNTunnelAggregatedList = VPNTunnelAggregatedList'-    { _vtalNextPageToken :: !(Maybe Text)-    , _vtalKind          :: !Text-    , _vtalItems         :: !(Maybe VPNTunnelAggregatedListItems)-    , _vtalSelfLink      :: !(Maybe Text)-    , _vtalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtalNextPageToken'------ * 'vtalKind'------ * 'vtalItems'------ * 'vtalSelfLink'------ * 'vtalId'-vpnTunnelAggregatedList-    :: VPNTunnelAggregatedList-vpnTunnelAggregatedList =-    VPNTunnelAggregatedList'-    { _vtalNextPageToken = Nothing-    , _vtalKind = "compute#vpnTunnelAggregatedList"-    , _vtalItems = Nothing-    , _vtalSelfLink = Nothing-    , _vtalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)-vtalNextPageToken-  = lens _vtalNextPageToken-      (\ s a -> s{_vtalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN--- tunnels.-vtalKind :: Lens' VPNTunnelAggregatedList Text-vtalKind = lens _vtalKind (\ s a -> s{_vtalKind = a})---- | [Output Only] A map of scoped vpn tunnel lists.-vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)-vtalItems-  = lens _vtalItems (\ s a -> s{_vtalItems = a})---- | [Output Only] Server-defined URL for this resource.-vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)-vtalSelfLink-  = lens _vtalSelfLink (\ s a -> s{_vtalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)-vtalId = lens _vtalId (\ s a -> s{_vtalId = a})--instance FromJSON VPNTunnelAggregatedList where-        parseJSON-          = withObject "VPNTunnelAggregatedList"-              (\ o ->-                 VPNTunnelAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#vpnTunnelAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON VPNTunnelAggregatedList where-        toJSON VPNTunnelAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _vtalNextPageToken,-                  Just ("kind" .= _vtalKind),-                  ("items" .=) <$> _vtalItems,-                  ("selfLink" .=) <$> _vtalSelfLink,-                  ("id" .=) <$> _vtalId])---- | An instance-attached disk resource.------ /See:/ 'attachedDisk' smart constructor.-data AttachedDisk = AttachedDisk'-    { _adKind             :: !Text-    , _adMode             :: !(Maybe AttachedDiskMode)-    , _adBoot             :: !(Maybe Bool)-    , _adAutoDelete       :: !(Maybe Bool)-    , _adInitializeParams :: !(Maybe AttachedDiskInitializeParams)-    , _adDeviceName       :: !(Maybe Text)-    , _adInterface        :: !(Maybe AttachedDiskInterface)-    , _adSource           :: !(Maybe Text)-    , _adLicenses         :: !(Maybe [Text])-    , _adType             :: !(Maybe AttachedDiskType)-    , _adIndex            :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AttachedDisk' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'adKind'------ * 'adMode'------ * 'adBoot'------ * 'adAutoDelete'------ * 'adInitializeParams'------ * 'adDeviceName'------ * 'adInterface'------ * 'adSource'------ * 'adLicenses'------ * 'adType'------ * 'adIndex'-attachedDisk-    :: AttachedDisk-attachedDisk =-    AttachedDisk'-    { _adKind = "compute#attachedDisk"-    , _adMode = Nothing-    , _adBoot = Nothing-    , _adAutoDelete = Nothing-    , _adInitializeParams = Nothing-    , _adDeviceName = Nothing-    , _adInterface = Nothing-    , _adSource = Nothing-    , _adLicenses = Nothing-    , _adType = Nothing-    , _adIndex = Nothing-    }---- | [Output Only] Type of the resource. Always compute#attachedDisk for--- attached disks.-adKind :: Lens' AttachedDisk Text-adKind = lens _adKind (\ s a -> s{_adKind = a})---- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.--- If not specified, the default is to attach the disk in READ_WRITE mode.-adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)-adMode = lens _adMode (\ s a -> s{_adMode = a})---- | Indicates that this is a boot disk. The virtual machine will use the--- first partition of the disk for its root filesystem.-adBoot :: Lens' AttachedDisk (Maybe Bool)-adBoot = lens _adBoot (\ s a -> s{_adBoot = a})---- | Specifies whether the disk will be auto-deleted when the instance is--- deleted (but not when the disk is detached from the instance).-adAutoDelete :: Lens' AttachedDisk (Maybe Bool)-adAutoDelete-  = lens _adAutoDelete (\ s a -> s{_adAutoDelete = a})---- | [Input Only] Specifies the parameters for a new disk that will be--- created alongside the new instance. Use initialization parameters to--- create boot disks or local SSDs attached to the new instance. This--- property is mutually exclusive with the source property; you can only--- define one or the other, but not both.-adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)-adInitializeParams-  = lens _adInitializeParams-      (\ s a -> s{_adInitializeParams = a})---- | Specifies a unique device name of your choice that is reflected into the--- \/dev\/disk\/by-id\/google-* tree of a Linux operating system running--- within the instance. This name can be used to reference the device for--- mounting, resizing, and so on, from within the instance. If not--- specified, the server chooses a default device name to apply to this--- disk, in the form persistent-disks-x, where x is a number assigned by--- Google Compute Engine. This field is only applicable for persistent--- disks.-adDeviceName :: Lens' AttachedDisk (Maybe Text)-adDeviceName-  = lens _adDeviceName (\ s a -> s{_adDeviceName = a})---- | Specifies the disk interface to use for attaching this disk, which is--- either SCSI or NVME. The default is SCSI. Persistent disks must always--- use SCSI and the request will fail if you attempt to attach a persistent--- disk in any other format than SCSI. Local SSDs can use either NVME or--- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD--- performance.-adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)-adInterface-  = lens _adInterface (\ s a -> s{_adInterface = a})---- | Specifies a valid partial or full URL to an existing Persistent Disk--- resource. This field is only applicable for persistent disks.-adSource :: Lens' AttachedDisk (Maybe Text)-adSource = lens _adSource (\ s a -> s{_adSource = a})---- | [Output Only] Any valid publicly visible licenses.-adLicenses :: Lens' AttachedDisk [Text]-adLicenses-  = lens _adLicenses (\ s a -> s{_adLicenses = a}) .-      _Default-      . _Coerce---- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not--- specified, the default is PERSISTENT.-adType :: Lens' AttachedDisk (Maybe AttachedDiskType)-adType = lens _adType (\ s a -> s{_adType = a})---- | Assigns a zero-based index to this disk, where 0 is reserved for the--- boot disk. For example, if you have many disks attached to an instance,--- each disk would have a unique index number. If not specified, the server--- will choose an appropriate value.-adIndex :: Lens' AttachedDisk (Maybe Int32)-adIndex-  = lens _adIndex (\ s a -> s{_adIndex = a}) .-      mapping _Coerce--instance FromJSON AttachedDisk where-        parseJSON-          = withObject "AttachedDisk"-              (\ o ->-                 AttachedDisk' <$>-                   (o .:? "kind" .!= "compute#attachedDisk") <*>-                     (o .:? "mode")-                     <*> (o .:? "boot")-                     <*> (o .:? "autoDelete")-                     <*> (o .:? "initializeParams")-                     <*> (o .:? "deviceName")-                     <*> (o .:? "interface")-                     <*> (o .:? "source")-                     <*> (o .:? "licenses" .!= mempty)-                     <*> (o .:? "type")-                     <*> (o .:? "index"))--instance ToJSON AttachedDisk where-        toJSON AttachedDisk'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _adKind), ("mode" .=) <$> _adMode,-                  ("boot" .=) <$> _adBoot,-                  ("autoDelete" .=) <$> _adAutoDelete,-                  ("initializeParams" .=) <$> _adInitializeParams,-                  ("deviceName" .=) <$> _adDeviceName,-                  ("interface" .=) <$> _adInterface,-                  ("source" .=) <$> _adSource,-                  ("licenses" .=) <$> _adLicenses,-                  ("type" .=) <$> _adType, ("index" .=) <$> _adIndex])---- | Contains a list of disk types.------ /See:/ 'diskTypeList' smart constructor.-data DiskTypeList = DiskTypeList'-    { _dtlNextPageToken :: !(Maybe Text)-    , _dtlKind          :: !Text-    , _dtlItems         :: !(Maybe [DiskType])-    , _dtlSelfLink      :: !(Maybe Text)-    , _dtlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypeList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtlNextPageToken'------ * 'dtlKind'------ * 'dtlItems'------ * 'dtlSelfLink'------ * 'dtlId'-diskTypeList-    :: DiskTypeList-diskTypeList =-    DiskTypeList'-    { _dtlNextPageToken = Nothing-    , _dtlKind = "compute#diskTypeList"-    , _dtlItems = Nothing-    , _dtlSelfLink = Nothing-    , _dtlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)-dtlNextPageToken-  = lens _dtlNextPageToken-      (\ s a -> s{_dtlNextPageToken = a})---- | [Output Only] Type of resource. Always compute#diskTypeList for disk--- types.-dtlKind :: Lens' DiskTypeList Text-dtlKind = lens _dtlKind (\ s a -> s{_dtlKind = a})---- | [Output Only] A list of Disk Type resources.-dtlItems :: Lens' DiskTypeList [DiskType]-dtlItems-  = lens _dtlItems (\ s a -> s{_dtlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-dtlSelfLink :: Lens' DiskTypeList (Maybe Text)-dtlSelfLink-  = lens _dtlSelfLink (\ s a -> s{_dtlSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-dtlId :: Lens' DiskTypeList (Maybe Text)-dtlId = lens _dtlId (\ s a -> s{_dtlId = a})--instance FromJSON DiskTypeList where-        parseJSON-          = withObject "DiskTypeList"-              (\ o ->-                 DiskTypeList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#diskTypeList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON DiskTypeList where-        toJSON DiskTypeList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _dtlNextPageToken,-                  Just ("kind" .= _dtlKind),-                  ("items" .=) <$> _dtlItems,-                  ("selfLink" .=) <$> _dtlSelfLink,-                  ("id" .=) <$> _dtlId])---- | Contains a list of machine types.------ /See:/ 'machineTypeList' smart constructor.-data MachineTypeList = MachineTypeList'-    { _mtlNextPageToken :: !(Maybe Text)-    , _mtlKind          :: !Text-    , _mtlItems         :: !(Maybe [MachineType])-    , _mtlSelfLink      :: !(Maybe Text)-    , _mtlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypeList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtlNextPageToken'------ * 'mtlKind'------ * 'mtlItems'------ * 'mtlSelfLink'------ * 'mtlId'-machineTypeList-    :: MachineTypeList-machineTypeList =-    MachineTypeList'-    { _mtlNextPageToken = Nothing-    , _mtlKind = "compute#machineTypeList"-    , _mtlItems = Nothing-    , _mtlSelfLink = Nothing-    , _mtlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)-mtlNextPageToken-  = lens _mtlNextPageToken-      (\ s a -> s{_mtlNextPageToken = a})---- | [Output Only] Type of resource. Always compute#machineTypeList for lists--- of machine types.-mtlKind :: Lens' MachineTypeList Text-mtlKind = lens _mtlKind (\ s a -> s{_mtlKind = a})---- | [Output Only] A list of Machine Type resources.-mtlItems :: Lens' MachineTypeList [MachineType]-mtlItems-  = lens _mtlItems (\ s a -> s{_mtlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-mtlSelfLink :: Lens' MachineTypeList (Maybe Text)-mtlSelfLink-  = lens _mtlSelfLink (\ s a -> s{_mtlSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-mtlId :: Lens' MachineTypeList (Maybe Text)-mtlId = lens _mtlId (\ s a -> s{_mtlId = a})--instance FromJSON MachineTypeList where-        parseJSON-          = withObject "MachineTypeList"-              (\ o ->-                 MachineTypeList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#machineTypeList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON MachineTypeList where-        toJSON MachineTypeList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _mtlNextPageToken,-                  Just ("kind" .= _mtlKind),-                  ("items" .=) <$> _mtlItems,-                  ("selfLink" .=) <$> _mtlSelfLink,-                  ("id" .=) <$> _mtlId])---- | A list of TargetHttpProxy resources.------ /See:/ 'targetHTTPProxyList' smart constructor.-data TargetHTTPProxyList = TargetHTTPProxyList'-    { _thttpplNextPageToken :: !(Maybe Text)-    , _thttpplKind          :: !Text-    , _thttpplItems         :: !(Maybe [TargetHTTPProxy])-    , _thttpplSelfLink      :: !(Maybe Text)-    , _thttpplId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetHTTPProxyList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'thttpplNextPageToken'------ * 'thttpplKind'------ * 'thttpplItems'------ * 'thttpplSelfLink'------ * 'thttpplId'-targetHTTPProxyList-    :: TargetHTTPProxyList-targetHTTPProxyList =-    TargetHTTPProxyList'-    { _thttpplNextPageToken = Nothing-    , _thttpplKind = "compute#targetHttpProxyList"-    , _thttpplItems = Nothing-    , _thttpplSelfLink = Nothing-    , _thttpplId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)-thttpplNextPageToken-  = lens _thttpplNextPageToken-      (\ s a -> s{_thttpplNextPageToken = a})---- | Type of resource. Always compute#targetHttpProxyList for lists of target--- HTTP proxies.-thttpplKind :: Lens' TargetHTTPProxyList Text-thttpplKind-  = lens _thttpplKind (\ s a -> s{_thttpplKind = a})---- | A list of TargetHttpProxy resources.-thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]-thttpplItems-  = lens _thttpplItems (\ s a -> s{_thttpplItems = a})-      . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)-thttpplSelfLink-  = lens _thttpplSelfLink-      (\ s a -> s{_thttpplSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)-thttpplId-  = lens _thttpplId (\ s a -> s{_thttpplId = a})--instance FromJSON TargetHTTPProxyList where-        parseJSON-          = withObject "TargetHTTPProxyList"-              (\ o ->-                 TargetHTTPProxyList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#targetHttpProxyList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetHTTPProxyList where-        toJSON TargetHTTPProxyList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _thttpplNextPageToken,-                  Just ("kind" .= _thttpplKind),-                  ("items" .=) <$> _thttpplItems,-                  ("selfLink" .=) <$> _thttpplSelfLink,-                  ("id" .=) <$> _thttpplId])------- /See:/ 'diskTypesScopedList' smart constructor.-data DiskTypesScopedList = DiskTypesScopedList'-    { _dtslDiskTypes :: !(Maybe [DiskType])-    , _dtslWarning   :: !(Maybe DiskTypesScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtslDiskTypes'------ * 'dtslWarning'-diskTypesScopedList-    :: DiskTypesScopedList-diskTypesScopedList =-    DiskTypesScopedList'-    { _dtslDiskTypes = Nothing-    , _dtslWarning = Nothing-    }---- | [Output Only] List of disk types contained in this scope.-dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]-dtslDiskTypes-  = lens _dtslDiskTypes-      (\ s a -> s{_dtslDiskTypes = a})-      . _Default-      . _Coerce---- | [Output Only] Informational warning which replaces the list of disk--- types when the list is empty.-dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)-dtslWarning-  = lens _dtslWarning (\ s a -> s{_dtslWarning = a})--instance FromJSON DiskTypesScopedList where-        parseJSON-          = withObject "DiskTypesScopedList"-              (\ o ->-                 DiskTypesScopedList' <$>-                   (o .:? "diskTypes" .!= mempty) <*> (o .:? "warning"))--instance ToJSON DiskTypesScopedList where-        toJSON DiskTypesScopedList'{..}-          = object-              (catMaybes-                 [("diskTypes" .=) <$> _dtslDiskTypes,-                  ("warning" .=) <$> _dtslWarning])------- /See:/ 'diskTypeAggregatedList' smart constructor.-data DiskTypeAggregatedList = DiskTypeAggregatedList'-    { _dtalNextPageToken :: !(Maybe Text)-    , _dtalKind          :: !Text-    , _dtalItems         :: !(Maybe DiskTypeAggregatedListItems)-    , _dtalSelfLink      :: !(Maybe Text)-    , _dtalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypeAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtalNextPageToken'------ * 'dtalKind'------ * 'dtalItems'------ * 'dtalSelfLink'------ * 'dtalId'-diskTypeAggregatedList-    :: DiskTypeAggregatedList-diskTypeAggregatedList =-    DiskTypeAggregatedList'-    { _dtalNextPageToken = Nothing-    , _dtalKind = "compute#diskTypeAggregatedList"-    , _dtalItems = Nothing-    , _dtalSelfLink = Nothing-    , _dtalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)-dtalNextPageToken-  = lens _dtalNextPageToken-      (\ s a -> s{_dtalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#diskTypeAggregatedList.-dtalKind :: Lens' DiskTypeAggregatedList Text-dtalKind = lens _dtalKind (\ s a -> s{_dtalKind = a})---- | [Output Only] A map of scoped disk type lists.-dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)-dtalItems-  = lens _dtalItems (\ s a -> s{_dtalItems = a})---- | [Output Only] Server-defined URL for this resource.-dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)-dtalSelfLink-  = lens _dtalSelfLink (\ s a -> s{_dtalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)-dtalId = lens _dtalId (\ s a -> s{_dtalId = a})--instance FromJSON DiskTypeAggregatedList where-        parseJSON-          = withObject "DiskTypeAggregatedList"-              (\ o ->-                 DiskTypeAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#diskTypeAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON DiskTypeAggregatedList where-        toJSON DiskTypeAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _dtalNextPageToken,-                  Just ("kind" .= _dtalKind),-                  ("items" .=) <$> _dtalItems,-                  ("selfLink" .=) <$> _dtalSelfLink,-                  ("id" .=) <$> _dtalId])---- | An HttpHealthCheck resource. This resource defines a template for how--- individual instances should be checked for health, via HTTP.------ /See:/ 'hTTPHealthCheck' smart constructor.-data HTTPHealthCheck = HTTPHealthCheck'-    { _httphcHealthyThreshold   :: !(Maybe (Textual Int32))-    , _httphcKind               :: !Text-    , _httphcRequestPath        :: !(Maybe Text)-    , _httphcSelfLink           :: !(Maybe Text)-    , _httphcCheckIntervalSec   :: !(Maybe (Textual Int32))-    , _httphcName               :: !(Maybe Text)-    , _httphcCreationTimestamp  :: !(Maybe Text)-    , _httphcId                 :: !(Maybe (Textual Word64))-    , _httphcHost               :: !(Maybe Text)-    , _httphcTimeoutSec         :: !(Maybe (Textual Int32))-    , _httphcDescription        :: !(Maybe Text)-    , _httphcUnhealthyThreshold :: !(Maybe (Textual Int32))-    , _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:------ * 'httphcHealthyThreshold'------ * 'httphcKind'------ * 'httphcRequestPath'------ * 'httphcSelfLink'------ * 'httphcCheckIntervalSec'------ * 'httphcName'------ * 'httphcCreationTimestamp'------ * 'httphcId'------ * 'httphcHost'------ * 'httphcTimeoutSec'------ * 'httphcDescription'------ * 'httphcUnhealthyThreshold'------ * 'httphcPort'-hTTPHealthCheck-    :: HTTPHealthCheck-hTTPHealthCheck =-    HTTPHealthCheck'-    { _httphcHealthyThreshold = Nothing-    , _httphcKind = "compute#httpHealthCheck"-    , _httphcRequestPath = Nothing-    , _httphcSelfLink = Nothing-    , _httphcCheckIntervalSec = Nothing-    , _httphcName = Nothing-    , _httphcCreationTimestamp = Nothing-    , _httphcId = Nothing-    , _httphcHost = Nothing-    , _httphcTimeoutSec = Nothing-    , _httphcDescription = Nothing-    , _httphcUnhealthyThreshold = Nothing-    , _httphcPort = Nothing-    }---- | A so-far unhealthy instance will be marked healthy after this many--- consecutive successes. The default value is 2.-httphcHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)-httphcHealthyThreshold-  = lens _httphcHealthyThreshold-      (\ s a -> s{_httphcHealthyThreshold = a})-      . mapping _Coerce---- | [Output Only] Type of the resource. Always compute#httpHealthCheck for--- HTTP health checks.-httphcKind :: Lens' HTTPHealthCheck Text-httphcKind-  = lens _httphcKind (\ s a -> s{_httphcKind = 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})---- | [Output Only] Server-defined URL for the resource.-httphcSelfLink :: Lens' HTTPHealthCheck (Maybe Text)-httphcSelfLink-  = lens _httphcSelfLink-      (\ s a -> s{_httphcSelfLink = a})---- | How often (in seconds) to send a health check. The default value is 5--- seconds.-httphcCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)-httphcCheckIntervalSec-  = lens _httphcCheckIntervalSec-      (\ s a -> s{_httphcCheckIntervalSec = 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.-httphcName :: Lens' HTTPHealthCheck (Maybe Text)-httphcName-  = lens _httphcName (\ s a -> s{_httphcName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-httphcCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)-httphcCreationTimestamp-  = lens _httphcCreationTimestamp-      (\ s a -> s{_httphcCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-httphcId :: Lens' HTTPHealthCheck (Maybe Word64)-httphcId-  = lens _httphcId (\ s a -> s{_httphcId = a}) .-      mapping _Coerce---- | The value of the host header in the HTTP health check request. If left--- empty (default value), the public 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})---- | 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.-httphcTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)-httphcTimeoutSec-  = lens _httphcTimeoutSec-      (\ s a -> s{_httphcTimeoutSec = a})-      . mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-httphcDescription :: Lens' HTTPHealthCheck (Maybe Text)-httphcDescription-  = lens _httphcDescription-      (\ s a -> s{_httphcDescription = a})---- | A so-far healthy instance will be marked unhealthy after this many--- consecutive failures. The default value is 2.-httphcUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)-httphcUnhealthyThreshold-  = lens _httphcUnhealthyThreshold-      (\ s a -> s{_httphcUnhealthyThreshold = a})-      . mapping _Coerce---- | The TCP port number for the HTTP health check request. The default value--- is 80.-httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)-httphcPort-  = lens _httphcPort (\ s a -> s{_httphcPort = a}) .-      mapping _Coerce--instance FromJSON HTTPHealthCheck where-        parseJSON-          = withObject "HTTPHealthCheck"-              (\ o ->-                 HTTPHealthCheck' <$>-                   (o .:? "healthyThreshold") <*>-                     (o .:? "kind" .!= "compute#httpHealthCheck")-                     <*> (o .:? "requestPath")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "checkIntervalSec")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "host")-                     <*> (o .:? "timeoutSec")-                     <*> (o .:? "description")-                     <*> (o .:? "unhealthyThreshold")-                     <*> (o .:? "port"))--instance ToJSON HTTPHealthCheck where-        toJSON HTTPHealthCheck'{..}-          = object-              (catMaybes-                 [("healthyThreshold" .=) <$> _httphcHealthyThreshold,-                  Just ("kind" .= _httphcKind),-                  ("requestPath" .=) <$> _httphcRequestPath,-                  ("selfLink" .=) <$> _httphcSelfLink,-                  ("checkIntervalSec" .=) <$> _httphcCheckIntervalSec,-                  ("name" .=) <$> _httphcName,-                  ("creationTimestamp" .=) <$>-                    _httphcCreationTimestamp,-                  ("id" .=) <$> _httphcId, ("host" .=) <$> _httphcHost,-                  ("timeoutSec" .=) <$> _httphcTimeoutSec,-                  ("description" .=) <$> _httphcDescription,-                  ("unhealthyThreshold" .=) <$>-                    _httphcUnhealthyThreshold,-                  ("port" .=) <$> _httphcPort])------- /See:/ 'backendServiceGroupHealth' smart constructor.-data BackendServiceGroupHealth = BackendServiceGroupHealth'-    { _bsghKind         :: !Text-    , _bsghHealthStatus :: !(Maybe [HealthStatus])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BackendServiceGroupHealth' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bsghKind'------ * 'bsghHealthStatus'-backendServiceGroupHealth-    :: BackendServiceGroupHealth-backendServiceGroupHealth =-    BackendServiceGroupHealth'-    { _bsghKind = "compute#backendServiceGroupHealth"-    , _bsghHealthStatus = Nothing-    }---- | [Output Only] Type of resource. Always compute#backendServiceGroupHealth--- for the health of backend services.-bsghKind :: Lens' BackendServiceGroupHealth Text-bsghKind = lens _bsghKind (\ s a -> s{_bsghKind = a})--bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]-bsghHealthStatus-  = lens _bsghHealthStatus-      (\ s a -> s{_bsghHealthStatus = a})-      . _Default-      . _Coerce--instance FromJSON BackendServiceGroupHealth where-        parseJSON-          = withObject "BackendServiceGroupHealth"-              (\ o ->-                 BackendServiceGroupHealth' <$>-                   (o .:? "kind" .!=-                      "compute#backendServiceGroupHealth")-                     <*> (o .:? "healthStatus" .!= mempty))--instance ToJSON BackendServiceGroupHealth where-        toJSON BackendServiceGroupHealth'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _bsghKind),-                  ("healthStatus" .=) <$> _bsghHealthStatus])------- /See:/ 'autoscalersScopedList' smart constructor.-data AutoscalersScopedList = AutoscalersScopedList'-    { _aAutoscalers :: !(Maybe [Autoscaler])-    , _aWarning     :: !(Maybe AutoscalersScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalersScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aAutoscalers'------ * 'aWarning'-autoscalersScopedList-    :: AutoscalersScopedList-autoscalersScopedList =-    AutoscalersScopedList'-    { _aAutoscalers = Nothing-    , _aWarning = Nothing-    }---- | [Output Only] List of autoscalers contained in this scope.-aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]-aAutoscalers-  = lens _aAutoscalers (\ s a -> s{_aAutoscalers = a})-      . _Default-      . _Coerce---- | [Output Only] Informational warning which replaces the list of--- autoscalers when the list is empty.-aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)-aWarning = lens _aWarning (\ s a -> s{_aWarning = a})--instance FromJSON AutoscalersScopedList where-        parseJSON-          = withObject "AutoscalersScopedList"-              (\ o ->-                 AutoscalersScopedList' <$>-                   (o .:? "autoscalers" .!= mempty) <*>-                     (o .:? "warning"))--instance ToJSON AutoscalersScopedList where-        toJSON AutoscalersScopedList'{..}-          = object-              (catMaybes-                 [("autoscalers" .=) <$> _aAutoscalers,-                  ("warning" .=) <$> _aWarning])------- /See:/ 'autoscalerAggregatedList' smart constructor.-data AutoscalerAggregatedList = AutoscalerAggregatedList'-    { _aalNextPageToken :: !(Maybe Text)-    , _aalKind          :: !Text-    , _aalItems         :: !(Maybe AutoscalerAggregatedListItems)-    , _aalSelfLink      :: !(Maybe Text)-    , _aalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalerAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aalNextPageToken'------ * 'aalKind'------ * 'aalItems'------ * 'aalSelfLink'------ * 'aalId'-autoscalerAggregatedList-    :: AutoscalerAggregatedList-autoscalerAggregatedList =-    AutoscalerAggregatedList'-    { _aalNextPageToken = Nothing-    , _aalKind = "compute#autoscalerAggregatedList"-    , _aalItems = Nothing-    , _aalSelfLink = Nothing-    , _aalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)-aalNextPageToken-  = lens _aalNextPageToken-      (\ s a -> s{_aalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#autoscalerAggregatedList--- for aggregated lists of autoscalers.-aalKind :: Lens' AutoscalerAggregatedList Text-aalKind = lens _aalKind (\ s a -> s{_aalKind = a})---- | A map of scoped autoscaler lists.-aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)-aalItems = lens _aalItems (\ s a -> s{_aalItems = a})---- | [Output Only] Server-defined URL for this resource.-aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)-aalSelfLink-  = lens _aalSelfLink (\ s a -> s{_aalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-aalId :: Lens' AutoscalerAggregatedList (Maybe Text)-aalId = lens _aalId (\ s a -> s{_aalId = a})--instance FromJSON AutoscalerAggregatedList where-        parseJSON-          = withObject "AutoscalerAggregatedList"-              (\ o ->-                 AutoscalerAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#autoscalerAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON AutoscalerAggregatedList where-        toJSON AutoscalerAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _aalNextPageToken,-                  Just ("kind" .= _aalKind),-                  ("items" .=) <$> _aalItems,-                  ("selfLink" .=) <$> _aalSelfLink,-                  ("id" .=) <$> _aalId])---- | Cloud Autoscaler policy.------ /See:/ 'autoscalingPolicy' smart constructor.-data AutoscalingPolicy = AutoscalingPolicy'-    { _apCustomMetricUtilizations :: !(Maybe [AutoscalingPolicyCustomMetricUtilization])-    , _apMaxNumReplicas           :: !(Maybe (Textual Int32))-    , _apCPUUtilization           :: !(Maybe AutoscalingPolicyCPUUtilization)-    , _apLoadBalancingUtilization :: !(Maybe AutoscalingPolicyLoadBalancingUtilization)-    , _apMinNumReplicas           :: !(Maybe (Textual Int32))-    , _apCoolDownPeriodSec        :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalingPolicy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'apCustomMetricUtilizations'------ * 'apMaxNumReplicas'------ * 'apCPUUtilization'------ * 'apLoadBalancingUtilization'------ * 'apMinNumReplicas'------ * 'apCoolDownPeriodSec'-autoscalingPolicy-    :: AutoscalingPolicy-autoscalingPolicy =-    AutoscalingPolicy'-    { _apCustomMetricUtilizations = Nothing-    , _apMaxNumReplicas = Nothing-    , _apCPUUtilization = Nothing-    , _apLoadBalancingUtilization = Nothing-    , _apMinNumReplicas = Nothing-    , _apCoolDownPeriodSec = Nothing-    }---- | Configuration parameters of autoscaling based on a custom metric.-apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]-apCustomMetricUtilizations-  = lens _apCustomMetricUtilizations-      (\ s a -> s{_apCustomMetricUtilizations = a})-      . _Default-      . _Coerce---- | The maximum number of instances that the autoscaler can scale up to.--- This is required when creating or updating an autoscaler. The maximum--- number of replicas should not be lower than minimal number of replicas.-apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)-apMaxNumReplicas-  = lens _apMaxNumReplicas-      (\ s a -> s{_apMaxNumReplicas = a})-      . mapping _Coerce---- | Defines the CPU utilization policy that allows the autoscaler to scale--- based on the average CPU utilization of a managed instance group.-apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)-apCPUUtilization-  = lens _apCPUUtilization-      (\ s a -> s{_apCPUUtilization = a})---- | Configuration parameters of autoscaling based on load balancer.-apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)-apLoadBalancingUtilization-  = lens _apLoadBalancingUtilization-      (\ s a -> s{_apLoadBalancingUtilization = a})---- | The minimum number of replicas that the autoscaler can scale down to.--- This cannot be less than 0. If not provided, autoscaler will choose a--- default value depending on maximum number of instances allowed.-apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)-apMinNumReplicas-  = lens _apMinNumReplicas-      (\ s a -> s{_apMinNumReplicas = a})-      . mapping _Coerce---- | The number of seconds that the autoscaler should wait before it starts--- collecting information from a new instance. This prevents the autoscaler--- from collecting information when the instance is initializing, during--- which the collected usage would not be reliable. The default time--- autoscaler waits is 60 seconds. Virtual machine initialization times--- might vary because of numerous factors. We recommend that you test how--- long an instance may take to initialize. To do this, create an instance--- and time the startup process.-apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)-apCoolDownPeriodSec-  = lens _apCoolDownPeriodSec-      (\ s a -> s{_apCoolDownPeriodSec = a})-      . mapping _Coerce--instance FromJSON AutoscalingPolicy where-        parseJSON-          = withObject "AutoscalingPolicy"-              (\ o ->-                 AutoscalingPolicy' <$>-                   (o .:? "customMetricUtilizations" .!= mempty) <*>-                     (o .:? "maxNumReplicas")-                     <*> (o .:? "cpuUtilization")-                     <*> (o .:? "loadBalancingUtilization")-                     <*> (o .:? "minNumReplicas")-                     <*> (o .:? "coolDownPeriodSec"))--instance ToJSON AutoscalingPolicy where-        toJSON AutoscalingPolicy'{..}-          = object-              (catMaybes-                 [("customMetricUtilizations" .=) <$>-                    _apCustomMetricUtilizations,-                  ("maxNumReplicas" .=) <$> _apMaxNumReplicas,-                  ("cpuUtilization" .=) <$> _apCPUUtilization,-                  ("loadBalancingUtilization" .=) <$>-                    _apLoadBalancingUtilization,-                  ("minNumReplicas" .=) <$> _apMinNumReplicas,-                  ("coolDownPeriodSec" .=) <$> _apCoolDownPeriodSec])---- | Contains a list of region resources.------ /See:/ 'regionList' smart constructor.-data RegionList = RegionList'-    { _regNextPageToken :: !(Maybe Text)-    , _regKind          :: !Text-    , _regItems         :: !(Maybe [Region])-    , _regSelfLink      :: !(Maybe Text)-    , _regId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RegionList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'regNextPageToken'------ * 'regKind'------ * 'regItems'------ * 'regSelfLink'------ * 'regId'-regionList-    :: RegionList-regionList =-    RegionList'-    { _regNextPageToken = Nothing-    , _regKind = "compute#regionList"-    , _regItems = Nothing-    , _regSelfLink = Nothing-    , _regId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-regNextPageToken :: Lens' RegionList (Maybe Text)-regNextPageToken-  = lens _regNextPageToken-      (\ s a -> s{_regNextPageToken = a})---- | [Output Only] Type of resource. Always compute#regionList for lists of--- regions.-regKind :: Lens' RegionList Text-regKind = lens _regKind (\ s a -> s{_regKind = a})---- | [Output Only] A list of Region resources.-regItems :: Lens' RegionList [Region]-regItems-  = lens _regItems (\ s a -> s{_regItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-regSelfLink :: Lens' RegionList (Maybe Text)-regSelfLink-  = lens _regSelfLink (\ s a -> s{_regSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-regId :: Lens' RegionList (Maybe Text)-regId = lens _regId (\ s a -> s{_regId = a})--instance FromJSON RegionList where-        parseJSON-          = withObject "RegionList"-              (\ o ->-                 RegionList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#regionList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON RegionList where-        toJSON RegionList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _regNextPageToken,-                  Just ("kind" .= _regKind),-                  ("items" .=) <$> _regItems,-                  ("selfLink" .=) <$> _regSelfLink,-                  ("id" .=) <$> _regId])---- | Contains a list of VpnTunnel resources.------ /See:/ 'vpnTunnelList' smart constructor.-data VPNTunnelList = VPNTunnelList'-    { _vtlNextPageToken :: !(Maybe Text)-    , _vtlKind          :: !Text-    , _vtlItems         :: !(Maybe [VPNTunnel])-    , _vtlSelfLink      :: !(Maybe Text)-    , _vtlId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtlNextPageToken'------ * 'vtlKind'------ * 'vtlItems'------ * 'vtlSelfLink'------ * 'vtlId'-vpnTunnelList-    :: VPNTunnelList-vpnTunnelList =-    VPNTunnelList'-    { _vtlNextPageToken = Nothing-    , _vtlKind = "compute#vpnTunnelList"-    , _vtlItems = Nothing-    , _vtlSelfLink = Nothing-    , _vtlId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)-vtlNextPageToken-  = lens _vtlNextPageToken-      (\ s a -> s{_vtlNextPageToken = a})---- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN--- tunnels.-vtlKind :: Lens' VPNTunnelList Text-vtlKind = lens _vtlKind (\ s a -> s{_vtlKind = a})---- | [Output Only] A list of VpnTunnel resources.-vtlItems :: Lens' VPNTunnelList [VPNTunnel]-vtlItems-  = lens _vtlItems (\ s a -> s{_vtlItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for the resource.-vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)-vtlSelfLink-  = lens _vtlSelfLink (\ s a -> s{_vtlSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-vtlId :: Lens' VPNTunnelList (Maybe Text)-vtlId = lens _vtlId (\ s a -> s{_vtlId = a})--instance FromJSON VPNTunnelList where-        parseJSON-          = withObject "VPNTunnelList"-              (\ o ->-                 VPNTunnelList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#vpnTunnelList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON VPNTunnelList where-        toJSON VPNTunnelList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _vtlNextPageToken,-                  Just ("kind" .= _vtlKind),-                  ("items" .=) <$> _vtlItems,-                  ("selfLink" .=) <$> _vtlSelfLink,-                  ("id" .=) <$> _vtlId])------- /See:/ 'machineTypeScratchDisksItem' smart constructor.-newtype MachineTypeScratchDisksItem = MachineTypeScratchDisksItem'-    { _mtsdiDiskGb :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypeScratchDisksItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtsdiDiskGb'-machineTypeScratchDisksItem-    :: MachineTypeScratchDisksItem-machineTypeScratchDisksItem =-    MachineTypeScratchDisksItem'-    { _mtsdiDiskGb = Nothing-    }---- | Size of the scratch disk, defined in GB.-mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)-mtsdiDiskGb-  = lens _mtsdiDiskGb (\ s a -> s{_mtsdiDiskGb = a}) .-      mapping _Coerce--instance FromJSON MachineTypeScratchDisksItem where-        parseJSON-          = withObject "MachineTypeScratchDisksItem"-              (\ o ->-                 MachineTypeScratchDisksItem' <$> (o .:? "diskGb"))--instance ToJSON MachineTypeScratchDisksItem where-        toJSON MachineTypeScratchDisksItem'{..}-          = object (catMaybes [("diskGb" .=) <$> _mtsdiDiskGb])------- /See:/ 'subnetworksScopedListWarningDataItem' smart constructor.-data SubnetworksScopedListWarningDataItem = SubnetworksScopedListWarningDataItem'-    { _sslwdiValue :: !(Maybe Text)-    , _sslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworksScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sslwdiValue'------ * 'sslwdiKey'-subnetworksScopedListWarningDataItem-    :: SubnetworksScopedListWarningDataItem-subnetworksScopedListWarningDataItem =-    SubnetworksScopedListWarningDataItem'-    { _sslwdiValue = Nothing-    , _sslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)-sslwdiValue-  = lens _sslwdiValue (\ s a -> s{_sslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)-sslwdiKey-  = lens _sslwdiKey (\ s a -> s{_sslwdiKey = a})--instance FromJSON-         SubnetworksScopedListWarningDataItem where-        parseJSON-          = withObject "SubnetworksScopedListWarningDataItem"-              (\ o ->-                 SubnetworksScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON SubnetworksScopedListWarningDataItem-         where-        toJSON SubnetworksScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _sslwdiValue,-                  ("key" .=) <$> _sslwdiKey])------- /See:/ 'machineTypesScopedList' smart constructor.-data MachineTypesScopedList = MachineTypesScopedList'-    { _mtslMachineTypes :: !(Maybe [MachineType])-    , _mtslWarning      :: !(Maybe MachineTypesScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypesScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtslMachineTypes'------ * 'mtslWarning'-machineTypesScopedList-    :: MachineTypesScopedList-machineTypesScopedList =-    MachineTypesScopedList'-    { _mtslMachineTypes = Nothing-    , _mtslWarning = Nothing-    }---- | [Output Only] List of machine types contained in this scope.-mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]-mtslMachineTypes-  = lens _mtslMachineTypes-      (\ s a -> s{_mtslMachineTypes = a})-      . _Default-      . _Coerce---- | [Output Only] An informational warning that appears when the machine--- types list is empty.-mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)-mtslWarning-  = lens _mtslWarning (\ s a -> s{_mtslWarning = a})--instance FromJSON MachineTypesScopedList where-        parseJSON-          = withObject "MachineTypesScopedList"-              (\ o ->-                 MachineTypesScopedList' <$>-                   (o .:? "machineTypes" .!= mempty) <*>-                     (o .:? "warning"))--instance ToJSON MachineTypesScopedList where-        toJSON MachineTypesScopedList'{..}-          = object-              (catMaybes-                 [("machineTypes" .=) <$> _mtslMachineTypes,-                  ("warning" .=) <$> _mtslWarning])---- | A Subnetwork resource.------ /See:/ 'subnetwork' smart constructor.-data Subnetwork = Subnetwork'-    { _subKind              :: !Text-    , _subNetwork           :: !(Maybe Text)-    , _subGatewayAddress    :: !(Maybe Text)-    , _subSelfLink          :: !(Maybe Text)-    , _subName              :: !(Maybe Text)-    , _subCreationTimestamp :: !(Maybe Text)-    , _subIPCIdRRange       :: !(Maybe Text)-    , _subId                :: !(Maybe (Textual Word64))-    , _subRegion            :: !(Maybe Text)-    , _subDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Subnetwork' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'subKind'------ * 'subNetwork'------ * 'subGatewayAddress'------ * 'subSelfLink'------ * 'subName'------ * 'subCreationTimestamp'------ * 'subIPCIdRRange'------ * 'subId'------ * 'subRegion'------ * 'subDescription'-subnetwork-    :: Subnetwork-subnetwork =-    Subnetwork'-    { _subKind = "compute#subnetwork"-    , _subNetwork = Nothing-    , _subGatewayAddress = Nothing-    , _subSelfLink = Nothing-    , _subName = Nothing-    , _subCreationTimestamp = Nothing-    , _subIPCIdRRange = Nothing-    , _subId = Nothing-    , _subRegion = Nothing-    , _subDescription = Nothing-    }---- | [Output Only] Type of the resource. Always compute#subnetwork for--- Subnetwork resources.-subKind :: Lens' Subnetwork Text-subKind = lens _subKind (\ s a -> s{_subKind = a})---- | The URL of the network to which this subnetwork belongs, provided by the--- client when initially creating the subnetwork. Only networks that are in--- the distributed mode can have subnetworks.-subNetwork :: Lens' Subnetwork (Maybe Text)-subNetwork-  = lens _subNetwork (\ s a -> s{_subNetwork = a})---- | [Output Only] The gateway address for default routes to reach--- destination addresses outside this subnetwork.-subGatewayAddress :: Lens' Subnetwork (Maybe Text)-subGatewayAddress-  = lens _subGatewayAddress-      (\ s a -> s{_subGatewayAddress = a})---- | [Output Only] Server-defined URL for the resource.-subSelfLink :: Lens' Subnetwork (Maybe Text)-subSelfLink-  = lens _subSelfLink (\ s a -> s{_subSelfLink = a})---- | The name of the resource, provided by the client when initially creating--- the resource. The name must be 1-63 characters long, and comply with--- RFC1035. Specifically, the name must be 1-63 characters long and match--- the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-subName :: Lens' Subnetwork (Maybe Text)-subName = lens _subName (\ s a -> s{_subName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-subCreationTimestamp :: Lens' Subnetwork (Maybe Text)-subCreationTimestamp-  = lens _subCreationTimestamp-      (\ s a -> s{_subCreationTimestamp = a})---- | The range of internal addresses that are owned by this subnetwork.--- Provide this property when you create the subnetwork. For example,--- 10.0.0.0\/8 or 192.168.0.0\/16. Ranges must be unique and--- non-overlapping within a network.-subIPCIdRRange :: Lens' Subnetwork (Maybe Text)-subIPCIdRRange-  = lens _subIPCIdRRange-      (\ s a -> s{_subIPCIdRRange = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-subId :: Lens' Subnetwork (Maybe Word64)-subId-  = lens _subId (\ s a -> s{_subId = a}) .-      mapping _Coerce---- | URL of the region where the Subnetwork resides.-subRegion :: Lens' Subnetwork (Maybe Text)-subRegion-  = lens _subRegion (\ s a -> s{_subRegion = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-subDescription :: Lens' Subnetwork (Maybe Text)-subDescription-  = lens _subDescription-      (\ s a -> s{_subDescription = a})--instance FromJSON Subnetwork where-        parseJSON-          = withObject "Subnetwork"-              (\ o ->-                 Subnetwork' <$>-                   (o .:? "kind" .!= "compute#subnetwork") <*>-                     (o .:? "network")-                     <*> (o .:? "gatewayAddress")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "ipCidrRange")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "description"))--instance ToJSON Subnetwork where-        toJSON Subnetwork'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _subKind),-                  ("network" .=) <$> _subNetwork,-                  ("gatewayAddress" .=) <$> _subGatewayAddress,-                  ("selfLink" .=) <$> _subSelfLink,-                  ("name" .=) <$> _subName,-                  ("creationTimestamp" .=) <$> _subCreationTimestamp,-                  ("ipCidrRange" .=) <$> _subIPCIdRRange,-                  ("id" .=) <$> _subId, ("region" .=) <$> _subRegion,-                  ("description" .=) <$> _subDescription])------- /See:/ 'machineTypeAggregatedList' smart constructor.-data MachineTypeAggregatedList = MachineTypeAggregatedList'-    { _mtalNextPageToken :: !(Maybe Text)-    , _mtalKind          :: !Text-    , _mtalItems         :: !(Maybe MachineTypeAggregatedListItems)-    , _mtalSelfLink      :: !(Maybe Text)-    , _mtalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypeAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtalNextPageToken'------ * 'mtalKind'------ * 'mtalItems'------ * 'mtalSelfLink'------ * 'mtalId'-machineTypeAggregatedList-    :: MachineTypeAggregatedList-machineTypeAggregatedList =-    MachineTypeAggregatedList'-    { _mtalNextPageToken = Nothing-    , _mtalKind = "compute#machineTypeAggregatedList"-    , _mtalItems = Nothing-    , _mtalSelfLink = Nothing-    , _mtalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)-mtalNextPageToken-  = lens _mtalNextPageToken-      (\ s a -> s{_mtalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#machineTypeAggregatedList--- for aggregated lists of machine types.-mtalKind :: Lens' MachineTypeAggregatedList Text-mtalKind = lens _mtalKind (\ s a -> s{_mtalKind = a})---- | [Output Only] A map of scoped machine type lists.-mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)-mtalItems-  = lens _mtalItems (\ s a -> s{_mtalItems = a})---- | [Output Only] Server-defined URL for this resource.-mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)-mtalSelfLink-  = lens _mtalSelfLink (\ s a -> s{_mtalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)-mtalId = lens _mtalId (\ s a -> s{_mtalId = a})--instance FromJSON MachineTypeAggregatedList where-        parseJSON-          = withObject "MachineTypeAggregatedList"-              (\ o ->-                 MachineTypeAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#machineTypeAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON MachineTypeAggregatedList where-        toJSON MachineTypeAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _mtalNextPageToken,-                  Just ("kind" .= _mtalKind),-                  ("items" .=) <$> _mtalItems,-                  ("selfLink" .=) <$> _mtalSelfLink,-                  ("id" .=) <$> _mtalId])---- | A DiskType resource.------ /See:/ 'diskType' smart constructor.-data DiskType = DiskType'-    { _dtKind              :: !Text-    , _dtZone              :: !(Maybe Text)-    , _dtSelfLink          :: !(Maybe Text)-    , _dtName              :: !(Maybe Text)-    , _dtCreationTimestamp :: !(Maybe Text)-    , _dtId                :: !(Maybe (Textual Word64))-    , _dtValidDiskSize     :: !(Maybe Text)-    , _dtDescription       :: !(Maybe Text)-    , _dtDefaultDiskSizeGb :: !(Maybe (Textual Int64))-    , _dtDeprecated        :: !(Maybe DeprecationStatus)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtKind'------ * 'dtZone'------ * 'dtSelfLink'------ * 'dtName'------ * 'dtCreationTimestamp'------ * 'dtId'------ * 'dtValidDiskSize'------ * 'dtDescription'------ * 'dtDefaultDiskSizeGb'------ * 'dtDeprecated'-diskType-    :: DiskType-diskType =-    DiskType'-    { _dtKind = "compute#diskType"-    , _dtZone = Nothing-    , _dtSelfLink = Nothing-    , _dtName = Nothing-    , _dtCreationTimestamp = Nothing-    , _dtId = Nothing-    , _dtValidDiskSize = Nothing-    , _dtDescription = Nothing-    , _dtDefaultDiskSizeGb = Nothing-    , _dtDeprecated = Nothing-    }---- | [Output Only] Type of the resource. Always compute#diskType for disk--- types.-dtKind :: Lens' DiskType Text-dtKind = lens _dtKind (\ s a -> s{_dtKind = a})---- | [Output Only] URL of the zone where the disk type resides.-dtZone :: Lens' DiskType (Maybe Text)-dtZone = lens _dtZone (\ s a -> s{_dtZone = a})---- | [Output Only] Server-defined URL for the resource.-dtSelfLink :: Lens' DiskType (Maybe Text)-dtSelfLink-  = lens _dtSelfLink (\ s a -> s{_dtSelfLink = a})---- | [Output Only] Name of the resource.-dtName :: Lens' DiskType (Maybe Text)-dtName = lens _dtName (\ s a -> s{_dtName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-dtCreationTimestamp :: Lens' DiskType (Maybe Text)-dtCreationTimestamp-  = lens _dtCreationTimestamp-      (\ s a -> s{_dtCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-dtId :: Lens' DiskType (Maybe Word64)-dtId-  = lens _dtId (\ s a -> s{_dtId = a}) .-      mapping _Coerce---- | [Output Only] An optional textual description of the valid disk size,--- such as \"10GB-10TB\".-dtValidDiskSize :: Lens' DiskType (Maybe Text)-dtValidDiskSize-  = lens _dtValidDiskSize-      (\ s a -> s{_dtValidDiskSize = a})---- | [Output Only] An optional description of this resource.-dtDescription :: Lens' DiskType (Maybe Text)-dtDescription-  = lens _dtDescription-      (\ s a -> s{_dtDescription = a})---- | [Output Only] Server-defined default disk size in GB.-dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)-dtDefaultDiskSizeGb-  = lens _dtDefaultDiskSizeGb-      (\ s a -> s{_dtDefaultDiskSizeGb = a})-      . mapping _Coerce---- | [Output Only] The deprecation status associated with this disk type.-dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)-dtDeprecated-  = lens _dtDeprecated (\ s a -> s{_dtDeprecated = a})--instance FromJSON DiskType where-        parseJSON-          = withObject "DiskType"-              (\ o ->-                 DiskType' <$>-                   (o .:? "kind" .!= "compute#diskType") <*>-                     (o .:? "zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "validDiskSize")-                     <*> (o .:? "description")-                     <*> (o .:? "defaultDiskSizeGb")-                     <*> (o .:? "deprecated"))--instance ToJSON DiskType where-        toJSON DiskType'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _dtKind), ("zone" .=) <$> _dtZone,-                  ("selfLink" .=) <$> _dtSelfLink,-                  ("name" .=) <$> _dtName,-                  ("creationTimestamp" .=) <$> _dtCreationTimestamp,-                  ("id" .=) <$> _dtId,-                  ("validDiskSize" .=) <$> _dtValidDiskSize,-                  ("description" .=) <$> _dtDescription,-                  ("defaultDiskSizeGb" .=) <$> _dtDefaultDiskSizeGb,-                  ("deprecated" .=) <$> _dtDeprecated])---- | Message representing the validation result for a UrlMap.------ /See:/ 'urlMapValidationResult' smart constructor.-data URLMapValidationResult = URLMapValidationResult'-    { _umvrLoadErrors    :: !(Maybe [Text])-    , _umvrLoadSucceeded :: !(Maybe Bool)-    , _umvrTestPassed    :: !(Maybe Bool)-    , _umvrTestFailures  :: !(Maybe [TestFailure])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapValidationResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umvrLoadErrors'------ * 'umvrLoadSucceeded'------ * 'umvrTestPassed'------ * 'umvrTestFailures'-urlMapValidationResult-    :: URLMapValidationResult-urlMapValidationResult =-    URLMapValidationResult'-    { _umvrLoadErrors = Nothing-    , _umvrLoadSucceeded = Nothing-    , _umvrTestPassed = Nothing-    , _umvrTestFailures = Nothing-    }--umvrLoadErrors :: Lens' URLMapValidationResult [Text]-umvrLoadErrors-  = lens _umvrLoadErrors-      (\ s a -> s{_umvrLoadErrors = a})-      . _Default-      . _Coerce---- | Whether the given UrlMap can be successfully loaded. If false,--- \'loadErrors\' indicates the reasons.-umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)-umvrLoadSucceeded-  = lens _umvrLoadSucceeded-      (\ s a -> s{_umvrLoadSucceeded = a})---- | If successfully loaded, this field indicates whether the test passed. If--- false, \'testFailures\'s indicate the reason of failure.-umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)-umvrTestPassed-  = lens _umvrTestPassed-      (\ s a -> s{_umvrTestPassed = a})--umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]-umvrTestFailures-  = lens _umvrTestFailures-      (\ s a -> s{_umvrTestFailures = a})-      . _Default-      . _Coerce--instance FromJSON URLMapValidationResult where-        parseJSON-          = withObject "URLMapValidationResult"-              (\ o ->-                 URLMapValidationResult' <$>-                   (o .:? "loadErrors" .!= mempty) <*>-                     (o .:? "loadSucceeded")-                     <*> (o .:? "testPassed")-                     <*> (o .:? "testFailures" .!= mempty))--instance ToJSON URLMapValidationResult where-        toJSON URLMapValidationResult'{..}-          = object-              (catMaybes-                 [("loadErrors" .=) <$> _umvrLoadErrors,-                  ("loadSucceeded" .=) <$> _umvrLoadSucceeded,-                  ("testPassed" .=) <$> _umvrTestPassed,-                  ("testFailures" .=) <$> _umvrTestFailures])---- | A metadata key\/value entry.------ /See:/ 'metadata' smart constructor.-data Metadata = Metadata'-    { _mKind        :: !Text-    , _mFingerprint :: !(Maybe Base64)-    , _mItems       :: !(Maybe [MetadataItemsItem])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Metadata' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mKind'------ * 'mFingerprint'------ * 'mItems'-metadata-    :: Metadata-metadata =-    Metadata'-    { _mKind = "compute#metadata"-    , _mFingerprint = Nothing-    , _mItems = Nothing-    }---- | [Output Only] Type of the resource. Always compute#metadata for--- metadata.-mKind :: Lens' Metadata Text-mKind = lens _mKind (\ s a -> s{_mKind = a})---- | Specifies a fingerprint for this request, which is essentially a hash of--- the metadata\'s contents and used for optimistic locking. The--- fingerprint is initially generated by Compute Engine and changes after--- every request to modify or update metadata. You must always provide an--- up-to-date fingerprint hash in order to update or change metadata.-mFingerprint :: Lens' Metadata (Maybe ByteString)-mFingerprint-  = lens _mFingerprint (\ s a -> s{_mFingerprint = a})-      . mapping _Base64---- | Array of key\/value pairs. The total size of all keys and values must be--- less than 512 KB.-mItems :: Lens' Metadata [MetadataItemsItem]-mItems-  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .-      _Coerce--instance FromJSON Metadata where-        parseJSON-          = withObject "Metadata"-              (\ o ->-                 Metadata' <$>-                   (o .:? "kind" .!= "compute#metadata") <*>-                     (o .:? "fingerprint")-                     <*> (o .:? "items" .!= mempty))--instance ToJSON Metadata where-        toJSON Metadata'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _mKind),-                  ("fingerprint" .=) <$> _mFingerprint,-                  ("items" .=) <$> _mItems])------- /See:/ 'routeWarningsItem' smart constructor.-data RouteWarningsItem = RouteWarningsItem'-    { _rwiData    :: !(Maybe [RouteWarningsItemDataItem])-    , _rwiCode    :: !(Maybe RouteWarningsItemCode)-    , _rwiMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'RouteWarningsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rwiData'------ * 'rwiCode'------ * 'rwiMessage'-routeWarningsItem-    :: RouteWarningsItem-routeWarningsItem =-    RouteWarningsItem'-    { _rwiData = Nothing-    , _rwiCode = Nothing-    , _rwiMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]-rwiData-  = lens _rwiData (\ s a -> s{_rwiData = a}) . _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)-rwiCode = lens _rwiCode (\ s a -> s{_rwiCode = a})---- | [Output Only] A human-readable description of the warning code.-rwiMessage :: Lens' RouteWarningsItem (Maybe Text)-rwiMessage-  = lens _rwiMessage (\ s a -> s{_rwiMessage = a})--instance FromJSON RouteWarningsItem where-        parseJSON-          = withObject "RouteWarningsItem"-              (\ o ->-                 RouteWarningsItem' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON RouteWarningsItem where-        toJSON RouteWarningsItem'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _rwiData, ("code" .=) <$> _rwiCode,-                  ("message" .=) <$> _rwiMessage])------- /See:/ 'machineTypesScopedListWarningDataItem' smart constructor.-data MachineTypesScopedListWarningDataItem = MachineTypesScopedListWarningDataItem'-    { _mtslwdiValue :: !(Maybe Text)-    , _mtslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MachineTypesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mtslwdiValue'------ * 'mtslwdiKey'-machineTypesScopedListWarningDataItem-    :: MachineTypesScopedListWarningDataItem-machineTypesScopedListWarningDataItem =-    MachineTypesScopedListWarningDataItem'-    { _mtslwdiValue = Nothing-    , _mtslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)-mtslwdiValue-  = lens _mtslwdiValue (\ s a -> s{_mtslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)-mtslwdiKey-  = lens _mtslwdiKey (\ s a -> s{_mtslwdiKey = a})--instance FromJSON-         MachineTypesScopedListWarningDataItem where-        parseJSON-          = withObject "MachineTypesScopedListWarningDataItem"-              (\ o ->-                 MachineTypesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON MachineTypesScopedListWarningDataItem-         where-        toJSON MachineTypesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _mtslwdiValue,-                  ("key" .=) <$> _mtslwdiKey])------- /See:/ 'diskTypesScopedListWarningDataItem' smart constructor.-data DiskTypesScopedListWarningDataItem = DiskTypesScopedListWarningDataItem'-    { _dtslwdiValue :: !(Maybe Text)-    , _dtslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DiskTypesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dtslwdiValue'------ * 'dtslwdiKey'-diskTypesScopedListWarningDataItem-    :: DiskTypesScopedListWarningDataItem-diskTypesScopedListWarningDataItem =-    DiskTypesScopedListWarningDataItem'-    { _dtslwdiValue = Nothing-    , _dtslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)-dtslwdiValue-  = lens _dtslwdiValue (\ s a -> s{_dtslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)-dtslwdiKey-  = lens _dtslwdiKey (\ s a -> s{_dtslwdiKey = a})--instance FromJSON DiskTypesScopedListWarningDataItem-         where-        parseJSON-          = withObject "DiskTypesScopedListWarningDataItem"-              (\ o ->-                 DiskTypesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON DiskTypesScopedListWarningDataItem-         where-        toJSON DiskTypesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _dtslwdiValue,-                  ("key" .=) <$> _dtslwdiKey])---- | A TargetHttpProxy resource. This resource defines an HTTP proxy.------ /See:/ 'targetHTTPProxy' smart constructor.-data TargetHTTPProxy = TargetHTTPProxy'-    { _thttppURLMap            :: !(Maybe Text)-    , _thttppKind              :: !Text-    , _thttppSelfLink          :: !(Maybe Text)-    , _thttppName              :: !(Maybe Text)-    , _thttppCreationTimestamp :: !(Maybe Text)-    , _thttppId                :: !(Maybe (Textual Word64))-    , _thttppDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetHTTPProxy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'thttppURLMap'------ * 'thttppKind'------ * 'thttppSelfLink'------ * 'thttppName'------ * 'thttppCreationTimestamp'------ * 'thttppId'------ * 'thttppDescription'-targetHTTPProxy-    :: TargetHTTPProxy-targetHTTPProxy =-    TargetHTTPProxy'-    { _thttppURLMap = Nothing-    , _thttppKind = "compute#targetHttpProxy"-    , _thttppSelfLink = Nothing-    , _thttppName = Nothing-    , _thttppCreationTimestamp = Nothing-    , _thttppId = Nothing-    , _thttppDescription = Nothing-    }---- | URL to the UrlMap resource that defines the mapping from URL to the--- BackendService.-thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)-thttppURLMap-  = lens _thttppURLMap (\ s a -> s{_thttppURLMap = a})---- | [Output Only] Type of resource. Always compute#targetHttpProxy for--- target HTTP proxies.-thttppKind :: Lens' TargetHTTPProxy Text-thttppKind-  = lens _thttppKind (\ s a -> s{_thttppKind = a})---- | [Output Only] Server-defined URL for the resource.-thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)-thttppSelfLink-  = lens _thttppSelfLink-      (\ s a -> s{_thttppSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-thttppName :: Lens' TargetHTTPProxy (Maybe Text)-thttppName-  = lens _thttppName (\ s a -> s{_thttppName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)-thttppCreationTimestamp-  = lens _thttppCreationTimestamp-      (\ s a -> s{_thttppCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-thttppId :: Lens' TargetHTTPProxy (Maybe Word64)-thttppId-  = lens _thttppId (\ s a -> s{_thttppId = a}) .-      mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)-thttppDescription-  = lens _thttppDescription-      (\ s a -> s{_thttppDescription = a})--instance FromJSON TargetHTTPProxy where-        parseJSON-          = withObject "TargetHTTPProxy"-              (\ o ->-                 TargetHTTPProxy' <$>-                   (o .:? "urlMap") <*>-                     (o .:? "kind" .!= "compute#targetHttpProxy")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "description"))--instance ToJSON TargetHTTPProxy where-        toJSON TargetHTTPProxy'{..}-          = object-              (catMaybes-                 [("urlMap" .=) <$> _thttppURLMap,-                  Just ("kind" .= _thttppKind),-                  ("selfLink" .=) <$> _thttppSelfLink,-                  ("name" .=) <$> _thttppName,-                  ("creationTimestamp" .=) <$>-                    _thttppCreationTimestamp,-                  ("id" .=) <$> _thttppId,-                  ("description" .=) <$> _thttppDescription])---- | A Machine Type resource.------ /See:/ 'machineType' smart constructor.-data MachineType = MachineType'-    { _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:------ * 'mtKind'------ * 'mtImageSpaceGb'------ * 'mtZone'------ * 'mtSelfLink'------ * 'mtName'------ * 'mtCreationTimestamp'------ * 'mtScratchDisks'------ * 'mtId'------ * 'mtGuestCPUs'------ * 'mtMaximumPersistentDisksSizeGb'------ * 'mtMaximumPersistentDisks'------ * 'mtMemoryMb'------ * 'mtDescription'------ * 'mtDeprecated'-machineType-    :: MachineType-machineType =-    MachineType'-    { _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] The type of the resource. Always compute#machineType for--- machine types.-mtKind :: Lens' MachineType Text-mtKind = lens _mtKind (\ s a -> s{_mtKind = a})---- | [Deprecated] This property is deprecated and will never be populated--- with any relevant values.-mtImageSpaceGb :: Lens' MachineType (Maybe Int32)-mtImageSpaceGb-  = lens _mtImageSpaceGb-      (\ s a -> s{_mtImageSpaceGb = a})-      . mapping _Coerce---- | [Output Only] The name of the zone where the machine type resides, such--- as us-central1-a.-mtZone :: Lens' MachineType (Maybe Text)-mtZone = lens _mtZone (\ s a -> s{_mtZone = a})---- | [Output Only] Server-defined URL for the resource.-mtSelfLink :: Lens' MachineType (Maybe Text)-mtSelfLink-  = lens _mtSelfLink (\ s a -> s{_mtSelfLink = a})---- | [Output Only] Name of the resource.-mtName :: Lens' MachineType (Maybe Text)-mtName = lens _mtName (\ s a -> s{_mtName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-mtCreationTimestamp :: Lens' MachineType (Maybe Text)-mtCreationTimestamp-  = lens _mtCreationTimestamp-      (\ s a -> s{_mtCreationTimestamp = a})---- | [Output Only] List of extended scratch disks assigned to the instance.-mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]-mtScratchDisks-  = lens _mtScratchDisks-      (\ s a -> s{_mtScratchDisks = a})-      . _Default-      . _Coerce---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-mtId :: Lens' MachineType (Maybe Word64)-mtId-  = lens _mtId (\ s a -> s{_mtId = a}) .-      mapping _Coerce---- | [Output Only] The number of virtual CPUs that are available to the--- instance.-mtGuestCPUs :: Lens' MachineType (Maybe Int32)-mtGuestCPUs-  = lens _mtGuestCPUs (\ s a -> s{_mtGuestCPUs = a}) .-      mapping _Coerce---- | [Output Only] Maximum total persistent disks size (GB) allowed.-mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)-mtMaximumPersistentDisksSizeGb-  = lens _mtMaximumPersistentDisksSizeGb-      (\ s a -> s{_mtMaximumPersistentDisksSizeGb = a})-      . mapping _Coerce---- | [Output Only] Maximum persistent disks allowed.-mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)-mtMaximumPersistentDisks-  = lens _mtMaximumPersistentDisks-      (\ s a -> s{_mtMaximumPersistentDisks = a})-      . mapping _Coerce---- | [Output Only] The amount of physical memory available to the instance,--- defined in MB.-mtMemoryMb :: Lens' MachineType (Maybe Int32)-mtMemoryMb-  = lens _mtMemoryMb (\ s a -> s{_mtMemoryMb = a}) .-      mapping _Coerce---- | [Output Only] An optional textual description of the resource.-mtDescription :: Lens' MachineType (Maybe Text)-mtDescription-  = lens _mtDescription-      (\ s a -> s{_mtDescription = a})---- | [Output Only] The deprecation status associated with this machine type.-mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)-mtDeprecated-  = lens _mtDeprecated (\ s a -> s{_mtDeprecated = a})--instance FromJSON MachineType where-        parseJSON-          = withObject "MachineType"-              (\ o ->-                 MachineType' <$>-                   (o .:? "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-                 [Just ("kind" .= _mtKind),-                  ("imageSpaceGb" .=) <$> _mtImageSpaceGb,-                  ("zone" .=) <$> _mtZone,-                  ("selfLink" .=) <$> _mtSelfLink,-                  ("name" .=) <$> _mtName,-                  ("creationTimestamp" .=) <$> _mtCreationTimestamp,-                  ("scratchDisks" .=) <$> _mtScratchDisks,-                  ("id" .=) <$> _mtId,-                  ("guestCpus" .=) <$> _mtGuestCPUs,-                  ("maximumPersistentDisksSizeGb" .=) <$>-                    _mtMaximumPersistentDisksSizeGb,-                  ("maximumPersistentDisks" .=) <$>-                    _mtMaximumPersistentDisks,-                  ("memoryMb" .=) <$> _mtMemoryMb,-                  ("description" .=) <$> _mtDescription,-                  ("deprecated" .=) <$> _mtDeprecated])---- | [Output Only] If errors are generated during processing of the--- operation, this field will be populated.------ /See:/ 'operationError' smart constructor.-newtype OperationError = OperationError'-    { _oeErrors :: Maybe [OperationErrorErrorsItem]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationError' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oeErrors'-operationError-    :: OperationError-operationError =-    OperationError'-    { _oeErrors = Nothing-    }---- | [Output Only] The array of errors encountered while processing this--- operation.-oeErrors :: Lens' OperationError [OperationErrorErrorsItem]-oeErrors-  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .-      _Default-      . _Coerce--instance FromJSON OperationError where-        parseJSON-          = withObject "OperationError"-              (\ o ->-                 OperationError' <$> (o .:? "errors" .!= mempty))--instance ToJSON OperationError where-        toJSON OperationError'{..}-          = object (catMaybes [("errors" .=) <$> _oeErrors])---- | Informational warning which replaces the list of addresses when the list--- is empty.------ /See:/ 'targetInstancesScopedListWarning' smart constructor.-data TargetInstancesScopedListWarning = TargetInstancesScopedListWarning'-    { _tislwData    :: !(Maybe [TargetInstancesScopedListWarningDataItem])-    , _tislwCode    :: !(Maybe TargetInstancesScopedListWarningCode)-    , _tislwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetInstancesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tislwData'------ * 'tislwCode'------ * 'tislwMessage'-targetInstancesScopedListWarning-    :: TargetInstancesScopedListWarning-targetInstancesScopedListWarning =-    TargetInstancesScopedListWarning'-    { _tislwData = Nothing-    , _tislwCode = Nothing-    , _tislwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]-tislwData-  = lens _tislwData (\ s a -> s{_tislwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)-tislwCode-  = lens _tislwCode (\ s a -> s{_tislwCode = a})---- | [Output Only] A human-readable description of the warning code.-tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)-tislwMessage-  = lens _tislwMessage (\ s a -> s{_tislwMessage = a})--instance FromJSON TargetInstancesScopedListWarning-         where-        parseJSON-          = withObject "TargetInstancesScopedListWarning"-              (\ o ->-                 TargetInstancesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON TargetInstancesScopedListWarning-         where-        toJSON TargetInstancesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _tislwData,-                  ("code" .=) <$> _tislwCode,-                  ("message" .=) <$> _tislwMessage])------- /See:/ 'subnetworkAggregatedList' smart constructor.-data SubnetworkAggregatedList = SubnetworkAggregatedList'-    { _salNextPageToken :: !(Maybe Text)-    , _salKind          :: !Text-    , _salItems         :: !(Maybe SubnetworkAggregatedListItems)-    , _salSelfLink      :: !(Maybe Text)-    , _salId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworkAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'salNextPageToken'------ * 'salKind'------ * 'salItems'------ * 'salSelfLink'------ * 'salId'-subnetworkAggregatedList-    :: SubnetworkAggregatedList-subnetworkAggregatedList =-    SubnetworkAggregatedList'-    { _salNextPageToken = Nothing-    , _salKind = "compute#subnetworkAggregatedList"-    , _salItems = Nothing-    , _salSelfLink = Nothing-    , _salId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)-salNextPageToken-  = lens _salNextPageToken-      (\ s a -> s{_salNextPageToken = a})---- | [Output Only] Type of resource. Always compute#subnetworkAggregatedList--- for aggregated lists of subnetworks.-salKind :: Lens' SubnetworkAggregatedList Text-salKind = lens _salKind (\ s a -> s{_salKind = a})---- | [Output] A map of scoped Subnetwork lists.-salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)-salItems = lens _salItems (\ s a -> s{_salItems = a})---- | [Output Only] Server-defined URL for this resource.-salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)-salSelfLink-  = lens _salSelfLink (\ s a -> s{_salSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-salId :: Lens' SubnetworkAggregatedList (Maybe Text)-salId = lens _salId (\ s a -> s{_salId = a})--instance FromJSON SubnetworkAggregatedList where-        parseJSON-          = withObject "SubnetworkAggregatedList"-              (\ o ->-                 SubnetworkAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#subnetworkAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON SubnetworkAggregatedList where-        toJSON SubnetworkAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _salNextPageToken,-                  Just ("kind" .= _salKind),-                  ("items" .=) <$> _salItems,-                  ("selfLink" .=) <$> _salSelfLink,-                  ("id" .=) <$> _salId])------- /See:/ 'disksResizeRequest' smart constructor.-newtype DisksResizeRequest = DisksResizeRequest'-    { _drrSizeGb :: Maybe (Textual Int64)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DisksResizeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'drrSizeGb'-disksResizeRequest-    :: DisksResizeRequest-disksResizeRequest =-    DisksResizeRequest'-    { _drrSizeGb = Nothing-    }---- | The new size of the persistent disk, which is specified in GB.-drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)-drrSizeGb-  = lens _drrSizeGb (\ s a -> s{_drrSizeGb = a}) .-      mapping _Coerce--instance FromJSON DisksResizeRequest where-        parseJSON-          = withObject "DisksResizeRequest"-              (\ o -> DisksResizeRequest' <$> (o .:? "sizeGb"))--instance ToJSON DisksResizeRequest where-        toJSON DisksResizeRequest'{..}-          = object (catMaybes [("sizeGb" .=) <$> _drrSizeGb])------- /See:/ 'autoscalersScopedListWarningDataItem' smart constructor.-data AutoscalersScopedListWarningDataItem = AutoscalersScopedListWarningDataItem'-    { _aValue :: !(Maybe Text)-    , _aKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalersScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aValue'------ * 'aKey'-autoscalersScopedListWarningDataItem-    :: AutoscalersScopedListWarningDataItem-autoscalersScopedListWarningDataItem =-    AutoscalersScopedListWarningDataItem'-    { _aValue = Nothing-    , _aKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)-aValue = lens _aValue (\ s a -> s{_aValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)-aKey = lens _aKey (\ s a -> s{_aKey = a})--instance FromJSON-         AutoscalersScopedListWarningDataItem where-        parseJSON-          = withObject "AutoscalersScopedListWarningDataItem"-              (\ o ->-                 AutoscalersScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON AutoscalersScopedListWarningDataItem-         where-        toJSON AutoscalersScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])------- /See:/ 'instanceGroupsListInstances' smart constructor.-data InstanceGroupsListInstances = InstanceGroupsListInstances'-    { _igliNextPageToken :: !(Maybe Text)-    , _igliKind          :: !Text-    , _igliItems         :: !(Maybe [InstanceWithNamedPorts])-    , _igliSelfLink      :: !(Maybe Text)-    , _igliId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsListInstances' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igliNextPageToken'------ * 'igliKind'------ * 'igliItems'------ * 'igliSelfLink'------ * 'igliId'-instanceGroupsListInstances-    :: InstanceGroupsListInstances-instanceGroupsListInstances =-    InstanceGroupsListInstances'-    { _igliNextPageToken = Nothing-    , _igliKind = "compute#instanceGroupsListInstances"-    , _igliItems = Nothing-    , _igliSelfLink = Nothing-    , _igliId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)-igliNextPageToken-  = lens _igliNextPageToken-      (\ s a -> s{_igliNextPageToken = a})---- | [Output Only] The resource type, which is always--- compute#instanceGroupsListInstances for lists of instance groups.-igliKind :: Lens' InstanceGroupsListInstances Text-igliKind = lens _igliKind (\ s a -> s{_igliKind = a})---- | [Output Only] A list of instances and any named ports that are assigned--- to those instances.-igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]-igliItems-  = lens _igliItems (\ s a -> s{_igliItems = a}) .-      _Default-      . _Coerce---- | [Output Only] The URL for this list of instance groups. The server--- generates this URL.-igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)-igliSelfLink-  = lens _igliSelfLink (\ s a -> s{_igliSelfLink = a})---- | [Output Only] A unique identifier for this list of instance groups. The--- server generates this identifier.-igliId :: Lens' InstanceGroupsListInstances (Maybe Text)-igliId = lens _igliId (\ s a -> s{_igliId = a})--instance FromJSON InstanceGroupsListInstances where-        parseJSON-          = withObject "InstanceGroupsListInstances"-              (\ o ->-                 InstanceGroupsListInstances' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#instanceGroupsListInstances")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceGroupsListInstances where-        toJSON InstanceGroupsListInstances'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _igliNextPageToken,-                  Just ("kind" .= _igliKind),-                  ("items" .=) <$> _igliItems,-                  ("selfLink" .=) <$> _igliSelfLink,-                  ("id" .=) <$> _igliId])---- | Represents an Autoscaler resource. Autoscalers allow you to--- automatically scale virtual machine instances in managed instance groups--- according to an autoscaling policy that you define. For more--- information, read Autoscaling Groups of Instances.------ /See:/ 'autoscaler' smart constructor.-data Autoscaler = Autoscaler'-    { _aaKind              :: !Text-    , _aaZone              :: !(Maybe Text)-    , _aaSelfLink          :: !(Maybe Text)-    , _aaName              :: !(Maybe Text)-    , _aaCreationTimestamp :: !(Maybe Text)-    , _aaAutoscalingPolicy :: !(Maybe AutoscalingPolicy)-    , _aaId                :: !(Maybe (Textual Word64))-    , _aaDescription       :: !(Maybe Text)-    , _aaTarget            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Autoscaler' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aaKind'------ * 'aaZone'------ * 'aaSelfLink'------ * 'aaName'------ * 'aaCreationTimestamp'------ * 'aaAutoscalingPolicy'------ * 'aaId'------ * 'aaDescription'------ * 'aaTarget'-autoscaler-    :: Autoscaler-autoscaler =-    Autoscaler'-    { _aaKind = "compute#autoscaler"-    , _aaZone = Nothing-    , _aaSelfLink = Nothing-    , _aaName = Nothing-    , _aaCreationTimestamp = Nothing-    , _aaAutoscalingPolicy = Nothing-    , _aaId = Nothing-    , _aaDescription = Nothing-    , _aaTarget = Nothing-    }---- | [Output Only] Type of the resource. Always compute#autoscaler for--- autoscalers.-aaKind :: Lens' Autoscaler Text-aaKind = lens _aaKind (\ s a -> s{_aaKind = a})---- | [Output Only] URL of the zone where the instance group resides.-aaZone :: Lens' Autoscaler (Maybe Text)-aaZone = lens _aaZone (\ s a -> s{_aaZone = a})---- | [Output Only] Server-defined URL for the resource.-aaSelfLink :: Lens' Autoscaler (Maybe Text)-aaSelfLink-  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-aaName :: Lens' Autoscaler (Maybe Text)-aaName = lens _aaName (\ s a -> s{_aaName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)-aaCreationTimestamp-  = lens _aaCreationTimestamp-      (\ s a -> s{_aaCreationTimestamp = a})---- | The configuration parameters for the autoscaling algorithm. You can--- define one or more of the policies for an autoscaler: cpuUtilization,--- customMetricUtilizations, and loadBalancingUtilization. If none of these--- are specified, the default will be to autoscale based on cpuUtilization--- to 0.8 or 80%.-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---- | An optional description of this resource. Provide this property when you--- create the resource.-aaDescription :: Lens' Autoscaler (Maybe Text)-aaDescription-  = lens _aaDescription-      (\ s a -> s{_aaDescription = a})---- | URL of the managed instance group that this autoscaler will scale.-aaTarget :: Lens' Autoscaler (Maybe Text)-aaTarget = lens _aaTarget (\ s a -> s{_aaTarget = a})--instance FromJSON Autoscaler where-        parseJSON-          = withObject "Autoscaler"-              (\ o ->-                 Autoscaler' <$>-                   (o .:? "kind" .!= "compute#autoscaler") <*>-                     (o .:? "zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "autoscalingPolicy")-                     <*> (o .:? "id")-                     <*> (o .:? "description")-                     <*> (o .:? "target"))--instance ToJSON Autoscaler where-        toJSON Autoscaler'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _aaKind), ("zone" .=) <$> _aaZone,-                  ("selfLink" .=) <$> _aaSelfLink,-                  ("name" .=) <$> _aaName,-                  ("creationTimestamp" .=) <$> _aaCreationTimestamp,-                  ("autoscalingPolicy" .=) <$> _aaAutoscalingPolicy,-                  ("id" .=) <$> _aaId,-                  ("description" .=) <$> _aaDescription,-                  ("target" .=) <$> _aaTarget])---- | [Output Only] Informational warning which replaces the list of disks--- when the list is empty.------ /See:/ 'disksScopedListWarning' smart constructor.-data DisksScopedListWarning = DisksScopedListWarning'-    { _dslwData    :: !(Maybe [DisksScopedListWarningDataItem])-    , _dslwCode    :: !(Maybe DisksScopedListWarningCode)-    , _dslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'DisksScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'dslwData'------ * 'dslwCode'------ * 'dslwMessage'-disksScopedListWarning-    :: DisksScopedListWarning-disksScopedListWarning =-    DisksScopedListWarning'-    { _dslwData = Nothing-    , _dslwCode = Nothing-    , _dslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]-dslwData-  = lens _dslwData (\ s a -> s{_dslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)-dslwCode = lens _dslwCode (\ s a -> s{_dslwCode = a})---- | [Output Only] A human-readable description of the warning code.-dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)-dslwMessage-  = lens _dslwMessage (\ s a -> s{_dslwMessage = a})--instance FromJSON DisksScopedListWarning where-        parseJSON-          = withObject "DisksScopedListWarning"-              (\ o ->-                 DisksScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON DisksScopedListWarning where-        toJSON DisksScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _dslwData,-                  ("code" .=) <$> _dslwCode,-                  ("message" .=) <$> _dslwMessage])---- | A map of scoped target vpn gateway lists.------ /See:/ 'targetVPNGatewayAggregatedListItems' smart constructor.-newtype TargetVPNGatewayAggregatedListItems = TargetVPNGatewayAggregatedListItems'-    { _tvgaliAddtional :: HashMap Text TargetVPNGatewaysScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewayAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgaliAddtional'-targetVPNGatewayAggregatedListItems-    :: HashMap Text TargetVPNGatewaysScopedList -- ^ 'tvgaliAddtional'-    -> TargetVPNGatewayAggregatedListItems-targetVPNGatewayAggregatedListItems pTvgaliAddtional_ =-    TargetVPNGatewayAggregatedListItems'-    { _tvgaliAddtional = _Coerce # pTvgaliAddtional_-    }---- | [Output Only] Name of the scope containing this set of target VPN--- gateways.-tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)-tvgaliAddtional-  = lens _tvgaliAddtional-      (\ s a -> s{_tvgaliAddtional = a})-      . _Coerce--instance FromJSON TargetVPNGatewayAggregatedListItems-         where-        parseJSON-          = withObject "TargetVPNGatewayAggregatedListItems"-              (\ o ->-                 TargetVPNGatewayAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON TargetVPNGatewayAggregatedListItems-         where-        toJSON = toJSON . _tvgaliAddtional---- | Informational warning which replaces the list of addresses when the list--- is empty.------ /See:/ 'targetPoolsScopedListWarning' smart constructor.-data TargetPoolsScopedListWarning = TargetPoolsScopedListWarning'-    { _tpslwData    :: !(Maybe [TargetPoolsScopedListWarningDataItem])-    , _tpslwCode    :: !(Maybe TargetPoolsScopedListWarningCode)-    , _tpslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetPoolsScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tpslwData'------ * 'tpslwCode'------ * 'tpslwMessage'-targetPoolsScopedListWarning-    :: TargetPoolsScopedListWarning-targetPoolsScopedListWarning =-    TargetPoolsScopedListWarning'-    { _tpslwData = Nothing-    , _tpslwCode = Nothing-    , _tpslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]-tpslwData-  = lens _tpslwData (\ s a -> s{_tpslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)-tpslwCode-  = lens _tpslwCode (\ s a -> s{_tpslwCode = a})---- | [Output Only] A human-readable description of the warning code.-tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)-tpslwMessage-  = lens _tpslwMessage (\ s a -> s{_tpslwMessage = a})--instance FromJSON TargetPoolsScopedListWarning where-        parseJSON-          = withObject "TargetPoolsScopedListWarning"-              (\ o ->-                 TargetPoolsScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON TargetPoolsScopedListWarning where-        toJSON TargetPoolsScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _tpslwData,-                  ("code" .=) <$> _tpslwCode,-                  ("message" .=) <$> _tpslwMessage])------- /See:/ 'healthStatus' smart constructor.-data HealthStatus = HealthStatus'-    { _hsIPAddress   :: !(Maybe Text)-    , _hsHealthState :: !(Maybe HealthStatusHealthState)-    , _hsPort        :: !(Maybe (Textual Int32))-    , _hsInstance    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HealthStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hsIPAddress'------ * 'hsHealthState'------ * 'hsPort'------ * 'hsInstance'-healthStatus-    :: HealthStatus-healthStatus =-    HealthStatus'-    { _hsIPAddress = Nothing-    , _hsHealthState = Nothing-    , _hsPort = Nothing-    , _hsInstance = Nothing-    }---- | The IP address represented by this resource.-hsIPAddress :: Lens' HealthStatus (Maybe Text)-hsIPAddress-  = lens _hsIPAddress (\ s a -> s{_hsIPAddress = a})---- | Health state of the instance.-hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)-hsHealthState-  = lens _hsHealthState-      (\ s a -> s{_hsHealthState = a})---- | The port on the instance.-hsPort :: Lens' HealthStatus (Maybe Int32)-hsPort-  = lens _hsPort (\ s a -> s{_hsPort = a}) .-      mapping _Coerce---- | URL of the instance resource.-hsInstance :: Lens' HealthStatus (Maybe Text)-hsInstance-  = lens _hsInstance (\ s a -> s{_hsInstance = a})--instance FromJSON HealthStatus where-        parseJSON-          = withObject "HealthStatus"-              (\ o ->-                 HealthStatus' <$>-                   (o .:? "ipAddress") <*> (o .:? "healthState") <*>-                     (o .:? "port")-                     <*> (o .:? "instance"))--instance ToJSON HealthStatus where-        toJSON HealthStatus'{..}-          = object-              (catMaybes-                 [("ipAddress" .=) <$> _hsIPAddress,-                  ("healthState" .=) <$> _hsHealthState,-                  ("port" .=) <$> _hsPort,-                  ("instance" .=) <$> _hsInstance])---- | Region resource.------ /See:/ 'region' smart constructor.-data Region = Region'-    { _rrStatus            :: !(Maybe RegionStatus)-    , _rrZones             :: !(Maybe [Text])-    , _rrKind              :: !Text-    , _rrSelfLink          :: !(Maybe Text)-    , _rrName              :: !(Maybe Text)-    , _rrCreationTimestamp :: !(Maybe Text)-    , _rrQuotas            :: !(Maybe [Quota])-    , _rrId                :: !(Maybe (Textual Word64))-    , _rrDescription       :: !(Maybe Text)-    , _rrDeprecated        :: !(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:------ * 'rrStatus'------ * 'rrZones'------ * 'rrKind'------ * 'rrSelfLink'------ * 'rrName'------ * 'rrCreationTimestamp'------ * 'rrQuotas'------ * 'rrId'------ * 'rrDescription'------ * 'rrDeprecated'-region-    :: Region-region =-    Region'-    { _rrStatus = Nothing-    , _rrZones = Nothing-    , _rrKind = "compute#region"-    , _rrSelfLink = Nothing-    , _rrName = Nothing-    , _rrCreationTimestamp = Nothing-    , _rrQuotas = Nothing-    , _rrId = Nothing-    , _rrDescription = Nothing-    , _rrDeprecated = Nothing-    }---- | [Output Only] Status of the region, either UP or DOWN.-rrStatus :: Lens' Region (Maybe RegionStatus)-rrStatus = lens _rrStatus (\ s a -> s{_rrStatus = a})---- | [Output Only] A list of zones available in this region, in the form of--- resource URLs.-rrZones :: Lens' Region [Text]-rrZones-  = lens _rrZones (\ s a -> s{_rrZones = a}) . _Default-      . _Coerce---- | [Output Only] Type of the resource. Always compute#region for regions.-rrKind :: Lens' Region Text-rrKind = lens _rrKind (\ s a -> s{_rrKind = a})---- | [Output Only] Server-defined URL for the resource.-rrSelfLink :: Lens' Region (Maybe Text)-rrSelfLink-  = lens _rrSelfLink (\ s a -> s{_rrSelfLink = a})---- | [Output Only] Name of the resource.-rrName :: Lens' Region (Maybe Text)-rrName = lens _rrName (\ s a -> s{_rrName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-rrCreationTimestamp :: Lens' Region (Maybe Text)-rrCreationTimestamp-  = lens _rrCreationTimestamp-      (\ s a -> s{_rrCreationTimestamp = a})---- | [Output Only] Quotas assigned to this region.-rrQuotas :: Lens' Region [Quota]-rrQuotas-  = lens _rrQuotas (\ s a -> s{_rrQuotas = a}) .-      _Default-      . _Coerce---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-rrId :: Lens' Region (Maybe Word64)-rrId-  = lens _rrId (\ s a -> s{_rrId = a}) .-      mapping _Coerce---- | [Output Only] Textual description of the resource.-rrDescription :: Lens' Region (Maybe Text)-rrDescription-  = lens _rrDescription-      (\ s a -> s{_rrDescription = a})---- | [Output Only] The deprecation status associated with this region.-rrDeprecated :: Lens' Region (Maybe DeprecationStatus)-rrDeprecated-  = lens _rrDeprecated (\ s a -> s{_rrDeprecated = 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" .=) <$> _rrStatus,-                  ("zones" .=) <$> _rrZones, Just ("kind" .= _rrKind),-                  ("selfLink" .=) <$> _rrSelfLink,-                  ("name" .=) <$> _rrName,-                  ("creationTimestamp" .=) <$> _rrCreationTimestamp,-                  ("quotas" .=) <$> _rrQuotas, ("id" .=) <$> _rrId,-                  ("description" .=) <$> _rrDescription,-                  ("deprecated" .=) <$> _rrDeprecated])------- /See:/ 'vpnTunnel' smart constructor.-data VPNTunnel = VPNTunnel'-    { _vtDetailedStatus       :: !(Maybe Text)-    , _vtStatus               :: !(Maybe VPNTunnelStatus)-    , _vtLocalTrafficSelector :: !(Maybe [Text])-    , _vtKind                 :: !Text-    , _vtPeerIP               :: !(Maybe Text)-    , _vtTargetVPNGateway     :: !(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'------ * 'vtTargetVPNGateway'------ * 'vtSelfLink'------ * 'vtSharedSecret'------ * 'vtName'------ * 'vtCreationTimestamp'------ * 'vtSharedSecretHash'------ * 'vtId'------ * 'vtIkeVersion'------ * 'vtRegion'------ * 'vtDescription'-vpnTunnel-    :: VPNTunnel-vpnTunnel =-    VPNTunnel'-    { _vtDetailedStatus = Nothing-    , _vtStatus = Nothing-    , _vtLocalTrafficSelector = Nothing-    , _vtKind = "compute#vpnTunnel"-    , _vtPeerIP = Nothing-    , _vtTargetVPNGateway = 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.-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.-vtPeerIP :: Lens' VPNTunnel (Maybe Text)-vtPeerIP = lens _vtPeerIP (\ s a -> s{_vtPeerIP = a})---- | URL of the VPN gateway with which this VPN tunnel is associated.--- Provided by the client when the VPN tunnel is created.-vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)-vtTargetVPNGateway-  = lens _vtTargetVPNGateway-      (\ s a -> s{_vtTargetVPNGateway = a})---- | [Output Only] Server-defined URL for the resource.-vtSelfLink :: Lens' VPNTunnel (Maybe Text)-vtSelfLink-  = lens _vtSelfLink (\ s a -> s{_vtSelfLink = a})---- | Shared secret used to set the secure session between the Cloud VPN--- gateway and the peer VPN gateway.-vtSharedSecret :: Lens' VPNTunnel (Maybe Text)-vtSharedSecret-  = lens _vtSharedSecret-      (\ s a -> s{_vtSharedSecret = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-vtName :: Lens' VPNTunnel (Maybe Text)-vtName = lens _vtName (\ s a -> s{_vtName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)-vtCreationTimestamp-  = lens _vtCreationTimestamp-      (\ s a -> s{_vtCreationTimestamp = a})---- | Hash of the shared secret.-vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)-vtSharedSecretHash-  = lens _vtSharedSecretHash-      (\ s a -> s{_vtSharedSecretHash = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-vtId :: Lens' VPNTunnel (Maybe Word64)-vtId-  = lens _vtId (\ s a -> s{_vtId = a}) .-      mapping _Coerce---- | IKE protocol version to use when establishing the VPN tunnel with peer--- VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.-vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)-vtIkeVersion-  = lens _vtIkeVersion (\ s a -> s{_vtIkeVersion = a})-      . mapping _Coerce---- | [Output Only] URL of the region where the VPN tunnel resides.-vtRegion :: Lens' VPNTunnel (Maybe Text)-vtRegion = lens _vtRegion (\ s a -> s{_vtRegion = a})---- | An optional description of this resource. Provide this property when you--- create the resource.-vtDescription :: Lens' VPNTunnel (Maybe Text)-vtDescription-  = lens _vtDescription-      (\ s a -> s{_vtDescription = a})--instance FromJSON VPNTunnel where-        parseJSON-          = withObject "VPNTunnel"-              (\ o ->-                 VPNTunnel' <$>-                   (o .:? "detailedStatus") <*> (o .:? "status") <*>-                     (o .:? "localTrafficSelector" .!= mempty)-                     <*> (o .:? "kind" .!= "compute#vpnTunnel")-                     <*> (o .:? "peerIp")-                     <*> (o .:? "targetVpnGateway")-                     <*> (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,-                  ("targetVpnGateway" .=) <$> _vtTargetVPNGateway,-                  ("selfLink" .=) <$> _vtSelfLink,-                  ("sharedSecret" .=) <$> _vtSharedSecret,-                  ("name" .=) <$> _vtName,-                  ("creationTimestamp" .=) <$> _vtCreationTimestamp,-                  ("sharedSecretHash" .=) <$> _vtSharedSecretHash,-                  ("id" .=) <$> _vtId,-                  ("ikeVersion" .=) <$> _vtIkeVersion,-                  ("region" .=) <$> _vtRegion,-                  ("description" .=) <$> _vtDescription])---- | [Output Only] Informational warning which replaces the list of--- operations when the list is empty.------ /See:/ 'operationsScopedListWarning' smart constructor.-data OperationsScopedListWarning = OperationsScopedListWarning'-    { _oslwData    :: !(Maybe [OperationsScopedListWarningDataItem])-    , _oslwCode    :: !(Maybe OperationsScopedListWarningCode)-    , _oslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationsScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oslwData'------ * 'oslwCode'------ * 'oslwMessage'-operationsScopedListWarning-    :: OperationsScopedListWarning-operationsScopedListWarning =-    OperationsScopedListWarning'-    { _oslwData = Nothing-    , _oslwCode = Nothing-    , _oslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]-oslwData-  = lens _oslwData (\ s a -> s{_oslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)-oslwCode = lens _oslwCode (\ s a -> s{_oslwCode = a})---- | [Output Only] A human-readable description of the warning code.-oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)-oslwMessage-  = lens _oslwMessage (\ s a -> s{_oslwMessage = a})--instance FromJSON OperationsScopedListWarning where-        parseJSON-          = withObject "OperationsScopedListWarning"-              (\ o ->-                 OperationsScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON OperationsScopedListWarning where-        toJSON OperationsScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _oslwData,-                  ("code" .=) <$> _oslwCode,-                  ("message" .=) <$> _oslwMessage])---- | Sets the scheduling options for an Instance.------ /See:/ 'scheduling' smart constructor.-data Scheduling = Scheduling'-    { _sAutomaticRestart  :: !(Maybe Bool)-    , _sOnHostMaintenance :: !(Maybe SchedulingOnHostMaintenance)-    , _sPreemptible       :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Scheduling' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sAutomaticRestart'------ * 'sOnHostMaintenance'------ * 'sPreemptible'-scheduling-    :: Scheduling-scheduling =-    Scheduling'-    { _sAutomaticRestart = Nothing-    , _sOnHostMaintenance = Nothing-    , _sPreemptible = Nothing-    }---- | Specifies whether the instance should be automatically restarted if it--- is terminated by Compute Engine (not terminated by a user). You can only--- set the automatic restart option for standard instances. Preemptible--- instances cannot be automatically restarted.-sAutomaticRestart :: Lens' Scheduling (Maybe Bool)-sAutomaticRestart-  = lens _sAutomaticRestart-      (\ s a -> s{_sAutomaticRestart = a})---- | Defines the maintenance behavior for this instance. For standard--- instances, the default behavior is MIGRATE. For preemptible instances,--- the default and only possible behavior is TERMINATE. For more--- information, see Setting Instance Scheduling Options.-sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)-sOnHostMaintenance-  = lens _sOnHostMaintenance-      (\ s a -> s{_sOnHostMaintenance = a})---- | Whether the instance is preemptible.-sPreemptible :: Lens' Scheduling (Maybe Bool)-sPreemptible-  = lens _sPreemptible (\ s a -> s{_sPreemptible = a})--instance FromJSON Scheduling where-        parseJSON-          = withObject "Scheduling"-              (\ o ->-                 Scheduling' <$>-                   (o .:? "automaticRestart") <*>-                     (o .:? "onHostMaintenance")-                     <*> (o .:? "preemptible"))--instance ToJSON Scheduling where-        toJSON Scheduling'{..}-          = object-              (catMaybes-                 [("automaticRestart" .=) <$> _sAutomaticRestart,-                  ("onHostMaintenance" .=) <$> _sOnHostMaintenance,-                  ("preemptible" .=) <$> _sPreemptible])------- /See:/ 'vpnTunnelsScopedListWarningDataItem' smart constructor.-data VPNTunnelsScopedListWarningDataItem = VPNTunnelsScopedListWarningDataItem'-    { _vtslwdiValue :: !(Maybe Text)-    , _vtslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelsScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtslwdiValue'------ * 'vtslwdiKey'-vpnTunnelsScopedListWarningDataItem-    :: VPNTunnelsScopedListWarningDataItem-vpnTunnelsScopedListWarningDataItem =-    VPNTunnelsScopedListWarningDataItem'-    { _vtslwdiValue = Nothing-    , _vtslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)-vtslwdiValue-  = lens _vtslwdiValue (\ s a -> s{_vtslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)-vtslwdiKey-  = lens _vtslwdiKey (\ s a -> s{_vtslwdiKey = a})--instance FromJSON VPNTunnelsScopedListWarningDataItem-         where-        parseJSON-          = withObject "VPNTunnelsScopedListWarningDataItem"-              (\ o ->-                 VPNTunnelsScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON VPNTunnelsScopedListWarningDataItem-         where-        toJSON VPNTunnelsScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _vtslwdiValue,-                  ("key" .=) <$> _vtslwdiKey])---- | Contains a list of Subnetwork resources.------ /See:/ 'subnetworkList' smart constructor.-data SubnetworkList = SubnetworkList'-    { _slNextPageToken :: !(Maybe Text)-    , _slKind          :: !Text-    , _slItems         :: !(Maybe [Subnetwork])-    , _slSelfLink      :: !(Maybe Text)-    , _slId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworkList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'slNextPageToken'------ * 'slKind'------ * 'slItems'------ * 'slSelfLink'------ * 'slId'-subnetworkList-    :: SubnetworkList-subnetworkList =-    SubnetworkList'-    { _slNextPageToken = Nothing-    , _slKind = "compute#subnetworkList"-    , _slItems = Nothing-    , _slSelfLink = Nothing-    , _slId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-slNextPageToken :: Lens' SubnetworkList (Maybe Text)-slNextPageToken-  = lens _slNextPageToken-      (\ s a -> s{_slNextPageToken = a})---- | [Output Only] Type of resource. Always compute#subnetworkList for lists--- of subnetworks.-slKind :: Lens' SubnetworkList Text-slKind = lens _slKind (\ s a -> s{_slKind = a})---- | The Subnetwork resources.-slItems :: Lens' SubnetworkList [Subnetwork]-slItems-  = lens _slItems (\ s a -> s{_slItems = a}) . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-slSelfLink :: Lens' SubnetworkList (Maybe Text)-slSelfLink-  = lens _slSelfLink (\ s a -> s{_slSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-slId :: Lens' SubnetworkList (Maybe Text)-slId = lens _slId (\ s a -> s{_slId = a})--instance FromJSON SubnetworkList where-        parseJSON-          = withObject "SubnetworkList"-              (\ o ->-                 SubnetworkList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#subnetworkList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON SubnetworkList where-        toJSON SubnetworkList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _slNextPageToken,-                  Just ("kind" .= _slKind), ("items" .=) <$> _slItems,-                  ("selfLink" .=) <$> _slSelfLink,-                  ("id" .=) <$> _slId])---- | Informational warning which replaces the list of forwarding rules when--- the list is empty.------ /See:/ 'forwardingRulesScopedListWarning' smart constructor.-data ForwardingRulesScopedListWarning = ForwardingRulesScopedListWarning'-    { _frslwData    :: !(Maybe [ForwardingRulesScopedListWarningDataItem])-    , _frslwCode    :: !(Maybe ForwardingRulesScopedListWarningCode)-    , _frslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ForwardingRulesScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'frslwData'------ * 'frslwCode'------ * 'frslwMessage'-forwardingRulesScopedListWarning-    :: ForwardingRulesScopedListWarning-forwardingRulesScopedListWarning =-    ForwardingRulesScopedListWarning'-    { _frslwData = Nothing-    , _frslwCode = Nothing-    , _frslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]-frslwData-  = lens _frslwData (\ s a -> s{_frslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)-frslwCode-  = lens _frslwCode (\ s a -> s{_frslwCode = a})---- | [Output Only] A human-readable description of the warning code.-frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)-frslwMessage-  = lens _frslwMessage (\ s a -> s{_frslwMessage = a})--instance FromJSON ForwardingRulesScopedListWarning-         where-        parseJSON-          = withObject "ForwardingRulesScopedListWarning"-              (\ o ->-                 ForwardingRulesScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON ForwardingRulesScopedListWarning-         where-        toJSON ForwardingRulesScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _frslwData,-                  ("code" .=) <$> _frslwCode,-                  ("message" .=) <$> _frslwMessage])---- | Contains a list of HttpHealthCheck resources.------ /See:/ 'hTTPHealthCheckList' smart constructor.-data HTTPHealthCheckList = HTTPHealthCheckList'-    { _httphclNextPageToken :: !(Maybe Text)-    , _httphclKind          :: !Text-    , _httphclItems         :: !(Maybe [HTTPHealthCheck])-    , _httphclSelfLink      :: !(Maybe Text)-    , _httphclId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HTTPHealthCheckList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'httphclNextPageToken'------ * 'httphclKind'------ * 'httphclItems'------ * 'httphclSelfLink'------ * 'httphclId'-hTTPHealthCheckList-    :: HTTPHealthCheckList-hTTPHealthCheckList =-    HTTPHealthCheckList'-    { _httphclNextPageToken = Nothing-    , _httphclKind = "compute#httpHealthCheckList"-    , _httphclItems = Nothing-    , _httphclSelfLink = Nothing-    , _httphclId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)-httphclNextPageToken-  = lens _httphclNextPageToken-      (\ s a -> s{_httphclNextPageToken = a})---- | Type of resource.-httphclKind :: Lens' HTTPHealthCheckList Text-httphclKind-  = lens _httphclKind (\ s a -> s{_httphclKind = a})---- | A list of HttpHealthCheck resources.-httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]-httphclItems-  = lens _httphclItems (\ s a -> s{_httphclItems = a})-      . _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)-httphclSelfLink-  = lens _httphclSelfLink-      (\ s a -> s{_httphclSelfLink = a})---- | [Output Only] Unique identifier for the resource. Defined by the server.-httphclId :: Lens' HTTPHealthCheckList (Maybe Text)-httphclId-  = lens _httphclId (\ s a -> s{_httphclId = a})--instance FromJSON HTTPHealthCheckList where-        parseJSON-          = withObject "HTTPHealthCheckList"-              (\ o ->-                 HTTPHealthCheckList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#httpHealthCheckList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON HTTPHealthCheckList where-        toJSON HTTPHealthCheckList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _httphclNextPageToken,-                  Just ("kind" .= _httphclKind),-                  ("items" .=) <$> _httphclItems,-                  ("selfLink" .=) <$> _httphclSelfLink,-                  ("id" .=) <$> _httphclId])---- | [Output Only] The warning that replaces the list of managed instance--- groups when the list is empty.------ /See:/ 'instanceGroupManagersScopedListWarning' smart constructor.-data InstanceGroupManagersScopedListWarning = InstanceGroupManagersScopedListWarning'-    { _igmslwData    :: !(Maybe [InstanceGroupManagersScopedListWarningDataItem])-    , _igmslwCode    :: !(Maybe InstanceGroupManagersScopedListWarningCode)-    , _igmslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupManagersScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmslwData'------ * 'igmslwCode'------ * 'igmslwMessage'-instanceGroupManagersScopedListWarning-    :: InstanceGroupManagersScopedListWarning-instanceGroupManagersScopedListWarning =-    InstanceGroupManagersScopedListWarning'-    { _igmslwData = Nothing-    , _igmslwCode = Nothing-    , _igmslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]-igmslwData-  = lens _igmslwData (\ s a -> s{_igmslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)-igmslwCode-  = lens _igmslwCode (\ s a -> s{_igmslwCode = a})---- | [Output Only] A human-readable description of the warning code.-igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)-igmslwMessage-  = lens _igmslwMessage-      (\ s a -> s{_igmslwMessage = a})--instance FromJSON-         InstanceGroupManagersScopedListWarning where-        parseJSON-          = withObject "InstanceGroupManagersScopedListWarning"-              (\ o ->-                 InstanceGroupManagersScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON-         InstanceGroupManagersScopedListWarning where-        toJSON InstanceGroupManagersScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _igmslwData,-                  ("code" .=) <$> _igmslwCode,-                  ("message" .=) <$> _igmslwMessage])------- /See:/ 'urlMapsValidateRequest' smart constructor.-newtype URLMapsValidateRequest = URLMapsValidateRequest'-    { _umvrResource :: Maybe URLMap-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapsValidateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umvrResource'-urlMapsValidateRequest-    :: URLMapsValidateRequest-urlMapsValidateRequest =-    URLMapsValidateRequest'-    { _umvrResource = Nothing-    }---- | Content of the UrlMap to be validated.-umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)-umvrResource-  = lens _umvrResource (\ s a -> s{_umvrResource = a})--instance FromJSON URLMapsValidateRequest where-        parseJSON-          = withObject "URLMapsValidateRequest"-              (\ o ->-                 URLMapsValidateRequest' <$> (o .:? "resource"))--instance ToJSON URLMapsValidateRequest where-        toJSON URLMapsValidateRequest'{..}-          = object-              (catMaybes [("resource" .=) <$> _umvrResource])------- /See:/ 'instanceGroupManagersSetTargetPoolsRequest' smart constructor.-data InstanceGroupManagersSetTargetPoolsRequest = InstanceGroupManagersSetTargetPoolsRequest'-    { _igmstprFingerprint :: !(Maybe Base64)-    , _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 _Base64---- | The list of target pool URLs that instances in this managed instance--- group belong to. The managed instance group applies these target pools--- to all of the instances in the group. Existing instances and new--- instances in the group all receive these target pool settings.-igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]-igmstprTargetPools-  = lens _igmstprTargetPools-      (\ s a -> s{_igmstprTargetPools = a})-      . _Default-      . _Coerce--instance FromJSON-         InstanceGroupManagersSetTargetPoolsRequest where-        parseJSON-          = withObject-              "InstanceGroupManagersSetTargetPoolsRequest"-              (\ o ->-                 InstanceGroupManagersSetTargetPoolsRequest' <$>-                   (o .:? "fingerprint") <*>-                     (o .:? "targetPools" .!= mempty))--instance ToJSON-         InstanceGroupManagersSetTargetPoolsRequest where-        toJSON-          InstanceGroupManagersSetTargetPoolsRequest'{..}-          = object-              (catMaybes-                 [("fingerprint" .=) <$> _igmstprFingerprint,-                  ("targetPools" .=) <$> _igmstprTargetPools])---- | Contains a list of HttpsHealthCheck resources.------ /See:/ 'httpsHealthCheckList' smart constructor.-data HTTPSHealthCheckList = HTTPSHealthCheckList'-    { _hhclNextPageToken :: !(Maybe Text)-    , _hhclKind          :: !Text-    , _hhclItems         :: !(Maybe [HTTPSHealthCheck])-    , _hhclSelfLink      :: !(Maybe Text)-    , _hhclId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HTTPSHealthCheckList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hhclNextPageToken'------ * 'hhclKind'------ * 'hhclItems'------ * 'hhclSelfLink'------ * 'hhclId'-httpsHealthCheckList-    :: HTTPSHealthCheckList-httpsHealthCheckList =-    HTTPSHealthCheckList'-    { _hhclNextPageToken = Nothing-    , _hhclKind = "compute#httpsHealthCheckList"-    , _hhclItems = Nothing-    , _hhclSelfLink = Nothing-    , _hhclId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)-hhclNextPageToken-  = lens _hhclNextPageToken-      (\ s a -> s{_hhclNextPageToken = a})---- | Type of resource.-hhclKind :: Lens' HTTPSHealthCheckList Text-hhclKind = lens _hhclKind (\ s a -> s{_hhclKind = a})---- | A list of HttpsHealthCheck resources.-hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]-hhclItems-  = lens _hhclItems (\ s a -> s{_hhclItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)-hhclSelfLink-  = lens _hhclSelfLink (\ s a -> s{_hhclSelfLink = a})---- | [Output Only] Unique identifier for the resource; defined by the server.-hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)-hhclId = lens _hhclId (\ s a -> s{_hhclId = a})--instance FromJSON HTTPSHealthCheckList where-        parseJSON-          = withObject "HTTPSHealthCheckList"-              (\ o ->-                 HTTPSHealthCheckList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#httpsHealthCheckList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON HTTPSHealthCheckList where-        toJSON HTTPSHealthCheckList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _hhclNextPageToken,-                  Just ("kind" .= _hhclKind),-                  ("items" .=) <$> _hhclItems,-                  ("selfLink" .=) <$> _hhclSelfLink,-                  ("id" .=) <$> _hhclId])------- /See:/ 'operationErrorErrorsItem' smart constructor.-data OperationErrorErrorsItem = OperationErrorErrorsItem'-    { _oeeiLocation :: !(Maybe Text)-    , _oeeiCode     :: !(Maybe Text)-    , _oeeiMessage  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'oeeiLocation'------ * 'oeeiCode'------ * 'oeeiMessage'-operationErrorErrorsItem-    :: OperationErrorErrorsItem-operationErrorErrorsItem =-    OperationErrorErrorsItem'-    { _oeeiLocation = Nothing-    , _oeeiCode = Nothing-    , _oeeiMessage = Nothing-    }---- | [Output Only] Indicates the field in the request that caused the error.--- This property is optional.-oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)-oeeiLocation-  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})---- | [Output Only] The error type identifier for this error.-oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)-oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})---- | [Output Only] An optional, human-readable error message.-oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)-oeeiMessage-  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})--instance FromJSON OperationErrorErrorsItem where-        parseJSON-          = withObject "OperationErrorErrorsItem"-              (\ o ->-                 OperationErrorErrorsItem' <$>-                   (o .:? "location") <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON OperationErrorErrorsItem where-        toJSON OperationErrorErrorsItem'{..}-          = object-              (catMaybes-                 [("location" .=) <$> _oeeiLocation,-                  ("code" .=) <$> _oeeiCode,-                  ("message" .=) <$> _oeeiMessage])---- | A license resource.------ /See:/ 'license' smart constructor.-data License = License'-    { _lChargesUseFee :: !(Maybe Bool)-    , _lKind          :: !Text-    , _lSelfLink      :: !(Maybe Text)-    , _lName          :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'License' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'lChargesUseFee'------ * 'lKind'------ * 'lSelfLink'------ * 'lName'-license-    :: License-license =-    License'-    { _lChargesUseFee = Nothing-    , _lKind = "compute#license"-    , _lSelfLink = Nothing-    , _lName = Nothing-    }---- | [Output Only] If true, the customer will be charged license fee for--- running software that contains this license on an instance.-lChargesUseFee :: Lens' License (Maybe Bool)-lChargesUseFee-  = lens _lChargesUseFee-      (\ s a -> s{_lChargesUseFee = a})---- | [Output Only] Type of resource. Always compute#license for licenses.-lKind :: Lens' License Text-lKind = lens _lKind (\ s a -> s{_lKind = a})---- | [Output Only] Server-defined URL for the resource.-lSelfLink :: Lens' License (Maybe Text)-lSelfLink-  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})---- | [Output Only] Name of the resource. The name is 1-63 characters long and--- complies with RFC1035.-lName :: Lens' License (Maybe Text)-lName = lens _lName (\ s a -> s{_lName = a})--instance FromJSON License where-        parseJSON-          = withObject "License"-              (\ o ->-                 License' <$>-                   (o .:? "chargesUseFee") <*>-                     (o .:? "kind" .!= "compute#license")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name"))--instance ToJSON License where-        toJSON License'{..}-          = object-              (catMaybes-                 [("chargesUseFee" .=) <$> _lChargesUseFee,-                  Just ("kind" .= _lKind),-                  ("selfLink" .=) <$> _lSelfLink,-                  ("name" .=) <$> _lName])---- | A path-matching rule for a URL. If matched, will use the specified--- BackendService to handle the traffic arriving at this URL.------ /See:/ 'pathRule' smart constructor.-data PathRule = PathRule'-    { _prService :: !(Maybe Text)-    , _prPaths   :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'PathRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'prService'------ * 'prPaths'-pathRule-    :: PathRule-pathRule =-    PathRule'-    { _prService = Nothing-    , _prPaths = Nothing-    }---- | The URL of the BackendService resource if this rule is matched.-prService :: Lens' PathRule (Maybe Text)-prService-  = lens _prService (\ s a -> s{_prService = a})---- | The list of path patterns to match. Each must start with \/ and the only--- place a * is allowed is at the end following a \/. The string fed to the--- path matcher does not include any text after the first ? or #, and those--- chars are not allowed here.-prPaths :: Lens' PathRule [Text]-prPaths-  = lens _prPaths (\ s a -> s{_prPaths = a}) . _Default-      . _Coerce--instance FromJSON PathRule where-        parseJSON-          = withObject "PathRule"-              (\ o ->-                 PathRule' <$>-                   (o .:? "service") <*> (o .:? "paths" .!= mempty))--instance ToJSON PathRule where-        toJSON PathRule'{..}-          = object-              (catMaybes-                 [("service" .=) <$> _prService,-                  ("paths" .=) <$> _prPaths])---- | Contains a list of instances.------ /See:/ 'instanceList' smart constructor.-data InstanceList = InstanceList'-    { _insNextPageToken :: !(Maybe Text)-    , _insKind          :: !Text-    , _insItems         :: !(Maybe [Instance])-    , _insSelfLink      :: !(Maybe Text)-    , _insId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'insNextPageToken'------ * 'insKind'------ * 'insItems'------ * 'insSelfLink'------ * 'insId'-instanceList-    :: InstanceList-instanceList =-    InstanceList'-    { _insNextPageToken = Nothing-    , _insKind = "compute#instanceList"-    , _insItems = Nothing-    , _insSelfLink = Nothing-    , _insId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-insNextPageToken :: Lens' InstanceList (Maybe Text)-insNextPageToken-  = lens _insNextPageToken-      (\ s a -> s{_insNextPageToken = a})---- | [Output Only] Type of resource. Always compute#instanceList for lists of--- Instance resources.-insKind :: Lens' InstanceList Text-insKind = lens _insKind (\ s a -> s{_insKind = a})---- | [Output Only] A list of instances.-insItems :: Lens' InstanceList [Instance]-insItems-  = lens _insItems (\ s a -> s{_insItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-insSelfLink :: Lens' InstanceList (Maybe Text)-insSelfLink-  = lens _insSelfLink (\ s a -> s{_insSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-insId :: Lens' InstanceList (Maybe Text)-insId = lens _insId (\ s a -> s{_insId = a})--instance FromJSON InstanceList where-        parseJSON-          = withObject "InstanceList"-              (\ o ->-                 InstanceList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#instanceList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON InstanceList where-        toJSON InstanceList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _insNextPageToken,-                  Just ("kind" .= _insKind),-                  ("items" .=) <$> _insItems,-                  ("selfLink" .=) <$> _insSelfLink,-                  ("id" .=) <$> _insId])---- | [Output] A map of scoped Subnetwork lists.------ /See:/ 'subnetworkAggregatedListItems' smart constructor.-newtype SubnetworkAggregatedListItems = SubnetworkAggregatedListItems'-    { _saliAddtional :: HashMap Text SubnetworksScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SubnetworkAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'saliAddtional'-subnetworkAggregatedListItems-    :: HashMap Text SubnetworksScopedList -- ^ 'saliAddtional'-    -> SubnetworkAggregatedListItems-subnetworkAggregatedListItems pSaliAddtional_ =-    SubnetworkAggregatedListItems'-    { _saliAddtional = _Coerce # pSaliAddtional_-    }---- | Name of the scope containing this set of Subnetworks.-saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)-saliAddtional-  = lens _saliAddtional-      (\ s a -> s{_saliAddtional = a})-      . _Coerce--instance FromJSON SubnetworkAggregatedListItems where-        parseJSON-          = withObject "SubnetworkAggregatedListItems"-              (\ o ->-                 SubnetworkAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON SubnetworkAggregatedListItems where-        toJSON = toJSON . _saliAddtional------- /See:/ 'managedInstanceLastAttempt' smart constructor.-newtype ManagedInstanceLastAttempt = ManagedInstanceLastAttempt'-    { _milaErrors :: Maybe ManagedInstanceLastAttemptErrors-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ManagedInstanceLastAttempt' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'milaErrors'-managedInstanceLastAttempt-    :: ManagedInstanceLastAttempt-managedInstanceLastAttempt =-    ManagedInstanceLastAttempt'-    { _milaErrors = Nothing-    }---- | [Output Only] Encountered errors during the last attempt to create or--- delete the instance.-milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)-milaErrors-  = lens _milaErrors (\ s a -> s{_milaErrors = a})--instance FromJSON ManagedInstanceLastAttempt where-        parseJSON-          = withObject "ManagedInstanceLastAttempt"-              (\ o ->-                 ManagedInstanceLastAttempt' <$> (o .:? "errors"))--instance ToJSON ManagedInstanceLastAttempt where-        toJSON ManagedInstanceLastAttempt'{..}-          = object (catMaybes [("errors" .=) <$> _milaErrors])---- | Contains a list of BackendService resources.------ /See:/ 'backendServiceList' smart constructor.-data BackendServiceList = BackendServiceList'-    { _bslNextPageToken :: !(Maybe Text)-    , _bslKind          :: !Text-    , _bslItems         :: !(Maybe [BackendService])-    , _bslSelfLink      :: !(Maybe Text)-    , _bslId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'BackendServiceList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bslNextPageToken'------ * 'bslKind'------ * 'bslItems'------ * 'bslSelfLink'------ * 'bslId'-backendServiceList-    :: BackendServiceList-backendServiceList =-    BackendServiceList'-    { _bslNextPageToken = Nothing-    , _bslKind = "compute#backendServiceList"-    , _bslItems = Nothing-    , _bslSelfLink = Nothing-    , _bslId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value 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] The unique identifier for the resource. This identifier is--- defined by the server.-bslId :: Lens' BackendServiceList (Maybe Text)-bslId = lens _bslId (\ s a -> s{_bslId = a})--instance FromJSON BackendServiceList where-        parseJSON-          = withObject "BackendServiceList"-              (\ o ->-                 BackendServiceList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#backendServiceList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON BackendServiceList where-        toJSON BackendServiceList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _bslNextPageToken,-                  Just ("kind" .= _bslKind),-                  ("items" .=) <$> _bslItems,-                  ("selfLink" .=) <$> _bslSelfLink,-                  ("id" .=) <$> _bslId])---- | [Output Only] An informational warning that replaces the list of--- instance groups when the list is empty.------ /See:/ 'instanceGroupsScopedListWarning' smart constructor.-data InstanceGroupsScopedListWarning = InstanceGroupsScopedListWarning'-    { _igslwData    :: !(Maybe [InstanceGroupsScopedListWarningDataItem])-    , _igslwCode    :: !(Maybe InstanceGroupsScopedListWarningCode)-    , _igslwMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsScopedListWarning' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igslwData'------ * 'igslwCode'------ * 'igslwMessage'-instanceGroupsScopedListWarning-    :: InstanceGroupsScopedListWarning-instanceGroupsScopedListWarning =-    InstanceGroupsScopedListWarning'-    { _igslwData = Nothing-    , _igslwCode = Nothing-    , _igslwMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]-igslwData-  = lens _igslwData (\ s a -> s{_igslwData = a}) .-      _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)-igslwCode-  = lens _igslwCode (\ s a -> s{_igslwCode = a})---- | [Output Only] A human-readable description of the warning code.-igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)-igslwMessage-  = lens _igslwMessage (\ s a -> s{_igslwMessage = a})--instance FromJSON InstanceGroupsScopedListWarning-         where-        parseJSON-          = withObject "InstanceGroupsScopedListWarning"-              (\ o ->-                 InstanceGroupsScopedListWarning' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON InstanceGroupsScopedListWarning where-        toJSON InstanceGroupsScopedListWarning'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _igslwData,-                  ("code" .=) <$> _igslwCode,-                  ("message" .=) <$> _igslwMessage])---- | CPU utilization policy.------ /See:/ 'autoscalingPolicyCPUUtilization' smart constructor.-newtype AutoscalingPolicyCPUUtilization = AutoscalingPolicyCPUUtilization'-    { _apcuUtilizationTarget :: Maybe (Textual Double)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoscalingPolicyCPUUtilization' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'apcuUtilizationTarget'-autoscalingPolicyCPUUtilization-    :: AutoscalingPolicyCPUUtilization-autoscalingPolicyCPUUtilization =-    AutoscalingPolicyCPUUtilization'-    { _apcuUtilizationTarget = Nothing-    }---- | The target CPU utilization that the autoscaler should maintain. Must be--- a float value in the range (0, 1]. If not specified, the default is 0.8.--- If the CPU level is below the target utilization, the autoscaler scales--- down the number of instances until it reaches the minimum number of--- instances you specified or until the average CPU of your instances--- reaches the target utilization. If the average CPU is above the target--- utilization, the autoscaler scales up until it reaches the maximum--- number of instances you specified or until the average utilization--- reaches the target utilization.-apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)-apcuUtilizationTarget-  = lens _apcuUtilizationTarget-      (\ s a -> s{_apcuUtilizationTarget = a})-      . mapping _Coerce--instance FromJSON AutoscalingPolicyCPUUtilization-         where-        parseJSON-          = withObject "AutoscalingPolicyCPUUtilization"-              (\ o ->-                 AutoscalingPolicyCPUUtilization' <$>-                   (o .:? "utilizationTarget"))--instance ToJSON AutoscalingPolicyCPUUtilization where-        toJSON AutoscalingPolicyCPUUtilization'{..}-          = object-              (catMaybes-                 [("utilizationTarget" .=) <$>-                    _apcuUtilizationTarget])------- /See:/ 'instanceGroupsScopedListWarningDataItem' smart constructor.-data InstanceGroupsScopedListWarningDataItem = InstanceGroupsScopedListWarningDataItem'-    { _igslwdiValue :: !(Maybe Text)-    , _igslwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igslwdiValue'------ * 'igslwdiKey'-instanceGroupsScopedListWarningDataItem-    :: InstanceGroupsScopedListWarningDataItem-instanceGroupsScopedListWarningDataItem =-    InstanceGroupsScopedListWarningDataItem'-    { _igslwdiValue = Nothing-    , _igslwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)-igslwdiValue-  = lens _igslwdiValue (\ s a -> s{_igslwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)-igslwdiKey-  = lens _igslwdiKey (\ s a -> s{_igslwdiKey = a})--instance FromJSON-         InstanceGroupsScopedListWarningDataItem where-        parseJSON-          = withObject-              "InstanceGroupsScopedListWarningDataItem"-              (\ o ->-                 InstanceGroupsScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON-         InstanceGroupsScopedListWarningDataItem where-        toJSON InstanceGroupsScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _igslwdiValue,-                  ("key" .=) <$> _igslwdiKey])------- /See:/ 'resourceGroupReference' smart constructor.-newtype ResourceGroupReference = ResourceGroupReference'-    { _rgrGroup :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ResourceGroupReference' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'rgrGroup'-resourceGroupReference-    :: ResourceGroupReference-resourceGroupReference =-    ResourceGroupReference'-    { _rgrGroup = Nothing-    }---- | A URI referencing one of the resource views listed in the backend--- service.-rgrGroup :: Lens' ResourceGroupReference (Maybe Text)-rgrGroup = lens _rgrGroup (\ s a -> s{_rgrGroup = a})--instance FromJSON ResourceGroupReference where-        parseJSON-          = withObject "ResourceGroupReference"-              (\ o -> ResourceGroupReference' <$> (o .:? "group"))--instance ToJSON ResourceGroupReference where-        toJSON ResourceGroupReference'{..}-          = object (catMaybes [("group" .=) <$> _rgrGroup])---- | Represents a Firewall resource.------ /See:/ 'firewall' smart constructor.-data Firewall = Firewall'-    { _fSourceTags        :: !(Maybe [Text])-    , _fKind              :: !Text-    , _fTargetTags        :: !(Maybe [Text])-    , _fNetwork           :: !(Maybe Text)-    , _fSourceRanges      :: !(Maybe [Text])-    , _fSelfLink          :: !(Maybe Text)-    , _fName              :: !(Maybe Text)-    , _fCreationTimestamp :: !(Maybe Text)-    , _fId                :: !(Maybe (Textual Word64))-    , _fAllowed           :: !(Maybe [FirewallAllowedItem])-    , _fDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Firewall' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fSourceTags'------ * 'fKind'------ * 'fTargetTags'------ * 'fNetwork'------ * 'fSourceRanges'------ * 'fSelfLink'------ * 'fName'------ * 'fCreationTimestamp'------ * 'fId'------ * 'fAllowed'------ * 'fDescription'-firewall-    :: Firewall-firewall =-    Firewall'-    { _fSourceTags = Nothing-    , _fKind = "compute#firewall"-    , _fTargetTags = Nothing-    , _fNetwork = Nothing-    , _fSourceRanges = Nothing-    , _fSelfLink = Nothing-    , _fName = Nothing-    , _fCreationTimestamp = Nothing-    , _fId = Nothing-    , _fAllowed = Nothing-    , _fDescription = Nothing-    }---- | A list of instance tags which this rule applies to. One or both of--- sourceRanges and sourceTags may be set. If both properties are set, an--- inbound connection is allowed if the range matches the sourceRanges OR--- the tag of the source matches the sourceTags property. The connection--- does not need to match both properties. Source tags cannot be used to--- allow access to an instance\'s external IP address. Because tags are--- associated with an instance, not an IP address, source tags can only be--- used to control traffic traveling from an instance inside the same--- network as the firewall.-fSourceTags :: Lens' Firewall [Text]-fSourceTags-  = lens _fSourceTags (\ s a -> s{_fSourceTags = a}) .-      _Default-      . _Coerce---- | [Output Ony] Type of the resource. Always compute#firewall for firewall--- rules.-fKind :: Lens' Firewall Text-fKind = lens _fKind (\ s a -> s{_fKind = a})---- | A list of instance tags indicating sets of instances located in the--- network that may make network connections as specified in allowed[]. If--- no targetTags are specified, the firewall rule applies to all instances--- on the specified network.-fTargetTags :: Lens' Firewall [Text]-fTargetTags-  = lens _fTargetTags (\ s a -> s{_fTargetTags = a}) .-      _Default-      . _Coerce---- | URL of the network resource for this firewall rule. If not specified--- when creating a firewall rule, the default network is used:--- global\/networks\/default If you choose to specify this property, you--- can specify the network as a full or partial URL. For example, the--- following are all valid URLs: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/myproject\/global\/networks\/my-network--- - projects\/myproject\/global\/networks\/my-network ---- global\/networks\/default-fNetwork :: Lens' Firewall (Maybe Text)-fNetwork = lens _fNetwork (\ s a -> s{_fNetwork = a})---- | The IP address blocks that this rule applies to, expressed in CIDR--- format. One or both of sourceRanges and sourceTags may be set. If both--- properties are set, an inbound connection is allowed if the range--- matches the sourceRanges OR the tag of the source matches the sourceTags--- property. The connection does not need to match both properties.-fSourceRanges :: Lens' Firewall [Text]-fSourceRanges-  = lens _fSourceRanges-      (\ s a -> s{_fSourceRanges = a})-      . _Default-      . _Coerce---- | [Output Only] Server-defined URL for the resource.-fSelfLink :: Lens' Firewall (Maybe Text)-fSelfLink-  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})---- | Name of the resource; provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-fName :: Lens' Firewall (Maybe Text)-fName = lens _fName (\ s a -> s{_fName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-fCreationTimestamp :: Lens' Firewall (Maybe Text)-fCreationTimestamp-  = lens _fCreationTimestamp-      (\ s a -> s{_fCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-fId :: Lens' Firewall (Maybe Word64)-fId-  = lens _fId (\ s a -> s{_fId = a}) . mapping _Coerce---- | The list of rules specified by this firewall. Each rule specifies a--- protocol and port-range tuple that describes a permitted connection.-fAllowed :: Lens' Firewall [FirewallAllowedItem]-fAllowed-  = lens _fAllowed (\ s a -> s{_fAllowed = a}) .-      _Default-      . _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-fDescription :: Lens' Firewall (Maybe Text)-fDescription-  = lens _fDescription (\ s a -> s{_fDescription = a})--instance FromJSON Firewall where-        parseJSON-          = withObject "Firewall"-              (\ o ->-                 Firewall' <$>-                   (o .:? "sourceTags" .!= mempty) <*>-                     (o .:? "kind" .!= "compute#firewall")-                     <*> (o .:? "targetTags" .!= mempty)-                     <*> (o .:? "network")-                     <*> (o .:? "sourceRanges" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "allowed" .!= mempty)-                     <*> (o .:? "description"))--instance ToJSON Firewall where-        toJSON Firewall'{..}-          = object-              (catMaybes-                 [("sourceTags" .=) <$> _fSourceTags,-                  Just ("kind" .= _fKind),-                  ("targetTags" .=) <$> _fTargetTags,-                  ("network" .=) <$> _fNetwork,-                  ("sourceRanges" .=) <$> _fSourceRanges,-                  ("selfLink" .=) <$> _fSelfLink,-                  ("name" .=) <$> _fName,-                  ("creationTimestamp" .=) <$> _fCreationTimestamp,-                  ("id" .=) <$> _fId, ("allowed" .=) <$> _fAllowed,-                  ("description" .=) <$> _fDescription])---- | UrlMaps A host-matching rule for a URL. If matched, will use the named--- PathMatcher to select the BackendService.------ /See:/ 'hostRule' smart constructor.-data HostRule = HostRule'-    { _hrHosts       :: !(Maybe [Text])-    , _hrDescription :: !(Maybe Text)-    , _hrPathMatcher :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'HostRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hrHosts'------ * 'hrDescription'------ * 'hrPathMatcher'-hostRule-    :: HostRule-hostRule =-    HostRule'-    { _hrHosts = Nothing-    , _hrDescription = Nothing-    , _hrPathMatcher = Nothing-    }---- | The list of host patterns to match. They must be valid hostnames, except--- * will match any string of ([a-z0-9-.]*). In that case, * must be the--- first character and must be followed in the pattern by either - or ..-hrHosts :: Lens' HostRule [Text]-hrHosts-  = lens _hrHosts (\ s a -> s{_hrHosts = a}) . _Default-      . _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-hrDescription :: Lens' HostRule (Maybe Text)-hrDescription-  = lens _hrDescription-      (\ s a -> s{_hrDescription = a})---- | The name of the PathMatcher to use to match the path portion of the URL--- if the hostRule matches the URL\'s host portion.-hrPathMatcher :: Lens' HostRule (Maybe Text)-hrPathMatcher-  = lens _hrPathMatcher-      (\ s a -> s{_hrPathMatcher = a})--instance FromJSON HostRule where-        parseJSON-          = withObject "HostRule"-              (\ o ->-                 HostRule' <$>-                   (o .:? "hosts" .!= mempty) <*> (o .:? "description")-                     <*> (o .:? "pathMatcher"))--instance ToJSON HostRule where-        toJSON HostRule'{..}-          = object-              (catMaybes-                 [("hosts" .=) <$> _hrHosts,-                  ("description" .=) <$> _hrDescription,-                  ("pathMatcher" .=) <$> _hrPathMatcher])---- | A quotas entry.------ /See:/ 'quota' smart constructor.-data Quota = Quota'-    { _qMetric :: !(Maybe QuotaMetric)-    , _qLimit  :: !(Maybe (Textual Double))-    , _qUsage  :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Quota' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'qMetric'------ * 'qLimit'------ * 'qUsage'-quota-    :: Quota-quota =-    Quota'-    { _qMetric = Nothing-    , _qLimit = Nothing-    , _qUsage = Nothing-    }---- | [Output Only] Name of the quota metric.-qMetric :: Lens' Quota (Maybe QuotaMetric)-qMetric = lens _qMetric (\ s a -> s{_qMetric = a})---- | [Output Only] Quota limit for this metric.-qLimit :: Lens' Quota (Maybe Double)-qLimit-  = lens _qLimit (\ s a -> s{_qLimit = a}) .-      mapping _Coerce---- | [Output Only] Current usage of this metric.-qUsage :: Lens' Quota (Maybe Double)-qUsage-  = lens _qUsage (\ s a -> s{_qUsage = a}) .-      mapping _Coerce--instance FromJSON Quota where-        parseJSON-          = withObject "Quota"-              (\ o ->-                 Quota' <$>-                   (o .:? "metric") <*> (o .:? "limit") <*>-                     (o .:? "usage"))--instance ToJSON Quota where-        toJSON Quota'{..}-          = object-              (catMaybes-                 [("metric" .=) <$> _qMetric,-                  ("limit" .=) <$> _qLimit, ("usage" .=) <$> _qUsage])------- /See:/ 'instanceGroup' smart constructor.-data InstanceGroup = InstanceGroup'-    { _iiSize              :: !(Maybe (Textual Int32))-    , _iiKind              :: !Text-    , _iiFingerprint       :: !(Maybe Base64)-    , _iiNetwork           :: !(Maybe Text)-    , _iiZone              :: !(Maybe Text)-    , _iiSelfLink          :: !(Maybe Text)-    , _iiName              :: !(Maybe Text)-    , _iiCreationTimestamp :: !(Maybe Text)-    , _iiSubnetwork        :: !(Maybe Text)-    , _iiId                :: !(Maybe (Textual Word64))-    , _iiDescription       :: !(Maybe Text)-    , _iiNamedPorts        :: !(Maybe [NamedPort])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iiSize'------ * 'iiKind'------ * 'iiFingerprint'------ * 'iiNetwork'------ * 'iiZone'------ * 'iiSelfLink'------ * 'iiName'------ * 'iiCreationTimestamp'------ * 'iiSubnetwork'------ * 'iiId'------ * 'iiDescription'------ * 'iiNamedPorts'-instanceGroup-    :: InstanceGroup-instanceGroup =-    InstanceGroup'-    { _iiSize = Nothing-    , _iiKind = "compute#instanceGroup"-    , _iiFingerprint = Nothing-    , _iiNetwork = Nothing-    , _iiZone = Nothing-    , _iiSelfLink = Nothing-    , _iiName = Nothing-    , _iiCreationTimestamp = Nothing-    , _iiSubnetwork = Nothing-    , _iiId = Nothing-    , _iiDescription = Nothing-    , _iiNamedPorts = Nothing-    }---- | [Output Only] The total number of instances in the instance group.-iiSize :: Lens' InstanceGroup (Maybe Int32)-iiSize-  = lens _iiSize (\ s a -> s{_iiSize = a}) .-      mapping _Coerce---- | [Output Only] The resource type, which is always compute#instanceGroup--- for instance groups.-iiKind :: Lens' InstanceGroup Text-iiKind = lens _iiKind (\ s a -> s{_iiKind = a})---- | [Output Only] The fingerprint of the named ports. The system uses this--- fingerprint to detect conflicts when multiple users change the named--- ports concurrently.-iiFingerprint :: Lens' InstanceGroup (Maybe ByteString)-iiFingerprint-  = lens _iiFingerprint-      (\ s a -> s{_iiFingerprint = a})-      . mapping _Base64---- | The URL of the network to which all instances in the instance group--- belong.-iiNetwork :: Lens' InstanceGroup (Maybe Text)-iiNetwork-  = lens _iiNetwork (\ s a -> s{_iiNetwork = a})---- | [Output Only] The URL of the zone where the instance group is located.-iiZone :: Lens' InstanceGroup (Maybe Text)-iiZone = lens _iiZone (\ s a -> s{_iiZone = a})---- | [Output Only] The URL for this instance group. The server generates this--- URL.-iiSelfLink :: Lens' InstanceGroup (Maybe Text)-iiSelfLink-  = lens _iiSelfLink (\ s a -> s{_iiSelfLink = a})---- | The name of the instance group. The name must be 1-63 characters long,--- and comply with RFC1035.-iiName :: Lens' InstanceGroup (Maybe Text)-iiName = lens _iiName (\ s a -> s{_iiName = a})---- | [Output Only] The creation timestamp for this instance group in RFC3339--- text format.-iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)-iiCreationTimestamp-  = lens _iiCreationTimestamp-      (\ s a -> s{_iiCreationTimestamp = a})---- | The URL of the subnetwork to which all instances in the instance group--- belong.-iiSubnetwork :: Lens' InstanceGroup (Maybe Text)-iiSubnetwork-  = lens _iiSubnetwork (\ s a -> s{_iiSubnetwork = a})---- | [Output Only] A unique identifier for this resource type. The server--- generates this identifier.-iiId :: Lens' InstanceGroup (Maybe Word64)-iiId-  = lens _iiId (\ s a -> s{_iiId = a}) .-      mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-iiDescription :: Lens' InstanceGroup (Maybe Text)-iiDescription-  = lens _iiDescription-      (\ s a -> s{_iiDescription = a})---- | Assigns a name to a port number. For example: {name: \"http\", port: 80}--- This allows the system to reference ports by the assigned name instead--- of a port number. Named ports can also contain multiple ports. For--- example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] Named--- ports apply to all instances in this instance group.-iiNamedPorts :: Lens' InstanceGroup [NamedPort]-iiNamedPorts-  = lens _iiNamedPorts (\ s a -> s{_iiNamedPorts = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroup where-        parseJSON-          = withObject "InstanceGroup"-              (\ o ->-                 InstanceGroup' <$>-                   (o .:? "size") <*>-                     (o .:? "kind" .!= "compute#instanceGroup")-                     <*> (o .:? "fingerprint")-                     <*> (o .:? "network")-                     <*> (o .:? "zone")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "subnetwork")-                     <*> (o .:? "id")-                     <*> (o .:? "description")-                     <*> (o .:? "namedPorts" .!= mempty))--instance ToJSON InstanceGroup where-        toJSON InstanceGroup'{..}-          = object-              (catMaybes-                 [("size" .=) <$> _iiSize, Just ("kind" .= _iiKind),-                  ("fingerprint" .=) <$> _iiFingerprint,-                  ("network" .=) <$> _iiNetwork,-                  ("zone" .=) <$> _iiZone,-                  ("selfLink" .=) <$> _iiSelfLink,-                  ("name" .=) <$> _iiName,-                  ("creationTimestamp" .=) <$> _iiCreationTimestamp,-                  ("subnetwork" .=) <$> _iiSubnetwork,-                  ("id" .=) <$> _iiId,-                  ("description" .=) <$> _iiDescription,-                  ("namedPorts" .=) <$> _iiNamedPorts])---- | Contains a list of Snapshot resources.------ /See:/ 'snapshotList' smart constructor.-data SnapshotList = SnapshotList'-    { _snaNextPageToken :: !(Maybe Text)-    , _snaKind          :: !Text-    , _snaItems         :: !(Maybe [Snapshot])-    , _snaSelfLink      :: !(Maybe Text)-    , _snaId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'SnapshotList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'snaNextPageToken'------ * 'snaKind'------ * 'snaItems'------ * 'snaSelfLink'------ * 'snaId'-snapshotList-    :: SnapshotList-snapshotList =-    SnapshotList'-    { _snaNextPageToken = Nothing-    , _snaKind = "compute#snapshotList"-    , _snaItems = Nothing-    , _snaSelfLink = Nothing-    , _snaId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-snaNextPageToken :: Lens' SnapshotList (Maybe Text)-snaNextPageToken-  = lens _snaNextPageToken-      (\ s a -> s{_snaNextPageToken = a})---- | Type of resource.-snaKind :: Lens' SnapshotList Text-snaKind = lens _snaKind (\ s a -> s{_snaKind = a})---- | [Output Only] A list of Snapshot resources.-snaItems :: Lens' SnapshotList [Snapshot]-snaItems-  = lens _snaItems (\ s a -> s{_snaItems = a}) .-      _Default-      . _Coerce---- | [Output Only] Server-defined URL for this resource.-snaSelfLink :: Lens' SnapshotList (Maybe Text)-snaSelfLink-  = lens _snaSelfLink (\ s a -> s{_snaSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-snaId :: Lens' SnapshotList (Maybe Text)-snaId = lens _snaId (\ s a -> s{_snaId = a})--instance FromJSON SnapshotList where-        parseJSON-          = withObject "SnapshotList"-              (\ o ->-                 SnapshotList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#snapshotList")-                     <*> (o .:? "items" .!= mempty)-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON SnapshotList where-        toJSON SnapshotList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _snaNextPageToken,-                  Just ("kind" .= _snaKind),-                  ("items" .=) <$> _snaItems,-                  ("selfLink" .=) <$> _snaSelfLink,-                  ("id" .=) <$> _snaId])------- /See:/ 'testFailure' smart constructor.-data TestFailure = TestFailure'-    { _tfPath            :: !(Maybe Text)-    , _tfExpectedService :: !(Maybe Text)-    , _tfHost            :: !(Maybe Text)-    , _tfActualService   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TestFailure' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tfPath'------ * 'tfExpectedService'------ * 'tfHost'------ * 'tfActualService'-testFailure-    :: TestFailure-testFailure =-    TestFailure'-    { _tfPath = Nothing-    , _tfExpectedService = Nothing-    , _tfHost = Nothing-    , _tfActualService = Nothing-    }--tfPath :: Lens' TestFailure (Maybe Text)-tfPath = lens _tfPath (\ s a -> s{_tfPath = a})--tfExpectedService :: Lens' TestFailure (Maybe Text)-tfExpectedService-  = lens _tfExpectedService-      (\ s a -> s{_tfExpectedService = a})--tfHost :: Lens' TestFailure (Maybe Text)-tfHost = lens _tfHost (\ s a -> s{_tfHost = a})--tfActualService :: Lens' TestFailure (Maybe Text)-tfActualService-  = lens _tfActualService-      (\ s a -> s{_tfActualService = a})--instance FromJSON TestFailure where-        parseJSON-          = withObject "TestFailure"-              (\ o ->-                 TestFailure' <$>-                   (o .:? "path") <*> (o .:? "expectedService") <*>-                     (o .:? "host")-                     <*> (o .:? "actualService"))--instance ToJSON TestFailure where-        toJSON TestFailure'{..}-          = object-              (catMaybes-                 [("path" .=) <$> _tfPath,-                  ("expectedService" .=) <$> _tfExpectedService,-                  ("host" .=) <$> _tfHost,-                  ("actualService" .=) <$> _tfActualService])---- | An instance\'s serial console output.------ /See:/ 'serialPortOutput' smart constructor.-data SerialPortOutput = SerialPortOutput'-    { _spoContents :: !(Maybe Text)-    , _spoKind     :: !Text-    , _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:------ * 'spoContents'------ * 'spoKind'------ * 'spoSelfLink'-serialPortOutput-    :: SerialPortOutput-serialPortOutput =-    SerialPortOutput'-    { _spoContents = Nothing-    , _spoKind = "compute#serialPortOutput"-    , _spoSelfLink = Nothing-    }---- | [Output Only] The contents of the console output.-spoContents :: Lens' SerialPortOutput (Maybe Text)-spoContents-  = lens _spoContents (\ s a -> s{_spoContents = a})---- | [Output Only] Type of the resource. Always compute#serialPortOutput for--- serial port output.-spoKind :: Lens' SerialPortOutput Text-spoKind = lens _spoKind (\ s a -> s{_spoKind = a})---- | [Output Only] Server-defined URL for the resource.-spoSelfLink :: Lens' SerialPortOutput (Maybe Text)-spoSelfLink-  = lens _spoSelfLink (\ s a -> s{_spoSelfLink = a})--instance FromJSON SerialPortOutput where-        parseJSON-          = withObject "SerialPortOutput"-              (\ o ->-                 SerialPortOutput' <$>-                   (o .:? "contents") <*>-                     (o .:? "kind" .!= "compute#serialPortOutput")-                     <*> (o .:? "selfLink"))--instance ToJSON SerialPortOutput where-        toJSON SerialPortOutput'{..}-          = object-              (catMaybes-                 [("contents" .=) <$> _spoContents,-                  Just ("kind" .= _spoKind),-                  ("selfLink" .=) <$> _spoSelfLink])------- /See:/ 'targetVPNGatewayAggregatedList' smart constructor.-data TargetVPNGatewayAggregatedList = TargetVPNGatewayAggregatedList'-    { _tvgalNextPageToken :: !(Maybe Text)-    , _tvgalKind          :: !Text-    , _tvgalItems         :: !(Maybe TargetVPNGatewayAggregatedListItems)-    , _tvgalSelfLink      :: !(Maybe Text)-    , _tvgalId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewayAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgalNextPageToken'------ * 'tvgalKind'------ * 'tvgalItems'------ * 'tvgalSelfLink'------ * 'tvgalId'-targetVPNGatewayAggregatedList-    :: TargetVPNGatewayAggregatedList-targetVPNGatewayAggregatedList =-    TargetVPNGatewayAggregatedList'-    { _tvgalNextPageToken = Nothing-    , _tvgalKind = "compute#targetVpnGatewayAggregatedList"-    , _tvgalItems = Nothing-    , _tvgalSelfLink = Nothing-    , _tvgalId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)-tvgalNextPageToken-  = lens _tvgalNextPageToken-      (\ s a -> s{_tvgalNextPageToken = a})---- | [Output Only] Type of resource. Always compute#targetVpnGateway for--- target VPN gateways.-tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text-tvgalKind-  = lens _tvgalKind (\ s a -> s{_tvgalKind = a})---- | A map of scoped target vpn gateway lists.-tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)-tvgalItems-  = lens _tvgalItems (\ s a -> s{_tvgalItems = a})---- | [Output Only] Server-defined URL for the resource.-tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)-tvgalSelfLink-  = lens _tvgalSelfLink-      (\ s a -> s{_tvgalSelfLink = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)-tvgalId = lens _tvgalId (\ s a -> s{_tvgalId = a})--instance FromJSON TargetVPNGatewayAggregatedList-         where-        parseJSON-          = withObject "TargetVPNGatewayAggregatedList"-              (\ o ->-                 TargetVPNGatewayAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!=-                        "compute#targetVpnGatewayAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON TargetVPNGatewayAggregatedList where-        toJSON TargetVPNGatewayAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _tvgalNextPageToken,-                  Just ("kind" .= _tvgalKind),-                  ("items" .=) <$> _tvgalItems,-                  ("selfLink" .=) <$> _tvgalSelfLink,-                  ("id" .=) <$> _tvgalId])------- /See:/ 'metadataItemsItem' smart constructor.-data MetadataItemsItem = MetadataItemsItem'-    { _miiValue :: !(Maybe Text)-    , _miiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'miiValue'------ * 'miiKey'-metadataItemsItem-    :: MetadataItemsItem-metadataItemsItem =-    MetadataItemsItem'-    { _miiValue = Nothing-    , _miiKey = Nothing-    }---- | Value for the metadata entry. These are free-form strings, and only have--- meaning as interpreted by the image running in the instance. The only--- restriction placed on values is that their size must be less than or--- equal to 32768 bytes.-miiValue :: Lens' MetadataItemsItem (Maybe Text)-miiValue = lens _miiValue (\ s a -> s{_miiValue = a})---- | Key for the metadata entry. Keys must conform to the following regexp:--- [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected--- as part of a URL in the metadata server. Additionally, to avoid--- ambiguity, keys must not conflict with any other metadata keys for the--- project.-miiKey :: Lens' MetadataItemsItem (Maybe Text)-miiKey = lens _miiKey (\ s a -> s{_miiKey = a})--instance FromJSON MetadataItemsItem where-        parseJSON-          = withObject "MetadataItemsItem"-              (\ o ->-                 MetadataItemsItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON MetadataItemsItem where-        toJSON MetadataItemsItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _miiValue, ("key" .=) <$> _miiKey])---- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.------ /See:/ 'targetHTTPSProxy' smart constructor.-data TargetHTTPSProxy = TargetHTTPSProxy'-    { _thpURLMap            :: !(Maybe Text)-    , _thpSSLCertificates   :: !(Maybe [Text])-    , _thpKind              :: !Text-    , _thpSelfLink          :: !(Maybe Text)-    , _thpName              :: !(Maybe Text)-    , _thpCreationTimestamp :: !(Maybe Text)-    , _thpId                :: !(Maybe (Textual Word64))-    , _thpDescription       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetHTTPSProxy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'thpURLMap'------ * 'thpSSLCertificates'------ * 'thpKind'------ * 'thpSelfLink'------ * 'thpName'------ * 'thpCreationTimestamp'------ * 'thpId'------ * 'thpDescription'-targetHTTPSProxy-    :: TargetHTTPSProxy-targetHTTPSProxy =-    TargetHTTPSProxy'-    { _thpURLMap = Nothing-    , _thpSSLCertificates = Nothing-    , _thpKind = "compute#targetHttpsProxy"-    , _thpSelfLink = Nothing-    , _thpName = Nothing-    , _thpCreationTimestamp = Nothing-    , _thpId = Nothing-    , _thpDescription = Nothing-    }---- | A fully-qualified or valid partial URL to the UrlMap resource that--- defines the mapping from URL to the BackendService. For example, the--- following are all valid URLs for specifying a URL map: ---- https:\/\/www.googleapis.compute\/v1\/projects\/project\/global\/urlMaps\/url-map--- - projects\/project\/global\/urlMaps\/url-map - global\/urlMaps\/url-map-thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)-thpURLMap-  = lens _thpURLMap (\ s a -> s{_thpURLMap = a})---- | URLs to SslCertificate resources that are used to authenticate--- connections between users and the load balancer. Currently, exactly one--- SSL certificate must be specified.-thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]-thpSSLCertificates-  = lens _thpSSLCertificates-      (\ s a -> s{_thpSSLCertificates = a})-      . _Default-      . _Coerce---- | [Output Only] Type of resource. Always compute#targetHttpsProxy for--- target HTTPS proxies.-thpKind :: Lens' TargetHTTPSProxy Text-thpKind = lens _thpKind (\ s a -> s{_thpKind = a})---- | [Output Only] Server-defined URL for the resource.-thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)-thpSelfLink-  = lens _thpSelfLink (\ s a -> s{_thpSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-thpName :: Lens' TargetHTTPSProxy (Maybe Text)-thpName = lens _thpName (\ s a -> s{_thpName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)-thpCreationTimestamp-  = lens _thpCreationTimestamp-      (\ s a -> s{_thpCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-thpId :: Lens' TargetHTTPSProxy (Maybe Word64)-thpId-  = lens _thpId (\ s a -> s{_thpId = a}) .-      mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)-thpDescription-  = lens _thpDescription-      (\ s a -> s{_thpDescription = a})--instance FromJSON TargetHTTPSProxy where-        parseJSON-          = withObject "TargetHTTPSProxy"-              (\ o ->-                 TargetHTTPSProxy' <$>-                   (o .:? "urlMap") <*>-                     (o .:? "sslCertificates" .!= mempty)-                     <*> (o .:? "kind" .!= "compute#targetHttpsProxy")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "description"))--instance ToJSON TargetHTTPSProxy where-        toJSON TargetHTTPSProxy'{..}-          = object-              (catMaybes-                 [("urlMap" .=) <$> _thpURLMap,-                  ("sslCertificates" .=) <$> _thpSSLCertificates,-                  Just ("kind" .= _thpKind),-                  ("selfLink" .=) <$> _thpSelfLink,-                  ("name" .=) <$> _thpName,-                  ("creationTimestamp" .=) <$> _thpCreationTimestamp,-                  ("id" .=) <$> _thpId,-                  ("description" .=) <$> _thpDescription])------- /See:/ 'targetVPNGatewaysScopedList' smart constructor.-data TargetVPNGatewaysScopedList = TargetVPNGatewaysScopedList'-    { _tvgslTargetVPNGateways :: !(Maybe [TargetVPNGateway])-    , _tvgslWarning           :: !(Maybe TargetVPNGatewaysScopedListWarning)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'TargetVPNGatewaysScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tvgslTargetVPNGateways'------ * 'tvgslWarning'-targetVPNGatewaysScopedList-    :: TargetVPNGatewaysScopedList-targetVPNGatewaysScopedList =-    TargetVPNGatewaysScopedList'-    { _tvgslTargetVPNGateways = Nothing-    , _tvgslWarning = Nothing-    }---- | [Output Only] List of target vpn gateways contained in this scope.-tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]-tvgslTargetVPNGateways-  = lens _tvgslTargetVPNGateways-      (\ s a -> s{_tvgslTargetVPNGateways = a})-      . _Default-      . _Coerce---- | [Output Only] Informational warning which replaces the list of addresses--- when the list is empty.-tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)-tvgslWarning-  = lens _tvgslWarning (\ s a -> s{_tvgslWarning = a})--instance FromJSON TargetVPNGatewaysScopedList where-        parseJSON-          = withObject "TargetVPNGatewaysScopedList"-              (\ o ->-                 TargetVPNGatewaysScopedList' <$>-                   (o .:? "targetVpnGateways" .!= mempty) <*>-                     (o .:? "warning"))--instance ToJSON TargetVPNGatewaysScopedList where-        toJSON TargetVPNGatewaysScopedList'{..}-          = object-              (catMaybes-                 [("targetVpnGateways" .=) <$>-                    _tvgslTargetVPNGateways,-                  ("warning" .=) <$> _tvgslWarning])---- | An access configuration attached to an instance\'s network interface.------ /See:/ 'accessConfig' smart constructor.-data AccessConfig = AccessConfig'-    { _acKind  :: !Text-    , _acName  :: !(Maybe Text)-    , _acNATIP :: !(Maybe Text)-    , _acType  :: !AccessConfigType-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AccessConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'acKind'------ * 'acName'------ * 'acNATIP'------ * 'acType'-accessConfig-    :: AccessConfig-accessConfig =-    AccessConfig'-    { _acKind = "compute#accessConfig"-    , _acName = Nothing-    , _acNATIP = Nothing-    , _acType = OneToOneNAT-    }---- | [Output Only] Type of the resource. Always compute#accessConfig for--- access configs.-acKind :: Lens' AccessConfig Text-acKind = lens _acKind (\ s a -> s{_acKind = a})---- | Name of this access configuration.-acName :: Lens' AccessConfig (Maybe Text)-acName = lens _acName (\ s a -> s{_acName = a})---- | An external IP address associated with this instance. Specify an unused--- static external IP address available to the project or leave this field--- undefined to use an IP from a shared ephemeral IP address pool. If you--- specify a static external IP address, it must live in the same region as--- the zone of the instance.-acNATIP :: Lens' AccessConfig (Maybe Text)-acNATIP = lens _acNATIP (\ s a -> s{_acNATIP = a})---- | The type of configuration. The default and only option is--- ONE_TO_ONE_NAT.-acType :: Lens' AccessConfig AccessConfigType-acType = lens _acType (\ s a -> s{_acType = a})--instance FromJSON AccessConfig where-        parseJSON-          = withObject "AccessConfig"-              (\ o ->-                 AccessConfig' <$>-                   (o .:? "kind" .!= "compute#accessConfig") <*>-                     (o .:? "name")-                     <*> (o .:? "natIP")-                     <*> (o .:? "type" .!= OneToOneNAT))--instance ToJSON AccessConfig where-        toJSON AccessConfig'{..}-          = object-              (catMaybes-                 [Just ("kind" .= _acKind), ("name" .=) <$> _acName,-                  ("natIP" .=) <$> _acNATIP, Just ("type" .= _acType)])------- /See:/ 'managedInstanceLastAttemptErrorsErrorsItem' smart constructor.-data ManagedInstanceLastAttemptErrorsErrorsItem = ManagedInstanceLastAttemptErrorsErrorsItem'-    { _milaeeiLocation :: !(Maybe Text)-    , _milaeeiCode     :: !(Maybe Text)-    , _milaeeiMessage  :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'ManagedInstanceLastAttemptErrorsErrorsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'milaeeiLocation'------ * 'milaeeiCode'------ * 'milaeeiMessage'-managedInstanceLastAttemptErrorsErrorsItem-    :: ManagedInstanceLastAttemptErrorsErrorsItem-managedInstanceLastAttemptErrorsErrorsItem =-    ManagedInstanceLastAttemptErrorsErrorsItem'-    { _milaeeiLocation = Nothing-    , _milaeeiCode = Nothing-    , _milaeeiMessage = Nothing-    }---- | [Output Only] Indicates the field in the request that caused the error.--- This property is optional.-milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)-milaeeiLocation-  = lens _milaeeiLocation-      (\ s a -> s{_milaeeiLocation = a})---- | [Output Only] The error type identifier for this error.-milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)-milaeeiCode-  = lens _milaeeiCode (\ s a -> s{_milaeeiCode = a})---- | [Output Only] An optional, human-readable error message.-milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)-milaeeiMessage-  = lens _milaeeiMessage-      (\ s a -> s{_milaeeiMessage = a})--instance FromJSON-         ManagedInstanceLastAttemptErrorsErrorsItem where-        parseJSON-          = withObject-              "ManagedInstanceLastAttemptErrorsErrorsItem"-              (\ o ->-                 ManagedInstanceLastAttemptErrorsErrorsItem' <$>-                   (o .:? "location") <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON-         ManagedInstanceLastAttemptErrorsErrorsItem where-        toJSON-          ManagedInstanceLastAttemptErrorsErrorsItem'{..}-          = object-              (catMaybes-                 [("location" .=) <$> _milaeeiLocation,-                  ("code" .=) <$> _milaeeiCode,-                  ("message" .=) <$> _milaeeiMessage])------- /See:/ 'instancesScopedListWarningDataItem' smart constructor.-data InstancesScopedListWarningDataItem = InstancesScopedListWarningDataItem'-    { _islwdiValue :: !(Maybe Text)-    , _islwdiKey   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstancesScopedListWarningDataItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'islwdiValue'------ * 'islwdiKey'-instancesScopedListWarningDataItem-    :: InstancesScopedListWarningDataItem-instancesScopedListWarningDataItem =-    InstancesScopedListWarningDataItem'-    { _islwdiValue = Nothing-    , _islwdiKey = Nothing-    }---- | [Output Only] A warning data value corresponding to the key.-islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)-islwdiValue-  = lens _islwdiValue (\ s a -> s{_islwdiValue = a})---- | [Output Only] A key that provides more detail on the warning being--- returned. For example, for warnings where there are no results in a list--- request for a particular zone, this key might be scope and the key value--- might be the zone name. Other examples might be a key indicating a--- deprecated resource and a suggested replacement, or a warning about--- invalid network settings (for example, if an instance attempts to--- perform IP forwarding but is not enabled for IP forwarding).-islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)-islwdiKey-  = lens _islwdiKey (\ s a -> s{_islwdiKey = a})--instance FromJSON InstancesScopedListWarningDataItem-         where-        parseJSON-          = withObject "InstancesScopedListWarningDataItem"-              (\ o ->-                 InstancesScopedListWarningDataItem' <$>-                   (o .:? "value") <*> (o .:? "key"))--instance ToJSON InstancesScopedListWarningDataItem-         where-        toJSON InstancesScopedListWarningDataItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _islwdiValue,-                  ("key" .=) <$> _islwdiKey])---- | A BackendService resource. This resource defines a group of backend--- virtual machines and their serving capacity.------ /See:/ 'backendService' smart constructor.-data BackendService = BackendService'-    { _bsBackends          :: !(Maybe [Backend])-    , _bsKind              :: !Text-    , _bsFingerprint       :: !(Maybe Base64)-    , _bsProtocol          :: !(Maybe BackendServiceProtocol)-    , _bsSelfLink          :: !(Maybe Text)-    , _bsName              :: !(Maybe Text)-    , _bsCreationTimestamp :: !(Maybe Text)-    , _bsId                :: !(Maybe (Textual Word64))-    , _bsRegion            :: !(Maybe Text)-    , _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:------ * 'bsBackends'------ * 'bsKind'------ * 'bsFingerprint'------ * 'bsProtocol'------ * 'bsSelfLink'------ * 'bsName'------ * 'bsCreationTimestamp'------ * 'bsId'------ * 'bsRegion'------ * 'bsTimeoutSec'------ * 'bsDescription'------ * 'bsPortName'------ * 'bsHealthChecks'------ * 'bsPort'-backendService-    :: BackendService-backendService =-    BackendService'-    { _bsBackends = Nothing-    , _bsKind = "compute#backendService"-    , _bsFingerprint = Nothing-    , _bsProtocol = Nothing-    , _bsSelfLink = Nothing-    , _bsName = Nothing-    , _bsCreationTimestamp = Nothing-    , _bsId = Nothing-    , _bsRegion = Nothing-    , _bsTimeoutSec = Nothing-    , _bsDescription = Nothing-    , _bsPortName = Nothing-    , _bsHealthChecks = Nothing-    , _bsPort = Nothing-    }---- | The list of backends that serve this BackendService.-bsBackends :: Lens' BackendService [Backend]-bsBackends-  = lens _bsBackends (\ s a -> s{_bsBackends = a}) .-      _Default-      . _Coerce---- | [Output Only] Type of resource. Always compute#backendService for--- backend services.-bsKind :: Lens' BackendService Text-bsKind = lens _bsKind (\ s a -> s{_bsKind = a})---- | Fingerprint of this resource. A hash of the contents stored in this--- object. This field is used in optimistic locking. This field will be--- ignored when inserting a BackendService. An up-to-date fingerprint must--- be provided in order to update the BackendService.-bsFingerprint :: Lens' BackendService (Maybe ByteString)-bsFingerprint-  = lens _bsFingerprint-      (\ s a -> s{_bsFingerprint = a})-      . mapping _Base64---- | The protocol this BackendService uses to communicate with backends.--- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL.-bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)-bsProtocol-  = lens _bsProtocol (\ s a -> s{_bsProtocol = a})---- | [Output Only] Server-defined URL for the resource.-bsSelfLink :: Lens' BackendService (Maybe Text)-bsSelfLink-  = lens _bsSelfLink (\ s a -> s{_bsSelfLink = a})---- | Name of the resource. Provided by the client when the resource is--- created. The name must be 1-63 characters long, and comply with RFC1035.--- Specifically, the name must be 1-63 characters long and match the--- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first--- character must be a lowercase letter, and all following characters must--- be a dash, lowercase letter, or digit, except the last character, which--- cannot be a dash.-bsName :: Lens' BackendService (Maybe Text)-bsName = lens _bsName (\ s a -> s{_bsName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-bsCreationTimestamp :: Lens' BackendService (Maybe Text)-bsCreationTimestamp-  = lens _bsCreationTimestamp-      (\ s a -> s{_bsCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-bsId :: Lens' BackendService (Maybe Word64)-bsId-  = lens _bsId (\ s a -> s{_bsId = a}) .-      mapping _Coerce---- | [Output Only] URL of the region where the regional backend service--- resides. This field is not applicable to global backend services.-bsRegion :: Lens' BackendService (Maybe Text)-bsRegion = lens _bsRegion (\ s a -> s{_bsRegion = a})---- | 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.-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.-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.-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 .:? "backends" .!= mempty) <*>-                     (o .:? "kind" .!= "compute#backendService")-                     <*> (o .:? "fingerprint")-                     <*> (o .:? "protocol")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "region")-                     <*> (o .:? "timeoutSec")-                     <*> (o .:? "description")-                     <*> (o .:? "portName")-                     <*> (o .:? "healthChecks" .!= mempty)-                     <*> (o .:? "port"))--instance ToJSON BackendService where-        toJSON BackendService'{..}-          = object-              (catMaybes-                 [("backends" .=) <$> _bsBackends,-                  Just ("kind" .= _bsKind),-                  ("fingerprint" .=) <$> _bsFingerprint,-                  ("protocol" .=) <$> _bsProtocol,-                  ("selfLink" .=) <$> _bsSelfLink,-                  ("name" .=) <$> _bsName,-                  ("creationTimestamp" .=) <$> _bsCreationTimestamp,-                  ("id" .=) <$> _bsId, ("region" .=) <$> _bsRegion,-                  ("timeoutSec" .=) <$> _bsTimeoutSec,-                  ("description" .=) <$> _bsDescription,-                  ("portName" .=) <$> _bsPortName,-                  ("healthChecks" .=) <$> _bsHealthChecks,-                  ("port" .=) <$> _bsPort])------- /See:/ 'instanceMoveRequest' smart constructor.-data InstanceMoveRequest = InstanceMoveRequest'-    { _imrTargetInstance  :: !(Maybe Text)-    , _imrDestinationZone :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceMoveRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'imrTargetInstance'------ * 'imrDestinationZone'-instanceMoveRequest-    :: InstanceMoveRequest-instanceMoveRequest =-    InstanceMoveRequest'-    { _imrTargetInstance = Nothing-    , _imrDestinationZone = Nothing-    }---- | The URL of the target instance to move. This can be a full or partial--- URL. For example, the following are all valid URLs to an instance: ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance--- - projects\/project\/zones\/zone\/instances\/instance ---- zones\/zone\/instances\/instance-imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)-imrTargetInstance-  = lens _imrTargetInstance-      (\ s a -> s{_imrTargetInstance = a})---- | The URL of the destination zone to move the instance. This can be a full--- or partial URL. For example, the following are all valid URLs to a zone:--- ---- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone--- - projects\/project\/zones\/zone - zones\/zone-imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)-imrDestinationZone-  = lens _imrDestinationZone-      (\ s a -> s{_imrDestinationZone = a})--instance FromJSON InstanceMoveRequest where-        parseJSON-          = withObject "InstanceMoveRequest"-              (\ o ->-                 InstanceMoveRequest' <$>-                   (o .:? "targetInstance") <*>-                     (o .:? "destinationZone"))--instance ToJSON InstanceMoveRequest where-        toJSON InstanceMoveRequest'{..}-          = object-              (catMaybes-                 [("targetInstance" .=) <$> _imrTargetInstance,-                  ("destinationZone" .=) <$> _imrDestinationZone])------- /See:/ 'instanceGroupsScopedList' smart constructor.-data InstanceGroupsScopedList = InstanceGroupsScopedList'-    { _igslWarning        :: !(Maybe InstanceGroupsScopedListWarning)-    , _igslInstanceGroups :: !(Maybe [InstanceGroup])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupsScopedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igslWarning'------ * 'igslInstanceGroups'-instanceGroupsScopedList-    :: InstanceGroupsScopedList-instanceGroupsScopedList =-    InstanceGroupsScopedList'-    { _igslWarning = Nothing-    , _igslInstanceGroups = Nothing-    }---- | [Output Only] An informational warning that replaces the list of--- instance groups when the list is empty.-igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)-igslWarning-  = lens _igslWarning (\ s a -> s{_igslWarning = a})---- | [Output Only] The list of instance groups that are contained in this--- scope.-igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]-igslInstanceGroups-  = lens _igslInstanceGroups-      (\ s a -> s{_igslInstanceGroups = a})-      . _Default-      . _Coerce--instance FromJSON InstanceGroupsScopedList where-        parseJSON-          = withObject "InstanceGroupsScopedList"-              (\ o ->-                 InstanceGroupsScopedList' <$>-                   (o .:? "warning") <*>-                     (o .:? "instanceGroups" .!= mempty))--instance ToJSON InstanceGroupsScopedList where-        toJSON InstanceGroupsScopedList'{..}-          = object-              (catMaybes-                 [("warning" .=) <$> _igslWarning,-                  ("instanceGroups" .=) <$> _igslInstanceGroups])---- | An HttpsHealthCheck resource. This resource defines a template for how--- individual instances should be checked for health, via HTTPS.------ /See:/ 'httpsHealthCheck' smart constructor.-data HTTPSHealthCheck = HTTPSHealthCheck'-    { _hhcHealthyThreshold   :: !(Maybe (Textual Int32))-    , _hhcKind               :: !Text-    , _hhcRequestPath        :: !(Maybe Text)-    , _hhcSelfLink           :: !(Maybe Text)-    , _hhcCheckIntervalSec   :: !(Maybe (Textual Int32))-    , _hhcName               :: !(Maybe Text)-    , _hhcCreationTimestamp  :: !(Maybe Text)-    , _hhcId                 :: !(Maybe (Textual Word64))-    , _hhcHost               :: !(Maybe Text)-    , _hhcTimeoutSec         :: !(Maybe (Textual Int32))-    , _hhcDescription        :: !(Maybe Text)-    , _hhcUnhealthyThreshold :: !(Maybe (Textual Int32))-    , _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:------ * 'hhcHealthyThreshold'------ * 'hhcKind'------ * 'hhcRequestPath'------ * 'hhcSelfLink'------ * 'hhcCheckIntervalSec'------ * 'hhcName'------ * 'hhcCreationTimestamp'------ * 'hhcId'------ * 'hhcHost'------ * 'hhcTimeoutSec'------ * 'hhcDescription'------ * 'hhcUnhealthyThreshold'------ * 'hhcPort'-httpsHealthCheck-    :: HTTPSHealthCheck-httpsHealthCheck =-    HTTPSHealthCheck'-    { _hhcHealthyThreshold = Nothing-    , _hhcKind = "compute#httpsHealthCheck"-    , _hhcRequestPath = Nothing-    , _hhcSelfLink = Nothing-    , _hhcCheckIntervalSec = Nothing-    , _hhcName = Nothing-    , _hhcCreationTimestamp = Nothing-    , _hhcId = Nothing-    , _hhcHost = Nothing-    , _hhcTimeoutSec = Nothing-    , _hhcDescription = Nothing-    , _hhcUnhealthyThreshold = Nothing-    , _hhcPort = Nothing-    }---- | A so-far unhealthy instance will be marked healthy after this many--- consecutive successes. The default value is 2.-hhcHealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)-hhcHealthyThreshold-  = lens _hhcHealthyThreshold-      (\ s a -> s{_hhcHealthyThreshold = a})-      . mapping _Coerce---- | Type of the resource.-hhcKind :: Lens' HTTPSHealthCheck Text-hhcKind = lens _hhcKind (\ s a -> s{_hhcKind = 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})---- | [Output Only] Server-defined URL for the resource.-hhcSelfLink :: Lens' HTTPSHealthCheck (Maybe Text)-hhcSelfLink-  = lens _hhcSelfLink (\ s a -> s{_hhcSelfLink = a})---- | How often (in seconds) to send a health check. The default value is 5--- seconds.-hhcCheckIntervalSec :: Lens' HTTPSHealthCheck (Maybe Int32)-hhcCheckIntervalSec-  = lens _hhcCheckIntervalSec-      (\ s a -> s{_hhcCheckIntervalSec = 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.-hhcName :: Lens' HTTPSHealthCheck (Maybe Text)-hhcName = lens _hhcName (\ s a -> s{_hhcName = a})---- | [Output Only] Creation timestamp in RFC3339 text format.-hhcCreationTimestamp :: Lens' HTTPSHealthCheck (Maybe Text)-hhcCreationTimestamp-  = lens _hhcCreationTimestamp-      (\ s a -> s{_hhcCreationTimestamp = a})---- | [Output Only] The unique identifier for the resource. This identifier is--- defined by the server.-hhcId :: Lens' HTTPSHealthCheck (Maybe Word64)-hhcId-  = lens _hhcId (\ s a -> s{_hhcId = a}) .-      mapping _Coerce---- | The value of the host header in the HTTPS health check request. If left--- empty (default value), the public 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})---- | How long (in seconds) to wait before claiming failure. The default value--- is 5 seconds. It is invalid for timeoutSec to have a greater value than--- checkIntervalSec.-hhcTimeoutSec :: Lens' HTTPSHealthCheck (Maybe Int32)-hhcTimeoutSec-  = lens _hhcTimeoutSec-      (\ s a -> s{_hhcTimeoutSec = a})-      . mapping _Coerce---- | An optional description of this resource. Provide this property when you--- create the resource.-hhcDescription :: Lens' HTTPSHealthCheck (Maybe Text)-hhcDescription-  = lens _hhcDescription-      (\ s a -> s{_hhcDescription = a})---- | A so-far healthy instance will be marked unhealthy after this many--- consecutive failures. The default value is 2.-hhcUnhealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)-hhcUnhealthyThreshold-  = lens _hhcUnhealthyThreshold-      (\ s a -> s{_hhcUnhealthyThreshold = a})-      . mapping _Coerce---- | The TCP port number for the HTTPS health check request. The default--- value is 443.-hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)-hhcPort-  = lens _hhcPort (\ s a -> s{_hhcPort = a}) .-      mapping _Coerce--instance FromJSON HTTPSHealthCheck where-        parseJSON-          = withObject "HTTPSHealthCheck"-              (\ o ->-                 HTTPSHealthCheck' <$>-                   (o .:? "healthyThreshold") <*>-                     (o .:? "kind" .!= "compute#httpsHealthCheck")-                     <*> (o .:? "requestPath")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "checkIntervalSec")-                     <*> (o .:? "name")-                     <*> (o .:? "creationTimestamp")-                     <*> (o .:? "id")-                     <*> (o .:? "host")-                     <*> (o .:? "timeoutSec")-                     <*> (o .:? "description")-                     <*> (o .:? "unhealthyThreshold")-                     <*> (o .:? "port"))--instance ToJSON HTTPSHealthCheck where-        toJSON HTTPSHealthCheck'{..}-          = object-              (catMaybes-                 [("healthyThreshold" .=) <$> _hhcHealthyThreshold,-                  Just ("kind" .= _hhcKind),-                  ("requestPath" .=) <$> _hhcRequestPath,-                  ("selfLink" .=) <$> _hhcSelfLink,-                  ("checkIntervalSec" .=) <$> _hhcCheckIntervalSec,-                  ("name" .=) <$> _hhcName,-                  ("creationTimestamp" .=) <$> _hhcCreationTimestamp,-                  ("id" .=) <$> _hhcId, ("host" .=) <$> _hhcHost,-                  ("timeoutSec" .=) <$> _hhcTimeoutSec,-                  ("description" .=) <$> _hhcDescription,-                  ("unhealthyThreshold" .=) <$> _hhcUnhealthyThreshold,-                  ("port" .=) <$> _hhcPort])---- | [Output Only] A map of scoped vpn tunnel lists.------ /See:/ 'vpnTunnelAggregatedListItems' smart constructor.-newtype VPNTunnelAggregatedListItems = VPNTunnelAggregatedListItems'-    { _vtaliAddtional :: HashMap Text VPNTunnelsScopedList-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'VPNTunnelAggregatedListItems' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vtaliAddtional'-vpnTunnelAggregatedListItems-    :: HashMap Text VPNTunnelsScopedList -- ^ 'vtaliAddtional'-    -> VPNTunnelAggregatedListItems-vpnTunnelAggregatedListItems pVtaliAddtional_ =-    VPNTunnelAggregatedListItems'-    { _vtaliAddtional = _Coerce # pVtaliAddtional_-    }---- | Name of the scope containing this set of vpn tunnels.-vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)-vtaliAddtional-  = lens _vtaliAddtional-      (\ s a -> s{_vtaliAddtional = a})-      . _Coerce--instance FromJSON VPNTunnelAggregatedListItems where-        parseJSON-          = withObject "VPNTunnelAggregatedListItems"-              (\ o ->-                 VPNTunnelAggregatedListItems' <$>-                   (parseJSONObject o))--instance ToJSON VPNTunnelAggregatedListItems where-        toJSON = toJSON . _vtaliAddtional---- | A set of instance tags.------ /See:/ 'tags' smart constructor.-data Tags = Tags'-    { _tFingerprint :: !(Maybe Base64)-    , _tItems       :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Tags' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tFingerprint'------ * 'tItems'-tags-    :: Tags-tags =-    Tags'-    { _tFingerprint = Nothing-    , _tItems = Nothing-    }---- | Specifies a fingerprint for this request, which is essentially a hash of--- the metadata\'s contents and used for optimistic locking. The--- fingerprint is initially generated by Compute Engine and changes after--- every request to modify or update metadata. You must always provide an--- up-to-date fingerprint hash in order to update or change metadata. To--- see the latest fingerprint, make get() request to the instance.-tFingerprint :: Lens' Tags (Maybe ByteString)-tFingerprint-  = lens _tFingerprint (\ s a -> s{_tFingerprint = a})-      . mapping _Base64---- | An array of tags. Each tag must be 1-63 characters long, and comply with--- RFC1035.-tItems :: Lens' Tags [Text]-tItems-  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .-      _Coerce--instance FromJSON Tags where-        parseJSON-          = withObject "Tags"-              (\ o ->-                 Tags' <$>-                   (o .:? "fingerprint") <*> (o .:? "items" .!= mempty))--instance ToJSON Tags where-        toJSON Tags'{..}-          = object-              (catMaybes-                 [("fingerprint" .=) <$> _tFingerprint,-                  ("items" .=) <$> _tItems])------- /See:/ 'addressAggregatedList' smart constructor.-data AddressAggregatedList = AddressAggregatedList'-    { _addNextPageToken :: !(Maybe Text)-    , _addKind          :: !Text-    , _addItems         :: !(Maybe AddressAggregatedListItems)-    , _addSelfLink      :: !(Maybe Text)-    , _addId            :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'AddressAggregatedList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'addNextPageToken'------ * 'addKind'------ * 'addItems'------ * 'addSelfLink'------ * 'addId'-addressAggregatedList-    :: AddressAggregatedList-addressAggregatedList =-    AddressAggregatedList'-    { _addNextPageToken = Nothing-    , _addKind = "compute#addressAggregatedList"-    , _addItems = Nothing-    , _addSelfLink = Nothing-    , _addId = Nothing-    }---- | [Output Only] This token allows you to get the next page of results for--- list requests. If the number of results is larger than maxResults, use--- the nextPageToken as a value for the query parameter pageToken in the--- next list request. Subsequent list requests will have their own--- nextPageToken to continue paging through the results.-addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)-addNextPageToken-  = lens _addNextPageToken-      (\ s a -> s{_addNextPageToken = a})---- | [Output Only] Type of resource. Always compute#addressAggregatedList for--- aggregated lists of addresses.-addKind :: Lens' AddressAggregatedList Text-addKind = lens _addKind (\ s a -> s{_addKind = a})---- | [Output Only] A map of scoped address lists.-addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)-addItems = lens _addItems (\ s a -> s{_addItems = a})---- | [Output Only] Server-defined URL for this resource.-addSelfLink :: Lens' AddressAggregatedList (Maybe Text)-addSelfLink-  = lens _addSelfLink (\ s a -> s{_addSelfLink = a})---- | [Output Only] Unique identifier for the resource; defined by the server.-addId :: Lens' AddressAggregatedList (Maybe Text)-addId = lens _addId (\ s a -> s{_addId = a})--instance FromJSON AddressAggregatedList where-        parseJSON-          = withObject "AddressAggregatedList"-              (\ o ->-                 AddressAggregatedList' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "kind" .!= "compute#addressAggregatedList")-                     <*> (o .:? "items")-                     <*> (o .:? "selfLink")-                     <*> (o .:? "id"))--instance ToJSON AddressAggregatedList where-        toJSON AddressAggregatedList'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _addNextPageToken,-                  Just ("kind" .= _addKind),-                  ("items" .=) <$> _addItems,-                  ("selfLink" .=) <$> _addSelfLink,-                  ("id" .=) <$> _addId])------- /See:/ 'operationWarningsItem' smart constructor.-data OperationWarningsItem = OperationWarningsItem'-    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])-    , _owiCode    :: !(Maybe OperationWarningsItemCode)-    , _owiMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'owiData'------ * 'owiCode'------ * 'owiMessage'-operationWarningsItem-    :: OperationWarningsItem-operationWarningsItem =-    OperationWarningsItem'-    { _owiData = Nothing-    , _owiCode = Nothing-    , _owiMessage = Nothing-    }---- | [Output Only] Metadata about this warning in key: value format. For--- example: \"data\": [ { \"key\": \"scope\", \"value\":--- \"zones\/us-east1-d\" }-owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]-owiData-  = lens _owiData (\ s a -> s{_owiData = a}) . _Default-      . _Coerce---- | [Output Only] A warning code, if applicable. For example, Compute Engine--- returns NO_RESULTS_ON_PAGE if there are no results in the response.-owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)-owiCode = lens _owiCode (\ s a -> s{_owiCode = a})---- | [Output Only] A human-readable description of the warning code.-owiMessage :: Lens' OperationWarningsItem (Maybe Text)-owiMessage-  = lens _owiMessage (\ s a -> s{_owiMessage = a})--instance FromJSON OperationWarningsItem where-        parseJSON-          = withObject "OperationWarningsItem"-              (\ o ->-                 OperationWarningsItem' <$>-                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON OperationWarningsItem where-        toJSON OperationWarningsItem'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,-                  ("message" .=) <$> _owiMessage])---- | Message for the expected URL mappings.------ /See:/ 'urlMapTest' smart constructor.-data URLMapTest = URLMapTest'-    { _umtPath        :: !(Maybe Text)-    , _umtService     :: !(Maybe Text)-    , _umtHost        :: !(Maybe Text)-    , _umtDescription :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'URLMapTest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'umtPath'------ * 'umtService'------ * 'umtHost'------ * 'umtDescription'-urlMapTest-    :: URLMapTest-urlMapTest =-    URLMapTest'-    { _umtPath = Nothing-    , _umtService = Nothing-    , _umtHost = Nothing-    , _umtDescription = Nothing-    }---- | Path portion of the URL.-umtPath :: Lens' URLMapTest (Maybe Text)-umtPath = lens _umtPath (\ s a -> s{_umtPath = a})---- | Expected BackendService resource the given URL should be mapped to.-umtService :: Lens' URLMapTest (Maybe Text)-umtService-  = lens _umtService (\ s a -> s{_umtService = a})---- | Host portion of the URL.-umtHost :: Lens' URLMapTest (Maybe Text)-umtHost = lens _umtHost (\ s a -> s{_umtHost = a})---- | Description of this test case.-umtDescription :: Lens' URLMapTest (Maybe Text)-umtDescription-  = lens _umtDescription-      (\ s a -> s{_umtDescription = a})--instance FromJSON URLMapTest where-        parseJSON-          = withObject "URLMapTest"-              (\ o ->-                 URLMapTest' <$>-                   (o .:? "path") <*> (o .:? "service") <*>-                     (o .:? "host")-                     <*> (o .:? "description"))--instance ToJSON URLMapTest where-        toJSON URLMapTest'{..}-          = object-              (catMaybes-                 [("path" .=) <$> _umtPath,-                  ("service" .=) <$> _umtService,-                  ("host" .=) <$> _umtHost,-                  ("description" .=) <$> _umtDescription])---- | An Instance resource.------ /See:/ 'instance'' smart constructor.-data Instance = Instance'-    { _insnStatus            :: !(Maybe InstanceStatus)-    , _insnServiceAccounts   :: !(Maybe [ServiceAccount])-    , _insnNetworkInterfaces :: !(Maybe [NetworkInterface])-    , _insnKind              :: !Text-    , _insnZone              :: !(Maybe Text)-    , _insnCPUPlatform       :: !(Maybe Text)-    , _insnSelfLink          :: !(Maybe Text)-    , _insnName              :: !(Maybe Text)-    , _insnStatusMessage     :: !(Maybe Text)-    , _insnCreationTimestamp :: !(Maybe Text)-    , _insnMachineType       :: !(Maybe Text)-    , _insnMetadata          :: !(Maybe Metadata)-    , _insnId                :: !(Maybe (Textual Word64))-    , _insnScheduling        :: !(Maybe Scheduling)-    , _insnDisks             :: !(Maybe [AttachedDisk])-    , _insnCanIPForward      :: !(Maybe Bool)-    , _insnDescription       :: !(Maybe Text)-    , _insnTags              :: !(Maybe Tags)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'Instance' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'insnStatus'------ * 'insnServiceAccounts'------ * 'insnNetworkInterfaces'------ * 'insnKind'------ * 'insnZone'------ * 'insnCPUPlatform'------ * 'insnSelfLink'------ * 'insnName'------ * 'insnStatusMessage'------ * 'insnCreationTimestamp'------ * 'insnMachineType'------ * 'insnMetadata'------ * 'insnId'------ * 'insnScheduling'------ * 'insnDisks'------ * 'insnCanIPForward'------ * 'insnDescription'------ * 'insnTags'-instance'-    :: Instance-instance' =-    Instance'-    { _insnStatus = Nothing-    , _insnServiceAccounts = Nothing-    , _insnNetworkInterfaces = Nothing-    , _insnKind = "compute#instance"-    , _insnZone = Nothing-    , _insnCPUPlatform = Nothing-    , _insnSelfLink = Nothing-    , _insnName = Nothing-    , _insnStatusMessage = Nothing-    , _insnCreationTimestamp = Nothing-    , _insnMachineType = Nothing-    , _insnMetadata = Nothing-    , _insnId = Nothing-    , _insnScheduling = Nothing-    , _insnDisks = Nothing-    , _insnCanIPForward = Nothing-    , _insnDescription = Nothing-    , _insnTags = Nothing-    }---- | [Output Only] The status of the instance. One of the following values:--- PROVISIONING, STAGING, RUNNING, STOPPING, and TERMINATED.-insnStatus :: Lens' Instance (Maybe InstanceStatus)-insnStatus-  = lens _insnStatus (\ s a -> s{_insnStatus = a})---- | A list of service accounts, with their specified scopes, authorized for--- this instance. Service accounts generate access tokens that can be--- accessed through the metadata server and used to authenticate--- applications on the instance. See Authenticating from Google Compute--- Engine for more information.-insnServiceAccounts :: Lens' Instance [ServiceAccount]-insnServiceAccounts-  = lens _insnServiceAccounts-      (\ s a -> s{_insnServiceAccounts = a})-      . _Default-      . _Coerce---- | An array of configurations for this interface. This specifies how this--- interface is configured to interact with other network services, such as--- connecting to the internet.+-- /See:/ 'routersScopedList' smart constructor.+data RoutersScopedList = RoutersScopedList'+    { _rslRouters :: !(Maybe [Router])+    , _rslWarning :: !(Maybe RoutersScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rslRouters'+--+-- * 'rslWarning'+routersScopedList+    :: RoutersScopedList+routersScopedList =+    RoutersScopedList'+    { _rslRouters = Nothing+    , _rslWarning = Nothing+    }++-- | List of routers contained in this scope.+rslRouters :: Lens' RoutersScopedList [Router]+rslRouters+  = lens _rslRouters (\ s a -> s{_rslRouters = a}) .+      _Default+      . _Coerce++-- | Informational warning which replaces the list of routers when the list+-- is empty.+rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)+rslWarning+  = lens _rslWarning (\ s a -> s{_rslWarning = a})++instance FromJSON RoutersScopedList where+        parseJSON+          = withObject "RoutersScopedList"+              (\ o ->+                 RoutersScopedList' <$>+                   (o .:? "routers" .!= mempty) <*> (o .:? "warning"))++instance ToJSON RoutersScopedList where+        toJSON RoutersScopedList'{..}+          = object+              (catMaybes+                 [("routers" .=) <$> _rslRouters,+                  ("warning" .=) <$> _rslWarning])++--+-- /See:/ 'routerStatusResponse' smart constructor.+data RouterStatusResponse = RouterStatusResponse'+    { _rsrKind   :: !Text+    , _rsrResult :: !(Maybe RouterStatus)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterStatusResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rsrKind'+--+-- * 'rsrResult'+routerStatusResponse+    :: RouterStatusResponse+routerStatusResponse =+    RouterStatusResponse'+    { _rsrKind = "compute#routerStatusResponse"+    , _rsrResult = Nothing+    }++-- | Type of resource.+rsrKind :: Lens' RouterStatusResponse Text+rsrKind = lens _rsrKind (\ s a -> s{_rsrKind = a})++rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)+rsrResult+  = lens _rsrResult (\ s a -> s{_rsrResult = a})++instance FromJSON RouterStatusResponse where+        parseJSON+          = withObject "RouterStatusResponse"+              (\ o ->+                 RouterStatusResponse' <$>+                   (o .:? "kind" .!= "compute#routerStatusResponse") <*>+                     (o .:? "result"))++instance ToJSON RouterStatusResponse where+        toJSON RouterStatusResponse'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _rsrKind),+                  ("result" .=) <$> _rsrResult])++--+-- /See:/ 'addressesScopedList' smart constructor.+data AddressesScopedList = AddressesScopedList'+    { _aslAddresses :: !(Maybe [Address])+    , _aslWarning   :: !(Maybe AddressesScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aslAddresses'+--+-- * 'aslWarning'+addressesScopedList+    :: AddressesScopedList+addressesScopedList =+    AddressesScopedList'+    { _aslAddresses = Nothing+    , _aslWarning = Nothing+    }++-- | [Output Only] List of addresses contained in this scope.+aslAddresses :: Lens' AddressesScopedList [Address]+aslAddresses+  = lens _aslAddresses (\ s a -> s{_aslAddresses = a})+      . _Default+      . _Coerce++-- | [Output Only] Informational warning which replaces the list of addresses+-- when the list is empty.+aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)+aslWarning+  = lens _aslWarning (\ s a -> s{_aslWarning = a})++instance FromJSON AddressesScopedList where+        parseJSON+          = withObject "AddressesScopedList"+              (\ o ->+                 AddressesScopedList' <$>+                   (o .:? "addresses" .!= mempty) <*> (o .:? "warning"))++instance ToJSON AddressesScopedList where+        toJSON AddressesScopedList'{..}+          = object+              (catMaybes+                 [("addresses" .=) <$> _aslAddresses,+                  ("warning" .=) <$> _aslWarning])++--+-- /See:/ 'operationWarningsItemDataItem' smart constructor.+data OperationWarningsItemDataItem = OperationWarningsItemDataItem'+    { _owidiValue :: !(Maybe Text)+    , _owidiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'owidiValue'+--+-- * 'owidiKey'+operationWarningsItemDataItem+    :: OperationWarningsItemDataItem+operationWarningsItemDataItem =+    OperationWarningsItemDataItem'+    { _owidiValue = Nothing+    , _owidiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)+owidiValue+  = lens _owidiValue (\ s a -> s{_owidiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)+owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})++instance FromJSON OperationWarningsItemDataItem where+        parseJSON+          = withObject "OperationWarningsItemDataItem"+              (\ o ->+                 OperationWarningsItemDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON OperationWarningsItemDataItem where+        toJSON OperationWarningsItemDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _owidiValue,+                  ("key" .=) <$> _owidiKey])++--+-- /See:/ 'instanceGroupManagersAbandonInstancesRequest' smart constructor.+newtype InstanceGroupManagersAbandonInstancesRequest = InstanceGroupManagersAbandonInstancesRequest'+    { _igmairInstances :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmairInstances'+instanceGroupManagersAbandonInstancesRequest+    :: InstanceGroupManagersAbandonInstancesRequest+instanceGroupManagersAbandonInstancesRequest =+    InstanceGroupManagersAbandonInstancesRequest'+    { _igmairInstances = Nothing+    }++-- | The URL for one or more instances to abandon from the managed instance+-- group.+igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]+igmairInstances+  = lens _igmairInstances+      (\ s a -> s{_igmairInstances = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupManagersAbandonInstancesRequest where+        parseJSON+          = withObject+              "InstanceGroupManagersAbandonInstancesRequest"+              (\ o ->+                 InstanceGroupManagersAbandonInstancesRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON+         InstanceGroupManagersAbandonInstancesRequest where+        toJSON+          InstanceGroupManagersAbandonInstancesRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _igmairInstances])++-- | [Output Only] A map of scoped machine type lists.+--+-- /See:/ 'machineTypeAggregatedListItems' smart constructor.+newtype MachineTypeAggregatedListItems = MachineTypeAggregatedListItems'+    { _mtaliAddtional :: HashMap Text MachineTypesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypeAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtaliAddtional'+machineTypeAggregatedListItems+    :: HashMap Text MachineTypesScopedList -- ^ 'mtaliAddtional'+    -> MachineTypeAggregatedListItems+machineTypeAggregatedListItems pMtaliAddtional_ =+    MachineTypeAggregatedListItems'+    { _mtaliAddtional = _Coerce # pMtaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of machine types.+mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)+mtaliAddtional+  = lens _mtaliAddtional+      (\ s a -> s{_mtaliAddtional = a})+      . _Coerce++instance FromJSON MachineTypeAggregatedListItems+         where+        parseJSON+          = withObject "MachineTypeAggregatedListItems"+              (\ o ->+                 MachineTypeAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON MachineTypeAggregatedListItems where+        toJSON = toJSON . _mtaliAddtional++-- | [Output Only] A map of scoped disk type lists.+--+-- /See:/ 'diskTypeAggregatedListItems' smart constructor.+newtype DiskTypeAggregatedListItems = DiskTypeAggregatedListItems'+    { _dtaliAddtional :: HashMap Text DiskTypesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypeAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtaliAddtional'+diskTypeAggregatedListItems+    :: HashMap Text DiskTypesScopedList -- ^ 'dtaliAddtional'+    -> DiskTypeAggregatedListItems+diskTypeAggregatedListItems pDtaliAddtional_ =+    DiskTypeAggregatedListItems'+    { _dtaliAddtional = _Coerce # pDtaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of disk types.+dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)+dtaliAddtional+  = lens _dtaliAddtional+      (\ s a -> s{_dtaliAddtional = a})+      . _Coerce++instance FromJSON DiskTypeAggregatedListItems where+        parseJSON+          = withObject "DiskTypeAggregatedListItems"+              (\ o ->+                 DiskTypeAggregatedListItems' <$> (parseJSONObject o))++instance ToJSON DiskTypeAggregatedListItems where+        toJSON = toJSON . _dtaliAddtional++-- | Contains a list of routers.+--+-- /See:/ 'routerAggregatedList' smart constructor.+data RouterAggregatedList = RouterAggregatedList'+    { _ralNextPageToken :: !(Maybe Text)+    , _ralKind          :: !Text+    , _ralItems         :: !(Maybe RouterAggregatedListItems)+    , _ralSelfLink      :: !(Maybe Text)+    , _ralId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ralNextPageToken'+--+-- * 'ralKind'+--+-- * 'ralItems'+--+-- * 'ralSelfLink'+--+-- * 'ralId'+routerAggregatedList+    :: RouterAggregatedList+routerAggregatedList =+    RouterAggregatedList'+    { _ralNextPageToken = Nothing+    , _ralKind = "compute#routerAggregatedList"+    , _ralItems = Nothing+    , _ralSelfLink = Nothing+    , _ralId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)+ralNextPageToken+  = lens _ralNextPageToken+      (\ s a -> s{_ralNextPageToken = a})++-- | Type of resource.+ralKind :: Lens' RouterAggregatedList Text+ralKind = lens _ralKind (\ s a -> s{_ralKind = a})++-- | A map of scoped router lists.+ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)+ralItems = lens _ralItems (\ s a -> s{_ralItems = a})++-- | [Output Only] Server-defined URL for this resource.+ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)+ralSelfLink+  = lens _ralSelfLink (\ s a -> s{_ralSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+ralId :: Lens' RouterAggregatedList (Maybe Text)+ralId = lens _ralId (\ s a -> s{_ralId = a})++instance FromJSON RouterAggregatedList where+        parseJSON+          = withObject "RouterAggregatedList"+              (\ o ->+                 RouterAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#routerAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON RouterAggregatedList where+        toJSON RouterAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _ralNextPageToken,+                  Just ("kind" .= _ralKind),+                  ("items" .=) <$> _ralItems,+                  ("selfLink" .=) <$> _ralSelfLink,+                  ("id" .=) <$> _ralId])++-- | Contains a list of firewalls.+--+-- /See:/ 'firewallList' smart constructor.+data FirewallList = FirewallList'+    { _flNextPageToken :: !(Maybe Text)+    , _flKind          :: !Text+    , _flItems         :: !(Maybe [Firewall])+    , _flSelfLink      :: !(Maybe Text)+    , _flId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FirewallList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'flNextPageToken'+--+-- * 'flKind'+--+-- * 'flItems'+--+-- * 'flSelfLink'+--+-- * 'flId'+firewallList+    :: FirewallList+firewallList =+    FirewallList'+    { _flNextPageToken = Nothing+    , _flKind = "compute#firewallList"+    , _flItems = Nothing+    , _flSelfLink = Nothing+    , _flId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+flNextPageToken :: Lens' FirewallList (Maybe Text)+flNextPageToken+  = lens _flNextPageToken+      (\ s a -> s{_flNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#firewallList for lists of+-- firewalls.+flKind :: Lens' FirewallList Text+flKind = lens _flKind (\ s a -> s{_flKind = a})++-- | [Output Only] A list of Firewall resources.+flItems :: Lens' FirewallList [Firewall]+flItems+  = lens _flItems (\ s a -> s{_flItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+flSelfLink :: Lens' FirewallList (Maybe Text)+flSelfLink+  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+flId :: Lens' FirewallList (Maybe Text)+flId = lens _flId (\ s a -> s{_flId = a})++instance FromJSON FirewallList where+        parseJSON+          = withObject "FirewallList"+              (\ o ->+                 FirewallList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#firewallList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON FirewallList where+        toJSON FirewallList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _flNextPageToken,+                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,+                  ("selfLink" .=) <$> _flSelfLink,+                  ("id" .=) <$> _flId])++-- | [Output Only] Informational warning which replaces the list of instances+-- when the list is empty.+--+-- /See:/ 'instancesScopedListWarning' smart constructor.+data InstancesScopedListWarning = InstancesScopedListWarning'+    { _islwData    :: !(Maybe [InstancesScopedListWarningDataItem])+    , _islwCode    :: !(Maybe InstancesScopedListWarningCode)+    , _islwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'islwData'+--+-- * 'islwCode'+--+-- * 'islwMessage'+instancesScopedListWarning+    :: InstancesScopedListWarning+instancesScopedListWarning =+    InstancesScopedListWarning'+    { _islwData = Nothing+    , _islwCode = Nothing+    , _islwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]+islwData+  = lens _islwData (\ s a -> s{_islwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)+islwCode = lens _islwCode (\ s a -> s{_islwCode = a})++-- | [Output Only] A human-readable description of the warning code.+islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)+islwMessage+  = lens _islwMessage (\ s a -> s{_islwMessage = a})++instance FromJSON InstancesScopedListWarning where+        parseJSON+          = withObject "InstancesScopedListWarning"+              (\ o ->+                 InstancesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON InstancesScopedListWarning where+        toJSON InstancesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _islwData,+                  ("code" .=) <$> _islwCode,+                  ("message" .=) <$> _islwMessage])++-- | A list of InstanceGroup resources.+--+-- /See:/ 'instanceGroupList' smart constructor.+data InstanceGroupList = InstanceGroupList'+    { _iglNextPageToken :: !(Maybe Text)+    , _iglKind          :: !Text+    , _iglItems         :: !(Maybe [InstanceGroup])+    , _iglSelfLink      :: !(Maybe Text)+    , _iglId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iglNextPageToken'+--+-- * 'iglKind'+--+-- * 'iglItems'+--+-- * 'iglSelfLink'+--+-- * 'iglId'+instanceGroupList+    :: InstanceGroupList+instanceGroupList =+    InstanceGroupList'+    { _iglNextPageToken = Nothing+    , _iglKind = "compute#instanceGroupList"+    , _iglItems = Nothing+    , _iglSelfLink = Nothing+    , _iglId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)+iglNextPageToken+  = lens _iglNextPageToken+      (\ s a -> s{_iglNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupList for instance group lists.+iglKind :: Lens' InstanceGroupList Text+iglKind = lens _iglKind (\ s a -> s{_iglKind = a})++-- | A list of instance groups.+iglItems :: Lens' InstanceGroupList [InstanceGroup]+iglItems+  = lens _iglItems (\ s a -> s{_iglItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] The URL for this resource type. The server generates this+-- URL.+iglSelfLink :: Lens' InstanceGroupList (Maybe Text)+iglSelfLink+  = lens _iglSelfLink (\ s a -> s{_iglSelfLink = a})++-- | [Output Only] A unique identifier for this list of instance groups. The+-- server generates this identifier.+iglId :: Lens' InstanceGroupList (Maybe Text)+iglId = lens _iglId (\ s a -> s{_iglId = a})++instance FromJSON InstanceGroupList where+        parseJSON+          = withObject "InstanceGroupList"+              (\ o ->+                 InstanceGroupList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#instanceGroupList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceGroupList where+        toJSON InstanceGroupList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _iglNextPageToken,+                  Just ("kind" .= _iglKind),+                  ("items" .=) <$> _iglItems,+                  ("selfLink" .=) <$> _iglSelfLink,+                  ("id" .=) <$> _iglId])++--+-- /See:/ 'instancesSetMachineTypeRequest' smart constructor.+newtype InstancesSetMachineTypeRequest = InstancesSetMachineTypeRequest'+    { _ismtrMachineType :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesSetMachineTypeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ismtrMachineType'+instancesSetMachineTypeRequest+    :: InstancesSetMachineTypeRequest+instancesSetMachineTypeRequest =+    InstancesSetMachineTypeRequest'+    { _ismtrMachineType = Nothing+    }++-- | Full or partial URL of the machine type resource. See Machine Types for+-- a full list of machine types. For example:+-- zones\/us-central1-f\/machineTypes\/n1-standard-1+ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)+ismtrMachineType+  = lens _ismtrMachineType+      (\ s a -> s{_ismtrMachineType = a})++instance FromJSON InstancesSetMachineTypeRequest+         where+        parseJSON+          = withObject "InstancesSetMachineTypeRequest"+              (\ o ->+                 InstancesSetMachineTypeRequest' <$>+                   (o .:? "machineType"))++instance ToJSON InstancesSetMachineTypeRequest where+        toJSON InstancesSetMachineTypeRequest'{..}+          = object+              (catMaybes+                 [("machineType" .=) <$> _ismtrMachineType])++-- | Represents a customer-supplied encryption key+--+-- /See:/ 'customerEncryptionKey' smart constructor.+data CustomerEncryptionKey = CustomerEncryptionKey'+    { _cekSha256 :: !(Maybe Text)+    , _cekRawKey :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CustomerEncryptionKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cekSha256'+--+-- * 'cekRawKey'+customerEncryptionKey+    :: CustomerEncryptionKey+customerEncryptionKey =+    CustomerEncryptionKey'+    { _cekSha256 = Nothing+    , _cekRawKey = Nothing+    }++-- | [Output only] The RFC 4648 base64 encoded SHA-256 hash of the+-- customer-supplied encryption key that protects this resource.+cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)+cekSha256+  = lens _cekSha256 (\ s a -> s{_cekSha256 = a})++-- | Specifies a 256-bit customer-supplied encryption key, encoded in RFC+-- 4648 base64 to either encrypt or decrypt this resource.+cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)+cekRawKey+  = lens _cekRawKey (\ s a -> s{_cekRawKey = a})++instance FromJSON CustomerEncryptionKey where+        parseJSON+          = withObject "CustomerEncryptionKey"+              (\ o ->+                 CustomerEncryptionKey' <$>+                   (o .:? "sha256") <*> (o .:? "rawKey"))++instance ToJSON CustomerEncryptionKey where+        toJSON CustomerEncryptionKey'{..}+          = object+              (catMaybes+                 [("sha256" .=) <$> _cekSha256,+                  ("rawKey" .=) <$> _cekRawKey])++-- | A map of scoped autoscaler lists.+--+-- /See:/ 'autoscalerAggregatedListItems' smart constructor.+newtype AutoscalerAggregatedListItems = AutoscalerAggregatedListItems'+    { _aaliAddtional :: HashMap Text AutoscalersScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalerAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aaliAddtional'+autoscalerAggregatedListItems+    :: HashMap Text AutoscalersScopedList -- ^ 'aaliAddtional'+    -> AutoscalerAggregatedListItems+autoscalerAggregatedListItems pAaliAddtional_ =+    AutoscalerAggregatedListItems'+    { _aaliAddtional = _Coerce # pAaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of autoscalers.+aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)+aaliAddtional+  = lens _aaliAddtional+      (\ s a -> s{_aaliAddtional = a})+      . _Coerce++instance FromJSON AutoscalerAggregatedListItems where+        parseJSON+          = withObject "AutoscalerAggregatedListItems"+              (\ o ->+                 AutoscalerAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON AutoscalerAggregatedListItems where+        toJSON = toJSON . _aaliAddtional++--+-- /See:/ 'instanceGroupManagersSetInstanceTemplateRequest' smart constructor.+newtype InstanceGroupManagersSetInstanceTemplateRequest = InstanceGroupManagersSetInstanceTemplateRequest'+    { _igmsitrInstanceTemplate :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersSetInstanceTemplateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmsitrInstanceTemplate'+instanceGroupManagersSetInstanceTemplateRequest+    :: InstanceGroupManagersSetInstanceTemplateRequest+instanceGroupManagersSetInstanceTemplateRequest =+    InstanceGroupManagersSetInstanceTemplateRequest'+    { _igmsitrInstanceTemplate = Nothing+    }++-- | The URL of the instance template that is specified for this managed+-- instance group. The group uses this template to create all new instances+-- in the managed instance group.+igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)+igmsitrInstanceTemplate+  = lens _igmsitrInstanceTemplate+      (\ s a -> s{_igmsitrInstanceTemplate = a})++instance FromJSON+         InstanceGroupManagersSetInstanceTemplateRequest where+        parseJSON+          = withObject+              "InstanceGroupManagersSetInstanceTemplateRequest"+              (\ o ->+                 InstanceGroupManagersSetInstanceTemplateRequest' <$>+                   (o .:? "instanceTemplate"))++instance ToJSON+         InstanceGroupManagersSetInstanceTemplateRequest where+        toJSON+          InstanceGroupManagersSetInstanceTemplateRequest'{..}+          = object+              (catMaybes+                 [("instanceTemplate" .=) <$>+                    _igmsitrInstanceTemplate])++-- | Deprecation status for a public resource.+--+-- /See:/ 'deprecationStatus' smart constructor.+data DeprecationStatus = DeprecationStatus'+    { _dsState       :: !(Maybe DeprecationStatusState)+    , _dsDeleted     :: !(Maybe Text)+    , _dsReplacement :: !(Maybe Text)+    , _dsObsolete    :: !(Maybe Text)+    , _dsDeprecated  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeprecationStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsState'+--+-- * 'dsDeleted'+--+-- * 'dsReplacement'+--+-- * 'dsObsolete'+--+-- * 'dsDeprecated'+deprecationStatus+    :: DeprecationStatus+deprecationStatus =+    DeprecationStatus'+    { _dsState = Nothing+    , _dsDeleted = Nothing+    , _dsReplacement = Nothing+    , _dsObsolete = Nothing+    , _dsDeprecated = Nothing+    }++-- | The deprecation state of this resource. This can be DEPRECATED,+-- OBSOLETE, or DELETED. Operations which create a new resource using a+-- DEPRECATED resource will return successfully, but with a warning+-- indicating the deprecated resource and recommending its replacement.+-- Operations which use OBSOLETE or DELETED resources will be rejected and+-- result in an error.+dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)+dsState = lens _dsState (\ s a -> s{_dsState = a})++-- | An optional RFC3339 timestamp on or after which the deprecation state of+-- this resource will be changed to DELETED.+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 deprecation state of+-- this resource will be changed to OBSOLETE.+dsObsolete :: Lens' DeprecationStatus (Maybe Text)+dsObsolete+  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})++-- | An optional RFC3339 timestamp on or after which the deprecation state of+-- this resource will be changed to DEPRECATED.+dsDeprecated :: Lens' DeprecationStatus (Maybe Text)+dsDeprecated+  = lens _dsDeprecated (\ s a -> s{_dsDeprecated = a})++instance FromJSON DeprecationStatus where+        parseJSON+          = withObject "DeprecationStatus"+              (\ o ->+                 DeprecationStatus' <$>+                   (o .:? "state") <*> (o .:? "deleted") <*>+                     (o .:? "replacement")+                     <*> (o .:? "obsolete")+                     <*> (o .:? "deprecated"))++instance ToJSON DeprecationStatus where+        toJSON DeprecationStatus'{..}+          = object+              (catMaybes+                 [("state" .=) <$> _dsState,+                  ("deleted" .=) <$> _dsDeleted,+                  ("replacement" .=) <$> _dsReplacement,+                  ("obsolete" .=) <$> _dsObsolete,+                  ("deprecated" .=) <$> _dsDeprecated])++-- | A persistent disk snapshot resource.+--+-- /See:/ 'snapshot' smart constructor.+data Snapshot = Snapshot'+    { _sStorageBytesStatus      :: !(Maybe SnapshotStorageBytesStatus)+    , _sStatus                  :: !(Maybe SnapshotStatus)+    , _sDiskSizeGb              :: !(Maybe (Textual Int64))+    , _sSourceDiskId            :: !(Maybe Text)+    , _sKind                    :: !Text+    , _sSourceDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _sStorageBytes            :: !(Maybe (Textual Int64))+    , _sSelfLink                :: !(Maybe Text)+    , _sSnapshotEncryptionKey   :: !(Maybe CustomerEncryptionKey)+    , _sName                    :: !(Maybe Text)+    , _sCreationTimestamp       :: !(Maybe Text)+    , _sId                      :: !(Maybe (Textual Word64))+    , _sLicenses                :: !(Maybe [Text])+    , _sSourceDisk              :: !(Maybe Text)+    , _sDescription             :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Snapshot' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sStorageBytesStatus'+--+-- * 'sStatus'+--+-- * 'sDiskSizeGb'+--+-- * 'sSourceDiskId'+--+-- * 'sKind'+--+-- * 'sSourceDiskEncryptionKey'+--+-- * 'sStorageBytes'+--+-- * 'sSelfLink'+--+-- * 'sSnapshotEncryptionKey'+--+-- * 'sName'+--+-- * 'sCreationTimestamp'+--+-- * 'sId'+--+-- * 'sLicenses'+--+-- * 'sSourceDisk'+--+-- * 'sDescription'+snapshot+    :: Snapshot+snapshot =+    Snapshot'+    { _sStorageBytesStatus = Nothing+    , _sStatus = Nothing+    , _sDiskSizeGb = Nothing+    , _sSourceDiskId = Nothing+    , _sKind = "compute#snapshot"+    , _sSourceDiskEncryptionKey = Nothing+    , _sStorageBytes = Nothing+    , _sSelfLink = Nothing+    , _sSnapshotEncryptionKey = Nothing+    , _sName = Nothing+    , _sCreationTimestamp = Nothing+    , _sId = Nothing+    , _sLicenses = Nothing+    , _sSourceDisk = Nothing+    , _sDescription = Nothing+    }++-- | [Output Only] An indicator whether storageBytes is in a stable state or+-- it is being adjusted as a result of shared storage reallocation. This+-- status can either be UPDATING, meaning the size of the snapshot is being+-- updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.+sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)+sStorageBytesStatus+  = lens _sStorageBytesStatus+      (\ s a -> s{_sStorageBytesStatus = a})++-- | [Output Only] The status of the snapshot. This can be CREATING,+-- DELETING, FAILED, READY, or UPLOADING.+sStatus :: Lens' Snapshot (Maybe SnapshotStatus)+sStatus = lens _sStatus (\ s a -> s{_sStatus = a})++-- | [Output Only] Size of the snapshot, specified in GB.+sDiskSizeGb :: Lens' Snapshot (Maybe Int64)+sDiskSizeGb+  = lens _sDiskSizeGb (\ s a -> s{_sDiskSizeGb = a}) .+      mapping _Coerce++-- | [Output Only] The ID value of the disk used to create this snapshot.+-- This value may be used to determine whether the snapshot was taken from+-- the current or a previous instance of a given disk name.+sSourceDiskId :: Lens' Snapshot (Maybe Text)+sSourceDiskId+  = lens _sSourceDiskId+      (\ s a -> s{_sSourceDiskId = a})++-- | [Output Only] Type of the resource. Always compute#snapshot for Snapshot+-- resources.+sKind :: Lens' Snapshot Text+sKind = lens _sKind (\ s a -> s{_sKind = a})++-- | The customer-supplied encryption key of the source disk. Required if the+-- source disk is protected by a customer-supplied encryption key.+sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)+sSourceDiskEncryptionKey+  = lens _sSourceDiskEncryptionKey+      (\ s a -> s{_sSourceDiskEncryptionKey = a})++-- | [Output Only] A size of the the storage used by the snapshot. As+-- snapshots share storage, this number is expected to change with snapshot+-- creation\/deletion.+sStorageBytes :: Lens' Snapshot (Maybe Int64)+sStorageBytes+  = lens _sStorageBytes+      (\ s a -> s{_sStorageBytes = a})+      . mapping _Coerce++-- | [Output Only] Server-defined URL for the resource.+sSelfLink :: Lens' Snapshot (Maybe Text)+sSelfLink+  = lens _sSelfLink (\ s a -> s{_sSelfLink = a})++-- | Encrypts the snapshot using a customer-supplied encryption key. After+-- you encrypt a snapshot using a customer-supplied key, you must provide+-- the same key if you use the image later For example, you must provide+-- the encryption key when you create a disk from the encrypted snapshot in+-- a future request. Customer-supplied encryption keys do not protect+-- access to metadata of the disk. If you do not provide an encryption key+-- when creating the snapshot, then the snapshot will be encrypted using an+-- automatically generated key and you do not need to provide a key to use+-- the snapshot later.+sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)+sSnapshotEncryptionKey+  = lens _sSnapshotEncryptionKey+      (\ s a -> s{_sSnapshotEncryptionKey = a})++-- | Name of the resource; provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+sName :: Lens' Snapshot (Maybe Text)+sName = lens _sName (\ s a -> s{_sName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+sCreationTimestamp :: Lens' Snapshot (Maybe Text)+sCreationTimestamp+  = lens _sCreationTimestamp+      (\ s a -> s{_sCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+sId :: Lens' Snapshot (Maybe Word64)+sId+  = lens _sId (\ s a -> s{_sId = a}) . mapping _Coerce++-- | [Output Only] A list of public visible licenses that apply to this+-- snapshot. This can be because the original image had licenses attached+-- (such as a Windows image).+sLicenses :: Lens' Snapshot [Text]+sLicenses+  = lens _sLicenses (\ s a -> s{_sLicenses = a}) .+      _Default+      . _Coerce++-- | [Output Only] The source disk used to create this snapshot.+sSourceDisk :: Lens' Snapshot (Maybe Text)+sSourceDisk+  = lens _sSourceDisk (\ s a -> s{_sSourceDisk = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+sDescription :: Lens' Snapshot (Maybe Text)+sDescription+  = lens _sDescription (\ s a -> s{_sDescription = a})++instance FromJSON Snapshot where+        parseJSON+          = withObject "Snapshot"+              (\ o ->+                 Snapshot' <$>+                   (o .:? "storageBytesStatus") <*> (o .:? "status") <*>+                     (o .:? "diskSizeGb")+                     <*> (o .:? "sourceDiskId")+                     <*> (o .:? "kind" .!= "compute#snapshot")+                     <*> (o .:? "sourceDiskEncryptionKey")+                     <*> (o .:? "storageBytes")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "snapshotEncryptionKey")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "licenses" .!= mempty)+                     <*> (o .:? "sourceDisk")+                     <*> (o .:? "description"))++instance ToJSON Snapshot where+        toJSON Snapshot'{..}+          = object+              (catMaybes+                 [("storageBytesStatus" .=) <$> _sStorageBytesStatus,+                  ("status" .=) <$> _sStatus,+                  ("diskSizeGb" .=) <$> _sDiskSizeGb,+                  ("sourceDiskId" .=) <$> _sSourceDiskId,+                  Just ("kind" .= _sKind),+                  ("sourceDiskEncryptionKey" .=) <$>+                    _sSourceDiskEncryptionKey,+                  ("storageBytes" .=) <$> _sStorageBytes,+                  ("selfLink" .=) <$> _sSelfLink,+                  ("snapshotEncryptionKey" .=) <$>+                    _sSnapshotEncryptionKey,+                  ("name" .=) <$> _sName,+                  ("creationTimestamp" .=) <$> _sCreationTimestamp,+                  ("id" .=) <$> _sId, ("licenses" .=) <$> _sLicenses,+                  ("sourceDisk" .=) <$> _sSourceDisk,+                  ("description" .=) <$> _sDescription])++--+-- /See:/ 'routerStatus' smart constructor.+data RouterStatus = RouterStatus'+    { _rsBGPPeerStatus :: !(Maybe [RouterStatusBGPPeerStatus])+    , _rsNetwork       :: !(Maybe Text)+    , _rsBestRoutes    :: !(Maybe [Route])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rsBGPPeerStatus'+--+-- * 'rsNetwork'+--+-- * 'rsBestRoutes'+routerStatus+    :: RouterStatus+routerStatus =+    RouterStatus'+    { _rsBGPPeerStatus = Nothing+    , _rsNetwork = Nothing+    , _rsBestRoutes = Nothing+    }++rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]+rsBGPPeerStatus+  = lens _rsBGPPeerStatus+      (\ s a -> s{_rsBGPPeerStatus = a})+      . _Default+      . _Coerce++-- | URI of the network to which this router belongs.+rsNetwork :: Lens' RouterStatus (Maybe Text)+rsNetwork+  = lens _rsNetwork (\ s a -> s{_rsNetwork = a})++-- | Best routes for this router\'s network.+rsBestRoutes :: Lens' RouterStatus [Route]+rsBestRoutes+  = lens _rsBestRoutes (\ s a -> s{_rsBestRoutes = a})+      . _Default+      . _Coerce++instance FromJSON RouterStatus where+        parseJSON+          = withObject "RouterStatus"+              (\ o ->+                 RouterStatus' <$>+                   (o .:? "bgpPeerStatus" .!= mempty) <*>+                     (o .:? "network")+                     <*> (o .:? "bestRoutes" .!= mempty))++instance ToJSON RouterStatus where+        toJSON RouterStatus'{..}+          = object+              (catMaybes+                 [("bgpPeerStatus" .=) <$> _rsBGPPeerStatus,+                  ("network" .=) <$> _rsNetwork,+                  ("bestRoutes" .=) <$> _rsBestRoutes])++-- | Custom utilization metric policy.+--+-- /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.+data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization'+    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))+    , _apcmuMetric                :: !(Maybe Text)+    , _apcmuUtilizationTargetType :: !(Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalingPolicyCustomMetricUtilization' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apcmuUtilizationTarget'+--+-- * 'apcmuMetric'+--+-- * 'apcmuUtilizationTargetType'+autoscalingPolicyCustomMetricUtilization+    :: AutoscalingPolicyCustomMetricUtilization+autoscalingPolicyCustomMetricUtilization =+    AutoscalingPolicyCustomMetricUtilization'+    { _apcmuUtilizationTarget = Nothing+    , _apcmuMetric = Nothing+    , _apcmuUtilizationTargetType = Nothing+    }++-- | Target value of the metric which autoscaler should maintain. Must be a+-- positive value.+apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)+apcmuUtilizationTarget+  = lens _apcmuUtilizationTarget+      (\ s a -> s{_apcmuUtilizationTarget = a})+      . mapping _Coerce++-- | The identifier of the Stackdriver Monitoring metric. The metric cannot+-- have negative values and should be a utilization metric, which means+-- that the number of virtual machines handling requests should increase or+-- decrease proportionally to the metric. The metric must also have a label+-- of compute.googleapis.com\/resource_id with the value of the instance\'s+-- unique ID, although this alone does not guarantee that the metric is+-- valid. For example, the following is a valid metric:+-- compute.googleapis.com\/instance\/network\/received_bytes_count The+-- following is not a valid metric because it does not increase or decrease+-- based on usage: compute.googleapis.com\/instance\/cpu\/reserved_cores+apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)+apcmuMetric+  = lens _apcmuMetric (\ s a -> s{_apcmuMetric = a})++-- | Defines how target utilization value is expressed for a Stackdriver+-- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.+-- If not specified, the default is GAUGE.+apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)+apcmuUtilizationTargetType+  = lens _apcmuUtilizationTargetType+      (\ s a -> s{_apcmuUtilizationTargetType = a})++instance FromJSON+         AutoscalingPolicyCustomMetricUtilization where+        parseJSON+          = withObject+              "AutoscalingPolicyCustomMetricUtilization"+              (\ o ->+                 AutoscalingPolicyCustomMetricUtilization' <$>+                   (o .:? "utilizationTarget") <*> (o .:? "metric") <*>+                     (o .:? "utilizationTargetType"))++instance ToJSON+         AutoscalingPolicyCustomMetricUtilization where+        toJSON AutoscalingPolicyCustomMetricUtilization'{..}+          = object+              (catMaybes+                 [("utilizationTarget" .=) <$>+                    _apcmuUtilizationTarget,+                  ("metric" .=) <$> _apcmuMetric,+                  ("utilizationTargetType" .=) <$>+                    _apcmuUtilizationTargetType])++-- | Contains a list of ForwardingRule resources.+--+-- /See:/ 'forwardingRuleList' smart constructor.+data ForwardingRuleList = ForwardingRuleList'+    { _frlNextPageToken :: !(Maybe Text)+    , _frlKind          :: !Text+    , _frlItems         :: !(Maybe [ForwardingRule])+    , _frlSelfLink      :: !(Maybe Text)+    , _frlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRuleList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frlNextPageToken'+--+-- * 'frlKind'+--+-- * 'frlItems'+--+-- * 'frlSelfLink'+--+-- * 'frlId'+forwardingRuleList+    :: ForwardingRuleList+forwardingRuleList =+    ForwardingRuleList'+    { _frlNextPageToken = Nothing+    , _frlKind = "compute#forwardingRuleList"+    , _frlItems = Nothing+    , _frlSelfLink = Nothing+    , _frlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)+frlNextPageToken+  = lens _frlNextPageToken+      (\ s a -> s{_frlNextPageToken = a})++-- | Type of resource.+frlKind :: Lens' ForwardingRuleList Text+frlKind = lens _frlKind (\ s a -> s{_frlKind = a})++-- | A list of ForwardingRule resources.+frlItems :: Lens' ForwardingRuleList [ForwardingRule]+frlItems+  = lens _frlItems (\ s a -> s{_frlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)+frlSelfLink+  = lens _frlSelfLink (\ s a -> s{_frlSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Set by the server.+frlId :: Lens' ForwardingRuleList (Maybe Text)+frlId = lens _frlId (\ s a -> s{_frlId = a})++instance FromJSON ForwardingRuleList where+        parseJSON+          = withObject "ForwardingRuleList"+              (\ o ->+                 ForwardingRuleList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#forwardingRuleList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON ForwardingRuleList where+        toJSON ForwardingRuleList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _frlNextPageToken,+                  Just ("kind" .= _frlKind),+                  ("items" .=) <$> _frlItems,+                  ("selfLink" .=) <$> _frlSelfLink,+                  ("id" .=) <$> _frlId])++--+-- /See:/ 'vpnTunnelsScopedList' smart constructor.+data VPNTunnelsScopedList = VPNTunnelsScopedList'+    { _vtslVPNTunnels :: !(Maybe [VPNTunnel])+    , _vtslWarning    :: !(Maybe VPNTunnelsScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelsScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtslVPNTunnels'+--+-- * 'vtslWarning'+vpnTunnelsScopedList+    :: VPNTunnelsScopedList+vpnTunnelsScopedList =+    VPNTunnelsScopedList'+    { _vtslVPNTunnels = Nothing+    , _vtslWarning = Nothing+    }++-- | List of vpn tunnels contained in this scope.+vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]+vtslVPNTunnels+  = lens _vtslVPNTunnels+      (\ s a -> s{_vtslVPNTunnels = a})+      . _Default+      . _Coerce++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)+vtslWarning+  = lens _vtslWarning (\ s a -> s{_vtslWarning = a})++instance FromJSON VPNTunnelsScopedList where+        parseJSON+          = withObject "VPNTunnelsScopedList"+              (\ o ->+                 VPNTunnelsScopedList' <$>+                   (o .:? "vpnTunnels" .!= mempty) <*>+                     (o .:? "warning"))++instance ToJSON VPNTunnelsScopedList where+        toJSON VPNTunnelsScopedList'{..}+          = object+              (catMaybes+                 [("vpnTunnels" .=) <$> _vtslVPNTunnels,+                  ("warning" .=) <$> _vtslWarning])++--+-- /See:/ 'instanceGroupsSetNamedPortsRequest' smart constructor.+data InstanceGroupsSetNamedPortsRequest = InstanceGroupsSetNamedPortsRequest'+    { _igsnprFingerprint :: !(Maybe Base64)+    , _igsnprNamedPorts  :: !(Maybe [NamedPort])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igsnprFingerprint'+--+-- * 'igsnprNamedPorts'+instanceGroupsSetNamedPortsRequest+    :: InstanceGroupsSetNamedPortsRequest+instanceGroupsSetNamedPortsRequest =+    InstanceGroupsSetNamedPortsRequest'+    { _igsnprFingerprint = Nothing+    , _igsnprNamedPorts = Nothing+    }++-- | The fingerprint of the named ports information for this instance group.+-- Use this optional property to prevent conflicts when multiple users+-- change the named ports settings concurrently. Obtain the fingerprint+-- with the instanceGroups.get method. Then, include the fingerprint in+-- your request to ensure that you do not overwrite changes that were+-- applied from another concurrent request.+igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)+igsnprFingerprint+  = lens _igsnprFingerprint+      (\ s a -> s{_igsnprFingerprint = a})+      . mapping _Base64++-- | The list of named ports to set for this instance group.+igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]+igsnprNamedPorts+  = lens _igsnprNamedPorts+      (\ s a -> s{_igsnprNamedPorts = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroupsSetNamedPortsRequest+         where+        parseJSON+          = withObject "InstanceGroupsSetNamedPortsRequest"+              (\ o ->+                 InstanceGroupsSetNamedPortsRequest' <$>+                   (o .:? "fingerprint") <*>+                     (o .:? "namedPorts" .!= mempty))++instance ToJSON InstanceGroupsSetNamedPortsRequest+         where+        toJSON InstanceGroupsSetNamedPortsRequest'{..}+          = object+              (catMaybes+                 [("fingerprint" .=) <$> _igsnprFingerprint,+                  ("namedPorts" .=) <$> _igsnprNamedPorts])++-- | Contains a list of Operation resources.+--+-- /See:/ 'operationList' smart constructor.+data OperationList = OperationList'+    { _olNextPageToken :: !(Maybe Text)+    , _olKind          :: !Text+    , _olItems         :: !(Maybe [Operation])+    , _olSelfLink      :: !(Maybe Text)+    , _olId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'olNextPageToken'+--+-- * 'olKind'+--+-- * 'olItems'+--+-- * 'olSelfLink'+--+-- * 'olId'+operationList+    :: OperationList+operationList =+    OperationList'+    { _olNextPageToken = Nothing+    , _olKind = "compute#operationList"+    , _olItems = Nothing+    , _olSelfLink = Nothing+    , _olId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+olNextPageToken :: Lens' OperationList (Maybe Text)+olNextPageToken+  = lens _olNextPageToken+      (\ s a -> s{_olNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#operations for Operations+-- resource.+olKind :: Lens' OperationList Text+olKind = lens _olKind (\ s a -> s{_olKind = a})++-- | [Output Only] A list of Operation resources.+olItems :: Lens' OperationList [Operation]+olItems+  = lens _olItems (\ s a -> s{_olItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+olSelfLink :: Lens' OperationList (Maybe Text)+olSelfLink+  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+olId :: Lens' OperationList (Maybe Text)+olId = lens _olId (\ s a -> s{_olId = a})++instance FromJSON OperationList where+        parseJSON+          = withObject "OperationList"+              (\ o ->+                 OperationList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#operationList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON OperationList where+        toJSON OperationList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _olNextPageToken,+                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,+                  ("selfLink" .=) <$> _olSelfLink,+                  ("id" .=) <$> _olId])++-- | A list of Disk resources.+--+-- /See:/ 'diskList' smart constructor.+data DiskList = DiskList'+    { _dlNextPageToken :: !(Maybe Text)+    , _dlKind          :: !Text+    , _dlItems         :: !(Maybe [Disk])+    , _dlSelfLink      :: !(Maybe Text)+    , _dlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dlNextPageToken'+--+-- * 'dlKind'+--+-- * 'dlItems'+--+-- * 'dlSelfLink'+--+-- * 'dlId'+diskList+    :: DiskList+diskList =+    DiskList'+    { _dlNextPageToken = Nothing+    , _dlKind = "compute#diskList"+    , _dlItems = Nothing+    , _dlSelfLink = Nothing+    , _dlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+dlNextPageToken :: Lens' DiskList (Maybe Text)+dlNextPageToken+  = lens _dlNextPageToken+      (\ s a -> s{_dlNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#diskList for lists of+-- disks.+dlKind :: Lens' DiskList Text+dlKind = lens _dlKind (\ s a -> s{_dlKind = a})++-- | [Output Only] A list of persistent disks.+dlItems :: Lens' DiskList [Disk]+dlItems+  = lens _dlItems (\ s a -> s{_dlItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+dlSelfLink :: Lens' DiskList (Maybe Text)+dlSelfLink+  = lens _dlSelfLink (\ s a -> s{_dlSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dlId :: Lens' DiskList (Maybe Text)+dlId = lens _dlId (\ s a -> s{_dlId = a})++instance FromJSON DiskList where+        parseJSON+          = withObject "DiskList"+              (\ o ->+                 DiskList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#diskList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON DiskList where+        toJSON DiskList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _dlNextPageToken,+                  Just ("kind" .= _dlKind), ("items" .=) <$> _dlItems,+                  ("selfLink" .=) <$> _dlSelfLink,+                  ("id" .=) <$> _dlId])++--+-- /See:/ 'targetPoolsAddInstanceRequest' smart constructor.+newtype TargetPoolsAddInstanceRequest = TargetPoolsAddInstanceRequest'+    { _tpairInstances :: Maybe [InstanceReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsAddInstanceRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpairInstances'+targetPoolsAddInstanceRequest+    :: TargetPoolsAddInstanceRequest+targetPoolsAddInstanceRequest =+    TargetPoolsAddInstanceRequest'+    { _tpairInstances = Nothing+    }++-- | A full or partial URL to an instance to add to this target pool. This+-- can be a full or partial URL. For example, the following are valid URLs:+-- -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project-id\/zones\/zone\/instances\/instance-name+-- - projects\/project-id\/zones\/zone\/instances\/instance-name -+-- zones\/zone\/instances\/instance-name+tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]+tpairInstances+  = lens _tpairInstances+      (\ s a -> s{_tpairInstances = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolsAddInstanceRequest where+        parseJSON+          = withObject "TargetPoolsAddInstanceRequest"+              (\ o ->+                 TargetPoolsAddInstanceRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON TargetPoolsAddInstanceRequest where+        toJSON TargetPoolsAddInstanceRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _tpairInstances])++--+-- /See:/ 'instanceGroupsAddInstancesRequest' smart constructor.+newtype InstanceGroupsAddInstancesRequest = InstanceGroupsAddInstancesRequest'+    { _igairInstances :: Maybe [InstanceReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsAddInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igairInstances'+instanceGroupsAddInstancesRequest+    :: InstanceGroupsAddInstancesRequest+instanceGroupsAddInstancesRequest =+    InstanceGroupsAddInstancesRequest'+    { _igairInstances = Nothing+    }++-- | The list of instances to add to the instance group.+igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]+igairInstances+  = lens _igairInstances+      (\ s a -> s{_igairInstances = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroupsAddInstancesRequest+         where+        parseJSON+          = withObject "InstanceGroupsAddInstancesRequest"+              (\ o ->+                 InstanceGroupsAddInstancesRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON InstanceGroupsAddInstancesRequest+         where+        toJSON InstanceGroupsAddInstancesRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _igairInstances])++-- | [Output Only] A list of managed instance groups.+--+-- /See:/ 'instanceGroupManagerList' smart constructor.+data InstanceGroupManagerList = InstanceGroupManagerList'+    { _igmlNextPageToken :: !(Maybe Text)+    , _igmlKind          :: !Text+    , _igmlItems         :: !(Maybe [InstanceGroupManager])+    , _igmlSelfLink      :: !(Maybe Text)+    , _igmlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagerList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmlNextPageToken'+--+-- * 'igmlKind'+--+-- * 'igmlItems'+--+-- * 'igmlSelfLink'+--+-- * 'igmlId'+instanceGroupManagerList+    :: InstanceGroupManagerList+instanceGroupManagerList =+    InstanceGroupManagerList'+    { _igmlNextPageToken = Nothing+    , _igmlKind = "compute#instanceGroupManagerList"+    , _igmlItems = Nothing+    , _igmlSelfLink = Nothing+    , _igmlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)+igmlNextPageToken+  = lens _igmlNextPageToken+      (\ s a -> s{_igmlNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupManagerList for a list of managed instance groups.+igmlKind :: Lens' InstanceGroupManagerList Text+igmlKind = lens _igmlKind (\ s a -> s{_igmlKind = a})++-- | [Output Only] A list of managed instance groups.+igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]+igmlItems+  = lens _igmlItems (\ s a -> s{_igmlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)+igmlSelfLink+  = lens _igmlSelfLink (\ s a -> s{_igmlSelfLink = a})++-- | [Output Only] A unique identifier for this resource type. The server+-- generates this identifier.+igmlId :: Lens' InstanceGroupManagerList (Maybe Text)+igmlId = lens _igmlId (\ s a -> s{_igmlId = a})++instance FromJSON InstanceGroupManagerList where+        parseJSON+          = withObject "InstanceGroupManagerList"+              (\ o ->+                 InstanceGroupManagerList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#instanceGroupManagerList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceGroupManagerList where+        toJSON InstanceGroupManagerList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _igmlNextPageToken,+                  Just ("kind" .= _igmlKind),+                  ("items" .=) <$> _igmlItems,+                  ("selfLink" .=) <$> _igmlSelfLink,+                  ("id" .=) <$> _igmlId])++-- | An informational warning that appears when the list of addresses is+-- empty.+--+-- /See:/ 'subnetworksScopedListWarning' smart constructor.+data SubnetworksScopedListWarning = SubnetworksScopedListWarning'+    { _sslwData    :: !(Maybe [SubnetworksScopedListWarningDataItem])+    , _sslwCode    :: !(Maybe SubnetworksScopedListWarningCode)+    , _sslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworksScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sslwData'+--+-- * 'sslwCode'+--+-- * 'sslwMessage'+subnetworksScopedListWarning+    :: SubnetworksScopedListWarning+subnetworksScopedListWarning =+    SubnetworksScopedListWarning'+    { _sslwData = Nothing+    , _sslwCode = Nothing+    , _sslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]+sslwData+  = lens _sslwData (\ s a -> s{_sslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)+sslwCode = lens _sslwCode (\ s a -> s{_sslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)+sslwMessage+  = lens _sslwMessage (\ s a -> s{_sslwMessage = a})++instance FromJSON SubnetworksScopedListWarning where+        parseJSON+          = withObject "SubnetworksScopedListWarning"+              (\ o ->+                 SubnetworksScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON SubnetworksScopedListWarning where+        toJSON SubnetworksScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _sslwData,+                  ("code" .=) <$> _sslwCode,+                  ("message" .=) <$> _sslwMessage])++-- | An Image resource.+--+-- /See:/ 'image' smart constructor.+data Image = Image'+    { _iStatus                  :: !(Maybe ImageStatus)+    , _iImageEncryptionKey      :: !(Maybe CustomerEncryptionKey)+    , _iDiskSizeGb              :: !(Maybe (Textual Int64))+    , _iSourceType              :: !ImageSourceType+    , _iSourceDiskId            :: !(Maybe Text)+    , _iKind                    :: !Text+    , _iSourceDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _iArchiveSizeBytes        :: !(Maybe (Textual Int64))+    , _iFamily                  :: !(Maybe Text)+    , _iRawDisk                 :: !(Maybe ImageRawDisk)+    , _iSelfLink                :: !(Maybe Text)+    , _iName                    :: !(Maybe Text)+    , _iCreationTimestamp       :: !(Maybe Text)+    , _iId                      :: !(Maybe (Textual Word64))+    , _iLicenses                :: !(Maybe [Text])+    , _iSourceDisk              :: !(Maybe Text)+    , _iDescription             :: !(Maybe Text)+    , _iDeprecated              :: !(Maybe DeprecationStatus)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Image' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iStatus'+--+-- * 'iImageEncryptionKey'+--+-- * 'iDiskSizeGb'+--+-- * 'iSourceType'+--+-- * 'iSourceDiskId'+--+-- * 'iKind'+--+-- * 'iSourceDiskEncryptionKey'+--+-- * 'iArchiveSizeBytes'+--+-- * 'iFamily'+--+-- * 'iRawDisk'+--+-- * 'iSelfLink'+--+-- * 'iName'+--+-- * 'iCreationTimestamp'+--+-- * 'iId'+--+-- * 'iLicenses'+--+-- * 'iSourceDisk'+--+-- * 'iDescription'+--+-- * 'iDeprecated'+image+    :: Image+image =+    Image'+    { _iStatus = Nothing+    , _iImageEncryptionKey = Nothing+    , _iDiskSizeGb = Nothing+    , _iSourceType = Raw+    , _iSourceDiskId = Nothing+    , _iKind = "compute#image"+    , _iSourceDiskEncryptionKey = Nothing+    , _iArchiveSizeBytes = Nothing+    , _iFamily = Nothing+    , _iRawDisk = Nothing+    , _iSelfLink = Nothing+    , _iName = Nothing+    , _iCreationTimestamp = Nothing+    , _iId = Nothing+    , _iLicenses = Nothing+    , _iSourceDisk = Nothing+    , _iDescription = Nothing+    , _iDeprecated = Nothing+    }++-- | [Output Only] The status of the image. An image can be used to create+-- other resources, such as instances, only after the image has been+-- successfully created and the status is set to READY. Possible values are+-- FAILED, PENDING, or READY.+iStatus :: Lens' Image (Maybe ImageStatus)+iStatus = lens _iStatus (\ s a -> s{_iStatus = a})++-- | Encrypts the image using a customer-supplied encryption key. After you+-- encrypt an image with a customer-supplied key, you must provide the same+-- key if you use the image later (e.g. to create a disk from the image).+-- Customer-supplied encryption keys do not protect access to metadata of+-- the disk. If you do not provide an encryption key when creating the+-- image, then the disk will be encrypted using an automatically generated+-- key and you do not need to provide a key to use the image later.+iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)+iImageEncryptionKey+  = lens _iImageEncryptionKey+      (\ s a -> s{_iImageEncryptionKey = a})++-- | Size of the image when restored onto a persistent disk (in GB).+iDiskSizeGb :: Lens' Image (Maybe Int64)+iDiskSizeGb+  = lens _iDiskSizeGb (\ s a -> s{_iDiskSizeGb = a}) .+      mapping _Coerce++-- | The type of the image used to create this disk. The default and only+-- value is RAW+iSourceType :: Lens' Image ImageSourceType+iSourceType+  = lens _iSourceType (\ s a -> s{_iSourceType = a})++-- | The ID value of the disk used to create this image. This value may be+-- used to determine whether the image was taken from the current or a+-- previous instance of a given disk name.+iSourceDiskId :: Lens' Image (Maybe Text)+iSourceDiskId+  = lens _iSourceDiskId+      (\ s a -> s{_iSourceDiskId = a})++-- | [Output Only] Type of the resource. Always compute#image for images.+iKind :: Lens' Image Text+iKind = lens _iKind (\ s a -> s{_iKind = a})++-- | The customer-supplied encryption key of the source disk. Required if the+-- source disk is protected by a customer-supplied encryption key.+iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)+iSourceDiskEncryptionKey+  = lens _iSourceDiskEncryptionKey+      (\ s a -> s{_iSourceDiskEncryptionKey = a})++-- | Size of the image tar.gz archive stored in Google Cloud Storage (in+-- bytes).+iArchiveSizeBytes :: Lens' Image (Maybe Int64)+iArchiveSizeBytes+  = lens _iArchiveSizeBytes+      (\ s a -> s{_iArchiveSizeBytes = a})+      . mapping _Coerce++-- | The name of the image family to which this image belongs. You can create+-- disks by specifying an image family instead of a specific image name.+-- The image family always returns its latest image that is not deprecated.+-- The name of the image family must comply with RFC1035.+iFamily :: Lens' Image (Maybe Text)+iFamily = lens _iFamily (\ s a -> s{_iFamily = a})++-- | The parameters of the raw disk image.+iRawDisk :: Lens' Image (Maybe ImageRawDisk)+iRawDisk = lens _iRawDisk (\ s a -> s{_iRawDisk = a})++-- | [Output Only] Server-defined URL for the resource.+iSelfLink :: Lens' Image (Maybe Text)+iSelfLink+  = lens _iSelfLink (\ s a -> s{_iSelfLink = a})++-- | Name of the resource; provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+iName :: Lens' Image (Maybe Text)+iName = lens _iName (\ s a -> s{_iName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+iCreationTimestamp :: Lens' Image (Maybe Text)+iCreationTimestamp+  = lens _iCreationTimestamp+      (\ s a -> s{_iCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+iId :: Lens' Image (Maybe Word64)+iId+  = lens _iId (\ s a -> s{_iId = a}) . mapping _Coerce++-- | Any applicable license URI.+iLicenses :: Lens' Image [Text]+iLicenses+  = lens _iLicenses (\ s a -> s{_iLicenses = a}) .+      _Default+      . _Coerce++-- | URL of the The source disk used to create this image. This can be a full+-- or valid partial URL. You must provide either this property or the+-- rawDisk.source property but not both to create an image. For example,+-- the following are valid values: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk+-- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk+iSourceDisk :: Lens' Image (Maybe Text)+iSourceDisk+  = lens _iSourceDisk (\ s a -> s{_iSourceDisk = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+iDescription :: Lens' Image (Maybe Text)+iDescription+  = lens _iDescription (\ s a -> s{_iDescription = a})++-- | The deprecation status associated with this image.+iDeprecated :: Lens' Image (Maybe DeprecationStatus)+iDeprecated+  = lens _iDeprecated (\ s a -> s{_iDeprecated = a})++instance FromJSON Image where+        parseJSON+          = withObject "Image"+              (\ o ->+                 Image' <$>+                   (o .:? "status") <*> (o .:? "imageEncryptionKey") <*>+                     (o .:? "diskSizeGb")+                     <*> (o .:? "sourceType" .!= Raw)+                     <*> (o .:? "sourceDiskId")+                     <*> (o .:? "kind" .!= "compute#image")+                     <*> (o .:? "sourceDiskEncryptionKey")+                     <*> (o .:? "archiveSizeBytes")+                     <*> (o .:? "family")+                     <*> (o .:? "rawDisk")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "licenses" .!= mempty)+                     <*> (o .:? "sourceDisk")+                     <*> (o .:? "description")+                     <*> (o .:? "deprecated"))++instance ToJSON Image where+        toJSON Image'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _iStatus,+                  ("imageEncryptionKey" .=) <$> _iImageEncryptionKey,+                  ("diskSizeGb" .=) <$> _iDiskSizeGb,+                  Just ("sourceType" .= _iSourceType),+                  ("sourceDiskId" .=) <$> _iSourceDiskId,+                  Just ("kind" .= _iKind),+                  ("sourceDiskEncryptionKey" .=) <$>+                    _iSourceDiskEncryptionKey,+                  ("archiveSizeBytes" .=) <$> _iArchiveSizeBytes,+                  ("family" .=) <$> _iFamily,+                  ("rawDisk" .=) <$> _iRawDisk,+                  ("selfLink" .=) <$> _iSelfLink,+                  ("name" .=) <$> _iName,+                  ("creationTimestamp" .=) <$> _iCreationTimestamp,+                  ("id" .=) <$> _iId, ("licenses" .=) <$> _iLicenses,+                  ("sourceDisk" .=) <$> _iSourceDisk,+                  ("description" .=) <$> _iDescription,+                  ("deprecated" .=) <$> _iDeprecated])++-- | A UrlMap resource. This resource defines the mapping from URL to the+-- BackendService resource, based on the \"longest-match\" of the URL\'s+-- host and path.+--+-- /See:/ 'urlMap' smart constructor.+data URLMap = URLMap'+    { _umTests             :: !(Maybe [URLMapTest])+    , _umKind              :: !Text+    , _umFingerprint       :: !(Maybe Base64)+    , _umDefaultService    :: !(Maybe Text)+    , _umSelfLink          :: !(Maybe Text)+    , _umName              :: !(Maybe Text)+    , _umCreationTimestamp :: !(Maybe Text)+    , _umPathMatchers      :: !(Maybe [PathMatcher])+    , _umId                :: !(Maybe (Textual Word64))+    , _umHostRules         :: !(Maybe [HostRule])+    , _umDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMap' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umTests'+--+-- * 'umKind'+--+-- * 'umFingerprint'+--+-- * 'umDefaultService'+--+-- * 'umSelfLink'+--+-- * 'umName'+--+-- * 'umCreationTimestamp'+--+-- * 'umPathMatchers'+--+-- * 'umId'+--+-- * 'umHostRules'+--+-- * 'umDescription'+urlMap+    :: URLMap+urlMap =+    URLMap'+    { _umTests = Nothing+    , _umKind = "compute#urlMap"+    , _umFingerprint = Nothing+    , _umDefaultService = Nothing+    , _umSelfLink = Nothing+    , _umName = Nothing+    , _umCreationTimestamp = Nothing+    , _umPathMatchers = Nothing+    , _umId = Nothing+    , _umHostRules = Nothing+    , _umDescription = Nothing+    }++-- | The list of expected URL mappings. Request to update this UrlMap will+-- succeed only if all of the test cases pass.+umTests :: Lens' URLMap [URLMapTest]+umTests+  = lens _umTests (\ s a -> s{_umTests = a}) . _Default+      . _Coerce++-- | [Output Only] Type of the resource. Always compute#urlMaps for url maps.+umKind :: Lens' URLMap Text+umKind = lens _umKind (\ s a -> s{_umKind = a})++-- | Fingerprint of this resource. A hash of the contents stored in this+-- object. This field is used in optimistic locking. This field will be+-- ignored when inserting a UrlMap. An up-to-date fingerprint must be+-- provided in order to update the UrlMap.+umFingerprint :: Lens' URLMap (Maybe ByteString)+umFingerprint+  = lens _umFingerprint+      (\ s a -> s{_umFingerprint = a})+      . mapping _Base64++-- | The URL of the BackendService resource if none of the hostRules match.+umDefaultService :: Lens' URLMap (Maybe Text)+umDefaultService+  = lens _umDefaultService+      (\ s a -> s{_umDefaultService = a})++-- | [Output Only] Server-defined URL for the resource.+umSelfLink :: Lens' URLMap (Maybe Text)+umSelfLink+  = lens _umSelfLink (\ s a -> s{_umSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+umName :: Lens' URLMap (Maybe Text)+umName = lens _umName (\ s a -> s{_umName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+umCreationTimestamp :: Lens' URLMap (Maybe Text)+umCreationTimestamp+  = lens _umCreationTimestamp+      (\ s a -> s{_umCreationTimestamp = a})++-- | The list of named PathMatchers to use against the URL.+umPathMatchers :: Lens' URLMap [PathMatcher]+umPathMatchers+  = lens _umPathMatchers+      (\ s a -> s{_umPathMatchers = a})+      . _Default+      . _Coerce++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+umId :: Lens' URLMap (Maybe Word64)+umId+  = lens _umId (\ s a -> s{_umId = a}) .+      mapping _Coerce++-- | The list of HostRules to use against the URL.+umHostRules :: Lens' URLMap [HostRule]+umHostRules+  = lens _umHostRules (\ s a -> s{_umHostRules = a}) .+      _Default+      . _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+umDescription :: Lens' URLMap (Maybe Text)+umDescription+  = lens _umDescription+      (\ s a -> s{_umDescription = a})++instance FromJSON URLMap where+        parseJSON+          = withObject "URLMap"+              (\ o ->+                 URLMap' <$>+                   (o .:? "tests" .!= mempty) <*>+                     (o .:? "kind" .!= "compute#urlMap")+                     <*> (o .:? "fingerprint")+                     <*> (o .:? "defaultService")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "pathMatchers" .!= mempty)+                     <*> (o .:? "id")+                     <*> (o .:? "hostRules" .!= mempty)+                     <*> (o .:? "description"))++instance ToJSON URLMap where+        toJSON URLMap'{..}+          = object+              (catMaybes+                 [("tests" .=) <$> _umTests, Just ("kind" .= _umKind),+                  ("fingerprint" .=) <$> _umFingerprint,+                  ("defaultService" .=) <$> _umDefaultService,+                  ("selfLink" .=) <$> _umSelfLink,+                  ("name" .=) <$> _umName,+                  ("creationTimestamp" .=) <$> _umCreationTimestamp,+                  ("pathMatchers" .=) <$> _umPathMatchers,+                  ("id" .=) <$> _umId,+                  ("hostRules" .=) <$> _umHostRules,+                  ("description" .=) <$> _umDescription])++-- | A map of scoped instance group lists.+--+-- /See:/ 'instanceGroupAggregatedListItems' smart constructor.+newtype InstanceGroupAggregatedListItems = InstanceGroupAggregatedListItems'+    { _igaliAddtional :: HashMap Text InstanceGroupsScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igaliAddtional'+instanceGroupAggregatedListItems+    :: HashMap Text InstanceGroupsScopedList -- ^ 'igaliAddtional'+    -> InstanceGroupAggregatedListItems+instanceGroupAggregatedListItems pIgaliAddtional_ =+    InstanceGroupAggregatedListItems'+    { _igaliAddtional = _Coerce # pIgaliAddtional_+    }++-- | The name of the scope that contains this set of instance groups.+igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)+igaliAddtional+  = lens _igaliAddtional+      (\ s a -> s{_igaliAddtional = a})+      . _Coerce++instance FromJSON InstanceGroupAggregatedListItems+         where+        parseJSON+          = withObject "InstanceGroupAggregatedListItems"+              (\ o ->+                 InstanceGroupAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON InstanceGroupAggregatedListItems+         where+        toJSON = toJSON . _igaliAddtional++-- | Contains a list of TargetPool resources.+--+-- /See:/ 'targetPoolList' smart constructor.+data TargetPoolList = TargetPoolList'+    { _tplNextPageToken :: !(Maybe Text)+    , _tplKind          :: !Text+    , _tplItems         :: !(Maybe [TargetPool])+    , _tplSelfLink      :: !(Maybe Text)+    , _tplId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tplNextPageToken'+--+-- * 'tplKind'+--+-- * 'tplItems'+--+-- * 'tplSelfLink'+--+-- * 'tplId'+targetPoolList+    :: TargetPoolList+targetPoolList =+    TargetPoolList'+    { _tplNextPageToken = Nothing+    , _tplKind = "compute#targetPoolList"+    , _tplItems = Nothing+    , _tplSelfLink = Nothing+    , _tplId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tplNextPageToken :: Lens' TargetPoolList (Maybe Text)+tplNextPageToken+  = lens _tplNextPageToken+      (\ s a -> s{_tplNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#targetPoolList for lists+-- of target pools.+tplKind :: Lens' TargetPoolList Text+tplKind = lens _tplKind (\ s a -> s{_tplKind = a})++-- | A list of TargetPool resources.+tplItems :: Lens' TargetPoolList [TargetPool]+tplItems+  = lens _tplItems (\ s a -> s{_tplItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+tplSelfLink :: Lens' TargetPoolList (Maybe Text)+tplSelfLink+  = lens _tplSelfLink (\ s a -> s{_tplSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Defined by the server.+tplId :: Lens' TargetPoolList (Maybe Text)+tplId = lens _tplId (\ s a -> s{_tplId = a})++instance FromJSON TargetPoolList where+        parseJSON+          = withObject "TargetPoolList"+              (\ o ->+                 TargetPoolList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetPoolList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetPoolList where+        toJSON TargetPoolList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tplNextPageToken,+                  Just ("kind" .= _tplKind),+                  ("items" .=) <$> _tplItems,+                  ("selfLink" .=) <$> _tplSelfLink,+                  ("id" .=) <$> _tplId])++--+-- /See:/ 'targetInstanceAggregatedList' smart constructor.+data TargetInstanceAggregatedList = TargetInstanceAggregatedList'+    { _tialNextPageToken :: !(Maybe Text)+    , _tialKind          :: !Text+    , _tialItems         :: !(Maybe TargetInstanceAggregatedListItems)+    , _tialSelfLink      :: !(Maybe Text)+    , _tialId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstanceAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tialNextPageToken'+--+-- * 'tialKind'+--+-- * 'tialItems'+--+-- * 'tialSelfLink'+--+-- * 'tialId'+targetInstanceAggregatedList+    :: TargetInstanceAggregatedList+targetInstanceAggregatedList =+    TargetInstanceAggregatedList'+    { _tialNextPageToken = Nothing+    , _tialKind = "compute#targetInstanceAggregatedList"+    , _tialItems = Nothing+    , _tialSelfLink = Nothing+    , _tialId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)+tialNextPageToken+  = lens _tialNextPageToken+      (\ s a -> s{_tialNextPageToken = a})++-- | Type of resource.+tialKind :: Lens' TargetInstanceAggregatedList Text+tialKind = lens _tialKind (\ s a -> s{_tialKind = a})++-- | A map of scoped target instance lists.+tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)+tialItems+  = lens _tialItems (\ s a -> s{_tialItems = a})++-- | [Output Only] Server-defined URL for this resource.+tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)+tialSelfLink+  = lens _tialSelfLink (\ s a -> s{_tialSelfLink = a})++-- | [Output Only] Unique identifier for the resource; defined by the server.+tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)+tialId = lens _tialId (\ s a -> s{_tialId = a})++instance FromJSON TargetInstanceAggregatedList where+        parseJSON+          = withObject "TargetInstanceAggregatedList"+              (\ o ->+                 TargetInstanceAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#targetInstanceAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetInstanceAggregatedList where+        toJSON TargetInstanceAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tialNextPageToken,+                  Just ("kind" .= _tialKind),+                  ("items" .=) <$> _tialItems,+                  ("selfLink" .=) <$> _tialSelfLink,+                  ("id" .=) <$> _tialId])++--+-- /See:/ 'disksScopedList' smart constructor.+data DisksScopedList = DisksScopedList'+    { _dslWarning :: !(Maybe DisksScopedListWarning)+    , _dslDisks   :: !(Maybe [Disk])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DisksScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dslWarning'+--+-- * 'dslDisks'+disksScopedList+    :: DisksScopedList+disksScopedList =+    DisksScopedList'+    { _dslWarning = Nothing+    , _dslDisks = Nothing+    }++-- | [Output Only] Informational warning which replaces the list of disks+-- when the list is empty.+dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)+dslWarning+  = lens _dslWarning (\ s a -> s{_dslWarning = a})++-- | [Output Only] List of disks contained in this scope.+dslDisks :: Lens' DisksScopedList [Disk]+dslDisks+  = lens _dslDisks (\ s a -> s{_dslDisks = a}) .+      _Default+      . _Coerce++instance FromJSON DisksScopedList where+        parseJSON+          = withObject "DisksScopedList"+              (\ o ->+                 DisksScopedList' <$>+                   (o .:? "warning") <*> (o .:? "disks" .!= mempty))++instance ToJSON DisksScopedList where+        toJSON DisksScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _dslWarning,+                  ("disks" .=) <$> _dslDisks])++--+-- /See:/ 'instanceGroupManagersScopedList' smart constructor.+data InstanceGroupManagersScopedList = InstanceGroupManagersScopedList'+    { _igmslWarning               :: !(Maybe InstanceGroupManagersScopedListWarning)+    , _igmslInstanceGroupManagers :: !(Maybe [InstanceGroupManager])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmslWarning'+--+-- * 'igmslInstanceGroupManagers'+instanceGroupManagersScopedList+    :: InstanceGroupManagersScopedList+instanceGroupManagersScopedList =+    InstanceGroupManagersScopedList'+    { _igmslWarning = Nothing+    , _igmslInstanceGroupManagers = Nothing+    }++-- | [Output Only] The warning that replaces the list of managed instance+-- groups when the list is empty.+igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)+igmslWarning+  = lens _igmslWarning (\ s a -> s{_igmslWarning = a})++-- | [Output Only] The list of managed instance groups that are contained in+-- the specified project and zone.+igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]+igmslInstanceGroupManagers+  = lens _igmslInstanceGroupManagers+      (\ s a -> s{_igmslInstanceGroupManagers = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroupManagersScopedList+         where+        parseJSON+          = withObject "InstanceGroupManagersScopedList"+              (\ o ->+                 InstanceGroupManagersScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "instanceGroupManagers" .!= mempty))++instance ToJSON InstanceGroupManagersScopedList where+        toJSON InstanceGroupManagersScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _igmslWarning,+                  ("instanceGroupManagers" .=) <$>+                    _igmslInstanceGroupManagers])++-- | An HealthCheck resource. This resource defines a template for how+-- individual virtual machines should be checked for health, via one of the+-- supported protocols.+--+-- /See:/ 'healthCheck' smart constructor.+data HealthCheck = HealthCheck'+    { _hcHealthyThreshold   :: !(Maybe (Textual Int32))+    , _hcTCPHealthCheck     :: !(Maybe TCPHealthCheck)+    , _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, UDP, 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])++--+-- /See:/ 'diskAggregatedList' smart constructor.+data DiskAggregatedList = DiskAggregatedList'+    { _dalNextPageToken :: !(Maybe Text)+    , _dalKind          :: !Text+    , _dalItems         :: !(Maybe DiskAggregatedListItems)+    , _dalSelfLink      :: !(Maybe Text)+    , _dalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dalNextPageToken'+--+-- * 'dalKind'+--+-- * 'dalItems'+--+-- * 'dalSelfLink'+--+-- * 'dalId'+diskAggregatedList+    :: DiskAggregatedList+diskAggregatedList =+    DiskAggregatedList'+    { _dalNextPageToken = Nothing+    , _dalKind = "compute#diskAggregatedList"+    , _dalItems = Nothing+    , _dalSelfLink = Nothing+    , _dalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)+dalNextPageToken+  = lens _dalNextPageToken+      (\ s a -> s{_dalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#diskAggregatedList for+-- aggregated lists of persistent disks.+dalKind :: Lens' DiskAggregatedList Text+dalKind = lens _dalKind (\ s a -> s{_dalKind = a})++-- | [Output Only] A map of scoped disk lists.+dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)+dalItems = lens _dalItems (\ s a -> s{_dalItems = a})++-- | [Output Only] Server-defined URL for this resource.+dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)+dalSelfLink+  = lens _dalSelfLink (\ s a -> s{_dalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dalId :: Lens' DiskAggregatedList (Maybe Text)+dalId = lens _dalId (\ s a -> s{_dalId = a})++instance FromJSON DiskAggregatedList where+        parseJSON+          = withObject "DiskAggregatedList"+              (\ o ->+                 DiskAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#diskAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON DiskAggregatedList where+        toJSON DiskAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _dalNextPageToken,+                  Just ("kind" .= _dalKind),+                  ("items" .=) <$> _dalItems,+                  ("selfLink" .=) <$> _dalSelfLink,+                  ("id" .=) <$> _dalId])++--+-- /See:/ 'instanceWithNamedPorts' smart constructor.+data InstanceWithNamedPorts = InstanceWithNamedPorts'+    { _iwnpStatus     :: !(Maybe InstanceWithNamedPortsStatus)+    , _iwnpNamedPorts :: !(Maybe [NamedPort])+    , _iwnpInstance   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceWithNamedPorts' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iwnpStatus'+--+-- * 'iwnpNamedPorts'+--+-- * 'iwnpInstance'+instanceWithNamedPorts+    :: InstanceWithNamedPorts+instanceWithNamedPorts =+    InstanceWithNamedPorts'+    { _iwnpStatus = Nothing+    , _iwnpNamedPorts = Nothing+    , _iwnpInstance = Nothing+    }++-- | [Output Only] The status of the instance.+iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)+iwnpStatus+  = lens _iwnpStatus (\ s a -> s{_iwnpStatus = a})++-- | [Output Only] The named ports that belong to this instance group.+iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]+iwnpNamedPorts+  = lens _iwnpNamedPorts+      (\ s a -> s{_iwnpNamedPorts = a})+      . _Default+      . _Coerce++-- | [Output Only] The URL of the instance.+iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)+iwnpInstance+  = lens _iwnpInstance (\ s a -> s{_iwnpInstance = a})++instance FromJSON InstanceWithNamedPorts where+        parseJSON+          = withObject "InstanceWithNamedPorts"+              (\ o ->+                 InstanceWithNamedPorts' <$>+                   (o .:? "status") <*> (o .:? "namedPorts" .!= mempty)+                     <*> (o .:? "instance"))++instance ToJSON InstanceWithNamedPorts where+        toJSON InstanceWithNamedPorts'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _iwnpStatus,+                  ("namedPorts" .=) <$> _iwnpNamedPorts,+                  ("instance" .=) <$> _iwnpInstance])++--+-- /See:/ 'forwardingRulesScopedList' smart constructor.+data ForwardingRulesScopedList = ForwardingRulesScopedList'+    { _frslWarning         :: !(Maybe ForwardingRulesScopedListWarning)+    , _frslForwardingRules :: !(Maybe [ForwardingRule])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRulesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frslWarning'+--+-- * 'frslForwardingRules'+forwardingRulesScopedList+    :: ForwardingRulesScopedList+forwardingRulesScopedList =+    ForwardingRulesScopedList'+    { _frslWarning = Nothing+    , _frslForwardingRules = Nothing+    }++-- | Informational warning which replaces the list of forwarding rules when+-- the list is empty.+frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)+frslWarning+  = lens _frslWarning (\ s a -> s{_frslWarning = a})++-- | List of forwarding rules contained in this scope.+frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]+frslForwardingRules+  = lens _frslForwardingRules+      (\ s a -> s{_frslForwardingRules = a})+      . _Default+      . _Coerce++instance FromJSON ForwardingRulesScopedList where+        parseJSON+          = withObject "ForwardingRulesScopedList"+              (\ o ->+                 ForwardingRulesScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "forwardingRules" .!= mempty))++instance ToJSON ForwardingRulesScopedList where+        toJSON ForwardingRulesScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _frslWarning,+                  ("forwardingRules" .=) <$> _frslForwardingRules])++--+-- /See:/ 'instanceReference' smart constructor.+newtype InstanceReference = InstanceReference'+    { _iInstance :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceReference' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iInstance'+instanceReference+    :: InstanceReference+instanceReference =+    InstanceReference'+    { _iInstance = Nothing+    }++-- | The URL for a specific instance.+iInstance :: Lens' InstanceReference (Maybe Text)+iInstance+  = lens _iInstance (\ s a -> s{_iInstance = a})++instance FromJSON InstanceReference where+        parseJSON+          = withObject "InstanceReference"+              (\ o -> InstanceReference' <$> (o .:? "instance"))++instance ToJSON InstanceReference where+        toJSON InstanceReference'{..}+          = object (catMaybes [("instance" .=) <$> _iInstance])++--+-- /See:/ 'operationAggregatedList' smart constructor.+data OperationAggregatedList = OperationAggregatedList'+    { _oalNextPageToken :: !(Maybe Text)+    , _oalKind          :: !Text+    , _oalItems         :: !(Maybe OperationAggregatedListItems)+    , _oalSelfLink      :: !(Maybe Text)+    , _oalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oalNextPageToken'+--+-- * 'oalKind'+--+-- * 'oalItems'+--+-- * 'oalSelfLink'+--+-- * 'oalId'+operationAggregatedList+    :: OperationAggregatedList+operationAggregatedList =+    OperationAggregatedList'+    { _oalNextPageToken = Nothing+    , _oalKind = "compute#operationAggregatedList"+    , _oalItems = Nothing+    , _oalSelfLink = Nothing+    , _oalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)+oalNextPageToken+  = lens _oalNextPageToken+      (\ s a -> s{_oalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#operationAggregatedList+-- for aggregated lists of operations.+oalKind :: Lens' OperationAggregatedList Text+oalKind = lens _oalKind (\ s a -> s{_oalKind = a})++-- | [Output Only] A map of scoped operation lists.+oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)+oalItems = lens _oalItems (\ s a -> s{_oalItems = a})++-- | [Output Only] Server-defined URL for this resource.+oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)+oalSelfLink+  = lens _oalSelfLink (\ s a -> s{_oalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+oalId :: Lens' OperationAggregatedList (Maybe Text)+oalId = lens _oalId (\ s a -> s{_oalId = a})++instance FromJSON OperationAggregatedList where+        parseJSON+          = withObject "OperationAggregatedList"+              (\ o ->+                 OperationAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#operationAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON OperationAggregatedList where+        toJSON OperationAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _oalNextPageToken,+                  Just ("kind" .= _oalKind),+                  ("items" .=) <$> _oalItems,+                  ("selfLink" .=) <$> _oalSelfLink,+                  ("id" .=) <$> _oalId])++--+-- /See:/ 'operationsScopedList' smart constructor.+data OperationsScopedList = OperationsScopedList'+    { _oslWarning    :: !(Maybe OperationsScopedListWarning)+    , _oslOperations :: !(Maybe [Operation])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationsScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oslWarning'+--+-- * 'oslOperations'+operationsScopedList+    :: OperationsScopedList+operationsScopedList =+    OperationsScopedList'+    { _oslWarning = Nothing+    , _oslOperations = Nothing+    }++-- | [Output Only] Informational warning which replaces the list of+-- operations when the list is empty.+oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)+oslWarning+  = lens _oslWarning (\ s a -> s{_oslWarning = a})++-- | [Output Only] List of operations contained in this scope.+oslOperations :: Lens' OperationsScopedList [Operation]+oslOperations+  = lens _oslOperations+      (\ s a -> s{_oslOperations = a})+      . _Default+      . _Coerce++instance FromJSON OperationsScopedList where+        parseJSON+          = withObject "OperationsScopedList"+              (\ o ->+                 OperationsScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "operations" .!= mempty))++instance ToJSON OperationsScopedList where+        toJSON OperationsScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _oslWarning,+                  ("operations" .=) <$> _oslOperations])++-- | The named port. For example: .+--+-- /See:/ 'namedPort' smart constructor.+data NamedPort = NamedPort'+    { _npName :: !(Maybe Text)+    , _npPort :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NamedPort' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'npName'+--+-- * 'npPort'+namedPort+    :: NamedPort+namedPort =+    NamedPort'+    { _npName = Nothing+    , _npPort = Nothing+    }++-- | The name for this named port. The name must be 1-63 characters long, and+-- comply with RFC1035.+npName :: Lens' NamedPort (Maybe Text)+npName = lens _npName (\ s a -> s{_npName = a})++-- | The port number, which can be a value between 1 and 65535.+npPort :: Lens' NamedPort (Maybe Int32)+npPort+  = lens _npPort (\ s a -> s{_npPort = a}) .+      mapping _Coerce++instance FromJSON NamedPort where+        parseJSON+          = withObject "NamedPort"+              (\ o ->+                 NamedPort' <$> (o .:? "name") <*> (o .:? "port"))++instance ToJSON NamedPort where+        toJSON NamedPort'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _npName, ("port" .=) <$> _npPort])++-- | Contains a list of TargetInstance resources.+--+-- /See:/ 'targetInstanceList' smart constructor.+data TargetInstanceList = TargetInstanceList'+    { _tilNextPageToken :: !(Maybe Text)+    , _tilKind          :: !Text+    , _tilItems         :: !(Maybe [TargetInstance])+    , _tilSelfLink      :: !(Maybe Text)+    , _tilId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstanceList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tilNextPageToken'+--+-- * 'tilKind'+--+-- * 'tilItems'+--+-- * 'tilSelfLink'+--+-- * 'tilId'+targetInstanceList+    :: TargetInstanceList+targetInstanceList =+    TargetInstanceList'+    { _tilNextPageToken = Nothing+    , _tilKind = "compute#targetInstanceList"+    , _tilItems = Nothing+    , _tilSelfLink = Nothing+    , _tilId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)+tilNextPageToken+  = lens _tilNextPageToken+      (\ s a -> s{_tilNextPageToken = a})++-- | Type of resource.+tilKind :: Lens' TargetInstanceList Text+tilKind = lens _tilKind (\ s a -> s{_tilKind = a})++-- | A list of TargetInstance resources.+tilItems :: Lens' TargetInstanceList [TargetInstance]+tilItems+  = lens _tilItems (\ s a -> s{_tilItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+tilSelfLink :: Lens' TargetInstanceList (Maybe Text)+tilSelfLink+  = lens _tilSelfLink (\ s a -> s{_tilSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tilId :: Lens' TargetInstanceList (Maybe Text)+tilId = lens _tilId (\ s a -> s{_tilId = a})++instance FromJSON TargetInstanceList where+        parseJSON+          = withObject "TargetInstanceList"+              (\ o ->+                 TargetInstanceList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetInstanceList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetInstanceList where+        toJSON TargetInstanceList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tilNextPageToken,+                  Just ("kind" .= _tilKind),+                  ("items" .=) <$> _tilItems,+                  ("selfLink" .=) <$> _tilSelfLink,+                  ("id" .=) <$> _tilId])++--+-- /See:/ 'instanceGroupManagerAggregatedList' smart constructor.+data InstanceGroupManagerAggregatedList = InstanceGroupManagerAggregatedList'+    { _igmalNextPageToken :: !(Maybe Text)+    , _igmalKind          :: !Text+    , _igmalItems         :: !(Maybe InstanceGroupManagerAggregatedListItems)+    , _igmalSelfLink      :: !(Maybe Text)+    , _igmalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagerAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmalNextPageToken'+--+-- * 'igmalKind'+--+-- * 'igmalItems'+--+-- * 'igmalSelfLink'+--+-- * 'igmalId'+instanceGroupManagerAggregatedList+    :: InstanceGroupManagerAggregatedList+instanceGroupManagerAggregatedList =+    InstanceGroupManagerAggregatedList'+    { _igmalNextPageToken = Nothing+    , _igmalKind = "compute#instanceGroupManagerAggregatedList"+    , _igmalItems = Nothing+    , _igmalSelfLink = Nothing+    , _igmalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)+igmalNextPageToken+  = lens _igmalNextPageToken+      (\ s a -> s{_igmalNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupManagerAggregatedList for an aggregated list of+-- managed instance groups.+igmalKind :: Lens' InstanceGroupManagerAggregatedList Text+igmalKind+  = lens _igmalKind (\ s a -> s{_igmalKind = a})++-- | [Output Only] A map of filtered managed instance group lists.+igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)+igmalItems+  = lens _igmalItems (\ s a -> s{_igmalItems = a})++-- | [Output Only] The URL for this resource type. The server generates this+-- URL.+igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)+igmalSelfLink+  = lens _igmalSelfLink+      (\ s a -> s{_igmalSelfLink = a})++-- | [Output Only] A unique identifier for this aggregated list of managed+-- instance groups. The server generates this identifier.+igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)+igmalId = lens _igmalId (\ s a -> s{_igmalId = a})++instance FromJSON InstanceGroupManagerAggregatedList+         where+        parseJSON+          = withObject "InstanceGroupManagerAggregatedList"+              (\ o ->+                 InstanceGroupManagerAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#instanceGroupManagerAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceGroupManagerAggregatedList+         where+        toJSON InstanceGroupManagerAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _igmalNextPageToken,+                  Just ("kind" .= _igmalKind),+                  ("items" .=) <$> _igmalItems,+                  ("selfLink" .=) <$> _igmalSelfLink,+                  ("id" .=) <$> _igmalId])++--+-- /See:/ 'targetPoolsScopedList' smart constructor.+data TargetPoolsScopedList = TargetPoolsScopedList'+    { _tpslWarning     :: !(Maybe TargetPoolsScopedListWarning)+    , _tpslTargetPools :: !(Maybe [TargetPool])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpslWarning'+--+-- * 'tpslTargetPools'+targetPoolsScopedList+    :: TargetPoolsScopedList+targetPoolsScopedList =+    TargetPoolsScopedList'+    { _tpslWarning = Nothing+    , _tpslTargetPools = Nothing+    }++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)+tpslWarning+  = lens _tpslWarning (\ s a -> s{_tpslWarning = a})++-- | List of target pools contained in this scope.+tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]+tpslTargetPools+  = lens _tpslTargetPools+      (\ s a -> s{_tpslTargetPools = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolsScopedList where+        parseJSON+          = withObject "TargetPoolsScopedList"+              (\ o ->+                 TargetPoolsScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "targetPools" .!= mempty))++instance ToJSON TargetPoolsScopedList where+        toJSON TargetPoolsScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _tpslWarning,+                  ("targetPools" .=) <$> _tpslTargetPools])++--+-- /See:/ 'forwardingRuleAggregatedList' smart constructor.+data ForwardingRuleAggregatedList = ForwardingRuleAggregatedList'+    { _fralNextPageToken :: !(Maybe Text)+    , _fralKind          :: !Text+    , _fralItems         :: !(Maybe ForwardingRuleAggregatedListItems)+    , _fralSelfLink      :: !(Maybe Text)+    , _fralId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRuleAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fralNextPageToken'+--+-- * 'fralKind'+--+-- * 'fralItems'+--+-- * 'fralSelfLink'+--+-- * 'fralId'+forwardingRuleAggregatedList+    :: ForwardingRuleAggregatedList+forwardingRuleAggregatedList =+    ForwardingRuleAggregatedList'+    { _fralNextPageToken = Nothing+    , _fralKind = "compute#forwardingRuleAggregatedList"+    , _fralItems = Nothing+    , _fralSelfLink = Nothing+    , _fralId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)+fralNextPageToken+  = lens _fralNextPageToken+      (\ s a -> s{_fralNextPageToken = a})++-- | [Output Only] Type of resource. Always+-- compute#forwardingRuleAggregatedList for lists of forwarding rules.+fralKind :: Lens' ForwardingRuleAggregatedList Text+fralKind = lens _fralKind (\ s a -> s{_fralKind = a})++-- | A map of scoped forwarding rule lists.+fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)+fralItems+  = lens _fralItems (\ s a -> s{_fralItems = a})++-- | [Output Only] Server-defined URL for this resource.+fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)+fralSelfLink+  = lens _fralSelfLink (\ s a -> s{_fralSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)+fralId = lens _fralId (\ s a -> s{_fralId = a})++instance FromJSON ForwardingRuleAggregatedList where+        parseJSON+          = withObject "ForwardingRuleAggregatedList"+              (\ o ->+                 ForwardingRuleAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#forwardingRuleAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON ForwardingRuleAggregatedList where+        toJSON ForwardingRuleAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _fralNextPageToken,+                  Just ("kind" .= _fralKind),+                  ("items" .=) <$> _fralItems,+                  ("selfLink" .=) <$> _fralSelfLink,+                  ("id" .=) <$> _fralId])++--+-- /See:/ 'targetReference' smart constructor.+newtype TargetReference = TargetReference'+    { _trTarget :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetReference' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'trTarget'+targetReference+    :: TargetReference+targetReference =+    TargetReference'+    { _trTarget = Nothing+    }++trTarget :: Lens' TargetReference (Maybe Text)+trTarget = lens _trTarget (\ s a -> s{_trTarget = a})++instance FromJSON TargetReference where+        parseJSON+          = withObject "TargetReference"+              (\ o -> TargetReference' <$> (o .:? "target"))++instance ToJSON TargetReference where+        toJSON TargetReference'{..}+          = object (catMaybes [("target" .=) <$> _trTarget])++--+-- /See:/ 'targetPoolAggregatedList' smart constructor.+data TargetPoolAggregatedList = TargetPoolAggregatedList'+    { _tpalNextPageToken :: !(Maybe Text)+    , _tpalKind          :: !Text+    , _tpalItems         :: !(Maybe TargetPoolAggregatedListItems)+    , _tpalSelfLink      :: !(Maybe Text)+    , _tpalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpalNextPageToken'+--+-- * 'tpalKind'+--+-- * 'tpalItems'+--+-- * 'tpalSelfLink'+--+-- * 'tpalId'+targetPoolAggregatedList+    :: TargetPoolAggregatedList+targetPoolAggregatedList =+    TargetPoolAggregatedList'+    { _tpalNextPageToken = Nothing+    , _tpalKind = "compute#targetPoolAggregatedList"+    , _tpalItems = Nothing+    , _tpalSelfLink = Nothing+    , _tpalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)+tpalNextPageToken+  = lens _tpalNextPageToken+      (\ s a -> s{_tpalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#targetPoolAggregatedList+-- for aggregated lists of target pools.+tpalKind :: Lens' TargetPoolAggregatedList Text+tpalKind = lens _tpalKind (\ s a -> s{_tpalKind = a})++-- | [Output Only] A map of scoped target pool lists.+tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)+tpalItems+  = lens _tpalItems (\ s a -> s{_tpalItems = a})++-- | [Output Only] Server-defined URL for this resource.+tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)+tpalSelfLink+  = lens _tpalSelfLink (\ s a -> s{_tpalSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Defined by the server.+tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)+tpalId = lens _tpalId (\ s a -> s{_tpalId = a})++instance FromJSON TargetPoolAggregatedList where+        parseJSON+          = withObject "TargetPoolAggregatedList"+              (\ o ->+                 TargetPoolAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetPoolAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetPoolAggregatedList where+        toJSON TargetPoolAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tpalNextPageToken,+                  Just ("kind" .= _tpalKind),+                  ("items" .=) <$> _tpalItems,+                  ("selfLink" .=) <$> _tpalSelfLink,+                  ("id" .=) <$> _tpalId])++--+-- /See:/ 'operationsScopedListWarningDataItem' smart constructor.+data OperationsScopedListWarningDataItem = OperationsScopedListWarningDataItem'+    { _oslwdiValue :: !(Maybe Text)+    , _oslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationsScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oslwdiValue'+--+-- * 'oslwdiKey'+operationsScopedListWarningDataItem+    :: OperationsScopedListWarningDataItem+operationsScopedListWarningDataItem =+    OperationsScopedListWarningDataItem'+    { _oslwdiValue = Nothing+    , _oslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)+oslwdiValue+  = lens _oslwdiValue (\ s a -> s{_oslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)+oslwdiKey+  = lens _oslwdiKey (\ s a -> s{_oslwdiKey = a})++instance FromJSON OperationsScopedListWarningDataItem+         where+        parseJSON+          = withObject "OperationsScopedListWarningDataItem"+              (\ o ->+                 OperationsScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON OperationsScopedListWarningDataItem+         where+        toJSON OperationsScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _oslwdiValue,+                  ("key" .=) <$> _oslwdiKey])++-- | A TargetPool resource. This resource defines a pool of instances,+-- associated HttpHealthCheck resources, and the fallback target pool.+--+-- /See:/ 'targetPool' smart constructor.+data TargetPool = TargetPool'+    { _tpSessionAffinity   :: !(Maybe TargetPoolSessionAffinity)+    , _tpBackupPool        :: !(Maybe Text)+    , _tpKind              :: !Text+    , _tpSelfLink          :: !(Maybe Text)+    , _tpName              :: !(Maybe Text)+    , _tpCreationTimestamp :: !(Maybe Text)+    , _tpInstances         :: !(Maybe [Text])+    , _tpId                :: !(Maybe (Textual Word64))+    , _tpFailoverRatio     :: !(Maybe (Textual Double))+    , _tpRegion            :: !(Maybe Text)+    , _tpDescription       :: !(Maybe Text)+    , _tpHealthChecks      :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPool' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpSessionAffinity'+--+-- * 'tpBackupPool'+--+-- * 'tpKind'+--+-- * 'tpSelfLink'+--+-- * 'tpName'+--+-- * 'tpCreationTimestamp'+--+-- * 'tpInstances'+--+-- * 'tpId'+--+-- * 'tpFailoverRatio'+--+-- * 'tpRegion'+--+-- * 'tpDescription'+--+-- * 'tpHealthChecks'+targetPool+    :: TargetPool+targetPool =+    TargetPool'+    { _tpSessionAffinity = Nothing+    , _tpBackupPool = Nothing+    , _tpKind = "compute#targetPool"+    , _tpSelfLink = Nothing+    , _tpName = Nothing+    , _tpCreationTimestamp = Nothing+    , _tpInstances = Nothing+    , _tpId = Nothing+    , _tpFailoverRatio = Nothing+    , _tpRegion = Nothing+    , _tpDescription = Nothing+    , _tpHealthChecks = Nothing+    }++-- | Sesssion affinity option, must be one of the following values: NONE:+-- Connections from the same client IP may go to any instance in the pool.+-- CLIENT_IP: Connections from the same client IP will go to the same+-- instance in the pool while that instance remains healthy.+-- CLIENT_IP_PROTO: Connections from the same client IP with the same IP+-- protocol will go to the same instance in the pool while that instance+-- remains healthy.+tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)+tpSessionAffinity+  = lens _tpSessionAffinity+      (\ s a -> s{_tpSessionAffinity = a})++-- | This field is applicable only when the containing target pool is serving+-- a forwarding rule as the primary pool, and its failoverRatio field is+-- properly set to a value between [0, 1]. backupPool and failoverRatio+-- together define the fallback behavior of the primary target pool: if the+-- ratio of the healthy instances in the primary pool is at or below+-- failoverRatio, traffic arriving at the load-balanced IP will be directed+-- to the backup pool. In case where failoverRatio and backupPool are not+-- set, or all the instances in the backup pool are unhealthy, the traffic+-- will be directed back to the primary pool in the \"force\" mode, where+-- traffic will be spread to the healthy instances with the best effort, or+-- to all instances when no instance is healthy.+tpBackupPool :: Lens' TargetPool (Maybe Text)+tpBackupPool+  = lens _tpBackupPool (\ s a -> s{_tpBackupPool = a})++-- | [Output Only] Type of the resource. Always compute#targetPool for target+-- pools.+tpKind :: Lens' TargetPool Text+tpKind = lens _tpKind (\ s a -> s{_tpKind = a})++-- | [Output Only] Server-defined URL for the resource.+tpSelfLink :: Lens' TargetPool (Maybe Text)+tpSelfLink+  = lens _tpSelfLink (\ s a -> s{_tpSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+tpName :: Lens' TargetPool (Maybe Text)+tpName = lens _tpName (\ s a -> s{_tpName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+tpCreationTimestamp :: Lens' TargetPool (Maybe Text)+tpCreationTimestamp+  = lens _tpCreationTimestamp+      (\ s a -> s{_tpCreationTimestamp = a})++-- | A list of resource URLs to the virtual machine instances serving this+-- pool. They must live in zones contained in the same region as this pool.+tpInstances :: Lens' TargetPool [Text]+tpInstances+  = lens _tpInstances (\ s a -> s{_tpInstances = a}) .+      _Default+      . _Coerce++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tpId :: Lens' TargetPool (Maybe Word64)+tpId+  = lens _tpId (\ s a -> s{_tpId = a}) .+      mapping _Coerce++-- | This field is applicable only when the containing target pool is serving+-- a forwarding rule as the primary pool (i.e., not as a backup pool to+-- some other target pool). The value of the field must be in [0, 1]. If+-- set, backupPool must also be set. They together define the fallback+-- behavior of the primary target pool: if the ratio of the healthy+-- instances in the primary pool is at or below this number, traffic+-- arriving at the load-balanced IP will be directed to the backup pool. In+-- case where failoverRatio is not set or all the instances in the backup+-- pool are unhealthy, the traffic will be directed back to the primary+-- pool in the \"force\" mode, where traffic will be spread to the healthy+-- instances with the best effort, or to all instances when no instance is+-- healthy.+tpFailoverRatio :: Lens' TargetPool (Maybe Double)+tpFailoverRatio+  = lens _tpFailoverRatio+      (\ s a -> s{_tpFailoverRatio = a})+      . mapping _Coerce++-- | [Output Only] URL of the region where the target pool resides.+tpRegion :: Lens' TargetPool (Maybe Text)+tpRegion = lens _tpRegion (\ s a -> s{_tpRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+tpDescription :: Lens' TargetPool (Maybe Text)+tpDescription+  = lens _tpDescription+      (\ s a -> s{_tpDescription = a})++-- | A list of URLs to the HttpHealthCheck resource. A member instance in+-- this pool is considered healthy if and only if all specified health+-- checks pass. An empty list means all member instances will be considered+-- healthy at all times.+tpHealthChecks :: Lens' TargetPool [Text]+tpHealthChecks+  = lens _tpHealthChecks+      (\ s a -> s{_tpHealthChecks = a})+      . _Default+      . _Coerce++instance FromJSON TargetPool where+        parseJSON+          = withObject "TargetPool"+              (\ o ->+                 TargetPool' <$>+                   (o .:? "sessionAffinity") <*> (o .:? "backupPool")+                     <*> (o .:? "kind" .!= "compute#targetPool")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "instances" .!= mempty)+                     <*> (o .:? "id")+                     <*> (o .:? "failoverRatio")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "healthChecks" .!= mempty))++instance ToJSON TargetPool where+        toJSON TargetPool'{..}+          = object+              (catMaybes+                 [("sessionAffinity" .=) <$> _tpSessionAffinity,+                  ("backupPool" .=) <$> _tpBackupPool,+                  Just ("kind" .= _tpKind),+                  ("selfLink" .=) <$> _tpSelfLink,+                  ("name" .=) <$> _tpName,+                  ("creationTimestamp" .=) <$> _tpCreationTimestamp,+                  ("instances" .=) <$> _tpInstances,+                  ("id" .=) <$> _tpId,+                  ("failoverRatio" .=) <$> _tpFailoverRatio,+                  ("region" .=) <$> _tpRegion,+                  ("description" .=) <$> _tpDescription,+                  ("healthChecks" .=) <$> _tpHealthChecks])++-- | Contains a list of images.+--+-- /See:/ 'imageList' smart constructor.+data ImageList = ImageList'+    { _ilNextPageToken :: !(Maybe Text)+    , _ilKind          :: !Text+    , _ilItems         :: !(Maybe [Image])+    , _ilSelfLink      :: !(Maybe Text)+    , _ilId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ImageList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ilNextPageToken'+--+-- * 'ilKind'+--+-- * 'ilItems'+--+-- * 'ilSelfLink'+--+-- * 'ilId'+imageList+    :: ImageList+imageList =+    ImageList'+    { _ilNextPageToken = Nothing+    , _ilKind = "compute#imageList"+    , _ilItems = Nothing+    , _ilSelfLink = Nothing+    , _ilId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+ilNextPageToken :: Lens' ImageList (Maybe Text)+ilNextPageToken+  = lens _ilNextPageToken+      (\ s a -> s{_ilNextPageToken = a})++-- | Type of resource.+ilKind :: Lens' ImageList Text+ilKind = lens _ilKind (\ s a -> s{_ilKind = a})++-- | [Output Only] A list of Image resources.+ilItems :: Lens' ImageList [Image]+ilItems+  = lens _ilItems (\ s a -> s{_ilItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+ilSelfLink :: Lens' ImageList (Maybe Text)+ilSelfLink+  = lens _ilSelfLink (\ s a -> s{_ilSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+ilId :: Lens' ImageList (Maybe Text)+ilId = lens _ilId (\ s a -> s{_ilId = a})++instance FromJSON ImageList where+        parseJSON+          = withObject "ImageList"+              (\ o ->+                 ImageList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#imageList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON ImageList where+        toJSON ImageList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _ilNextPageToken,+                  Just ("kind" .= _ilKind), ("items" .=) <$> _ilItems,+                  ("selfLink" .=) <$> _ilSelfLink,+                  ("id" .=) <$> _ilId])++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+--+-- /See:/ 'vpnTunnelsScopedListWarning' smart constructor.+data VPNTunnelsScopedListWarning = VPNTunnelsScopedListWarning'+    { _vtslwData    :: !(Maybe [VPNTunnelsScopedListWarningDataItem])+    , _vtslwCode    :: !(Maybe VPNTunnelsScopedListWarningCode)+    , _vtslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelsScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtslwData'+--+-- * 'vtslwCode'+--+-- * 'vtslwMessage'+vpnTunnelsScopedListWarning+    :: VPNTunnelsScopedListWarning+vpnTunnelsScopedListWarning =+    VPNTunnelsScopedListWarning'+    { _vtslwData = Nothing+    , _vtslwCode = Nothing+    , _vtslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]+vtslwData+  = lens _vtslwData (\ s a -> s{_vtslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)+vtslwCode+  = lens _vtslwCode (\ s a -> s{_vtslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)+vtslwMessage+  = lens _vtslwMessage (\ s a -> s{_vtslwMessage = a})++instance FromJSON VPNTunnelsScopedListWarning where+        parseJSON+          = withObject "VPNTunnelsScopedListWarning"+              (\ o ->+                 VPNTunnelsScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON VPNTunnelsScopedListWarning where+        toJSON VPNTunnelsScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _vtslwData,+                  ("code" .=) <$> _vtslwCode,+                  ("message" .=) <$> _vtslwMessage])++--+-- /See:/ 'targetSSLProxiesSetBackendServiceRequest' smart constructor.+newtype TargetSSLProxiesSetBackendServiceRequest = TargetSSLProxiesSetBackendServiceRequest'+    { _tspsbsrService :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetSSLProxiesSetBackendServiceRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tspsbsrService'+targetSSLProxiesSetBackendServiceRequest+    :: TargetSSLProxiesSetBackendServiceRequest+targetSSLProxiesSetBackendServiceRequest =+    TargetSSLProxiesSetBackendServiceRequest'+    { _tspsbsrService = Nothing+    }++-- | The URL of the new BackendService resource for the targetSslProxy.+tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)+tspsbsrService+  = lens _tspsbsrService+      (\ s a -> s{_tspsbsrService = a})++instance FromJSON+         TargetSSLProxiesSetBackendServiceRequest where+        parseJSON+          = withObject+              "TargetSSLProxiesSetBackendServiceRequest"+              (\ o ->+                 TargetSSLProxiesSetBackendServiceRequest' <$>+                   (o .:? "service"))++instance ToJSON+         TargetSSLProxiesSetBackendServiceRequest where+        toJSON TargetSSLProxiesSetBackendServiceRequest'{..}+          = object+              (catMaybes [("service" .=) <$> _tspsbsrService])++-- | A ForwardingRule resource. A ForwardingRule resource specifies which+-- pool of target virtual machines to forward a packet to if it matches the+-- given [IPAddress, IPProtocol, portRange] tuple.+--+-- /See:/ 'forwardingRule' smart constructor.+data ForwardingRule = ForwardingRule'+    { _frIPAddress         :: !(Maybe Text)+    , _frKind              :: !Text+    , _frPortRange         :: !(Maybe Text)+    , _frSelfLink          :: !(Maybe Text)+    , _frName              :: !(Maybe Text)+    , _frIPProtocol        :: !(Maybe ForwardingRuleIPProtocol)+    , _frCreationTimestamp :: !(Maybe Text)+    , _frId                :: !(Maybe (Textual Word64))+    , _frRegion            :: !(Maybe Text)+    , _frDescription       :: !(Maybe Text)+    , _frTarget            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frIPAddress'+--+-- * 'frKind'+--+-- * 'frPortRange'+--+-- * 'frSelfLink'+--+-- * 'frName'+--+-- * 'frIPProtocol'+--+-- * 'frCreationTimestamp'+--+-- * 'frId'+--+-- * 'frRegion'+--+-- * 'frDescription'+--+-- * 'frTarget'+forwardingRule+    :: ForwardingRule+forwardingRule =+    ForwardingRule'+    { _frIPAddress = Nothing+    , _frKind = "compute#forwardingRule"+    , _frPortRange = Nothing+    , _frSelfLink = Nothing+    , _frName = Nothing+    , _frIPProtocol = Nothing+    , _frCreationTimestamp = Nothing+    , _frId = Nothing+    , _frRegion = Nothing+    , _frDescription = Nothing+    , _frTarget = Nothing+    }++-- | The IP address that this forwarding rule is serving on behalf of. For+-- global forwarding rules, the address must be a global IP; for regional+-- forwarding rules, the address must live in the same region as the+-- forwarding rule. By default, this field is empty and an ephemeral IP+-- from the same scope (global or regional) will be assigned. When the load+-- balancing scheme is INTERNAL, this can only be an RFC 1918 IP address+-- belonging to the network\/subnetwork configured for the forwarding rule.+-- A reserved address cannot be used. If the field is empty, the IP address+-- will be automatically allocated from the internal IP range of the+-- subnetwork or network configured for this forwarding rule.+frIPAddress :: Lens' ForwardingRule (Maybe Text)+frIPAddress+  = lens _frIPAddress (\ s a -> s{_frIPAddress = 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})++-- | Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets+-- addressed to ports in the specified range will be forwarded to target.+-- Forwarding rules with the same [IPAddress, IPProtocol] pair must have+-- disjoint port ranges. This field is not used for internal load+-- balancing.+frPortRange :: Lens' ForwardingRule (Maybe Text)+frPortRange+  = lens _frPortRange (\ s a -> s{_frPortRange = a})++-- | [Output Only] Server-defined URL for the resource.+frSelfLink :: Lens' ForwardingRule (Maybe Text)+frSelfLink+  = lens _frSelfLink (\ s a -> s{_frSelfLink = a})++-- | Name of the resource; provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+frName :: Lens' ForwardingRule (Maybe Text)+frName = lens _frName (\ s a -> s{_frName = a})++-- | The IP protocol to which this rule applies. Valid options are TCP, UDP,+-- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL+frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)+frIPProtocol+  = lens _frIPProtocol (\ s a -> s{_frIPProtocol = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)+frCreationTimestamp+  = lens _frCreationTimestamp+      (\ s a -> s{_frCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+frId :: Lens' ForwardingRule (Maybe Word64)+frId+  = lens _frId (\ s a -> s{_frId = a}) .+      mapping _Coerce++-- | [Output Only] URL of the region where the regional forwarding rule+-- resides. This field is not applicable to global forwarding rules.+frRegion :: Lens' ForwardingRule (Maybe Text)+frRegion = lens _frRegion (\ s a -> s{_frRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+frDescription :: Lens' ForwardingRule (Maybe Text)+frDescription+  = lens _frDescription+      (\ s a -> s{_frDescription = a})++-- | The URL of the target resource to receive the matched traffic. For+-- regional forwarding rules, this target must live in the same region as+-- the forwarding rule. For global forwarding rules, this target must be a+-- global TargetHttpProxy or TargetHttpsProxy resource. The forwarded+-- traffic must be of a type appropriate to the target object. For example,+-- TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires+-- HTTPS traffic. This field is not used for internal load balancing.+frTarget :: Lens' ForwardingRule (Maybe Text)+frTarget = lens _frTarget (\ s a -> s{_frTarget = a})++instance FromJSON ForwardingRule where+        parseJSON+          = withObject "ForwardingRule"+              (\ o ->+                 ForwardingRule' <$>+                   (o .:? "IPAddress") <*>+                     (o .:? "kind" .!= "compute#forwardingRule")+                     <*> (o .:? "portRange")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "IPProtocol")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "target"))++instance ToJSON ForwardingRule where+        toJSON ForwardingRule'{..}+          = object+              (catMaybes+                 [("IPAddress" .=) <$> _frIPAddress,+                  Just ("kind" .= _frKind),+                  ("portRange" .=) <$> _frPortRange,+                  ("selfLink" .=) <$> _frSelfLink,+                  ("name" .=) <$> _frName,+                  ("IPProtocol" .=) <$> _frIPProtocol,+                  ("creationTimestamp" .=) <$> _frCreationTimestamp,+                  ("id" .=) <$> _frId, ("region" .=) <$> _frRegion,+                  ("description" .=) <$> _frDescription,+                  ("target" .=) <$> _frTarget])++-- | Contains a list of UrlMap resources.+--+-- /See:/ 'urlMapList' smart constructor.+data URLMapList = URLMapList'+    { _umlNextPageToken :: !(Maybe Text)+    , _umlKind          :: !Text+    , _umlItems         :: !(Maybe [URLMap])+    , _umlSelfLink      :: !(Maybe Text)+    , _umlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umlNextPageToken'+--+-- * 'umlKind'+--+-- * 'umlItems'+--+-- * 'umlSelfLink'+--+-- * 'umlId'+urlMapList+    :: URLMapList+urlMapList =+    URLMapList'+    { _umlNextPageToken = Nothing+    , _umlKind = "compute#urlMapList"+    , _umlItems = Nothing+    , _umlSelfLink = Nothing+    , _umlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+umlNextPageToken :: Lens' URLMapList (Maybe Text)+umlNextPageToken+  = lens _umlNextPageToken+      (\ s a -> s{_umlNextPageToken = a})++-- | Type of resource.+umlKind :: Lens' URLMapList Text+umlKind = lens _umlKind (\ s a -> s{_umlKind = a})++-- | A list of UrlMap resources.+umlItems :: Lens' URLMapList [URLMap]+umlItems+  = lens _umlItems (\ s a -> s{_umlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+umlSelfLink :: Lens' URLMapList (Maybe Text)+umlSelfLink+  = lens _umlSelfLink (\ s a -> s{_umlSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Set by the server.+umlId :: Lens' URLMapList (Maybe Text)+umlId = lens _umlId (\ s a -> s{_umlId = a})++instance FromJSON URLMapList where+        parseJSON+          = withObject "URLMapList"+              (\ o ->+                 URLMapList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#urlMapList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON URLMapList where+        toJSON URLMapList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _umlNextPageToken,+                  Just ("kind" .= _umlKind),+                  ("items" .=) <$> _umlItems,+                  ("selfLink" .=) <$> _umlSelfLink,+                  ("id" .=) <$> _umlId])++--+-- /See:/ 'forwardingRulesScopedListWarningDataItem' smart constructor.+data ForwardingRulesScopedListWarningDataItem = ForwardingRulesScopedListWarningDataItem'+    { _frslwdiValue :: !(Maybe Text)+    , _frslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRulesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frslwdiValue'+--+-- * 'frslwdiKey'+forwardingRulesScopedListWarningDataItem+    :: ForwardingRulesScopedListWarningDataItem+forwardingRulesScopedListWarningDataItem =+    ForwardingRulesScopedListWarningDataItem'+    { _frslwdiValue = Nothing+    , _frslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)+frslwdiValue+  = lens _frslwdiValue (\ s a -> s{_frslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)+frslwdiKey+  = lens _frslwdiKey (\ s a -> s{_frslwdiKey = a})++instance FromJSON+         ForwardingRulesScopedListWarningDataItem where+        parseJSON+          = withObject+              "ForwardingRulesScopedListWarningDataItem"+              (\ o ->+                 ForwardingRulesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON+         ForwardingRulesScopedListWarningDataItem where+        toJSON ForwardingRulesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _frslwdiValue,+                  ("key" .=) <$> _frslwdiKey])++--+-- /See:/ 'instanceGroupManagersScopedListWarningDataItem' smart constructor.+data InstanceGroupManagersScopedListWarningDataItem = InstanceGroupManagersScopedListWarningDataItem'+    { _igmslwdiValue :: !(Maybe Text)+    , _igmslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmslwdiValue'+--+-- * 'igmslwdiKey'+instanceGroupManagersScopedListWarningDataItem+    :: InstanceGroupManagersScopedListWarningDataItem+instanceGroupManagersScopedListWarningDataItem =+    InstanceGroupManagersScopedListWarningDataItem'+    { _igmslwdiValue = Nothing+    , _igmslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)+igmslwdiValue+  = lens _igmslwdiValue+      (\ s a -> s{_igmslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)+igmslwdiKey+  = lens _igmslwdiKey (\ s a -> s{_igmslwdiKey = a})++instance FromJSON+         InstanceGroupManagersScopedListWarningDataItem where+        parseJSON+          = withObject+              "InstanceGroupManagersScopedListWarningDataItem"+              (\ o ->+                 InstanceGroupManagersScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON+         InstanceGroupManagersScopedListWarningDataItem where+        toJSON+          InstanceGroupManagersScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _igmslwdiValue,+                  ("key" .=) <$> _igmslwdiKey])++--+-- /See:/ 'subnetworksScopedList' smart constructor.+data SubnetworksScopedList = SubnetworksScopedList'+    { _sslSubnetworks :: !(Maybe [Subnetwork])+    , _sslWarning     :: !(Maybe SubnetworksScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworksScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sslSubnetworks'+--+-- * 'sslWarning'+subnetworksScopedList+    :: SubnetworksScopedList+subnetworksScopedList =+    SubnetworksScopedList'+    { _sslSubnetworks = Nothing+    , _sslWarning = Nothing+    }++-- | List of subnetworks contained in this scope.+sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]+sslSubnetworks+  = lens _sslSubnetworks+      (\ s a -> s{_sslSubnetworks = a})+      . _Default+      . _Coerce++-- | An informational warning that appears when the list of addresses is+-- empty.+sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)+sslWarning+  = lens _sslWarning (\ s a -> s{_sslWarning = a})++instance FromJSON SubnetworksScopedList where+        parseJSON+          = withObject "SubnetworksScopedList"+              (\ o ->+                 SubnetworksScopedList' <$>+                   (o .:? "subnetworks" .!= mempty) <*>+                     (o .:? "warning"))++instance ToJSON SubnetworksScopedList where+        toJSON SubnetworksScopedList'{..}+          = object+              (catMaybes+                 [("subnetworks" .=) <$> _sslSubnetworks,+                  ("warning" .=) <$> _sslWarning])++-- | A Project resource. Projects can only be created in the Google Cloud+-- Platform Console. Unless marked otherwise, values can only be modified+-- in the console.+--+-- /See:/ 'project' smart constructor.+data Project = Project'+    { _pKind                   :: !Text+    , _pUsageExportLocation    :: !(Maybe UsageExportLocation)+    , _pSelfLink               :: !(Maybe Text)+    , _pName                   :: !(Maybe Text)+    , _pDefaultServiceAccount  :: !(Maybe Text)+    , _pCreationTimestamp      :: !(Maybe Text)+    , _pEnabledFeatures        :: !(Maybe [Text])+    , _pQuotas                 :: !(Maybe [Quota])+    , _pId                     :: !(Maybe (Textual Word64))+    , _pDescription            :: !(Maybe Text)+    , _pCommonInstanceMetadata :: !(Maybe Metadata)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Project' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pKind'+--+-- * 'pUsageExportLocation'+--+-- * 'pSelfLink'+--+-- * 'pName'+--+-- * 'pDefaultServiceAccount'+--+-- * 'pCreationTimestamp'+--+-- * 'pEnabledFeatures'+--+-- * 'pQuotas'+--+-- * 'pId'+--+-- * 'pDescription'+--+-- * 'pCommonInstanceMetadata'+project+    :: Project+project =+    Project'+    { _pKind = "compute#project"+    , _pUsageExportLocation = Nothing+    , _pSelfLink = Nothing+    , _pName = Nothing+    , _pDefaultServiceAccount = Nothing+    , _pCreationTimestamp = Nothing+    , _pEnabledFeatures = Nothing+    , _pQuotas = Nothing+    , _pId = Nothing+    , _pDescription = Nothing+    , _pCommonInstanceMetadata = Nothing+    }++-- | [Output Only] Type of the resource. Always compute#project for projects.+pKind :: Lens' Project Text+pKind = lens _pKind (\ s a -> s{_pKind = a})++-- | The naming prefix for daily usage reports and the Google Cloud Storage+-- bucket where they are stored.+pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)+pUsageExportLocation+  = lens _pUsageExportLocation+      (\ s a -> s{_pUsageExportLocation = a})++-- | [Output Only] Server-defined URL for the resource.+pSelfLink :: Lens' Project (Maybe Text)+pSelfLink+  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})++-- | The project ID. For example: my-example-project. Use the project ID to+-- make requests to Compute Engine.+pName :: Lens' Project (Maybe Text)+pName = lens _pName (\ s a -> s{_pName = a})++-- | [Output Only] Default service account used by VMs running in this+-- project.+pDefaultServiceAccount :: Lens' Project (Maybe Text)+pDefaultServiceAccount+  = lens _pDefaultServiceAccount+      (\ s a -> s{_pDefaultServiceAccount = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+pCreationTimestamp :: Lens' Project (Maybe Text)+pCreationTimestamp+  = lens _pCreationTimestamp+      (\ s a -> s{_pCreationTimestamp = a})++-- | Restricted features enabled for use on this project.+pEnabledFeatures :: Lens' Project [Text]+pEnabledFeatures+  = lens _pEnabledFeatures+      (\ s a -> s{_pEnabledFeatures = a})+      . _Default+      . _Coerce++-- | [Output Only] Quotas assigned to this project.+pQuotas :: Lens' Project [Quota]+pQuotas+  = lens _pQuotas (\ s a -> s{_pQuotas = a}) . _Default+      . _Coerce++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server. This is not the project ID, and is just a unique+-- ID used by Compute Engine to identify resources.+pId :: Lens' Project (Maybe Word64)+pId+  = lens _pId (\ s a -> s{_pId = a}) . mapping _Coerce++-- | An optional textual description of the resource.+pDescription :: Lens' Project (Maybe Text)+pDescription+  = lens _pDescription (\ s a -> s{_pDescription = a})++-- | Metadata key\/value pairs available to all instances contained in this+-- project. See Custom metadata for more information.+pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)+pCommonInstanceMetadata+  = lens _pCommonInstanceMetadata+      (\ s a -> s{_pCommonInstanceMetadata = a})++instance FromJSON Project where+        parseJSON+          = withObject "Project"+              (\ o ->+                 Project' <$>+                   (o .:? "kind" .!= "compute#project") <*>+                     (o .:? "usageExportLocation")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "defaultServiceAccount")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "enabledFeatures" .!= mempty)+                     <*> (o .:? "quotas" .!= mempty)+                     <*> (o .:? "id")+                     <*> (o .:? "description")+                     <*> (o .:? "commonInstanceMetadata"))++instance ToJSON Project where+        toJSON Project'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _pKind),+                  ("usageExportLocation" .=) <$> _pUsageExportLocation,+                  ("selfLink" .=) <$> _pSelfLink,+                  ("name" .=) <$> _pName,+                  ("defaultServiceAccount" .=) <$>+                    _pDefaultServiceAccount,+                  ("creationTimestamp" .=) <$> _pCreationTimestamp,+                  ("enabledFeatures" .=) <$> _pEnabledFeatures,+                  ("quotas" .=) <$> _pQuotas, ("id" .=) <$> _pId,+                  ("description" .=) <$> _pDescription,+                  ("commonInstanceMetadata" .=) <$>+                    _pCommonInstanceMetadata])++-- | An Operation resource, used to manage asynchronous API requests.+--+-- /See:/ 'operation' smart constructor.+data Operation = Operation'+    { _oTargetId            :: !(Maybe (Textual Word64))+    , _oStatus              :: !(Maybe OperationStatus)+    , _oInsertTime          :: !(Maybe Text)+    , _oProgress            :: !(Maybe (Textual Int32))+    , _oStartTime           :: !(Maybe Text)+    , _oKind                :: !Text+    , _oError               :: !(Maybe OperationError)+    , _oHTTPErrorMessage    :: !(Maybe Text)+    , _oZone                :: !(Maybe Text)+    , _oWarnings            :: !(Maybe [OperationWarningsItem])+    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))+    , _oUser                :: !(Maybe Text)+    , _oSelfLink            :: !(Maybe Text)+    , _oName                :: !(Maybe Text)+    , _oStatusMessage       :: !(Maybe Text)+    , _oCreationTimestamp   :: !(Maybe Text)+    , _oEndTime             :: !(Maybe Text)+    , _oId                  :: !(Maybe (Textual Word64))+    , _oOperationType       :: !(Maybe Text)+    , _oRegion              :: !(Maybe Text)+    , _oDescription         :: !(Maybe Text)+    , _oTargetLink          :: !(Maybe Text)+    , _oClientOperationId   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Operation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oTargetId'+--+-- * 'oStatus'+--+-- * 'oInsertTime'+--+-- * 'oProgress'+--+-- * 'oStartTime'+--+-- * 'oKind'+--+-- * 'oError'+--+-- * 'oHTTPErrorMessage'+--+-- * 'oZone'+--+-- * 'oWarnings'+--+-- * 'oHTTPErrorStatusCode'+--+-- * 'oUser'+--+-- * 'oSelfLink'+--+-- * 'oName'+--+-- * 'oStatusMessage'+--+-- * 'oCreationTimestamp'+--+-- * 'oEndTime'+--+-- * 'oId'+--+-- * 'oOperationType'+--+-- * 'oRegion'+--+-- * 'oDescription'+--+-- * 'oTargetLink'+--+-- * 'oClientOperationId'+operation+    :: Operation+operation =+    Operation'+    { _oTargetId = Nothing+    , _oStatus = Nothing+    , _oInsertTime = Nothing+    , _oProgress = Nothing+    , _oStartTime = Nothing+    , _oKind = "compute#operation"+    , _oError = Nothing+    , _oHTTPErrorMessage = Nothing+    , _oZone = Nothing+    , _oWarnings = Nothing+    , _oHTTPErrorStatusCode = Nothing+    , _oUser = Nothing+    , _oSelfLink = Nothing+    , _oName = Nothing+    , _oStatusMessage = Nothing+    , _oCreationTimestamp = Nothing+    , _oEndTime = Nothing+    , _oId = Nothing+    , _oOperationType = Nothing+    , _oRegion = Nothing+    , _oDescription = Nothing+    , _oTargetLink = Nothing+    , _oClientOperationId = Nothing+    }++-- | [Output Only] The unique target ID, which identifies a specific+-- incarnation of the target resource.+oTargetId :: Lens' Operation (Maybe Word64)+oTargetId+  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .+      mapping _Coerce++-- | [Output Only] The status of the operation, which can be one of the+-- following: PENDING, RUNNING, or DONE.+oStatus :: Lens' Operation (Maybe OperationStatus)+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})++-- | [Output Only] The time that this operation was requested. This value is+-- in RFC3339 text format.+oInsertTime :: Lens' Operation (Maybe Text)+oInsertTime+  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})++-- | [Output Only] An optional progress indicator that ranges from 0 to 100.+-- There is no requirement that this be linear or support any granularity+-- of operations. This should not be used to guess when the operation will+-- be complete. This number should monotonically increase as the operation+-- progresses.+oProgress :: Lens' Operation (Maybe Int32)+oProgress+  = lens _oProgress (\ s a -> s{_oProgress = a}) .+      mapping _Coerce++-- | [Output Only] The time that this operation was started by the server.+-- This value is in RFC3339 text format.+oStartTime :: Lens' Operation (Maybe Text)+oStartTime+  = lens _oStartTime (\ s a -> s{_oStartTime = a})++-- | [Output Only] Type of the resource. Always compute#operation for+-- Operation resources.+oKind :: Lens' Operation Text+oKind = lens _oKind (\ s a -> s{_oKind = a})++-- | [Output Only] If errors are generated during processing of the+-- operation, this field will be populated.+oError :: Lens' Operation (Maybe OperationError)+oError = lens _oError (\ s a -> s{_oError = a})++-- | [Output Only] If the operation fails, this field contains the HTTP error+-- message that was returned, such as NOT FOUND.+oHTTPErrorMessage :: Lens' Operation (Maybe Text)+oHTTPErrorMessage+  = lens _oHTTPErrorMessage+      (\ s a -> s{_oHTTPErrorMessage = a})++-- | [Output Only] The URL of the zone where the operation resides. Only+-- available when performing per-zone operations.+oZone :: Lens' Operation (Maybe Text)+oZone = lens _oZone (\ s a -> s{_oZone = a})++-- | [Output Only] If warning messages are generated during processing of the+-- operation, this field will be populated.+oWarnings :: Lens' Operation [OperationWarningsItem]+oWarnings+  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .+      _Default+      . _Coerce++-- | [Output Only] If the operation fails, this field contains the HTTP error+-- status code that was returned. For example, a 404 means the resource was+-- not found.+oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)+oHTTPErrorStatusCode+  = lens _oHTTPErrorStatusCode+      (\ s a -> s{_oHTTPErrorStatusCode = a})+      . mapping _Coerce++-- | [Output Only] User who requested the operation, for example:+-- user\'example.com.+oUser :: Lens' Operation (Maybe Text)+oUser = lens _oUser (\ s a -> s{_oUser = a})++-- | [Output Only] Server-defined URL for the resource.+oSelfLink :: Lens' Operation (Maybe Text)+oSelfLink+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})++-- | [Output Only] Name of the resource.+oName :: Lens' Operation (Maybe Text)+oName = lens _oName (\ s a -> s{_oName = a})++-- | [Output Only] An optional textual description of the current status of+-- the operation.+oStatusMessage :: Lens' Operation (Maybe Text)+oStatusMessage+  = lens _oStatusMessage+      (\ s a -> s{_oStatusMessage = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+oCreationTimestamp :: Lens' Operation (Maybe Text)+oCreationTimestamp+  = lens _oCreationTimestamp+      (\ s a -> s{_oCreationTimestamp = a})++-- | [Output Only] The time that this operation was completed. This value is+-- in RFC3339 text format.+oEndTime :: Lens' Operation (Maybe Text)+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+oId :: Lens' Operation (Maybe Word64)+oId+  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce++-- | [Output Only] The type of operation, such as insert, update, or delete,+-- and so on.+oOperationType :: Lens' Operation (Maybe Text)+oOperationType+  = lens _oOperationType+      (\ s a -> s{_oOperationType = a})++-- | [Output Only] The URL of the region where the operation resides. Only+-- available when performing regional operations.+oRegion :: Lens' Operation (Maybe Text)+oRegion = lens _oRegion (\ s a -> s{_oRegion = a})++-- | [Output Only] A textual description of the operation, which is set when+-- the operation is created.+oDescription :: Lens' Operation (Maybe Text)+oDescription+  = lens _oDescription (\ s a -> s{_oDescription = a})++-- | [Output Only] The URL of the resource that the operation modifies. If+-- creating a persistent disk snapshot, this points to the persistent disk+-- that the snapshot was created from.+oTargetLink :: Lens' Operation (Maybe Text)+oTargetLink+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})++-- | [Output Only] Reserved for future use.+oClientOperationId :: Lens' Operation (Maybe Text)+oClientOperationId+  = lens _oClientOperationId+      (\ s a -> s{_oClientOperationId = a})++instance FromJSON Operation where+        parseJSON+          = withObject "Operation"+              (\ o ->+                 Operation' <$>+                   (o .:? "targetId") <*> (o .:? "status") <*>+                     (o .:? "insertTime")+                     <*> (o .:? "progress")+                     <*> (o .:? "startTime")+                     <*> (o .:? "kind" .!= "compute#operation")+                     <*> (o .:? "error")+                     <*> (o .:? "httpErrorMessage")+                     <*> (o .:? "zone")+                     <*> (o .:? "warnings" .!= mempty)+                     <*> (o .:? "httpErrorStatusCode")+                     <*> (o .:? "user")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "statusMessage")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "endTime")+                     <*> (o .:? "id")+                     <*> (o .:? "operationType")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "targetLink")+                     <*> (o .:? "clientOperationId"))++instance ToJSON Operation where+        toJSON Operation'{..}+          = object+              (catMaybes+                 [("targetId" .=) <$> _oTargetId,+                  ("status" .=) <$> _oStatus,+                  ("insertTime" .=) <$> _oInsertTime,+                  ("progress" .=) <$> _oProgress,+                  ("startTime" .=) <$> _oStartTime,+                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,+                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,+                  ("zone" .=) <$> _oZone,+                  ("warnings" .=) <$> _oWarnings,+                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,+                  ("user" .=) <$> _oUser,+                  ("selfLink" .=) <$> _oSelfLink,+                  ("name" .=) <$> _oName,+                  ("statusMessage" .=) <$> _oStatusMessage,+                  ("creationTimestamp" .=) <$> _oCreationTimestamp,+                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,+                  ("operationType" .=) <$> _oOperationType,+                  ("region" .=) <$> _oRegion,+                  ("description" .=) <$> _oDescription,+                  ("targetLink" .=) <$> _oTargetLink,+                  ("clientOperationId" .=) <$> _oClientOperationId])++--+-- /See:/ 'disksScopedListWarningDataItem' smart constructor.+data DisksScopedListWarningDataItem = DisksScopedListWarningDataItem'+    { _dslwdiValue :: !(Maybe Text)+    , _dslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DisksScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dslwdiValue'+--+-- * 'dslwdiKey'+disksScopedListWarningDataItem+    :: DisksScopedListWarningDataItem+disksScopedListWarningDataItem =+    DisksScopedListWarningDataItem'+    { _dslwdiValue = Nothing+    , _dslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)+dslwdiValue+  = lens _dslwdiValue (\ s a -> s{_dslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)+dslwdiKey+  = lens _dslwdiKey (\ s a -> s{_dslwdiKey = a})++instance FromJSON DisksScopedListWarningDataItem+         where+        parseJSON+          = withObject "DisksScopedListWarningDataItem"+              (\ o ->+                 DisksScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON DisksScopedListWarningDataItem where+        toJSON DisksScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _dslwdiValue,+                  ("key" .=) <$> _dslwdiKey])++-- | A Disk resource.+--+-- /See:/ 'disk' smart constructor.+data Disk = Disk'+    { _dStatus                      :: !(Maybe DiskStatus)+    , _dSourceSnapshotId            :: !(Maybe Text)+    , _dLastAttachTimestamp         :: !(Maybe Text)+    , _dUsers                       :: !(Maybe [Text])+    , _dSourceImage                 :: !(Maybe Text)+    , _dDiskEncryptionKey           :: !(Maybe CustomerEncryptionKey)+    , _dSizeGb                      :: !(Maybe (Textual Int64))+    , _dKind                        :: !Text+    , _dLastDetachTimestamp         :: !(Maybe Text)+    , _dZone                        :: !(Maybe Text)+    , _dSelfLink                    :: !(Maybe Text)+    , _dName                        :: !(Maybe Text)+    , _dSourceImageId               :: !(Maybe Text)+    , _dCreationTimestamp           :: !(Maybe Text)+    , _dSourceImageEncryptionKey    :: !(Maybe CustomerEncryptionKey)+    , _dId                          :: !(Maybe (Textual Word64))+    , _dLicenses                    :: !(Maybe [Text])+    , _dOptions                     :: !(Maybe Text)+    , _dType                        :: !(Maybe Text)+    , _dDescription                 :: !(Maybe Text)+    , _dSourceSnapshotEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _dSourceSnapshot              :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Disk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dStatus'+--+-- * 'dSourceSnapshotId'+--+-- * 'dLastAttachTimestamp'+--+-- * 'dUsers'+--+-- * 'dSourceImage'+--+-- * 'dDiskEncryptionKey'+--+-- * 'dSizeGb'+--+-- * 'dKind'+--+-- * 'dLastDetachTimestamp'+--+-- * 'dZone'+--+-- * 'dSelfLink'+--+-- * 'dName'+--+-- * 'dSourceImageId'+--+-- * 'dCreationTimestamp'+--+-- * 'dSourceImageEncryptionKey'+--+-- * 'dId'+--+-- * 'dLicenses'+--+-- * 'dOptions'+--+-- * 'dType'+--+-- * 'dDescription'+--+-- * 'dSourceSnapshotEncryptionKey'+--+-- * 'dSourceSnapshot'+disk+    :: Disk+disk =+    Disk'+    { _dStatus = Nothing+    , _dSourceSnapshotId = Nothing+    , _dLastAttachTimestamp = Nothing+    , _dUsers = Nothing+    , _dSourceImage = Nothing+    , _dDiskEncryptionKey = Nothing+    , _dSizeGb = Nothing+    , _dKind = "compute#disk"+    , _dLastDetachTimestamp = Nothing+    , _dZone = Nothing+    , _dSelfLink = Nothing+    , _dName = Nothing+    , _dSourceImageId = Nothing+    , _dCreationTimestamp = Nothing+    , _dSourceImageEncryptionKey = Nothing+    , _dId = Nothing+    , _dLicenses = Nothing+    , _dOptions = Nothing+    , _dType = Nothing+    , _dDescription = Nothing+    , _dSourceSnapshotEncryptionKey = Nothing+    , _dSourceSnapshot = Nothing+    }++-- | [Output Only] The status of disk creation.+dStatus :: Lens' Disk (Maybe DiskStatus)+dStatus = lens _dStatus (\ s a -> s{_dStatus = a})++-- | [Output Only] The unique ID of the snapshot used to create this disk.+-- This value identifies the exact snapshot that was used to create this+-- persistent disk. For example, if you created the persistent disk from a+-- snapshot that was later deleted and recreated under the same name, the+-- source snapshot ID would identify the exact version of the snapshot that+-- was used.+dSourceSnapshotId :: Lens' Disk (Maybe Text)+dSourceSnapshotId+  = lens _dSourceSnapshotId+      (\ s a -> s{_dSourceSnapshotId = a})++-- | [Output Only] Last attach timestamp in RFC3339 text format.+dLastAttachTimestamp :: Lens' Disk (Maybe Text)+dLastAttachTimestamp+  = lens _dLastAttachTimestamp+      (\ s a -> s{_dLastAttachTimestamp = a})++-- | [Output Only] Links to the users of the disk (attached instances) in+-- form: project\/zones\/zone\/instances\/instance+dUsers :: Lens' Disk [Text]+dUsers+  = lens _dUsers (\ s a -> s{_dUsers = a}) . _Default .+      _Coerce++-- | The source image used to create this disk. If the source image is+-- deleted, this field will not be set. To create a disk with one of the+-- public operating system images, specify the image by its family name.+-- For example, specify family\/debian-8 to use the latest Debian 8 image:+-- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,+-- use a specific version of a public operating system image:+-- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To+-- create a disk with a private image that you created, specify the image+-- name in the following format: global\/images\/my-private-image You can+-- also specify a private image by its image family, which returns the+-- latest version of the image in that family. Replace the image name with+-- family\/family-name: global\/images\/family\/my-private-family+dSourceImage :: Lens' Disk (Maybe Text)+dSourceImage+  = lens _dSourceImage (\ s a -> s{_dSourceImage = a})++-- | Encrypts the disk using a customer-supplied encryption key. After you+-- encrypt a disk with a customer-supplied key, you must provide the same+-- key if you use the disk later (e.g. to create a disk snapshot or an+-- image, or to attach the disk to a virtual machine). Customer-supplied+-- encryption keys do not protect access to metadata of the disk. If you do+-- not provide an encryption key when creating the disk, then the disk will+-- be encrypted using an automatically generated key and you do not need to+-- provide a key to use the disk later.+dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)+dDiskEncryptionKey+  = lens _dDiskEncryptionKey+      (\ s a -> s{_dDiskEncryptionKey = a})++-- | Size of the persistent disk, specified in GB. You can specify this field+-- when creating a persistent disk using the sourceImage or sourceSnapshot+-- parameter, or specify it alone to create an empty persistent disk. If+-- you specify this field along with sourceImage or sourceSnapshot, the+-- value of sizeGb must not be less than the size of the sourceImage or the+-- size of the snapshot.+dSizeGb :: Lens' Disk (Maybe Int64)+dSizeGb+  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .+      mapping _Coerce++-- | [Output Only] Type of the resource. Always compute#disk for disks.+dKind :: Lens' Disk Text+dKind = lens _dKind (\ s a -> s{_dKind = a})++-- | [Output Only] Last detach timestamp in RFC3339 text format.+dLastDetachTimestamp :: Lens' Disk (Maybe Text)+dLastDetachTimestamp+  = lens _dLastDetachTimestamp+      (\ s a -> s{_dLastDetachTimestamp = a})++-- | [Output Only] URL of the zone where the disk resides.+dZone :: Lens' Disk (Maybe Text)+dZone = lens _dZone (\ s a -> s{_dZone = a})++-- | [Output Only] Server-defined fully-qualified URL for this resource.+dSelfLink :: Lens' Disk (Maybe Text)+dSelfLink+  = lens _dSelfLink (\ s a -> s{_dSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+dName :: Lens' Disk (Maybe Text)+dName = lens _dName (\ s a -> s{_dName = a})++-- | [Output Only] The ID value of the image used to create this disk. This+-- value identifies the exact image that was used to create this persistent+-- disk. For example, if you created the persistent disk from an image that+-- was later deleted and recreated under the same name, the source image ID+-- would identify the exact version of the image that was used.+dSourceImageId :: Lens' Disk (Maybe Text)+dSourceImageId+  = lens _dSourceImageId+      (\ s a -> s{_dSourceImageId = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+dCreationTimestamp :: Lens' Disk (Maybe Text)+dCreationTimestamp+  = lens _dCreationTimestamp+      (\ s a -> s{_dCreationTimestamp = a})++-- | The customer-supplied encryption key of the source image. Required if+-- the source image is protected by a customer-supplied encryption key.+dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)+dSourceImageEncryptionKey+  = lens _dSourceImageEncryptionKey+      (\ s a -> s{_dSourceImageEncryptionKey = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dId :: Lens' Disk (Maybe Word64)+dId+  = lens _dId (\ s a -> s{_dId = a}) . mapping _Coerce++-- | Any applicable publicly visible licenses.+dLicenses :: Lens' Disk [Text]+dLicenses+  = lens _dLicenses (\ s a -> s{_dLicenses = a}) .+      _Default+      . _Coerce++-- | Internal use only.+dOptions :: Lens' Disk (Maybe Text)+dOptions = lens _dOptions (\ s a -> s{_dOptions = a})++-- | URL of the disk type resource describing which disk type to use to+-- create the disk. Provide this when creating the disk.+dType :: Lens' Disk (Maybe Text)+dType = lens _dType (\ s a -> s{_dType = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+dDescription :: Lens' Disk (Maybe Text)+dDescription+  = lens _dDescription (\ s a -> s{_dDescription = a})++-- | The customer-supplied encryption key of the source snapshot. Required if+-- the source snapshot is protected by a customer-supplied encryption key.+dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)+dSourceSnapshotEncryptionKey+  = lens _dSourceSnapshotEncryptionKey+      (\ s a -> s{_dSourceSnapshotEncryptionKey = a})++-- | The source snapshot used to create this disk. You can provide this as a+-- partial or full URL to the resource. For example, the following are+-- valid values: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/snapshots\/snapshot+-- - projects\/project\/global\/snapshots\/snapshot -+-- global\/snapshots\/snapshot+dSourceSnapshot :: Lens' Disk (Maybe Text)+dSourceSnapshot+  = lens _dSourceSnapshot+      (\ s a -> s{_dSourceSnapshot = a})++instance FromJSON Disk where+        parseJSON+          = withObject "Disk"+              (\ o ->+                 Disk' <$>+                   (o .:? "status") <*> (o .:? "sourceSnapshotId") <*>+                     (o .:? "lastAttachTimestamp")+                     <*> (o .:? "users" .!= mempty)+                     <*> (o .:? "sourceImage")+                     <*> (o .:? "diskEncryptionKey")+                     <*> (o .:? "sizeGb")+                     <*> (o .:? "kind" .!= "compute#disk")+                     <*> (o .:? "lastDetachTimestamp")+                     <*> (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "sourceImageId")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "sourceImageEncryptionKey")+                     <*> (o .:? "id")+                     <*> (o .:? "licenses" .!= mempty)+                     <*> (o .:? "options")+                     <*> (o .:? "type")+                     <*> (o .:? "description")+                     <*> (o .:? "sourceSnapshotEncryptionKey")+                     <*> (o .:? "sourceSnapshot"))++instance ToJSON Disk where+        toJSON Disk'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _dStatus,+                  ("sourceSnapshotId" .=) <$> _dSourceSnapshotId,+                  ("lastAttachTimestamp" .=) <$> _dLastAttachTimestamp,+                  ("users" .=) <$> _dUsers,+                  ("sourceImage" .=) <$> _dSourceImage,+                  ("diskEncryptionKey" .=) <$> _dDiskEncryptionKey,+                  ("sizeGb" .=) <$> _dSizeGb, Just ("kind" .= _dKind),+                  ("lastDetachTimestamp" .=) <$> _dLastDetachTimestamp,+                  ("zone" .=) <$> _dZone,+                  ("selfLink" .=) <$> _dSelfLink,+                  ("name" .=) <$> _dName,+                  ("sourceImageId" .=) <$> _dSourceImageId,+                  ("creationTimestamp" .=) <$> _dCreationTimestamp,+                  ("sourceImageEncryptionKey" .=) <$>+                    _dSourceImageEncryptionKey,+                  ("id" .=) <$> _dId, ("licenses" .=) <$> _dLicenses,+                  ("options" .=) <$> _dOptions, ("type" .=) <$> _dType,+                  ("description" .=) <$> _dDescription,+                  ("sourceSnapshotEncryptionKey" .=) <$>+                    _dSourceSnapshotEncryptionKey,+                  ("sourceSnapshot" .=) <$> _dSourceSnapshot])++--+-- /See:/ 'diskMoveRequest' smart constructor.+data DiskMoveRequest = DiskMoveRequest'+    { _dmrTargetDisk      :: !(Maybe Text)+    , _dmrDestinationZone :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskMoveRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dmrTargetDisk'+--+-- * 'dmrDestinationZone'+diskMoveRequest+    :: DiskMoveRequest+diskMoveRequest =+    DiskMoveRequest'+    { _dmrTargetDisk = Nothing+    , _dmrDestinationZone = Nothing+    }++-- | The URL of the target disk to move. This can be a full or partial URL.+-- For example, the following are all valid URLs to a disk: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk+-- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk+dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)+dmrTargetDisk+  = lens _dmrTargetDisk+      (\ s a -> s{_dmrTargetDisk = a})++-- | The URL of the destination zone to move the disk. This can be a full or+-- partial URL. For example, the following are all valid URLs to a zone: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone+-- - projects\/project\/zones\/zone - zones\/zone+dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)+dmrDestinationZone+  = lens _dmrDestinationZone+      (\ s a -> s{_dmrDestinationZone = a})++instance FromJSON DiskMoveRequest where+        parseJSON+          = withObject "DiskMoveRequest"+              (\ o ->+                 DiskMoveRequest' <$>+                   (o .:? "targetDisk") <*> (o .:? "destinationZone"))++instance ToJSON DiskMoveRequest where+        toJSON DiskMoveRequest'{..}+          = object+              (catMaybes+                 [("targetDisk" .=) <$> _dmrTargetDisk,+                  ("destinationZone" .=) <$> _dmrDestinationZone])++-- | Configuration parameters of autoscaling based on load balancing.+--+-- /See:/ 'autoscalingPolicyLoadBalancingUtilization' smart constructor.+newtype AutoscalingPolicyLoadBalancingUtilization = AutoscalingPolicyLoadBalancingUtilization'+    { _aplbuUtilizationTarget :: Maybe (Textual Double)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalingPolicyLoadBalancingUtilization' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aplbuUtilizationTarget'+autoscalingPolicyLoadBalancingUtilization+    :: AutoscalingPolicyLoadBalancingUtilization+autoscalingPolicyLoadBalancingUtilization =+    AutoscalingPolicyLoadBalancingUtilization'+    { _aplbuUtilizationTarget = Nothing+    }++-- | Fraction of backend capacity utilization (set in HTTP(s) load balancing+-- configuration) that autoscaler should maintain. Must be a positive float+-- value. If not defined, the default is 0.8.+aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)+aplbuUtilizationTarget+  = lens _aplbuUtilizationTarget+      (\ s a -> s{_aplbuUtilizationTarget = a})+      . mapping _Coerce++instance FromJSON+         AutoscalingPolicyLoadBalancingUtilization where+        parseJSON+          = withObject+              "AutoscalingPolicyLoadBalancingUtilization"+              (\ o ->+                 AutoscalingPolicyLoadBalancingUtilization' <$>+                   (o .:? "utilizationTarget"))++instance ToJSON+         AutoscalingPolicyLoadBalancingUtilization where+        toJSON AutoscalingPolicyLoadBalancingUtilization'{..}+          = object+              (catMaybes+                 [("utilizationTarget" .=) <$>+                    _aplbuUtilizationTarget])++--+-- /See:/ 'targetPoolsScopedListWarningDataItem' smart constructor.+data TargetPoolsScopedListWarningDataItem = TargetPoolsScopedListWarningDataItem'+    { _tpslwdiValue :: !(Maybe Text)+    , _tpslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpslwdiValue'+--+-- * 'tpslwdiKey'+targetPoolsScopedListWarningDataItem+    :: TargetPoolsScopedListWarningDataItem+targetPoolsScopedListWarningDataItem =+    TargetPoolsScopedListWarningDataItem'+    { _tpslwdiValue = Nothing+    , _tpslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)+tpslwdiValue+  = lens _tpslwdiValue (\ s a -> s{_tpslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)+tpslwdiKey+  = lens _tpslwdiKey (\ s a -> s{_tpslwdiKey = a})++instance FromJSON+         TargetPoolsScopedListWarningDataItem where+        parseJSON+          = withObject "TargetPoolsScopedListWarningDataItem"+              (\ o ->+                 TargetPoolsScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON TargetPoolsScopedListWarningDataItem+         where+        toJSON TargetPoolsScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _tpslwdiValue,+                  ("key" .=) <$> _tpslwdiKey])++-- | An Instance Group Manager resource.+--+-- /See:/ 'instanceGroupManager' smart constructor.+data InstanceGroupManager = InstanceGroupManager'+    { _igmKind              :: !Text+    , _igmFingerprint       :: !(Maybe Base64)+    , _igmBaseInstanceName  :: !(Maybe Text)+    , _igmZone              :: !(Maybe Text)+    , _igmInstanceTemplate  :: !(Maybe Text)+    , _igmTargetSize        :: !(Maybe (Textual Int32))+    , _igmSelfLink          :: !(Maybe Text)+    , _igmCurrentActions    :: !(Maybe InstanceGroupManagerActionsSummary)+    , _igmName              :: !(Maybe Text)+    , _igmCreationTimestamp :: !(Maybe Text)+    , _igmId                :: !(Maybe (Textual Word64))+    , _igmRegion            :: !(Maybe Text)+    , _igmTargetPools       :: !(Maybe [Text])+    , _igmDescription       :: !(Maybe Text)+    , _igmInstanceGroup     :: !(Maybe Text)+    , _igmNamedPorts        :: !(Maybe [NamedPort])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManager' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmKind'+--+-- * 'igmFingerprint'+--+-- * 'igmBaseInstanceName'+--+-- * 'igmZone'+--+-- * 'igmInstanceTemplate'+--+-- * 'igmTargetSize'+--+-- * 'igmSelfLink'+--+-- * 'igmCurrentActions'+--+-- * 'igmName'+--+-- * 'igmCreationTimestamp'+--+-- * 'igmId'+--+-- * 'igmRegion'+--+-- * 'igmTargetPools'+--+-- * 'igmDescription'+--+-- * 'igmInstanceGroup'+--+-- * 'igmNamedPorts'+instanceGroupManager+    :: InstanceGroupManager+instanceGroupManager =+    InstanceGroupManager'+    { _igmKind = "compute#instanceGroupManager"+    , _igmFingerprint = Nothing+    , _igmBaseInstanceName = Nothing+    , _igmZone = Nothing+    , _igmInstanceTemplate = Nothing+    , _igmTargetSize = Nothing+    , _igmSelfLink = Nothing+    , _igmCurrentActions = Nothing+    , _igmName = Nothing+    , _igmCreationTimestamp = Nothing+    , _igmId = Nothing+    , _igmRegion = Nothing+    , _igmTargetPools = Nothing+    , _igmDescription = Nothing+    , _igmInstanceGroup = Nothing+    , _igmNamedPorts = Nothing+    }++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupManager for managed instance groups.+igmKind :: Lens' InstanceGroupManager Text+igmKind = lens _igmKind (\ s a -> s{_igmKind = a})++-- | [Output Only] The fingerprint of the resource data. You can use this+-- optional field for optimistic locking when you update the resource.+igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)+igmFingerprint+  = lens _igmFingerprint+      (\ s a -> s{_igmFingerprint = a})+      . mapping _Base64++-- | The base instance name to use for instances in this group. The value+-- must be 1-58 characters long. Instances are named by appending a hyphen+-- and a random four-character string to the base instance name. The base+-- instance name must comply with RFC1035.+igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)+igmBaseInstanceName+  = lens _igmBaseInstanceName+      (\ s a -> s{_igmBaseInstanceName = a})++-- | [Output Only] The URL of the zone where the managed instance group is+-- located (for zonal resources).+igmZone :: Lens' InstanceGroupManager (Maybe Text)+igmZone = lens _igmZone (\ s a -> s{_igmZone = a})++-- | The URL of the instance template that is specified for this managed+-- instance group. The group uses this template to create all new instances+-- in the managed instance group.+igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)+igmInstanceTemplate+  = lens _igmInstanceTemplate+      (\ s a -> s{_igmInstanceTemplate = a})++-- | The target number of running instances for this managed instance group.+-- Deleting or abandoning instances reduces this number. Resizing the group+-- changes this number.+igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)+igmTargetSize+  = lens _igmTargetSize+      (\ s a -> s{_igmTargetSize = a})+      . mapping _Coerce++-- | [Output Only] The URL for this managed instance group. The server+-- defines this URL.+igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)+igmSelfLink+  = lens _igmSelfLink (\ s a -> s{_igmSelfLink = a})++-- | [Output Only] The list of instance actions and the number of instances+-- in this managed instance group that are scheduled for each of those+-- actions.+igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)+igmCurrentActions+  = lens _igmCurrentActions+      (\ s a -> s{_igmCurrentActions = a})++-- | The name of the managed instance group. The name must be 1-63 characters+-- long, and comply with RFC1035.+igmName :: Lens' InstanceGroupManager (Maybe Text)+igmName = lens _igmName (\ s a -> s{_igmName = a})++-- | [Output Only] The creation timestamp for this managed instance group in+-- RFC3339 text format.+igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)+igmCreationTimestamp+  = lens _igmCreationTimestamp+      (\ s a -> s{_igmCreationTimestamp = a})++-- | [Output Only] A unique identifier for this resource type. The server+-- generates this identifier.+igmId :: Lens' InstanceGroupManager (Maybe Word64)+igmId+  = lens _igmId (\ s a -> s{_igmId = a}) .+      mapping _Coerce++-- | [Output Only] The URL of the region where the managed instance group+-- resides (for regional resources).+igmRegion :: Lens' InstanceGroupManager (Maybe Text)+igmRegion+  = lens _igmRegion (\ s a -> s{_igmRegion = a})++-- | The URLs for all TargetPool resources to which instances in the+-- instanceGroup field are added. The target pools automatically apply to+-- all of the instances in the managed instance group.+igmTargetPools :: Lens' InstanceGroupManager [Text]+igmTargetPools+  = lens _igmTargetPools+      (\ s a -> s{_igmTargetPools = a})+      . _Default+      . _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+igmDescription :: Lens' InstanceGroupManager (Maybe Text)+igmDescription+  = lens _igmDescription+      (\ s a -> s{_igmDescription = a})++-- | [Output Only] The URL of the Instance Group resource.+igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)+igmInstanceGroup+  = lens _igmInstanceGroup+      (\ s a -> s{_igmInstanceGroup = a})++-- | Named ports configured for the Instance Groups complementary to this+-- Instance Group Manager.+igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]+igmNamedPorts+  = lens _igmNamedPorts+      (\ s a -> s{_igmNamedPorts = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroupManager where+        parseJSON+          = withObject "InstanceGroupManager"+              (\ o ->+                 InstanceGroupManager' <$>+                   (o .:? "kind" .!= "compute#instanceGroupManager") <*>+                     (o .:? "fingerprint")+                     <*> (o .:? "baseInstanceName")+                     <*> (o .:? "zone")+                     <*> (o .:? "instanceTemplate")+                     <*> (o .:? "targetSize")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "currentActions")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "targetPools" .!= mempty)+                     <*> (o .:? "description")+                     <*> (o .:? "instanceGroup")+                     <*> (o .:? "namedPorts" .!= mempty))++instance ToJSON InstanceGroupManager where+        toJSON InstanceGroupManager'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _igmKind),+                  ("fingerprint" .=) <$> _igmFingerprint,+                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,+                  ("zone" .=) <$> _igmZone,+                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,+                  ("targetSize" .=) <$> _igmTargetSize,+                  ("selfLink" .=) <$> _igmSelfLink,+                  ("currentActions" .=) <$> _igmCurrentActions,+                  ("name" .=) <$> _igmName,+                  ("creationTimestamp" .=) <$> _igmCreationTimestamp,+                  ("id" .=) <$> _igmId, ("region" .=) <$> _igmRegion,+                  ("targetPools" .=) <$> _igmTargetPools,+                  ("description" .=) <$> _igmDescription,+                  ("instanceGroup" .=) <$> _igmInstanceGroup,+                  ("namedPorts" .=) <$> _igmNamedPorts])++--+-- /See:/ 'tcpHealthCheck' smart constructor.+data TCPHealthCheck = TCPHealthCheck'+    { _thcResponse    :: !(Maybe Text)+    , _thcProxyHeader :: !(Maybe TCPHealthCheckProxyHeader)+    , _thcPortName    :: !(Maybe Text)+    , _thcPort        :: !(Maybe (Textual Int32))+    , _thcRequest     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TCPHealthCheck' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'thcResponse'+--+-- * 'thcProxyHeader'+--+-- * 'thcPortName'+--+-- * 'thcPort'+--+-- * 'thcRequest'+tcpHealthCheck+    :: TCPHealthCheck+tcpHealthCheck =+    TCPHealthCheck'+    { _thcResponse = Nothing+    , _thcProxyHeader = Nothing+    , _thcPortName = Nothing+    , _thcPort = Nothing+    , _thcRequest = Nothing+    }++-- | The bytes to match against the beginning of the response data. If left+-- empty (the default value), any response will indicate health. The+-- response data can only be ASCII.+thcResponse :: Lens' TCPHealthCheck (Maybe Text)+thcResponse+  = lens _thcResponse (\ s a -> s{_thcResponse = a})++-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)+thcProxyHeader+  = lens _thcProxyHeader+      (\ s a -> s{_thcProxyHeader = a})++-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and+-- port_name are defined, port takes precedence.+thcPortName :: Lens' TCPHealthCheck (Maybe Text)+thcPortName+  = lens _thcPortName (\ s a -> s{_thcPortName = a})++-- | The TCP port number for the health check request. The default value is+-- 80.+thcPort :: Lens' TCPHealthCheck (Maybe Int32)+thcPort+  = lens _thcPort (\ s a -> s{_thcPort = a}) .+      mapping _Coerce++-- | The application data to send once the TCP connection has been+-- established (default value is empty). If both request and response are+-- empty, the connection establishment alone will indicate health. The+-- request data can only be ASCII.+thcRequest :: Lens' TCPHealthCheck (Maybe Text)+thcRequest+  = lens _thcRequest (\ s a -> s{_thcRequest = a})++instance FromJSON TCPHealthCheck where+        parseJSON+          = withObject "TCPHealthCheck"+              (\ o ->+                 TCPHealthCheck' <$>+                   (o .:? "response") <*> (o .:? "proxyHeader") <*>+                     (o .:? "portName")+                     <*> (o .:? "port")+                     <*> (o .:? "request"))++instance ToJSON TCPHealthCheck where+        toJSON TCPHealthCheck'{..}+          = object+              (catMaybes+                 [("response" .=) <$> _thcResponse,+                  ("proxyHeader" .=) <$> _thcProxyHeader,+                  ("portName" .=) <$> _thcPortName,+                  ("port" .=) <$> _thcPort,+                  ("request" .=) <$> _thcRequest])++--+-- /See:/ 'instanceGroupsRemoveInstancesRequest' smart constructor.+newtype InstanceGroupsRemoveInstancesRequest = InstanceGroupsRemoveInstancesRequest'+    { _igrirInstances :: Maybe [InstanceReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsRemoveInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igrirInstances'+instanceGroupsRemoveInstancesRequest+    :: InstanceGroupsRemoveInstancesRequest+instanceGroupsRemoveInstancesRequest =+    InstanceGroupsRemoveInstancesRequest'+    { _igrirInstances = Nothing+    }++-- | The list of instances to remove from the instance group.+igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]+igrirInstances+  = lens _igrirInstances+      (\ s a -> s{_igrirInstances = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupsRemoveInstancesRequest where+        parseJSON+          = withObject "InstanceGroupsRemoveInstancesRequest"+              (\ o ->+                 InstanceGroupsRemoveInstancesRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON InstanceGroupsRemoveInstancesRequest+         where+        toJSON InstanceGroupsRemoveInstancesRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _igrirInstances])++--+-- /See:/ 'routeWarningsItemDataItem' smart constructor.+data RouteWarningsItemDataItem = RouteWarningsItemDataItem'+    { _rwidiValue :: !(Maybe Text)+    , _rwidiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouteWarningsItemDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rwidiValue'+--+-- * 'rwidiKey'+routeWarningsItemDataItem+    :: RouteWarningsItemDataItem+routeWarningsItemDataItem =+    RouteWarningsItemDataItem'+    { _rwidiValue = Nothing+    , _rwidiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)+rwidiValue+  = lens _rwidiValue (\ s a -> s{_rwidiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)+rwidiKey = lens _rwidiKey (\ s a -> s{_rwidiKey = a})++instance FromJSON RouteWarningsItemDataItem where+        parseJSON+          = withObject "RouteWarningsItemDataItem"+              (\ o ->+                 RouteWarningsItemDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON RouteWarningsItemDataItem where+        toJSON RouteWarningsItemDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _rwidiValue,+                  ("key" .=) <$> _rwidiKey])++-- | [Output Only] A map of scoped instance lists.+--+-- /See:/ 'instanceAggregatedListItems' smart constructor.+newtype InstanceAggregatedListItems = InstanceAggregatedListItems'+    { _ialiAddtional :: HashMap Text InstancesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ialiAddtional'+instanceAggregatedListItems+    :: HashMap Text InstancesScopedList -- ^ 'ialiAddtional'+    -> InstanceAggregatedListItems+instanceAggregatedListItems pIaliAddtional_ =+    InstanceAggregatedListItems'+    { _ialiAddtional = _Coerce # pIaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of instances.+ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)+ialiAddtional+  = lens _ialiAddtional+      (\ s a -> s{_ialiAddtional = a})+      . _Coerce++instance FromJSON InstanceAggregatedListItems where+        parseJSON+          = withObject "InstanceAggregatedListItems"+              (\ o ->+                 InstanceAggregatedListItems' <$> (parseJSONObject o))++instance ToJSON InstanceAggregatedListItems where+        toJSON = toJSON . _ialiAddtional++-- | [Output Only] Informational warning which replaces the list of+-- autoscalers when the list is empty.+--+-- /See:/ 'autoscalersScopedListWarning' smart constructor.+data AutoscalersScopedListWarning = AutoscalersScopedListWarning'+    { _aslwData    :: !(Maybe [AutoscalersScopedListWarningDataItem])+    , _aslwCode    :: !(Maybe AutoscalersScopedListWarningCode)+    , _aslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalersScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aslwData'+--+-- * 'aslwCode'+--+-- * 'aslwMessage'+autoscalersScopedListWarning+    :: AutoscalersScopedListWarning+autoscalersScopedListWarning =+    AutoscalersScopedListWarning'+    { _aslwData = Nothing+    , _aslwCode = Nothing+    , _aslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]+aslwData+  = lens _aslwData (\ s a -> s{_aslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)+aslwCode = lens _aslwCode (\ s a -> s{_aslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)+aslwMessage+  = lens _aslwMessage (\ s a -> s{_aslwMessage = a})++instance FromJSON AutoscalersScopedListWarning where+        parseJSON+          = withObject "AutoscalersScopedListWarning"+              (\ o ->+                 AutoscalersScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON AutoscalersScopedListWarning where+        toJSON AutoscalersScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _aslwData,+                  ("code" .=) <$> _aslwCode,+                  ("message" .=) <$> _aslwMessage])++-- | Contains a list of HealthCheck resources.+--+-- /See:/ 'healthCheckList' smart constructor.+data HealthCheckList = HealthCheckList'+    { _hclNextPageToken :: !(Maybe Text)+    , _hclKind          :: !Text+    , _hclItems         :: !(Maybe [HealthCheck])+    , _hclSelfLink      :: !(Maybe Text)+    , _hclId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HealthCheckList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hclNextPageToken'+--+-- * 'hclKind'+--+-- * 'hclItems'+--+-- * 'hclSelfLink'+--+-- * 'hclId'+healthCheckList+    :: HealthCheckList+healthCheckList =+    HealthCheckList'+    { _hclNextPageToken = Nothing+    , _hclKind = "compute#healthCheckList"+    , _hclItems = Nothing+    , _hclSelfLink = Nothing+    , _hclId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+hclNextPageToken :: Lens' HealthCheckList (Maybe Text)+hclNextPageToken+  = lens _hclNextPageToken+      (\ s a -> s{_hclNextPageToken = a})++-- | Type of resource.+hclKind :: Lens' HealthCheckList Text+hclKind = lens _hclKind (\ s a -> s{_hclKind = a})++-- | A list of HealthCheck resources.+hclItems :: Lens' HealthCheckList [HealthCheck]+hclItems+  = lens _hclItems (\ s a -> s{_hclItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+hclSelfLink :: Lens' HealthCheckList (Maybe Text)+hclSelfLink+  = lens _hclSelfLink (\ s a -> s{_hclSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+hclId :: Lens' HealthCheckList (Maybe Text)+hclId = lens _hclId (\ s a -> s{_hclId = a})++instance FromJSON HealthCheckList where+        parseJSON+          = withObject "HealthCheckList"+              (\ o ->+                 HealthCheckList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#healthCheckList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON HealthCheckList where+        toJSON HealthCheckList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _hclNextPageToken,+                  Just ("kind" .= _hclKind),+                  ("items" .=) <$> _hclItems,+                  ("selfLink" .=) <$> _hclSelfLink,+                  ("id" .=) <$> _hclId])++-- | [Output Only] Encountered errors during the last attempt to create or+-- delete the instance.+--+-- /See:/ 'managedInstanceLastAttemptErrors' smart constructor.+newtype ManagedInstanceLastAttemptErrors = ManagedInstanceLastAttemptErrors'+    { _milaeErrors :: Maybe [ManagedInstanceLastAttemptErrorsErrorsItem]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ManagedInstanceLastAttemptErrors' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'milaeErrors'+managedInstanceLastAttemptErrors+    :: ManagedInstanceLastAttemptErrors+managedInstanceLastAttemptErrors =+    ManagedInstanceLastAttemptErrors'+    { _milaeErrors = Nothing+    }++-- | [Output Only] The array of errors encountered while processing this+-- operation.+milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]+milaeErrors+  = lens _milaeErrors (\ s a -> s{_milaeErrors = a}) .+      _Default+      . _Coerce++instance FromJSON ManagedInstanceLastAttemptErrors+         where+        parseJSON+          = withObject "ManagedInstanceLastAttemptErrors"+              (\ o ->+                 ManagedInstanceLastAttemptErrors' <$>+                   (o .:? "errors" .!= mempty))++instance ToJSON ManagedInstanceLastAttemptErrors+         where+        toJSON ManagedInstanceLastAttemptErrors'{..}+          = object (catMaybes [("errors" .=) <$> _milaeErrors])++--+-- /See:/ 'targetPoolsRemoveInstanceRequest' smart constructor.+newtype TargetPoolsRemoveInstanceRequest = TargetPoolsRemoveInstanceRequest'+    { _tprirInstances :: Maybe [InstanceReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsRemoveInstanceRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tprirInstances'+targetPoolsRemoveInstanceRequest+    :: TargetPoolsRemoveInstanceRequest+targetPoolsRemoveInstanceRequest =+    TargetPoolsRemoveInstanceRequest'+    { _tprirInstances = Nothing+    }++-- | URLs of the instances to be removed from target pool.+tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]+tprirInstances+  = lens _tprirInstances+      (\ s a -> s{_tprirInstances = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolsRemoveInstanceRequest+         where+        parseJSON+          = withObject "TargetPoolsRemoveInstanceRequest"+              (\ o ->+                 TargetPoolsRemoveInstanceRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON TargetPoolsRemoveInstanceRequest+         where+        toJSON TargetPoolsRemoveInstanceRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _tprirInstances])++--+-- /See:/ 'targetInstancesScopedListWarningDataItem' smart constructor.+data TargetInstancesScopedListWarningDataItem = TargetInstancesScopedListWarningDataItem'+    { _tislwdiValue :: !(Maybe Text)+    , _tislwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstancesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tislwdiValue'+--+-- * 'tislwdiKey'+targetInstancesScopedListWarningDataItem+    :: TargetInstancesScopedListWarningDataItem+targetInstancesScopedListWarningDataItem =+    TargetInstancesScopedListWarningDataItem'+    { _tislwdiValue = Nothing+    , _tislwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)+tislwdiValue+  = lens _tislwdiValue (\ s a -> s{_tislwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)+tislwdiKey+  = lens _tislwdiKey (\ s a -> s{_tislwdiKey = a})++instance FromJSON+         TargetInstancesScopedListWarningDataItem where+        parseJSON+          = withObject+              "TargetInstancesScopedListWarningDataItem"+              (\ o ->+                 TargetInstancesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON+         TargetInstancesScopedListWarningDataItem where+        toJSON TargetInstancesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _tislwdiValue,+                  ("key" .=) <$> _tislwdiKey])++-- | [Output Only] An informational warning that appears when the machine+-- types list is empty.+--+-- /See:/ 'machineTypesScopedListWarning' smart constructor.+data MachineTypesScopedListWarning = MachineTypesScopedListWarning'+    { _mtslwData    :: !(Maybe [MachineTypesScopedListWarningDataItem])+    , _mtslwCode    :: !(Maybe MachineTypesScopedListWarningCode)+    , _mtslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtslwData'+--+-- * 'mtslwCode'+--+-- * 'mtslwMessage'+machineTypesScopedListWarning+    :: MachineTypesScopedListWarning+machineTypesScopedListWarning =+    MachineTypesScopedListWarning'+    { _mtslwData = Nothing+    , _mtslwCode = Nothing+    , _mtslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]+mtslwData+  = lens _mtslwData (\ s a -> s{_mtslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)+mtslwCode+  = lens _mtslwCode (\ s a -> s{_mtslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)+mtslwMessage+  = lens _mtslwMessage (\ s a -> s{_mtslwMessage = a})++instance FromJSON MachineTypesScopedListWarning where+        parseJSON+          = withObject "MachineTypesScopedListWarning"+              (\ o ->+                 MachineTypesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON MachineTypesScopedListWarning where+        toJSON MachineTypesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _mtslwData,+                  ("code" .=) <$> _mtslwCode,+                  ("message" .=) <$> _mtslwMessage])++-- | A TargetInstance resource. This resource defines an endpoint instance+-- that terminates traffic of certain protocols.+--+-- /See:/ 'targetInstance' smart constructor.+data TargetInstance = TargetInstance'+    { _tiKind              :: !Text+    , _tiNATPolicy         :: !(Maybe TargetInstanceNATPolicy)+    , _tiZone              :: !(Maybe Text)+    , _tiSelfLink          :: !(Maybe Text)+    , _tiName              :: !(Maybe Text)+    , _tiCreationTimestamp :: !(Maybe Text)+    , _tiId                :: !(Maybe (Textual Word64))+    , _tiDescription       :: !(Maybe Text)+    , _tiInstance          :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstance' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tiKind'+--+-- * 'tiNATPolicy'+--+-- * 'tiZone'+--+-- * 'tiSelfLink'+--+-- * 'tiName'+--+-- * 'tiCreationTimestamp'+--+-- * 'tiId'+--+-- * 'tiDescription'+--+-- * 'tiInstance'+targetInstance+    :: TargetInstance+targetInstance =+    TargetInstance'+    { _tiKind = "compute#targetInstance"+    , _tiNATPolicy = Nothing+    , _tiZone = Nothing+    , _tiSelfLink = Nothing+    , _tiName = Nothing+    , _tiCreationTimestamp = Nothing+    , _tiId = Nothing+    , _tiDescription = Nothing+    , _tiInstance = Nothing+    }++-- | [Output Only] The type of the resource. Always compute#targetInstance+-- for target instances.+tiKind :: Lens' TargetInstance Text+tiKind = lens _tiKind (\ s a -> s{_tiKind = a})++-- | NAT option controlling how IPs are NAT\'ed to the instance. Currently+-- only NO_NAT (default value) is supported.+tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)+tiNATPolicy+  = lens _tiNATPolicy (\ s a -> s{_tiNATPolicy = a})++-- | [Output Only] URL of the zone where the target instance resides.+tiZone :: Lens' TargetInstance (Maybe Text)+tiZone = lens _tiZone (\ s a -> s{_tiZone = a})++-- | [Output Only] Server-defined URL for the resource.+tiSelfLink :: Lens' TargetInstance (Maybe Text)+tiSelfLink+  = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+tiName :: Lens' TargetInstance (Maybe Text)+tiName = lens _tiName (\ s a -> s{_tiName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)+tiCreationTimestamp+  = lens _tiCreationTimestamp+      (\ s a -> s{_tiCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tiId :: Lens' TargetInstance (Maybe Word64)+tiId+  = lens _tiId (\ s a -> s{_tiId = a}) .+      mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+tiDescription :: Lens' TargetInstance (Maybe Text)+tiDescription+  = lens _tiDescription+      (\ s a -> s{_tiDescription = a})++-- | A URL to the virtual machine instance that handles traffic for this+-- target instance. When creating a target instance, you can provide the+-- fully-qualified URL or a valid partial URL to the desired virtual+-- machine. For example, the following are all valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance+-- - projects\/project\/zones\/zone\/instances\/instance -+-- zones\/zone\/instances\/instance+tiInstance :: Lens' TargetInstance (Maybe Text)+tiInstance+  = lens _tiInstance (\ s a -> s{_tiInstance = a})++instance FromJSON TargetInstance where+        parseJSON+          = withObject "TargetInstance"+              (\ o ->+                 TargetInstance' <$>+                   (o .:? "kind" .!= "compute#targetInstance") <*>+                     (o .:? "natPolicy")+                     <*> (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "description")+                     <*> (o .:? "instance"))++instance ToJSON TargetInstance where+        toJSON TargetInstance'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _tiKind),+                  ("natPolicy" .=) <$> _tiNATPolicy,+                  ("zone" .=) <$> _tiZone,+                  ("selfLink" .=) <$> _tiSelfLink,+                  ("name" .=) <$> _tiName,+                  ("creationTimestamp" .=) <$> _tiCreationTimestamp,+                  ("id" .=) <$> _tiId,+                  ("description" .=) <$> _tiDescription,+                  ("instance" .=) <$> _tiInstance])++--+-- /See:/ 'targetPoolInstanceHealth' smart constructor.+data TargetPoolInstanceHealth = TargetPoolInstanceHealth'+    { _tpihKind         :: !Text+    , _tpihHealthStatus :: !(Maybe [HealthStatus])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolInstanceHealth' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpihKind'+--+-- * 'tpihHealthStatus'+targetPoolInstanceHealth+    :: TargetPoolInstanceHealth+targetPoolInstanceHealth =+    TargetPoolInstanceHealth'+    { _tpihKind = "compute#targetPoolInstanceHealth"+    , _tpihHealthStatus = Nothing+    }++-- | [Output Only] Type of resource. Always compute#targetPoolInstanceHealth+-- when checking the health of an instance.+tpihKind :: Lens' TargetPoolInstanceHealth Text+tpihKind = lens _tpihKind (\ s a -> s{_tpihKind = a})++tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]+tpihHealthStatus+  = lens _tpihHealthStatus+      (\ s a -> s{_tpihHealthStatus = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolInstanceHealth where+        parseJSON+          = withObject "TargetPoolInstanceHealth"+              (\ o ->+                 TargetPoolInstanceHealth' <$>+                   (o .:? "kind" .!= "compute#targetPoolInstanceHealth")+                     <*> (o .:? "healthStatus" .!= mempty))++instance ToJSON TargetPoolInstanceHealth where+        toJSON TargetPoolInstanceHealth'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _tpihKind),+                  ("healthStatus" .=) <$> _tpihHealthStatus])++--+-- /See:/ 'instanceGroupManagersListManagedInstancesResponse' smart constructor.+newtype InstanceGroupManagersListManagedInstancesResponse = InstanceGroupManagersListManagedInstancesResponse'+    { _igmlmirManagedInstances :: Maybe [ManagedInstance]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersListManagedInstancesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmlmirManagedInstances'+instanceGroupManagersListManagedInstancesResponse+    :: InstanceGroupManagersListManagedInstancesResponse+instanceGroupManagersListManagedInstancesResponse =+    InstanceGroupManagersListManagedInstancesResponse'+    { _igmlmirManagedInstances = Nothing+    }++-- | [Output Only] The list of instances in the managed instance group.+igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]+igmlmirManagedInstances+  = lens _igmlmirManagedInstances+      (\ s a -> s{_igmlmirManagedInstances = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupManagersListManagedInstancesResponse+         where+        parseJSON+          = withObject+              "InstanceGroupManagersListManagedInstancesResponse"+              (\ o ->+                 InstanceGroupManagersListManagedInstancesResponse'+                   <$> (o .:? "managedInstances" .!= mempty))++instance ToJSON+         InstanceGroupManagersListManagedInstancesResponse+         where+        toJSON+          InstanceGroupManagersListManagedInstancesResponse'{..}+          = object+              (catMaybes+                 [("managedInstances" .=) <$>+                    _igmlmirManagedInstances])++-- |+--+-- /See:/ 'instanceProperties' smart constructor.+data InstanceProperties = InstanceProperties'+    { _ipServiceAccounts   :: !(Maybe [ServiceAccount])+    , _ipNetworkInterfaces :: !(Maybe [NetworkInterface])+    , _ipMachineType       :: !(Maybe Text)+    , _ipMetadata          :: !(Maybe Metadata)+    , _ipScheduling        :: !(Maybe Scheduling)+    , _ipDisks             :: !(Maybe [AttachedDisk])+    , _ipCanIPForward      :: !(Maybe Bool)+    , _ipDescription       :: !(Maybe Text)+    , _ipTags              :: !(Maybe Tags)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceProperties' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ipServiceAccounts'+--+-- * 'ipNetworkInterfaces'+--+-- * 'ipMachineType'+--+-- * 'ipMetadata'+--+-- * 'ipScheduling'+--+-- * 'ipDisks'+--+-- * 'ipCanIPForward'+--+-- * 'ipDescription'+--+-- * 'ipTags'+instanceProperties+    :: InstanceProperties+instanceProperties =+    InstanceProperties'+    { _ipServiceAccounts = Nothing+    , _ipNetworkInterfaces = Nothing+    , _ipMachineType = Nothing+    , _ipMetadata = Nothing+    , _ipScheduling = Nothing+    , _ipDisks = Nothing+    , _ipCanIPForward = Nothing+    , _ipDescription = Nothing+    , _ipTags = Nothing+    }++-- | A list of service accounts with specified scopes. Access tokens for+-- these service accounts are available to the instances that are created+-- from this template. Use metadata queries to obtain the access tokens for+-- these instances.+ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]+ipServiceAccounts+  = lens _ipServiceAccounts+      (\ s a -> s{_ipServiceAccounts = a})+      . _Default+      . _Coerce++-- | An array of network access configurations for this interface.+ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]+ipNetworkInterfaces+  = lens _ipNetworkInterfaces+      (\ s a -> s{_ipNetworkInterfaces = a})+      . _Default+      . _Coerce++-- | The machine type to use for instances that are created from this+-- template.+ipMachineType :: Lens' InstanceProperties (Maybe Text)+ipMachineType+  = lens _ipMachineType+      (\ s a -> s{_ipMachineType = a})++-- | The metadata key\/value pairs to assign to instances that are created+-- from this template. These pairs can consist of custom metadata or+-- predefined keys. See Project and instance metadata for more information.+ipMetadata :: Lens' InstanceProperties (Maybe Metadata)+ipMetadata+  = lens _ipMetadata (\ s a -> s{_ipMetadata = a})++-- | Specifies the scheduling options for the instances that are created from+-- this template.+ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)+ipScheduling+  = lens _ipScheduling (\ s a -> s{_ipScheduling = a})++-- | An array of disks that are associated with the instances that are+-- created from this template.+ipDisks :: Lens' InstanceProperties [AttachedDisk]+ipDisks+  = lens _ipDisks (\ s a -> s{_ipDisks = a}) . _Default+      . _Coerce++-- | Enables instances created based on this template to send packets with+-- source IP addresses other than their own and receive packets with+-- destination IP addresses other than their own. If these instances will+-- be used as an IP gateway or it will be set as the next-hop in a Route+-- resource, specify true. If unsure, leave this set to false. See the+-- Enable IP forwarding for instances documentation for more information.+ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)+ipCanIPForward+  = lens _ipCanIPForward+      (\ s a -> s{_ipCanIPForward = a})++-- | An optional text description for the instances that are created from+-- this instance template.+ipDescription :: Lens' InstanceProperties (Maybe Text)+ipDescription+  = lens _ipDescription+      (\ s a -> s{_ipDescription = a})++-- | A list of tags to apply to the instances that are created from this+-- template. The tags identify valid sources or targets for network+-- firewalls. The setTags method can modify this list of tags. Each tag+-- within the list must comply with RFC1035.+ipTags :: Lens' InstanceProperties (Maybe Tags)+ipTags = lens _ipTags (\ s a -> s{_ipTags = a})++instance FromJSON InstanceProperties where+        parseJSON+          = withObject "InstanceProperties"+              (\ o ->+                 InstanceProperties' <$>+                   (o .:? "serviceAccounts" .!= mempty) <*>+                     (o .:? "networkInterfaces" .!= mempty)+                     <*> (o .:? "machineType")+                     <*> (o .:? "metadata")+                     <*> (o .:? "scheduling")+                     <*> (o .:? "disks" .!= mempty)+                     <*> (o .:? "canIpForward")+                     <*> (o .:? "description")+                     <*> (o .:? "tags"))++instance ToJSON InstanceProperties where+        toJSON InstanceProperties'{..}+          = object+              (catMaybes+                 [("serviceAccounts" .=) <$> _ipServiceAccounts,+                  ("networkInterfaces" .=) <$> _ipNetworkInterfaces,+                  ("machineType" .=) <$> _ipMachineType,+                  ("metadata" .=) <$> _ipMetadata,+                  ("scheduling" .=) <$> _ipScheduling,+                  ("disks" .=) <$> _ipDisks,+                  ("canIpForward" .=) <$> _ipCanIPForward,+                  ("description" .=) <$> _ipDescription,+                  ("tags" .=) <$> _ipTags])++--+-- /See:/ 'hTTP2HealthCheck' smart constructor.+data HTTP2HealthCheck = HTTP2HealthCheck'+    { _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:+--+-- * 'httphcRequestPath'+--+-- * 'httphcHost'+--+-- * 'httphcProxyHeader'+--+-- * 'httphcPortName'+--+-- * 'httphcPort'+hTTP2HealthCheck+    :: HTTP2HealthCheck+hTTP2HealthCheck =+    HTTP2HealthCheck'+    { _httphcRequestPath = Nothing+    , _httphcHost = Nothing+    , _httphcProxyHeader = Nothing+    , _httphcPortName = Nothing+    , _httphcPort = Nothing+    }++-- | 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.+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 .:? "requestPath") <*> (o .:? "host") <*>+                     (o .:? "proxyHeader")+                     <*> (o .:? "portName")+                     <*> (o .:? "port"))++instance ToJSON HTTP2HealthCheck where+        toJSON HTTP2HealthCheck'{..}+          = object+              (catMaybes+                 [("requestPath" .=) <$> _httphcRequestPath,+                  ("host" .=) <$> _httphcHost,+                  ("proxyHeader" .=) <$> _httphcProxyHeader,+                  ("portName" .=) <$> _httphcPortName,+                  ("port" .=) <$> _httphcPort])++-- | [Output Only] Informational warning which replaces the list of disk+-- types when the list is empty.+--+-- /See:/ 'diskTypesScopedListWarning' smart constructor.+data DiskTypesScopedListWarning = DiskTypesScopedListWarning'+    { _dtslwData    :: !(Maybe [DiskTypesScopedListWarningDataItem])+    , _dtslwCode    :: !(Maybe DiskTypesScopedListWarningCode)+    , _dtslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtslwData'+--+-- * 'dtslwCode'+--+-- * 'dtslwMessage'+diskTypesScopedListWarning+    :: DiskTypesScopedListWarning+diskTypesScopedListWarning =+    DiskTypesScopedListWarning'+    { _dtslwData = Nothing+    , _dtslwCode = Nothing+    , _dtslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]+dtslwData+  = lens _dtslwData (\ s a -> s{_dtslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)+dtslwCode+  = lens _dtslwCode (\ s a -> s{_dtslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)+dtslwMessage+  = lens _dtslwMessage (\ s a -> s{_dtslwMessage = a})++instance FromJSON DiskTypesScopedListWarning where+        parseJSON+          = withObject "DiskTypesScopedListWarning"+              (\ o ->+                 DiskTypesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON DiskTypesScopedListWarning where+        toJSON DiskTypesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _dtslwData,+                  ("code" .=) <$> _dtslwCode,+                  ("message" .=) <$> _dtslwMessage])++-- | [Input Only] Specifies the parameters for a new disk that will be+-- created alongside the new instance. Use initialization parameters to+-- create boot disks or local SSDs attached to the new instance. This+-- property is mutually exclusive with the source property; you can only+-- define one or the other, but not both.+--+-- /See:/ 'attachedDiskInitializeParams' smart constructor.+data AttachedDiskInitializeParams = AttachedDiskInitializeParams'+    { _adipSourceImage              :: !(Maybe Text)+    , _adipDiskSizeGb               :: !(Maybe (Textual Int64))+    , _adipDiskName                 :: !(Maybe Text)+    , _adipSourceImageEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _adipDiskType                 :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AttachedDiskInitializeParams' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adipSourceImage'+--+-- * 'adipDiskSizeGb'+--+-- * 'adipDiskName'+--+-- * 'adipSourceImageEncryptionKey'+--+-- * 'adipDiskType'+attachedDiskInitializeParams+    :: AttachedDiskInitializeParams+attachedDiskInitializeParams =+    AttachedDiskInitializeParams'+    { _adipSourceImage = Nothing+    , _adipDiskSizeGb = Nothing+    , _adipDiskName = Nothing+    , _adipSourceImageEncryptionKey = Nothing+    , _adipDiskType = Nothing+    }++-- | The source image used to create this disk. If the source image is+-- deleted, this field will not be set. To create a disk with one of the+-- public operating system images, specify the image by its family name.+-- For example, specify family\/debian-8 to use the latest Debian 8 image:+-- projects\/debian-cloud\/global\/images\/family\/debian-8 Alternatively,+-- use a specific version of a public operating system image:+-- projects\/debian-cloud\/global\/images\/debian-8-jessie-vYYYYMMDD To+-- create a disk with a private image that you created, specify the image+-- name in the following format: global\/images\/my-private-image You can+-- also specify a private image by its image family, which returns the+-- latest version of the image in that family. Replace the image name with+-- family\/family-name: global\/images\/family\/my-private-family+adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)+adipSourceImage+  = lens _adipSourceImage+      (\ s a -> s{_adipSourceImage = a})++-- | Specifies the size of the disk in base-2 GB.+adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)+adipDiskSizeGb+  = lens _adipDiskSizeGb+      (\ s a -> s{_adipDiskSizeGb = a})+      . mapping _Coerce++-- | Specifies the disk name. If not specified, the default is to use the+-- name of the instance.+adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)+adipDiskName+  = lens _adipDiskName (\ s a -> s{_adipDiskName = a})++-- | The customer-supplied encryption key of the source image. Required if+-- the source image is protected by a customer-supplied encryption key.+-- Instance templates do not store customer-supplied encryption keys, so+-- you cannot create disks for instances in a managed instance group if the+-- source images are encrypted with your own keys.+adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)+adipSourceImageEncryptionKey+  = lens _adipSourceImageEncryptionKey+      (\ s a -> s{_adipSourceImageEncryptionKey = a})++-- | Specifies the disk type to use to create the instance. If not specified,+-- the default is pd-standard, specified using the full URL. For example:+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/pd-standard+-- Other values include pd-ssd and local-ssd. If you define this field, you+-- can provide either the full or partial URL. For example, the following+-- are valid values: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/diskType+-- - projects\/project\/zones\/zone\/diskTypes\/diskType -+-- zones\/zone\/diskTypes\/diskType Note that for InstanceTemplate, this is+-- the name of the disk type, not URL.+adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)+adipDiskType+  = lens _adipDiskType (\ s a -> s{_adipDiskType = a})++instance FromJSON AttachedDiskInitializeParams where+        parseJSON+          = withObject "AttachedDiskInitializeParams"+              (\ o ->+                 AttachedDiskInitializeParams' <$>+                   (o .:? "sourceImage") <*> (o .:? "diskSizeGb") <*>+                     (o .:? "diskName")+                     <*> (o .:? "sourceImageEncryptionKey")+                     <*> (o .:? "diskType"))++instance ToJSON AttachedDiskInitializeParams where+        toJSON AttachedDiskInitializeParams'{..}+          = object+              (catMaybes+                 [("sourceImage" .=) <$> _adipSourceImage,+                  ("diskSizeGb" .=) <$> _adipDiskSizeGb,+                  ("diskName" .=) <$> _adipDiskName,+                  ("sourceImageEncryptionKey" .=) <$>+                    _adipSourceImageEncryptionKey,+                  ("diskType" .=) <$> _adipDiskType])++--+-- /See:/ 'addressesScopedListWarningDataItem' smart constructor.+data AddressesScopedListWarningDataItem = AddressesScopedListWarningDataItem'+    { _aslwdiValue :: !(Maybe Text)+    , _aslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aslwdiValue'+--+-- * 'aslwdiKey'+addressesScopedListWarningDataItem+    :: AddressesScopedListWarningDataItem+addressesScopedListWarningDataItem =+    AddressesScopedListWarningDataItem'+    { _aslwdiValue = Nothing+    , _aslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)+aslwdiValue+  = lens _aslwdiValue (\ s a -> s{_aslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)+aslwdiKey+  = lens _aslwdiKey (\ s a -> s{_aslwdiKey = a})++instance FromJSON AddressesScopedListWarningDataItem+         where+        parseJSON+          = withObject "AddressesScopedListWarningDataItem"+              (\ o ->+                 AddressesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON AddressesScopedListWarningDataItem+         where+        toJSON AddressesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _aslwdiValue,+                  ("key" .=) <$> _aslwdiKey])++-- | A network interface resource attached to an instance.+--+-- /See:/ 'networkInterface' smart constructor.+data NetworkInterface = NetworkInterface'+    { _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:+--+-- * 'niNetwork'+--+-- * 'niName'+--+-- * 'niNetworkIP'+--+-- * 'niSubnetwork'+--+-- * 'niAccessConfigs'+networkInterface+    :: NetworkInterface+networkInterface =+    NetworkInterface'+    { _niNetwork = Nothing+    , _niName = Nothing+    , _niNetworkIP = Nothing+    , _niSubnetwork = Nothing+    , _niAccessConfigs = Nothing+    }++-- | URL of the network resource for this instance. This is required for+-- creating an instance but optional when creating a firewall rule. If not+-- specified when creating a firewall rule, the default network is used:+-- global\/networks\/default If you specify this property, you can specify+-- the network as a full or partial URL. For example, the following are all+-- valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/networks\/network+-- - projects\/project\/global\/networks\/network -+-- global\/networks\/default+niNetwork :: Lens' NetworkInterface (Maybe Text)+niNetwork+  = lens _niNetwork (\ s a -> s{_niNetwork = a})++-- | [Output Only] The name of the network interface, generated by the+-- server. For network devices, these are eth0, eth1, etc.+niName :: Lens' NetworkInterface (Maybe Text)+niName = lens _niName (\ s a -> s{_niName = a})++-- | An IPv4 internal network address to assign to the instance for this+-- network interface. If not specified by the user, an unused internal IP+-- is assigned by the system.+niNetworkIP :: Lens' NetworkInterface (Maybe Text)+niNetworkIP+  = lens _niNetworkIP (\ s a -> s{_niNetworkIP = a})++-- | The URL of the Subnetwork resource for this instance. If the network+-- resource is in legacy mode, do not provide this property. If the network+-- is in auto subnet mode, providing the subnetwork is optional. If the+-- network is in custom subnet mode, then this field should be specified.+-- If you specify this property, you can specify the subnetwork as a full+-- or partial URL. For example, the following are all valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/regions\/region\/subnetworks\/subnetwork+-- - regions\/region\/subnetworks\/subnetwork+niSubnetwork :: Lens' NetworkInterface (Maybe Text)+niSubnetwork+  = lens _niSubnetwork (\ s a -> s{_niSubnetwork = a})++-- | An array of configurations for this interface. Currently, only one+-- access config, ONE_TO_ONE_NAT, is supported. If there are no+-- accessConfigs specified, then this instance will have no external+-- internet access.+niAccessConfigs :: Lens' NetworkInterface [AccessConfig]+niAccessConfigs+  = lens _niAccessConfigs+      (\ s a -> s{_niAccessConfigs = a})+      . _Default+      . _Coerce++instance FromJSON NetworkInterface where+        parseJSON+          = withObject "NetworkInterface"+              (\ o ->+                 NetworkInterface' <$>+                   (o .:? "network") <*> (o .:? "name") <*>+                     (o .:? "networkIP")+                     <*> (o .:? "subnetwork")+                     <*> (o .:? "accessConfigs" .!= mempty))++instance ToJSON NetworkInterface where+        toJSON NetworkInterface'{..}+          = object+              (catMaybes+                 [("network" .=) <$> _niNetwork,+                  ("name" .=) <$> _niName,+                  ("networkIP" .=) <$> _niNetworkIP,+                  ("subnetwork" .=) <$> _niSubnetwork,+                  ("accessConfigs" .=) <$> _niAccessConfigs])++--+-- /See:/ 'targetPoolsRemoveHealthCheckRequest' smart constructor.+newtype TargetPoolsRemoveHealthCheckRequest = TargetPoolsRemoveHealthCheckRequest'+    { _tprhcrHealthChecks :: Maybe [HealthCheckReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsRemoveHealthCheckRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tprhcrHealthChecks'+targetPoolsRemoveHealthCheckRequest+    :: TargetPoolsRemoveHealthCheckRequest+targetPoolsRemoveHealthCheckRequest =+    TargetPoolsRemoveHealthCheckRequest'+    { _tprhcrHealthChecks = Nothing+    }++-- | Health check URL to be removed. This can be a full or valid partial URL.+-- For example, the following are valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project\/global\/httpHealthChecks\/health-check+-- - projects\/project\/global\/httpHealthChecks\/health-check -+-- global\/httpHealthChecks\/health-check+tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]+tprhcrHealthChecks+  = lens _tprhcrHealthChecks+      (\ s a -> s{_tprhcrHealthChecks = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolsRemoveHealthCheckRequest+         where+        parseJSON+          = withObject "TargetPoolsRemoveHealthCheckRequest"+              (\ o ->+                 TargetPoolsRemoveHealthCheckRequest' <$>+                   (o .:? "healthChecks" .!= mempty))++instance ToJSON TargetPoolsRemoveHealthCheckRequest+         where+        toJSON TargetPoolsRemoveHealthCheckRequest'{..}+          = object+              (catMaybes+                 [("healthChecks" .=) <$> _tprhcrHealthChecks])++-- | Contains a list of TargetSslProxy resources.+--+-- /See:/ 'targetSSLProxyList' smart constructor.+data TargetSSLProxyList = TargetSSLProxyList'+    { _tsplNextPageToken :: !(Maybe Text)+    , _tsplKind          :: !Text+    , _tsplItems         :: !(Maybe [TargetSSLProxy])+    , _tsplSelfLink      :: !(Maybe Text)+    , _tsplId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetSSLProxyList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tsplNextPageToken'+--+-- * 'tsplKind'+--+-- * 'tsplItems'+--+-- * 'tsplSelfLink'+--+-- * 'tsplId'+targetSSLProxyList+    :: TargetSSLProxyList+targetSSLProxyList =+    TargetSSLProxyList'+    { _tsplNextPageToken = Nothing+    , _tsplKind = "compute#targetSslProxyList"+    , _tsplItems = Nothing+    , _tsplSelfLink = Nothing+    , _tsplId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)+tsplNextPageToken+  = lens _tsplNextPageToken+      (\ s a -> s{_tsplNextPageToken = a})++-- | Type of resource.+tsplKind :: Lens' TargetSSLProxyList Text+tsplKind = lens _tsplKind (\ s a -> s{_tsplKind = a})++-- | A list of TargetSslProxy resources.+tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]+tsplItems+  = lens _tsplItems (\ s a -> s{_tsplItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)+tsplSelfLink+  = lens _tsplSelfLink (\ s a -> s{_tsplSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tsplId :: Lens' TargetSSLProxyList (Maybe Text)+tsplId = lens _tsplId (\ s a -> s{_tsplId = a})++instance FromJSON TargetSSLProxyList where+        parseJSON+          = withObject "TargetSSLProxyList"+              (\ o ->+                 TargetSSLProxyList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetSslProxyList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetSSLProxyList where+        toJSON TargetSSLProxyList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tsplNextPageToken,+                  Just ("kind" .= _tsplKind),+                  ("items" .=) <$> _tsplItems,+                  ("selfLink" .=) <$> _tsplSelfLink,+                  ("id" .=) <$> _tsplId])++--+-- /See:/ 'customerEncryptionKeyProtectedDisk' smart constructor.+data CustomerEncryptionKeyProtectedDisk = CustomerEncryptionKeyProtectedDisk'+    { _cekpdDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _cekpdSource            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'CustomerEncryptionKeyProtectedDisk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cekpdDiskEncryptionKey'+--+-- * 'cekpdSource'+customerEncryptionKeyProtectedDisk+    :: CustomerEncryptionKeyProtectedDisk+customerEncryptionKeyProtectedDisk =+    CustomerEncryptionKeyProtectedDisk'+    { _cekpdDiskEncryptionKey = Nothing+    , _cekpdSource = Nothing+    }++-- | Decrypts data associated with the disk with a customer-supplied+-- encryption key.+cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)+cekpdDiskEncryptionKey+  = lens _cekpdDiskEncryptionKey+      (\ s a -> s{_cekpdDiskEncryptionKey = a})++-- | Specifies a valid partial or full URL to an existing Persistent Disk+-- resource. This field is only applicable for persistent disks.+cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)+cekpdSource+  = lens _cekpdSource (\ s a -> s{_cekpdSource = a})++instance FromJSON CustomerEncryptionKeyProtectedDisk+         where+        parseJSON+          = withObject "CustomerEncryptionKeyProtectedDisk"+              (\ o ->+                 CustomerEncryptionKeyProtectedDisk' <$>+                   (o .:? "diskEncryptionKey") <*> (o .:? "source"))++instance ToJSON CustomerEncryptionKeyProtectedDisk+         where+        toJSON CustomerEncryptionKeyProtectedDisk'{..}+          = object+              (catMaybes+                 [("diskEncryptionKey" .=) <$>+                    _cekpdDiskEncryptionKey,+                  ("source" .=) <$> _cekpdSource])++-- | A list of instance templates.+--+-- /See:/ 'instanceTemplateList' smart constructor.+data InstanceTemplateList = InstanceTemplateList'+    { _itlNextPageToken :: !(Maybe Text)+    , _itlKind          :: !Text+    , _itlItems         :: !(Maybe [InstanceTemplate])+    , _itlSelfLink      :: !(Maybe Text)+    , _itlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceTemplateList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itlNextPageToken'+--+-- * 'itlKind'+--+-- * 'itlItems'+--+-- * 'itlSelfLink'+--+-- * 'itlId'+instanceTemplateList+    :: InstanceTemplateList+instanceTemplateList =+    InstanceTemplateList'+    { _itlNextPageToken = Nothing+    , _itlKind = "compute#instanceTemplateList"+    , _itlItems = Nothing+    , _itlSelfLink = Nothing+    , _itlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)+itlNextPageToken+  = lens _itlNextPageToken+      (\ s a -> s{_itlNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceTemplatesListResponse for instance template lists.+itlKind :: Lens' InstanceTemplateList Text+itlKind = lens _itlKind (\ s a -> s{_itlKind = a})++-- | [Output Only] list of InstanceTemplate resources.+itlItems :: Lens' InstanceTemplateList [InstanceTemplate]+itlItems+  = lens _itlItems (\ s a -> s{_itlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] The URL for this instance template list. The server+-- defines this URL.+itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)+itlSelfLink+  = lens _itlSelfLink (\ s a -> s{_itlSelfLink = a})++-- | [Output Only] A unique identifier for this instance template. The server+-- defines this identifier.+itlId :: Lens' InstanceTemplateList (Maybe Text)+itlId = lens _itlId (\ s a -> s{_itlId = a})++instance FromJSON InstanceTemplateList where+        parseJSON+          = withObject "InstanceTemplateList"+              (\ o ->+                 InstanceTemplateList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#instanceTemplateList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceTemplateList where+        toJSON InstanceTemplateList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _itlNextPageToken,+                  Just ("kind" .= _itlKind),+                  ("items" .=) <$> _itlItems,+                  ("selfLink" .=) <$> _itlSelfLink,+                  ("id" .=) <$> _itlId])++-- | Contains a list of Route resources.+--+-- /See:/ 'routeList' smart constructor.+data RouteList = RouteList'+    { _rlNextPageToken :: !(Maybe Text)+    , _rlKind          :: !Text+    , _rlItems         :: !(Maybe [Route])+    , _rlSelfLink      :: !(Maybe Text)+    , _rlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouteList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rlNextPageToken'+--+-- * 'rlKind'+--+-- * 'rlItems'+--+-- * 'rlSelfLink'+--+-- * 'rlId'+routeList+    :: RouteList+routeList =+    RouteList'+    { _rlNextPageToken = Nothing+    , _rlKind = "compute#routeList"+    , _rlItems = Nothing+    , _rlSelfLink = Nothing+    , _rlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+rlNextPageToken :: Lens' RouteList (Maybe Text)+rlNextPageToken+  = lens _rlNextPageToken+      (\ s a -> s{_rlNextPageToken = a})++-- | Type of resource.+rlKind :: Lens' RouteList Text+rlKind = lens _rlKind (\ s a -> s{_rlKind = a})++-- | [Output Only] A list of Route resources.+rlItems :: Lens' RouteList [Route]+rlItems+  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+rlSelfLink :: Lens' RouteList (Maybe Text)+rlSelfLink+  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Defined by the server.+rlId :: Lens' RouteList (Maybe Text)+rlId = lens _rlId (\ s a -> s{_rlId = a})++instance FromJSON RouteList where+        parseJSON+          = withObject "RouteList"+              (\ o ->+                 RouteList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#routeList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON RouteList where+        toJSON RouteList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _rlNextPageToken,+                  Just ("kind" .= _rlKind), ("items" .=) <$> _rlItems,+                  ("selfLink" .=) <$> _rlSelfLink,+                  ("id" .=) <$> _rlId])++-- | Router resource.+--+-- /See:/ 'router' smart constructor.+data Router = Router'+    { _rBGPPeers          :: !(Maybe [RouterBGPPeer])+    , _rBGP               :: !(Maybe RouterBGP)+    , _rKind              :: !Text+    , _rNetwork           :: !(Maybe Text)+    , _rInterfaces        :: !(Maybe [RouterInterface])+    , _rSelfLink          :: !(Maybe Text)+    , _rName              :: !(Maybe Text)+    , _rCreationTimestamp :: !(Maybe Text)+    , _rId                :: !(Maybe (Textual Word64))+    , _rRegion            :: !(Maybe Text)+    , _rDescription       :: !(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:+--+-- * 'rBGPPeers'+--+-- * 'rBGP'+--+-- * 'rKind'+--+-- * 'rNetwork'+--+-- * 'rInterfaces'+--+-- * 'rSelfLink'+--+-- * 'rName'+--+-- * 'rCreationTimestamp'+--+-- * 'rId'+--+-- * 'rRegion'+--+-- * 'rDescription'+router+    :: Router+router =+    Router'+    { _rBGPPeers = Nothing+    , _rBGP = Nothing+    , _rKind = "compute#router"+    , _rNetwork = Nothing+    , _rInterfaces = Nothing+    , _rSelfLink = Nothing+    , _rName = Nothing+    , _rCreationTimestamp = Nothing+    , _rId = Nothing+    , _rRegion = Nothing+    , _rDescription = 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.+rBGPPeers :: Lens' Router [RouterBGPPeer]+rBGPPeers+  = lens _rBGPPeers (\ s a -> s{_rBGPPeers = a}) .+      _Default+      . _Coerce++-- | BGP information specific to this router.+rBGP :: Lens' Router (Maybe RouterBGP)+rBGP = lens _rBGP (\ s a -> s{_rBGP = a})++-- | [Output Only] Type of resource. Always compute#router for routers.+rKind :: Lens' Router Text+rKind = lens _rKind (\ s a -> s{_rKind = a})++-- | URI of the network to which this router belongs.+rNetwork :: Lens' Router (Maybe Text)+rNetwork = lens _rNetwork (\ s a -> s{_rNetwork = 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.+rInterfaces :: Lens' Router [RouterInterface]+rInterfaces+  = lens _rInterfaces (\ s a -> s{_rInterfaces = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for the resource.+rSelfLink :: Lens' Router (Maybe Text)+rSelfLink+  = lens _rSelfLink (\ s a -> s{_rSelfLink = 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.+rName :: Lens' Router (Maybe Text)+rName = lens _rName (\ s a -> s{_rName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+rCreationTimestamp :: Lens' Router (Maybe Text)+rCreationTimestamp+  = lens _rCreationTimestamp+      (\ s a -> s{_rCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+rId :: Lens' Router (Maybe Word64)+rId+  = lens _rId (\ s a -> s{_rId = a}) . mapping _Coerce++-- | [Output Only] URI of the region where the router resides.+rRegion :: Lens' Router (Maybe Text)+rRegion = lens _rRegion (\ s a -> s{_rRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+rDescription :: Lens' Router (Maybe Text)+rDescription+  = lens _rDescription (\ s a -> s{_rDescription = a})++instance FromJSON Router where+        parseJSON+          = withObject "Router"+              (\ o ->+                 Router' <$>+                   (o .:? "bgpPeers" .!= mempty) <*> (o .:? "bgp") <*>+                     (o .:? "kind" .!= "compute#router")+                     <*> (o .:? "network")+                     <*> (o .:? "interfaces" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description"))++instance ToJSON Router where+        toJSON Router'{..}+          = object+              (catMaybes+                 [("bgpPeers" .=) <$> _rBGPPeers,+                  ("bgp" .=) <$> _rBGP, Just ("kind" .= _rKind),+                  ("network" .=) <$> _rNetwork,+                  ("interfaces" .=) <$> _rInterfaces,+                  ("selfLink" .=) <$> _rSelfLink,+                  ("name" .=) <$> _rName,+                  ("creationTimestamp" .=) <$> _rCreationTimestamp,+                  ("id" .=) <$> _rId, ("region" .=) <$> _rRegion,+                  ("description" .=) <$> _rDescription])++--+-- /See:/ 'routersScopedListWarningDataItem' smart constructor.+data RoutersScopedListWarningDataItem = RoutersScopedListWarningDataItem'+    { _rslwdiValue :: !(Maybe Text)+    , _rslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rslwdiValue'+--+-- * 'rslwdiKey'+routersScopedListWarningDataItem+    :: RoutersScopedListWarningDataItem+routersScopedListWarningDataItem =+    RoutersScopedListWarningDataItem'+    { _rslwdiValue = Nothing+    , _rslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)+rslwdiValue+  = lens _rslwdiValue (\ s a -> s{_rslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)+rslwdiKey+  = lens _rslwdiKey (\ s a -> s{_rslwdiKey = a})++instance FromJSON RoutersScopedListWarningDataItem+         where+        parseJSON+          = withObject "RoutersScopedListWarningDataItem"+              (\ o ->+                 RoutersScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON RoutersScopedListWarningDataItem+         where+        toJSON RoutersScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _rslwdiValue,+                  ("key" .=) <$> _rslwdiKey])++-- | Contains a list of TargetVpnGateway resources.+--+-- /See:/ 'targetVPNGatewayList' smart constructor.+data TargetVPNGatewayList = TargetVPNGatewayList'+    { _tvglNextPageToken :: !(Maybe Text)+    , _tvglKind          :: !Text+    , _tvglItems         :: !(Maybe [TargetVPNGateway])+    , _tvglSelfLink      :: !(Maybe Text)+    , _tvglId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewayList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvglNextPageToken'+--+-- * 'tvglKind'+--+-- * 'tvglItems'+--+-- * 'tvglSelfLink'+--+-- * 'tvglId'+targetVPNGatewayList+    :: TargetVPNGatewayList+targetVPNGatewayList =+    TargetVPNGatewayList'+    { _tvglNextPageToken = Nothing+    , _tvglKind = "compute#targetVpnGatewayList"+    , _tvglItems = Nothing+    , _tvglSelfLink = Nothing+    , _tvglId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)+tvglNextPageToken+  = lens _tvglNextPageToken+      (\ s a -> s{_tvglNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#targetVpnGateway for+-- target VPN gateways.+tvglKind :: Lens' TargetVPNGatewayList Text+tvglKind = lens _tvglKind (\ s a -> s{_tvglKind = a})++-- | [Output Only] A list of TargetVpnGateway resources.+tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]+tvglItems+  = lens _tvglItems (\ s a -> s{_tvglItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)+tvglSelfLink+  = lens _tvglSelfLink (\ s a -> s{_tvglSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tvglId :: Lens' TargetVPNGatewayList (Maybe Text)+tvglId = lens _tvglId (\ s a -> s{_tvglId = a})++instance FromJSON TargetVPNGatewayList where+        parseJSON+          = withObject "TargetVPNGatewayList"+              (\ o ->+                 TargetVPNGatewayList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetVpnGatewayList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetVPNGatewayList where+        toJSON TargetVPNGatewayList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tvglNextPageToken,+                  Just ("kind" .= _tvglKind),+                  ("items" .=) <$> _tvglItems,+                  ("selfLink" .=) <$> _tvglSelfLink,+                  ("id" .=) <$> _tvglId])++-- | Contains a list of SslCertificate resources.+--+-- /See:/ 'sslCertificateList' smart constructor.+data SSLCertificateList = SSLCertificateList'+    { _sclNextPageToken :: !(Maybe Text)+    , _sclKind          :: !Text+    , _sclItems         :: !(Maybe [SSLCertificate])+    , _sclSelfLink      :: !(Maybe Text)+    , _sclId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SSLCertificateList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sclNextPageToken'+--+-- * 'sclKind'+--+-- * 'sclItems'+--+-- * 'sclSelfLink'+--+-- * 'sclId'+sslCertificateList+    :: SSLCertificateList+sslCertificateList =+    SSLCertificateList'+    { _sclNextPageToken = Nothing+    , _sclKind = "compute#sslCertificateList"+    , _sclItems = Nothing+    , _sclSelfLink = Nothing+    , _sclId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)+sclNextPageToken+  = lens _sclNextPageToken+      (\ s a -> s{_sclNextPageToken = a})++-- | Type of resource.+sclKind :: Lens' SSLCertificateList Text+sclKind = lens _sclKind (\ s a -> s{_sclKind = a})++-- | A list of SslCertificate resources.+sclItems :: Lens' SSLCertificateList [SSLCertificate]+sclItems+  = lens _sclItems (\ s a -> s{_sclItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+sclSelfLink :: Lens' SSLCertificateList (Maybe Text)+sclSelfLink+  = lens _sclSelfLink (\ s a -> s{_sclSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Defined by the server.+sclId :: Lens' SSLCertificateList (Maybe Text)+sclId = lens _sclId (\ s a -> s{_sclId = a})++instance FromJSON SSLCertificateList where+        parseJSON+          = withObject "SSLCertificateList"+              (\ o ->+                 SSLCertificateList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#sslCertificateList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON SSLCertificateList where+        toJSON SSLCertificateList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _sclNextPageToken,+                  Just ("kind" .= _sclKind),+                  ("items" .=) <$> _sclItems,+                  ("selfLink" .=) <$> _sclSelfLink,+                  ("id" .=) <$> _sclId])++--+-- /See:/ 'firewallAllowedItem' smart constructor.+data FirewallAllowedItem = FirewallAllowedItem'+    { _faiIPProtocol :: !(Maybe Text)+    , _faiPorts      :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'FirewallAllowedItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'faiIPProtocol'+--+-- * 'faiPorts'+firewallAllowedItem+    :: FirewallAllowedItem+firewallAllowedItem =+    FirewallAllowedItem'+    { _faiIPProtocol = Nothing+    , _faiPorts = Nothing+    }++-- | The IP protocol to which this rule applies. The protocol type is+-- required when creating a firewall rule. This value can either be one of+-- the following well known protocol strings (tcp, udp, icmp, esp, ah,+-- sctp), or the IP protocol number.+faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)+faiIPProtocol+  = lens _faiIPProtocol+      (\ s a -> s{_faiIPProtocol = a})++-- | An optional list of ports to which this rule applies. This field is only+-- applicable for UDP or TCP protocol. Each entry must be either an integer+-- or a range. If not specified, this rule applies to connections through+-- any port. Example inputs include: [\"22\"], [\"80\",\"443\"], and+-- [\"12345-12349\"].+faiPorts :: Lens' FirewallAllowedItem [Text]+faiPorts+  = lens _faiPorts (\ s a -> s{_faiPorts = a}) .+      _Default+      . _Coerce++instance FromJSON FirewallAllowedItem where+        parseJSON+          = withObject "FirewallAllowedItem"+              (\ o ->+                 FirewallAllowedItem' <$>+                   (o .:? "IPProtocol") <*> (o .:? "ports" .!= mempty))++instance ToJSON FirewallAllowedItem where+        toJSON FirewallAllowedItem'{..}+          = object+              (catMaybes+                 [("IPProtocol" .=) <$> _faiIPProtocol,+                  ("ports" .=) <$> _faiPorts])++-- | Represents a Network resource. Read Networks and Firewalls for more+-- information.+--+-- /See:/ 'network' smart constructor.+data Network = Network'+    { _nAutoCreateSubnetworks :: !(Maybe Bool)+    , _nKind                  :: !Text+    , _nSubnetworks           :: !(Maybe [Text])+    , _nIPv4Range             :: !(Maybe Text)+    , _nSelfLink              :: !(Maybe Text)+    , _nName                  :: !(Maybe Text)+    , _nCreationTimestamp     :: !(Maybe Text)+    , _nId                    :: !(Maybe (Textual Word64))+    , _nGatewayIPv4           :: !(Maybe Text)+    , _nDescription           :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Network' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nAutoCreateSubnetworks'+--+-- * 'nKind'+--+-- * 'nSubnetworks'+--+-- * 'nIPv4Range'+--+-- * 'nSelfLink'+--+-- * 'nName'+--+-- * 'nCreationTimestamp'+--+-- * 'nId'+--+-- * 'nGatewayIPv4'+--+-- * 'nDescription'+network+    :: Network+network =+    Network'+    { _nAutoCreateSubnetworks = Nothing+    , _nKind = "compute#network"+    , _nSubnetworks = Nothing+    , _nIPv4Range = Nothing+    , _nSelfLink = Nothing+    , _nName = Nothing+    , _nCreationTimestamp = Nothing+    , _nId = Nothing+    , _nGatewayIPv4 = Nothing+    , _nDescription = Nothing+    }++-- | When set to true, the network is created in \"auto subnet mode\". When+-- set to false, the network is in \"custom subnet mode\". In \"auto subnet+-- mode\", a newly created network is assigned the default CIDR of+-- 10.128.0.0\/9 and it automatically creates one subnetwork per region.+nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)+nAutoCreateSubnetworks+  = lens _nAutoCreateSubnetworks+      (\ s a -> s{_nAutoCreateSubnetworks = a})++-- | [Output Only] Type of the resource. Always compute#network for networks.+nKind :: Lens' Network Text+nKind = lens _nKind (\ s a -> s{_nKind = a})++-- | [Output Only] Server-defined fully-qualified URLs for all subnetworks in+-- this network.+nSubnetworks :: Lens' Network [Text]+nSubnetworks+  = lens _nSubnetworks (\ s a -> s{_nSubnetworks = a})+      . _Default+      . _Coerce++-- | The range of internal addresses that are legal on this network. This+-- range is a CIDR specification, for example: 192.168.0.0\/16. Provided by+-- the client when the network is created.+nIPv4Range :: Lens' Network (Maybe Text)+nIPv4Range+  = lens _nIPv4Range (\ s a -> s{_nIPv4Range = a})++-- | [Output Only] Server-defined URL for the resource.+nSelfLink :: Lens' Network (Maybe Text)+nSelfLink+  = lens _nSelfLink (\ s a -> s{_nSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+nName :: Lens' Network (Maybe Text)+nName = lens _nName (\ s a -> s{_nName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+nCreationTimestamp :: Lens' Network (Maybe Text)+nCreationTimestamp+  = lens _nCreationTimestamp+      (\ s a -> s{_nCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+nId :: Lens' Network (Maybe Word64)+nId+  = lens _nId (\ s a -> s{_nId = a}) . mapping _Coerce++-- | A gateway address for default routing to other networks. This value is+-- read only and is selected by the Google Compute Engine, typically as the+-- first usable address in the IPv4Range.+nGatewayIPv4 :: Lens' Network (Maybe Text)+nGatewayIPv4+  = lens _nGatewayIPv4 (\ s a -> s{_nGatewayIPv4 = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+nDescription :: Lens' Network (Maybe Text)+nDescription+  = lens _nDescription (\ s a -> s{_nDescription = a})++instance FromJSON Network where+        parseJSON+          = withObject "Network"+              (\ o ->+                 Network' <$>+                   (o .:? "autoCreateSubnetworks") <*>+                     (o .:? "kind" .!= "compute#network")+                     <*> (o .:? "subnetworks" .!= mempty)+                     <*> (o .:? "IPv4Range")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "gatewayIPv4")+                     <*> (o .:? "description"))++instance ToJSON Network where+        toJSON Network'{..}+          = object+              (catMaybes+                 [("autoCreateSubnetworks" .=) <$>+                    _nAutoCreateSubnetworks,+                  Just ("kind" .= _nKind),+                  ("subnetworks" .=) <$> _nSubnetworks,+                  ("IPv4Range" .=) <$> _nIPv4Range,+                  ("selfLink" .=) <$> _nSelfLink,+                  ("name" .=) <$> _nName,+                  ("creationTimestamp" .=) <$> _nCreationTimestamp,+                  ("id" .=) <$> _nId,+                  ("gatewayIPv4" .=) <$> _nGatewayIPv4,+                  ("description" .=) <$> _nDescription])++-- | Informational warning which replaces the list of routers when the list+-- is empty.+--+-- /See:/ 'routersScopedListWarning' smart constructor.+data RoutersScopedListWarning = RoutersScopedListWarning'+    { _rslwData    :: !(Maybe [RoutersScopedListWarningDataItem])+    , _rslwCode    :: !(Maybe RoutersScopedListWarningCode)+    , _rslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rslwData'+--+-- * 'rslwCode'+--+-- * 'rslwMessage'+routersScopedListWarning+    :: RoutersScopedListWarning+routersScopedListWarning =+    RoutersScopedListWarning'+    { _rslwData = Nothing+    , _rslwCode = Nothing+    , _rslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]+rslwData+  = lens _rslwData (\ s a -> s{_rslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)+rslwCode = lens _rslwCode (\ s a -> s{_rslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)+rslwMessage+  = lens _rslwMessage (\ s a -> s{_rslwMessage = a})++instance FromJSON RoutersScopedListWarning where+        parseJSON+          = withObject "RoutersScopedListWarning"+              (\ o ->+                 RoutersScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON RoutersScopedListWarning where+        toJSON RoutersScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _rslwData,+                  ("code" .=) <$> _rslwCode,+                  ("message" .=) <$> _rslwMessage])++-- | [Output Only] Informational warning which replaces the list of addresses+-- when the list is empty.+--+-- /See:/ 'addressesScopedListWarning' smart constructor.+data AddressesScopedListWarning = AddressesScopedListWarning'+    { _aData    :: !(Maybe [AddressesScopedListWarningDataItem])+    , _aCode    :: !(Maybe AddressesScopedListWarningCode)+    , _aMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aData'+--+-- * 'aCode'+--+-- * 'aMessage'+addressesScopedListWarning+    :: AddressesScopedListWarning+addressesScopedListWarning =+    AddressesScopedListWarning'+    { _aData = Nothing+    , _aCode = Nothing+    , _aMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]+aData+  = lens _aData (\ s a -> s{_aData = a}) . _Default .+      _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)+aCode = lens _aCode (\ s a -> s{_aCode = a})++-- | [Output Only] A human-readable description of the warning code.+aMessage :: Lens' AddressesScopedListWarning (Maybe Text)+aMessage = lens _aMessage (\ s a -> s{_aMessage = a})++instance FromJSON AddressesScopedListWarning where+        parseJSON+          = withObject "AddressesScopedListWarning"+              (\ o ->+                 AddressesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON AddressesScopedListWarning where+        toJSON AddressesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _aData, ("code" .=) <$> _aCode,+                  ("message" .=) <$> _aMessage])++-- | The parameters of the raw disk image.+--+-- /See:/ 'imageRawDisk' smart constructor.+data ImageRawDisk = ImageRawDisk'+    { _irdContainerType :: !(Maybe ImageRawDiskContainerType)+    , _irdSource        :: !(Maybe Text)+    , _irdSha1Checksum  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ImageRawDisk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'irdContainerType'+--+-- * 'irdSource'+--+-- * 'irdSha1Checksum'+imageRawDisk+    :: ImageRawDisk+imageRawDisk =+    ImageRawDisk'+    { _irdContainerType = Nothing+    , _irdSource = Nothing+    , _irdSha1Checksum = Nothing+    }++-- | The format used to encode and transmit the block device, which should be+-- TAR. This is just a container and transmission format and not a runtime+-- format. Provided by the client when the disk image is created.+irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)+irdContainerType+  = lens _irdContainerType+      (\ s a -> s{_irdContainerType = a})++-- | The full Google Cloud Storage URL where the disk image is stored. You+-- must provide either this property or the sourceDisk property but not+-- both.+irdSource :: Lens' ImageRawDisk (Maybe Text)+irdSource+  = lens _irdSource (\ s a -> s{_irdSource = a})++-- | An optional SHA1 checksum of the disk image before unpackaging; provided+-- by the client when the disk image is created.+irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)+irdSha1Checksum+  = lens _irdSha1Checksum+      (\ s a -> s{_irdSha1Checksum = a})++instance FromJSON ImageRawDisk where+        parseJSON+          = withObject "ImageRawDisk"+              (\ o ->+                 ImageRawDisk' <$>+                   (o .:? "containerType") <*> (o .:? "source") <*>+                     (o .:? "sha1Checksum"))++instance ToJSON ImageRawDisk where+        toJSON ImageRawDisk'{..}+          = object+              (catMaybes+                 [("containerType" .=) <$> _irdContainerType,+                  ("source" .=) <$> _irdSource,+                  ("sha1Checksum" .=) <$> _irdSha1Checksum])++--+-- /See:/ 'instanceAggregatedList' smart constructor.+data InstanceAggregatedList = InstanceAggregatedList'+    { _ialNextPageToken :: !(Maybe Text)+    , _ialKind          :: !Text+    , _ialItems         :: !(Maybe InstanceAggregatedListItems)+    , _ialSelfLink      :: !(Maybe Text)+    , _ialId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ialNextPageToken'+--+-- * 'ialKind'+--+-- * 'ialItems'+--+-- * 'ialSelfLink'+--+-- * 'ialId'+instanceAggregatedList+    :: InstanceAggregatedList+instanceAggregatedList =+    InstanceAggregatedList'+    { _ialNextPageToken = Nothing+    , _ialKind = "compute#instanceAggregatedList"+    , _ialItems = Nothing+    , _ialSelfLink = Nothing+    , _ialId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)+ialNextPageToken+  = lens _ialNextPageToken+      (\ s a -> s{_ialNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#instanceAggregatedList+-- for aggregated lists of Instance resources.+ialKind :: Lens' InstanceAggregatedList Text+ialKind = lens _ialKind (\ s a -> s{_ialKind = a})++-- | [Output Only] A map of scoped instance lists.+ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)+ialItems = lens _ialItems (\ s a -> s{_ialItems = a})++-- | [Output Only] Server-defined URL for this resource.+ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)+ialSelfLink+  = lens _ialSelfLink (\ s a -> s{_ialSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+ialId :: Lens' InstanceAggregatedList (Maybe Text)+ialId = lens _ialId (\ s a -> s{_ialId = a})++instance FromJSON InstanceAggregatedList where+        parseJSON+          = withObject "InstanceAggregatedList"+              (\ o ->+                 InstanceAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#instanceAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceAggregatedList where+        toJSON InstanceAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _ialNextPageToken,+                  Just ("kind" .= _ialKind),+                  ("items" .=) <$> _ialItems,+                  ("selfLink" .=) <$> _ialSelfLink,+                  ("id" .=) <$> _ialId])++--+-- /See:/ 'sslHealthCheck' smart constructor.+data SSLHealthCheck = SSLHealthCheck'+    { _shcResponse    :: !(Maybe Text)+    , _shcProxyHeader :: !(Maybe SSLHealthCheckProxyHeader)+    , _shcPortName    :: !(Maybe Text)+    , _shcPort        :: !(Maybe (Textual Int32))+    , _shcRequest     :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SSLHealthCheck' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'shcResponse'+--+-- * 'shcProxyHeader'+--+-- * 'shcPortName'+--+-- * 'shcPort'+--+-- * 'shcRequest'+sslHealthCheck+    :: SSLHealthCheck+sslHealthCheck =+    SSLHealthCheck'+    { _shcResponse = Nothing+    , _shcProxyHeader = Nothing+    , _shcPortName = Nothing+    , _shcPort = Nothing+    , _shcRequest = Nothing+    }++-- | The bytes to match against the beginning of the response data. If left+-- empty (the default value), any response will indicate health. The+-- response data can only be ASCII.+shcResponse :: Lens' SSLHealthCheck (Maybe Text)+shcResponse+  = lens _shcResponse (\ s a -> s{_shcResponse = a})++-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)+shcProxyHeader+  = lens _shcProxyHeader+      (\ s a -> s{_shcProxyHeader = a})++-- | Port name as defined in InstanceGroup#NamedPort#name. If both port and+-- port_name are defined, port takes precedence.+shcPortName :: Lens' SSLHealthCheck (Maybe Text)+shcPortName+  = lens _shcPortName (\ s a -> s{_shcPortName = a})++-- | The TCP port number for the health check request. The default value is+-- 443.+shcPort :: Lens' SSLHealthCheck (Maybe Int32)+shcPort+  = lens _shcPort (\ s a -> s{_shcPort = a}) .+      mapping _Coerce++-- | The application data to send once the SSL connection has been+-- established (default value is empty). If both request and response are+-- empty, the connection establishment alone will indicate health. The+-- request data can only be ASCII.+shcRequest :: Lens' SSLHealthCheck (Maybe Text)+shcRequest+  = lens _shcRequest (\ s a -> s{_shcRequest = a})++instance FromJSON SSLHealthCheck where+        parseJSON+          = withObject "SSLHealthCheck"+              (\ o ->+                 SSLHealthCheck' <$>+                   (o .:? "response") <*> (o .:? "proxyHeader") <*>+                     (o .:? "portName")+                     <*> (o .:? "port")+                     <*> (o .:? "request"))++instance ToJSON SSLHealthCheck where+        toJSON SSLHealthCheck'{..}+          = object+              (catMaybes+                 [("response" .=) <$> _shcResponse,+                  ("proxyHeader" .=) <$> _shcProxyHeader,+                  ("portName" .=) <$> _shcPortName,+                  ("port" .=) <$> _shcPort,+                  ("request" .=) <$> _shcRequest])++-- | A reserved address resource.+--+-- /See:/ 'address' smart constructor.+data Address = Address'+    { _aStatus            :: !(Maybe AddressStatus)+    , _aUsers             :: !(Maybe [Text])+    , _aKind              :: !Text+    , _aAddress           :: !(Maybe Text)+    , _aSelfLink          :: !(Maybe Text)+    , _aName              :: !(Maybe Text)+    , _aCreationTimestamp :: !(Maybe Text)+    , _aId                :: !(Maybe (Textual Word64))+    , _aRegion            :: !(Maybe Text)+    , _aDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Address' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aStatus'+--+-- * 'aUsers'+--+-- * 'aKind'+--+-- * 'aAddress'+--+-- * 'aSelfLink'+--+-- * 'aName'+--+-- * 'aCreationTimestamp'+--+-- * 'aId'+--+-- * 'aRegion'+--+-- * 'aDescription'+address+    :: Address+address =+    Address'+    { _aStatus = Nothing+    , _aUsers = Nothing+    , _aKind = "compute#address"+    , _aAddress = Nothing+    , _aSelfLink = Nothing+    , _aName = Nothing+    , _aCreationTimestamp = Nothing+    , _aId = Nothing+    , _aRegion = Nothing+    , _aDescription = Nothing+    }++-- | [Output Only] The status of the address, which can be either IN_USE or+-- RESERVED. An address that is RESERVED is currently reserved and+-- available to use. An IN_USE address is currently being used by another+-- resource and is not available.+aStatus :: Lens' Address (Maybe AddressStatus)+aStatus = lens _aStatus (\ s a -> s{_aStatus = a})++-- | [Output Only] The URLs of the resources that are using this address.+aUsers :: Lens' Address [Text]+aUsers+  = lens _aUsers (\ s a -> s{_aUsers = a}) . _Default .+      _Coerce++-- | [Output Only] Type of the resource. Always compute#address for+-- addresses.+aKind :: Lens' Address Text+aKind = lens _aKind (\ s a -> s{_aKind = a})++-- | The static external IP address represented by this resource.+aAddress :: Lens' Address (Maybe Text)+aAddress = lens _aAddress (\ s a -> s{_aAddress = a})++-- | [Output Only] Server-defined URL for the resource.+aSelfLink :: Lens' Address (Maybe Text)+aSelfLink+  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+aName :: Lens' Address (Maybe Text)+aName = lens _aName (\ s a -> s{_aName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+aCreationTimestamp :: Lens' Address (Maybe Text)+aCreationTimestamp+  = lens _aCreationTimestamp+      (\ s a -> s{_aCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+aId :: Lens' Address (Maybe Word64)+aId+  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce++-- | [Output Only] URL of the region where the regional address resides. This+-- field is not applicable to global addresses.+aRegion :: Lens' Address (Maybe Text)+aRegion = lens _aRegion (\ s a -> s{_aRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+aDescription :: Lens' Address (Maybe Text)+aDescription+  = lens _aDescription (\ s a -> s{_aDescription = a})++instance FromJSON Address where+        parseJSON+          = withObject "Address"+              (\ o ->+                 Address' <$>+                   (o .:? "status") <*> (o .:? "users" .!= mempty) <*>+                     (o .:? "kind" .!= "compute#address")+                     <*> (o .:? "address")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description"))++instance ToJSON Address where+        toJSON Address'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _aStatus,+                  ("users" .=) <$> _aUsers, Just ("kind" .= _aKind),+                  ("address" .=) <$> _aAddress,+                  ("selfLink" .=) <$> _aSelfLink,+                  ("name" .=) <$> _aName,+                  ("creationTimestamp" .=) <$> _aCreationTimestamp,+                  ("id" .=) <$> _aId, ("region" .=) <$> _aRegion,+                  ("description" .=) <$> _aDescription])++-- | A Zone resource.+--+-- /See:/ 'zone' smart constructor.+data Zone = Zone'+    { _zStatus            :: !(Maybe ZoneStatus)+    , _zKind              :: !Text+    , _zSelfLink          :: !(Maybe Text)+    , _zName              :: !(Maybe Text)+    , _zCreationTimestamp :: !(Maybe Text)+    , _zId                :: !(Maybe (Textual Word64))+    , _zRegion            :: !(Maybe Text)+    , _zDescription       :: !(Maybe Text)+    , _zDeprecated        :: !(Maybe DeprecationStatus)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Zone' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'zStatus'+--+-- * 'zKind'+--+-- * 'zSelfLink'+--+-- * 'zName'+--+-- * 'zCreationTimestamp'+--+-- * 'zId'+--+-- * 'zRegion'+--+-- * 'zDescription'+--+-- * 'zDeprecated'+zone+    :: Zone+zone =+    Zone'+    { _zStatus = Nothing+    , _zKind = "compute#zone"+    , _zSelfLink = Nothing+    , _zName = Nothing+    , _zCreationTimestamp = Nothing+    , _zId = Nothing+    , _zRegion = Nothing+    , _zDescription = Nothing+    , _zDeprecated = Nothing+    }++-- | [Output Only] Status of the zone, either UP or DOWN.+zStatus :: Lens' Zone (Maybe ZoneStatus)+zStatus = lens _zStatus (\ s a -> s{_zStatus = a})++-- | [Output Only] Type of the resource. Always compute#zone for zones.+zKind :: Lens' Zone Text+zKind = lens _zKind (\ s a -> s{_zKind = a})++-- | [Output Only] Server-defined URL for the resource.+zSelfLink :: Lens' Zone (Maybe Text)+zSelfLink+  = lens _zSelfLink (\ s a -> s{_zSelfLink = a})++-- | [Output Only] Name of the resource.+zName :: Lens' Zone (Maybe Text)+zName = lens _zName (\ s a -> s{_zName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+zCreationTimestamp :: Lens' Zone (Maybe Text)+zCreationTimestamp+  = lens _zCreationTimestamp+      (\ s a -> s{_zCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+zId :: Lens' Zone (Maybe Word64)+zId+  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce++-- | [Output Only] Full URL reference to the region which hosts the zone.+zRegion :: Lens' Zone (Maybe Text)+zRegion = lens _zRegion (\ s a -> s{_zRegion = a})++-- | [Output Only] Textual description of the resource.+zDescription :: Lens' Zone (Maybe Text)+zDescription+  = lens _zDescription (\ s a -> s{_zDescription = a})++-- | [Output Only] The deprecation status associated with this zone.+zDeprecated :: Lens' Zone (Maybe DeprecationStatus)+zDeprecated+  = lens _zDeprecated (\ s a -> s{_zDeprecated = a})++instance FromJSON Zone where+        parseJSON+          = withObject "Zone"+              (\ o ->+                 Zone' <$>+                   (o .:? "status") <*>+                     (o .:? "kind" .!= "compute#zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "deprecated"))++instance ToJSON Zone where+        toJSON Zone'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _zStatus, Just ("kind" .= _zKind),+                  ("selfLink" .=) <$> _zSelfLink,+                  ("name" .=) <$> _zName,+                  ("creationTimestamp" .=) <$> _zCreationTimestamp,+                  ("id" .=) <$> _zId, ("region" .=) <$> _zRegion,+                  ("description" .=) <$> _zDescription,+                  ("deprecated" .=) <$> _zDeprecated])++--+-- /See:/ 'routerBGP' smart constructor.+newtype RouterBGP = RouterBGP'+    { _rbASN :: Maybe (Textual Word32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterBGP' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rbASN'+routerBGP+    :: RouterBGP+routerBGP =+    RouterBGP'+    { _rbASN = Nothing+    }++-- | Local BGP Autonomous System Number (ASN). Must be an RFC6996 private+-- ASN, either 16-bit or 32-bit. The value will be fixed for this router+-- resource. All VPN tunnels that link to this router will have the same+-- local ASN.+rbASN :: Lens' RouterBGP (Maybe Word32)+rbASN+  = lens _rbASN (\ s a -> s{_rbASN = a}) .+      mapping _Coerce++instance FromJSON RouterBGP where+        parseJSON+          = withObject "RouterBGP"+              (\ o -> RouterBGP' <$> (o .:? "asn"))++instance ToJSON RouterBGP where+        toJSON RouterBGP'{..}+          = object (catMaybes [("asn" .=) <$> _rbASN])++--+-- /See:/ 'instanceGroupManagersRecreateInstancesRequest' smart constructor.+newtype InstanceGroupManagersRecreateInstancesRequest = InstanceGroupManagersRecreateInstancesRequest'+    { _igmrirInstances :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersRecreateInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmrirInstances'+instanceGroupManagersRecreateInstancesRequest+    :: InstanceGroupManagersRecreateInstancesRequest+instanceGroupManagersRecreateInstancesRequest =+    InstanceGroupManagersRecreateInstancesRequest'+    { _igmrirInstances = Nothing+    }++-- | The URL for one or more instances to recreate.+igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]+igmrirInstances+  = lens _igmrirInstances+      (\ s a -> s{_igmrirInstances = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupManagersRecreateInstancesRequest where+        parseJSON+          = withObject+              "InstanceGroupManagersRecreateInstancesRequest"+              (\ o ->+                 InstanceGroupManagersRecreateInstancesRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON+         InstanceGroupManagersRecreateInstancesRequest where+        toJSON+          InstanceGroupManagersRecreateInstancesRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _igmrirInstances])++--+-- /See:/ 'targetSSLProxiesSetSSLCertificatesRequest' smart constructor.+newtype TargetSSLProxiesSetSSLCertificatesRequest = TargetSSLProxiesSetSSLCertificatesRequest'+    { _tspsscrSSLCertificates :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetSSLProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tspsscrSSLCertificates'+targetSSLProxiesSetSSLCertificatesRequest+    :: TargetSSLProxiesSetSSLCertificatesRequest+targetSSLProxiesSetSSLCertificatesRequest =+    TargetSSLProxiesSetSSLCertificatesRequest'+    { _tspsscrSSLCertificates = Nothing+    }++-- | New set of URLs to SslCertificate resources to associate with this+-- TargetSslProxy. Currently exactly one ssl certificate must be specified.+tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]+tspsscrSSLCertificates+  = lens _tspsscrSSLCertificates+      (\ s a -> s{_tspsscrSSLCertificates = a})+      . _Default+      . _Coerce++instance FromJSON+         TargetSSLProxiesSetSSLCertificatesRequest where+        parseJSON+          = withObject+              "TargetSSLProxiesSetSSLCertificatesRequest"+              (\ o ->+                 TargetSSLProxiesSetSSLCertificatesRequest' <$>+                   (o .:? "sslCertificates" .!= mempty))++instance ToJSON+         TargetSSLProxiesSetSSLCertificatesRequest where+        toJSON TargetSSLProxiesSetSSLCertificatesRequest'{..}+          = object+              (catMaybes+                 [("sslCertificates" .=) <$> _tspsscrSSLCertificates])++--+-- /See:/ 'instancesScopedList' smart constructor.+data InstancesScopedList = InstancesScopedList'+    { _islWarning   :: !(Maybe InstancesScopedListWarning)+    , _islInstances :: !(Maybe [Instance])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'islWarning'+--+-- * 'islInstances'+instancesScopedList+    :: InstancesScopedList+instancesScopedList =+    InstancesScopedList'+    { _islWarning = Nothing+    , _islInstances = Nothing+    }++-- | [Output Only] Informational warning which replaces the list of instances+-- when the list is empty.+islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)+islWarning+  = lens _islWarning (\ s a -> s{_islWarning = a})++-- | [Output Only] List of instances contained in this scope.+islInstances :: Lens' InstancesScopedList [Instance]+islInstances+  = lens _islInstances (\ s a -> s{_islInstances = a})+      . _Default+      . _Coerce++instance FromJSON InstancesScopedList where+        parseJSON+          = withObject "InstancesScopedList"+              (\ o ->+                 InstancesScopedList' <$>+                   (o .:? "warning") <*> (o .:? "instances" .!= mempty))++instance ToJSON InstancesScopedList where+        toJSON InstancesScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _islWarning,+                  ("instances" .=) <$> _islInstances])++-- | A full or valid partial URL to a health check. For example, the+-- following are valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/beta\/projects\/project-id\/global\/httpHealthChecks\/health-check+-- - projects\/project-id\/global\/httpHealthChecks\/health-check -+-- global\/httpHealthChecks\/health-check+--+-- /See:/ 'healthCheckReference' smart constructor.+newtype HealthCheckReference = HealthCheckReference'+    { _hcrHealthCheck :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HealthCheckReference' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hcrHealthCheck'+healthCheckReference+    :: HealthCheckReference+healthCheckReference =+    HealthCheckReference'+    { _hcrHealthCheck = Nothing+    }++hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)+hcrHealthCheck+  = lens _hcrHealthCheck+      (\ s a -> s{_hcrHealthCheck = a})++instance FromJSON HealthCheckReference where+        parseJSON+          = withObject "HealthCheckReference"+              (\ o ->+                 HealthCheckReference' <$> (o .:? "healthCheck"))++instance ToJSON HealthCheckReference where+        toJSON HealthCheckReference'{..}+          = object+              (catMaybes [("healthCheck" .=) <$> _hcrHealthCheck])++-- | A map of scoped target instance lists.+--+-- /See:/ 'targetInstanceAggregatedListItems' smart constructor.+newtype TargetInstanceAggregatedListItems = TargetInstanceAggregatedListItems'+    { _tialiAddtional :: HashMap Text TargetInstancesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstanceAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tialiAddtional'+targetInstanceAggregatedListItems+    :: HashMap Text TargetInstancesScopedList -- ^ 'tialiAddtional'+    -> TargetInstanceAggregatedListItems+targetInstanceAggregatedListItems pTialiAddtional_ =+    TargetInstanceAggregatedListItems'+    { _tialiAddtional = _Coerce # pTialiAddtional_+    }++-- | Name of the scope containing this set of target instances.+tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)+tialiAddtional+  = lens _tialiAddtional+      (\ s a -> s{_tialiAddtional = a})+      . _Coerce++instance FromJSON TargetInstanceAggregatedListItems+         where+        parseJSON+          = withObject "TargetInstanceAggregatedListItems"+              (\ o ->+                 TargetInstanceAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON TargetInstanceAggregatedListItems+         where+        toJSON = toJSON . _tialiAddtional++--+-- /See:/ 'instanceGroupAggregatedList' smart constructor.+data InstanceGroupAggregatedList = InstanceGroupAggregatedList'+    { _igalNextPageToken :: !(Maybe Text)+    , _igalKind          :: !Text+    , _igalItems         :: !(Maybe InstanceGroupAggregatedListItems)+    , _igalSelfLink      :: !(Maybe Text)+    , _igalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igalNextPageToken'+--+-- * 'igalKind'+--+-- * 'igalItems'+--+-- * 'igalSelfLink'+--+-- * 'igalId'+instanceGroupAggregatedList+    :: InstanceGroupAggregatedList+instanceGroupAggregatedList =+    InstanceGroupAggregatedList'+    { _igalNextPageToken = Nothing+    , _igalKind = "compute#instanceGroupAggregatedList"+    , _igalItems = Nothing+    , _igalSelfLink = Nothing+    , _igalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)+igalNextPageToken+  = lens _igalNextPageToken+      (\ s a -> s{_igalNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupAggregatedList for aggregated lists of instance+-- groups.+igalKind :: Lens' InstanceGroupAggregatedList Text+igalKind = lens _igalKind (\ s a -> s{_igalKind = a})++-- | A map of scoped instance group lists.+igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)+igalItems+  = lens _igalItems (\ s a -> s{_igalItems = a})++-- | [Output Only] The URL for this resource type. The server generates this+-- URL.+igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)+igalSelfLink+  = lens _igalSelfLink (\ s a -> s{_igalSelfLink = a})++-- | [Output Only] A unique identifier for this aggregated list of instance+-- groups. The server generates this identifier.+igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)+igalId = lens _igalId (\ s a -> s{_igalId = a})++instance FromJSON InstanceGroupAggregatedList where+        parseJSON+          = withObject "InstanceGroupAggregatedList"+              (\ o ->+                 InstanceGroupAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#instanceGroupAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceGroupAggregatedList where+        toJSON InstanceGroupAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _igalNextPageToken,+                  Just ("kind" .= _igalKind),+                  ("items" .=) <$> _igalItems,+                  ("selfLink" .=) <$> _igalSelfLink,+                  ("id" .=) <$> _igalId])++-- | Represents a Route resource. A route specifies how certain packets+-- should be handled by the network. Routes are associated with instances+-- by tags and the set of routes for a particular instance is called its+-- routing table. For each packet leaving a instance, the system searches+-- that instance\'s routing table for a single best matching route. Routes+-- match packets by destination IP address, preferring smaller or more+-- specific ranges over larger ones. If there is a tie, the system selects+-- the route with the smallest priority value. If there is still a tie, it+-- uses the layer three and four packet headers to select just one of the+-- remaining matching routes. The packet is then forwarded as specified by+-- the nextHop field of the winning route - either to another instance+-- destination, a instance gateway or a Google Compute Engine-operated+-- gateway. Packets that do not match any route in the sending instance\'s+-- routing table are dropped.+--+-- /See:/ 'route' smart constructor.+data Route = Route'+    { _rouPriority          :: !(Maybe (Textual Word32))+    , _rouKind              :: !Text+    , _rouNextHopGateway    :: !(Maybe Text)+    , _rouNextHopNetwork    :: !(Maybe Text)+    , _rouNetwork           :: !(Maybe Text)+    , _rouWarnings          :: !(Maybe [RouteWarningsItem])+    , _rouNextHopIP         :: !(Maybe Text)+    , _rouDestRange         :: !(Maybe Text)+    , _rouSelfLink          :: !(Maybe Text)+    , _rouName              :: !(Maybe Text)+    , _rouCreationTimestamp :: !(Maybe Text)+    , _rouId                :: !(Maybe (Textual Word64))+    , _rouNextHopVPNTunnel  :: !(Maybe Text)+    , _rouDescription       :: !(Maybe Text)+    , _rouTags              :: !(Maybe [Text])+    , _rouNextHopInstance   :: !(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:+--+-- * 'rouPriority'+--+-- * 'rouKind'+--+-- * 'rouNextHopGateway'+--+-- * 'rouNextHopNetwork'+--+-- * 'rouNetwork'+--+-- * 'rouWarnings'+--+-- * 'rouNextHopIP'+--+-- * 'rouDestRange'+--+-- * 'rouSelfLink'+--+-- * 'rouName'+--+-- * 'rouCreationTimestamp'+--+-- * 'rouId'+--+-- * 'rouNextHopVPNTunnel'+--+-- * 'rouDescription'+--+-- * 'rouTags'+--+-- * 'rouNextHopInstance'+route+    :: Route+route =+    Route'+    { _rouPriority = Nothing+    , _rouKind = "compute#route"+    , _rouNextHopGateway = Nothing+    , _rouNextHopNetwork = Nothing+    , _rouNetwork = Nothing+    , _rouWarnings = Nothing+    , _rouNextHopIP = Nothing+    , _rouDestRange = Nothing+    , _rouSelfLink = Nothing+    , _rouName = Nothing+    , _rouCreationTimestamp = Nothing+    , _rouId = Nothing+    , _rouNextHopVPNTunnel = Nothing+    , _rouDescription = Nothing+    , _rouTags = Nothing+    , _rouNextHopInstance = Nothing+    }++-- | The priority of this route. Priority is used to break ties in cases+-- where there is more than one matching route of equal prefix length. In+-- the case of two routes with equal prefix length, the one with the+-- lowest-numbered priority value wins. Default value is 1000. Valid range+-- is 0 through 65535.+rouPriority :: Lens' Route (Maybe Word32)+rouPriority+  = lens _rouPriority (\ s a -> s{_rouPriority = a}) .+      mapping _Coerce++-- | [Output Only] Type of this resource. Always compute#routes for Route+-- resources.+rouKind :: Lens' Route Text+rouKind = lens _rouKind (\ s a -> s{_rouKind = 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+rouNextHopGateway :: Lens' Route (Maybe Text)+rouNextHopGateway+  = lens _rouNextHopGateway+      (\ s a -> s{_rouNextHopGateway = a})++-- | The URL of the local network if it should handle matching packets.+rouNextHopNetwork :: Lens' Route (Maybe Text)+rouNextHopNetwork+  = lens _rouNextHopNetwork+      (\ s a -> s{_rouNextHopNetwork = a})++-- | Fully-qualified URL of the network that this route applies to.+rouNetwork :: Lens' Route (Maybe Text)+rouNetwork+  = lens _rouNetwork (\ s a -> s{_rouNetwork = a})++-- | [Output Only] If potential misconfigurations are detected for this+-- route, this field will be populated with warning messages.+rouWarnings :: Lens' Route [RouteWarningsItem]+rouWarnings+  = lens _rouWarnings (\ s a -> s{_rouWarnings = a}) .+      _Default+      . _Coerce++-- | The network IP address of an instance that should handle matching+-- packets.+rouNextHopIP :: Lens' Route (Maybe Text)+rouNextHopIP+  = lens _rouNextHopIP (\ s a -> s{_rouNextHopIP = a})++-- | The destination range of outgoing packets that this route applies to.+rouDestRange :: Lens' Route (Maybe Text)+rouDestRange+  = lens _rouDestRange (\ s a -> s{_rouDestRange = a})++-- | [Output Only] Server-defined fully-qualified URL for this resource.+rouSelfLink :: Lens' Route (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' Route (Maybe Text)+rouName = lens _rouName (\ s a -> s{_rouName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+rouCreationTimestamp :: Lens' Route (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' Route (Maybe Word64)+rouId+  = lens _rouId (\ s a -> s{_rouId = a}) .+      mapping _Coerce++-- | The URL to a VpnTunnel that should handle matching packets.+rouNextHopVPNTunnel :: Lens' Route (Maybe Text)+rouNextHopVPNTunnel+  = lens _rouNextHopVPNTunnel+      (\ s a -> s{_rouNextHopVPNTunnel = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+rouDescription :: Lens' Route (Maybe Text)+rouDescription+  = lens _rouDescription+      (\ s a -> s{_rouDescription = a})++-- | A list of instance tags to which this route applies.+rouTags :: Lens' Route [Text]+rouTags+  = lens _rouTags (\ s a -> s{_rouTags = 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\/+rouNextHopInstance :: Lens' Route (Maybe Text)+rouNextHopInstance+  = lens _rouNextHopInstance+      (\ s a -> s{_rouNextHopInstance = a})++instance FromJSON Route where+        parseJSON+          = withObject "Route"+              (\ o ->+                 Route' <$>+                   (o .:? "priority") <*>+                     (o .:? "kind" .!= "compute#route")+                     <*> (o .:? "nextHopGateway")+                     <*> (o .:? "nextHopNetwork")+                     <*> (o .:? "network")+                     <*> (o .:? "warnings" .!= mempty)+                     <*> (o .:? "nextHopIp")+                     <*> (o .:? "destRange")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "nextHopVpnTunnel")+                     <*> (o .:? "description")+                     <*> (o .:? "tags" .!= mempty)+                     <*> (o .:? "nextHopInstance"))++instance ToJSON Route where+        toJSON Route'{..}+          = object+              (catMaybes+                 [("priority" .=) <$> _rouPriority,+                  Just ("kind" .= _rouKind),+                  ("nextHopGateway" .=) <$> _rouNextHopGateway,+                  ("nextHopNetwork" .=) <$> _rouNextHopNetwork,+                  ("network" .=) <$> _rouNetwork,+                  ("warnings" .=) <$> _rouWarnings,+                  ("nextHopIp" .=) <$> _rouNextHopIP,+                  ("destRange" .=) <$> _rouDestRange,+                  ("selfLink" .=) <$> _rouSelfLink,+                  ("name" .=) <$> _rouName,+                  ("creationTimestamp" .=) <$> _rouCreationTimestamp,+                  ("id" .=) <$> _rouId,+                  ("nextHopVpnTunnel" .=) <$> _rouNextHopVPNTunnel,+                  ("description" .=) <$> _rouDescription,+                  ("tags" .=) <$> _rouTags,+                  ("nextHopInstance" .=) <$> _rouNextHopInstance])++--+-- /See:/ 'targetVPNGatewaysScopedListWarningDataItem' smart constructor.+data TargetVPNGatewaysScopedListWarningDataItem = TargetVPNGatewaysScopedListWarningDataItem'+    { _tvgslwdiValue :: !(Maybe Text)+    , _tvgslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewaysScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgslwdiValue'+--+-- * 'tvgslwdiKey'+targetVPNGatewaysScopedListWarningDataItem+    :: TargetVPNGatewaysScopedListWarningDataItem+targetVPNGatewaysScopedListWarningDataItem =+    TargetVPNGatewaysScopedListWarningDataItem'+    { _tvgslwdiValue = Nothing+    , _tvgslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)+tvgslwdiValue+  = lens _tvgslwdiValue+      (\ s a -> s{_tvgslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)+tvgslwdiKey+  = lens _tvgslwdiKey (\ s a -> s{_tvgslwdiKey = a})++instance FromJSON+         TargetVPNGatewaysScopedListWarningDataItem where+        parseJSON+          = withObject+              "TargetVPNGatewaysScopedListWarningDataItem"+              (\ o ->+                 TargetVPNGatewaysScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON+         TargetVPNGatewaysScopedListWarningDataItem where+        toJSON+          TargetVPNGatewaysScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _tvgslwdiValue,+                  ("key" .=) <$> _tvgslwdiKey])++--+-- /See:/ 'targetHTTPSProxiesSetSSLCertificatesRequest' smart constructor.+newtype TargetHTTPSProxiesSetSSLCertificatesRequest = TargetHTTPSProxiesSetSSLCertificatesRequest'+    { _thpsscrSSLCertificates :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'thpsscrSSLCertificates'+targetHTTPSProxiesSetSSLCertificatesRequest+    :: TargetHTTPSProxiesSetSSLCertificatesRequest+targetHTTPSProxiesSetSSLCertificatesRequest =+    TargetHTTPSProxiesSetSSLCertificatesRequest'+    { _thpsscrSSLCertificates = Nothing+    }++-- | New set of SslCertificate resources to associate with this+-- TargetHttpsProxy resource. Currently exactly one SslCertificate resource+-- must be specified.+thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]+thpsscrSSLCertificates+  = lens _thpsscrSSLCertificates+      (\ s a -> s{_thpsscrSSLCertificates = a})+      . _Default+      . _Coerce++instance FromJSON+         TargetHTTPSProxiesSetSSLCertificatesRequest where+        parseJSON+          = withObject+              "TargetHTTPSProxiesSetSSLCertificatesRequest"+              (\ o ->+                 TargetHTTPSProxiesSetSSLCertificatesRequest' <$>+                   (o .:? "sslCertificates" .!= mempty))++instance ToJSON+         TargetHTTPSProxiesSetSSLCertificatesRequest where+        toJSON+          TargetHTTPSProxiesSetSSLCertificatesRequest'{..}+          = object+              (catMaybes+                 [("sslCertificates" .=) <$> _thpsscrSSLCertificates])++-- | An Instance Template resource.+--+-- /See:/ 'instanceTemplate' smart constructor.+data InstanceTemplate = InstanceTemplate'+    { _itKind              :: !Text+    , _itSelfLink          :: !(Maybe Text)+    , _itName              :: !(Maybe Text)+    , _itCreationTimestamp :: !(Maybe Text)+    , _itId                :: !(Maybe (Textual Word64))+    , _itDescription       :: !(Maybe Text)+    , _itProperties        :: !(Maybe InstanceProperties)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceTemplate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itKind'+--+-- * 'itSelfLink'+--+-- * 'itName'+--+-- * 'itCreationTimestamp'+--+-- * 'itId'+--+-- * 'itDescription'+--+-- * 'itProperties'+instanceTemplate+    :: InstanceTemplate+instanceTemplate =+    InstanceTemplate'+    { _itKind = "compute#instanceTemplate"+    , _itSelfLink = Nothing+    , _itName = Nothing+    , _itCreationTimestamp = Nothing+    , _itId = Nothing+    , _itDescription = Nothing+    , _itProperties = Nothing+    }++-- | [Output Only] The resource type, which is always+-- compute#instanceTemplate for instance templates.+itKind :: Lens' InstanceTemplate Text+itKind = lens _itKind (\ s a -> s{_itKind = a})++-- | [Output Only] The URL for this instance template. The server defines+-- this URL.+itSelfLink :: Lens' InstanceTemplate (Maybe Text)+itSelfLink+  = lens _itSelfLink (\ s a -> s{_itSelfLink = a})++-- | Name of the resource; provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+itName :: Lens' InstanceTemplate (Maybe Text)+itName = lens _itName (\ s a -> s{_itName = a})++-- | [Output Only] The creation timestamp for this instance template in+-- RFC3339 text format.+itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)+itCreationTimestamp+  = lens _itCreationTimestamp+      (\ s a -> s{_itCreationTimestamp = a})++-- | [Output Only] A unique identifier for this instance template. The server+-- defines this identifier.+itId :: Lens' InstanceTemplate (Maybe Word64)+itId+  = lens _itId (\ s a -> s{_itId = a}) .+      mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+itDescription :: Lens' InstanceTemplate (Maybe Text)+itDescription+  = lens _itDescription+      (\ s a -> s{_itDescription = a})++-- | The instance properties for this instance template.+itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)+itProperties+  = lens _itProperties (\ s a -> s{_itProperties = a})++instance FromJSON InstanceTemplate where+        parseJSON+          = withObject "InstanceTemplate"+              (\ o ->+                 InstanceTemplate' <$>+                   (o .:? "kind" .!= "compute#instanceTemplate") <*>+                     (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "description")+                     <*> (o .:? "properties"))++instance ToJSON InstanceTemplate where+        toJSON InstanceTemplate'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _itKind),+                  ("selfLink" .=) <$> _itSelfLink,+                  ("name" .=) <$> _itName,+                  ("creationTimestamp" .=) <$> _itCreationTimestamp,+                  ("id" .=) <$> _itId,+                  ("description" .=) <$> _itDescription,+                  ("properties" .=) <$> _itProperties])++-- | Contains a list of Router resources.+--+-- /See:/ 'routerList' smart constructor.+data RouterList = RouterList'+    { _rllNextPageToken :: !(Maybe Text)+    , _rllKind          :: !Text+    , _rllItems         :: !(Maybe [Router])+    , _rllSelfLink      :: !(Maybe Text)+    , _rllId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rllNextPageToken'+--+-- * 'rllKind'+--+-- * 'rllItems'+--+-- * 'rllSelfLink'+--+-- * 'rllId'+routerList+    :: RouterList+routerList =+    RouterList'+    { _rllNextPageToken = Nothing+    , _rllKind = "compute#routerList"+    , _rllItems = Nothing+    , _rllSelfLink = Nothing+    , _rllId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+rllNextPageToken :: Lens' RouterList (Maybe Text)+rllNextPageToken+  = lens _rllNextPageToken+      (\ s a -> s{_rllNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#router for routers.+rllKind :: Lens' RouterList Text+rllKind = lens _rllKind (\ s a -> s{_rllKind = a})++-- | A list of Router resources.+rllItems :: Lens' RouterList [Router]+rllItems+  = lens _rllItems (\ s a -> s{_rllItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+rllSelfLink :: Lens' RouterList (Maybe Text)+rllSelfLink+  = lens _rllSelfLink (\ s a -> s{_rllSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+rllId :: Lens' RouterList (Maybe Text)+rllId = lens _rllId (\ s a -> s{_rllId = a})++instance FromJSON RouterList where+        parseJSON+          = withObject "RouterList"+              (\ o ->+                 RouterList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#routerList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON RouterList where+        toJSON RouterList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _rllNextPageToken,+                  Just ("kind" .= _rllKind),+                  ("items" .=) <$> _rllItems,+                  ("selfLink" .=) <$> _rllSelfLink,+                  ("id" .=) <$> _rllId])++-- | A TargetSslProxy resource. This resource defines an SSL proxy.+--+-- /See:/ 'targetSSLProxy' smart constructor.+data TargetSSLProxy = TargetSSLProxy'+    { _tspSSLCertificates   :: !(Maybe [Text])+    , _tspService           :: !(Maybe Text)+    , _tspKind              :: !Text+    , _tspSelfLink          :: !(Maybe Text)+    , _tspName              :: !(Maybe Text)+    , _tspCreationTimestamp :: !(Maybe Text)+    , _tspId                :: !(Maybe (Textual Word64))+    , _tspProxyHeader       :: !(Maybe TargetSSLProxyProxyHeader)+    , _tspDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetSSLProxy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tspSSLCertificates'+--+-- * 'tspService'+--+-- * 'tspKind'+--+-- * 'tspSelfLink'+--+-- * 'tspName'+--+-- * 'tspCreationTimestamp'+--+-- * 'tspId'+--+-- * 'tspProxyHeader'+--+-- * 'tspDescription'+targetSSLProxy+    :: TargetSSLProxy+targetSSLProxy =+    TargetSSLProxy'+    { _tspSSLCertificates = Nothing+    , _tspService = Nothing+    , _tspKind = "compute#targetSslProxy"+    , _tspSelfLink = Nothing+    , _tspName = Nothing+    , _tspCreationTimestamp = Nothing+    , _tspId = Nothing+    , _tspProxyHeader = Nothing+    , _tspDescription = Nothing+    }++-- | URLs to SslCertificate resources that are used to authenticate+-- connections to Backends. Currently exactly one SSL certificate must be+-- specified.+tspSSLCertificates :: Lens' TargetSSLProxy [Text]+tspSSLCertificates+  = lens _tspSSLCertificates+      (\ s a -> s{_tspSSLCertificates = a})+      . _Default+      . _Coerce++-- | URL to the BackendService resource.+tspService :: Lens' TargetSSLProxy (Maybe Text)+tspService+  = lens _tspService (\ s a -> s{_tspService = a})++-- | [Output Only] Type of the resource. Always compute#targetSslProxy for+-- target SSL proxies.+tspKind :: Lens' TargetSSLProxy Text+tspKind = lens _tspKind (\ s a -> s{_tspKind = a})++-- | [Output Only] Server-defined URL for the resource.+tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)+tspSelfLink+  = lens _tspSelfLink (\ s a -> s{_tspSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+tspName :: Lens' TargetSSLProxy (Maybe Text)+tspName = lens _tspName (\ s a -> s{_tspName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)+tspCreationTimestamp+  = lens _tspCreationTimestamp+      (\ s a -> s{_tspCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tspId :: Lens' TargetSSLProxy (Maybe Word64)+tspId+  = lens _tspId (\ s a -> s{_tspId = a}) .+      mapping _Coerce++-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)+tspProxyHeader+  = lens _tspProxyHeader+      (\ s a -> s{_tspProxyHeader = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+tspDescription :: Lens' TargetSSLProxy (Maybe Text)+tspDescription+  = lens _tspDescription+      (\ s a -> s{_tspDescription = a})++instance FromJSON TargetSSLProxy where+        parseJSON+          = withObject "TargetSSLProxy"+              (\ o ->+                 TargetSSLProxy' <$>+                   (o .:? "sslCertificates" .!= mempty) <*>+                     (o .:? "service")+                     <*> (o .:? "kind" .!= "compute#targetSslProxy")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "proxyHeader")+                     <*> (o .:? "description"))++instance ToJSON TargetSSLProxy where+        toJSON TargetSSLProxy'{..}+          = object+              (catMaybes+                 [("sslCertificates" .=) <$> _tspSSLCertificates,+                  ("service" .=) <$> _tspService,+                  Just ("kind" .= _tspKind),+                  ("selfLink" .=) <$> _tspSelfLink,+                  ("name" .=) <$> _tspName,+                  ("creationTimestamp" .=) <$> _tspCreationTimestamp,+                  ("id" .=) <$> _tspId,+                  ("proxyHeader" .=) <$> _tspProxyHeader,+                  ("description" .=) <$> _tspDescription])++-- | Represents a Target VPN gateway resource.+--+-- /See:/ 'targetVPNGateway' smart constructor.+data TargetVPNGateway = TargetVPNGateway'+    { _tvgStatus            :: !(Maybe TargetVPNGatewayStatus)+    , _tvgKind              :: !Text+    , _tvgNetwork           :: !(Maybe Text)+    , _tvgSelfLink          :: !(Maybe Text)+    , _tvgName              :: !(Maybe Text)+    , _tvgCreationTimestamp :: !(Maybe Text)+    , _tvgId                :: !(Maybe (Textual Word64))+    , _tvgRegion            :: !(Maybe Text)+    , _tvgTunnels           :: !(Maybe [Text])+    , _tvgDescription       :: !(Maybe Text)+    , _tvgForwardingRules   :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGateway' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgStatus'+--+-- * 'tvgKind'+--+-- * 'tvgNetwork'+--+-- * 'tvgSelfLink'+--+-- * 'tvgName'+--+-- * 'tvgCreationTimestamp'+--+-- * 'tvgId'+--+-- * 'tvgRegion'+--+-- * 'tvgTunnels'+--+-- * 'tvgDescription'+--+-- * 'tvgForwardingRules'+targetVPNGateway+    :: TargetVPNGateway+targetVPNGateway =+    TargetVPNGateway'+    { _tvgStatus = Nothing+    , _tvgKind = "compute#targetVpnGateway"+    , _tvgNetwork = Nothing+    , _tvgSelfLink = Nothing+    , _tvgName = Nothing+    , _tvgCreationTimestamp = Nothing+    , _tvgId = Nothing+    , _tvgRegion = Nothing+    , _tvgTunnels = Nothing+    , _tvgDescription = Nothing+    , _tvgForwardingRules = Nothing+    }++-- | [Output Only] The status of the VPN gateway.+tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)+tvgStatus+  = lens _tvgStatus (\ s a -> s{_tvgStatus = a})++-- | [Output Only] Type of resource. Always compute#targetVpnGateway for+-- target VPN gateways.+tvgKind :: Lens' TargetVPNGateway Text+tvgKind = lens _tvgKind (\ s a -> s{_tvgKind = a})++-- | URL of the network to which this VPN gateway is attached. Provided by+-- the client when the VPN gateway is created.+tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)+tvgNetwork+  = lens _tvgNetwork (\ s a -> s{_tvgNetwork = a})++-- | [Output Only] Server-defined URL for the resource.+tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)+tvgSelfLink+  = lens _tvgSelfLink (\ s a -> s{_tvgSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+tvgName :: Lens' TargetVPNGateway (Maybe Text)+tvgName = lens _tvgName (\ s a -> s{_tvgName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)+tvgCreationTimestamp+  = lens _tvgCreationTimestamp+      (\ s a -> s{_tvgCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tvgId :: Lens' TargetVPNGateway (Maybe Word64)+tvgId+  = lens _tvgId (\ s a -> s{_tvgId = a}) .+      mapping _Coerce++-- | [Output Only] URL of the region where the target VPN gateway resides.+tvgRegion :: Lens' TargetVPNGateway (Maybe Text)+tvgRegion+  = lens _tvgRegion (\ s a -> s{_tvgRegion = a})++-- | [Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are+-- created using compute.vpntunnels.insert method and associated to a VPN+-- gateway.+tvgTunnels :: Lens' TargetVPNGateway [Text]+tvgTunnels+  = lens _tvgTunnels (\ s a -> s{_tvgTunnels = a}) .+      _Default+      . _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+tvgDescription :: Lens' TargetVPNGateway (Maybe Text)+tvgDescription+  = lens _tvgDescription+      (\ s a -> s{_tvgDescription = a})++-- | [Output Only] A list of URLs to the ForwardingRule resources.+-- ForwardingRules are created using compute.forwardingRules.insert and+-- associated to a VPN gateway.+tvgForwardingRules :: Lens' TargetVPNGateway [Text]+tvgForwardingRules+  = lens _tvgForwardingRules+      (\ s a -> s{_tvgForwardingRules = a})+      . _Default+      . _Coerce++instance FromJSON TargetVPNGateway where+        parseJSON+          = withObject "TargetVPNGateway"+              (\ o ->+                 TargetVPNGateway' <$>+                   (o .:? "status") <*>+                     (o .:? "kind" .!= "compute#targetVpnGateway")+                     <*> (o .:? "network")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "tunnels" .!= mempty)+                     <*> (o .:? "description")+                     <*> (o .:? "forwardingRules" .!= mempty))++instance ToJSON TargetVPNGateway where+        toJSON TargetVPNGateway'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _tvgStatus,+                  Just ("kind" .= _tvgKind),+                  ("network" .=) <$> _tvgNetwork,+                  ("selfLink" .=) <$> _tvgSelfLink,+                  ("name" .=) <$> _tvgName,+                  ("creationTimestamp" .=) <$> _tvgCreationTimestamp,+                  ("id" .=) <$> _tvgId, ("region" .=) <$> _tvgRegion,+                  ("tunnels" .=) <$> _tvgTunnels,+                  ("description" .=) <$> _tvgDescription,+                  ("forwardingRules" .=) <$> _tvgForwardingRules])++--+-- /See:/ 'urlMapsValidateResponse' smart constructor.+newtype URLMapsValidateResponse = URLMapsValidateResponse'+    { _umvrResult :: Maybe URLMapValidationResult+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapsValidateResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umvrResult'+urlMapsValidateResponse+    :: URLMapsValidateResponse+urlMapsValidateResponse =+    URLMapsValidateResponse'+    { _umvrResult = Nothing+    }++umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)+umvrResult+  = lens _umvrResult (\ s a -> s{_umvrResult = a})++instance FromJSON URLMapsValidateResponse where+        parseJSON+          = withObject "URLMapsValidateResponse"+              (\ o ->+                 URLMapsValidateResponse' <$> (o .:? "result"))++instance ToJSON URLMapsValidateResponse where+        toJSON URLMapsValidateResponse'{..}+          = object (catMaybes [("result" .=) <$> _umvrResult])++-- | An SslCertificate resource. This resource provides a mechanism to upload+-- an SSL key and certificate to the load balancer to serve secure+-- connections from the user.+--+-- /See:/ 'sslCertificate' smart constructor.+data SSLCertificate = SSLCertificate'+    { _scPrivateKey        :: !(Maybe Text)+    , _scKind              :: !Text+    , _scSelfLink          :: !(Maybe Text)+    , _scName              :: !(Maybe Text)+    , _scCreationTimestamp :: !(Maybe Text)+    , _scId                :: !(Maybe (Textual Word64))+    , _scCertificate       :: !(Maybe Text)+    , _scDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SSLCertificate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scPrivateKey'+--+-- * 'scKind'+--+-- * 'scSelfLink'+--+-- * 'scName'+--+-- * 'scCreationTimestamp'+--+-- * 'scId'+--+-- * 'scCertificate'+--+-- * 'scDescription'+sslCertificate+    :: SSLCertificate+sslCertificate =+    SSLCertificate'+    { _scPrivateKey = Nothing+    , _scKind = "compute#sslCertificate"+    , _scSelfLink = Nothing+    , _scName = Nothing+    , _scCreationTimestamp = Nothing+    , _scId = Nothing+    , _scCertificate = Nothing+    , _scDescription = Nothing+    }++-- | A write-only private key in PEM format. Only insert RPCs will include+-- this field.+scPrivateKey :: Lens' SSLCertificate (Maybe Text)+scPrivateKey+  = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a})++-- | [Output Only] Type of the resource. Always compute#sslCertificate for+-- SSL certificates.+scKind :: Lens' SSLCertificate Text+scKind = lens _scKind (\ s a -> s{_scKind = a})++-- | [Output only] Server-defined URL for the resource.+scSelfLink :: Lens' SSLCertificate (Maybe Text)+scSelfLink+  = lens _scSelfLink (\ s a -> s{_scSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+scName :: Lens' SSLCertificate (Maybe Text)+scName = lens _scName (\ s a -> s{_scName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)+scCreationTimestamp+  = lens _scCreationTimestamp+      (\ s a -> s{_scCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+scId :: Lens' SSLCertificate (Maybe Word64)+scId+  = lens _scId (\ s a -> s{_scId = a}) .+      mapping _Coerce++-- | A local certificate file. The certificate must be in PEM format. The+-- certificate chain must be no greater than 5 certs long. The chain must+-- include at least one intermediate cert.+scCertificate :: Lens' SSLCertificate (Maybe Text)+scCertificate+  = lens _scCertificate+      (\ s a -> s{_scCertificate = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+scDescription :: Lens' SSLCertificate (Maybe Text)+scDescription+  = lens _scDescription+      (\ s a -> s{_scDescription = a})++instance FromJSON SSLCertificate where+        parseJSON+          = withObject "SSLCertificate"+              (\ o ->+                 SSLCertificate' <$>+                   (o .:? "privateKey") <*>+                     (o .:? "kind" .!= "compute#sslCertificate")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "certificate")+                     <*> (o .:? "description"))++instance ToJSON SSLCertificate where+        toJSON SSLCertificate'{..}+          = object+              (catMaybes+                 [("privateKey" .=) <$> _scPrivateKey,+                  Just ("kind" .= _scKind),+                  ("selfLink" .=) <$> _scSelfLink,+                  ("name" .=) <$> _scName,+                  ("creationTimestamp" .=) <$> _scCreationTimestamp,+                  ("id" .=) <$> _scId,+                  ("certificate" .=) <$> _scCertificate,+                  ("description" .=) <$> _scDescription])++--+-- /See:/ 'routerStatusBGPPeerStatus' smart constructor.+data RouterStatusBGPPeerStatus = RouterStatusBGPPeerStatus'+    { _rsbpsStatus           :: !(Maybe RouterStatusBGPPeerStatusStatus)+    , _rsbpsIPAddress        :: !(Maybe Text)+    , _rsbpsState            :: !(Maybe Text)+    , _rsbpsPeerIPAddress    :: !(Maybe Text)+    , _rsbpsUptime           :: !(Maybe Text)+    , _rsbpsNumLearnedRoutes :: !(Maybe (Textual Word32))+    , _rsbpsName             :: !(Maybe Text)+    , _rsbpsUptimeSeconds    :: !(Maybe Text)+    , _rsbpsAdvertisedRoutes :: !(Maybe [Route])+    , _rsbpsLinkedVPNTunnel  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterStatusBGPPeerStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rsbpsStatus'+--+-- * 'rsbpsIPAddress'+--+-- * 'rsbpsState'+--+-- * 'rsbpsPeerIPAddress'+--+-- * 'rsbpsUptime'+--+-- * 'rsbpsNumLearnedRoutes'+--+-- * 'rsbpsName'+--+-- * 'rsbpsUptimeSeconds'+--+-- * 'rsbpsAdvertisedRoutes'+--+-- * 'rsbpsLinkedVPNTunnel'+routerStatusBGPPeerStatus+    :: RouterStatusBGPPeerStatus+routerStatusBGPPeerStatus =+    RouterStatusBGPPeerStatus'+    { _rsbpsStatus = Nothing+    , _rsbpsIPAddress = Nothing+    , _rsbpsState = Nothing+    , _rsbpsPeerIPAddress = Nothing+    , _rsbpsUptime = Nothing+    , _rsbpsNumLearnedRoutes = Nothing+    , _rsbpsName = Nothing+    , _rsbpsUptimeSeconds = Nothing+    , _rsbpsAdvertisedRoutes = Nothing+    , _rsbpsLinkedVPNTunnel = Nothing+    }++-- | Status of the BGP peer: {UP, DOWN}+rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)+rsbpsStatus+  = lens _rsbpsStatus (\ s a -> s{_rsbpsStatus = a})++-- | IP address of the local BGP interface.+rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsIPAddress+  = lens _rsbpsIPAddress+      (\ s a -> s{_rsbpsIPAddress = a})++-- | BGP state as specified in RFC1771.+rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsState+  = lens _rsbpsState (\ s a -> s{_rsbpsState = a})++-- | IP address of the remote BGP interface.+rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsPeerIPAddress+  = lens _rsbpsPeerIPAddress+      (\ s a -> s{_rsbpsPeerIPAddress = a})++-- | Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23+-- hours, 59 minutes, 59 seconds+rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsUptime+  = lens _rsbpsUptime (\ s a -> s{_rsbpsUptime = a})++-- | Number of routes learned from the remote BGP Peer.+rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)+rsbpsNumLearnedRoutes+  = lens _rsbpsNumLearnedRoutes+      (\ s a -> s{_rsbpsNumLearnedRoutes = a})+      . mapping _Coerce++-- | Name of this BGP peer. Unique within the Routers resource.+rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsName+  = lens _rsbpsName (\ s a -> s{_rsbpsName = a})++-- | Time this session has been up, in seconds. Format: 145+rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsUptimeSeconds+  = lens _rsbpsUptimeSeconds+      (\ s a -> s{_rsbpsUptimeSeconds = a})++-- | Routes that were advertised to the remote BGP peer+rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]+rsbpsAdvertisedRoutes+  = lens _rsbpsAdvertisedRoutes+      (\ s a -> s{_rsbpsAdvertisedRoutes = a})+      . _Default+      . _Coerce++-- | URL of the VPN tunnel that this BGP peer controls.+rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)+rsbpsLinkedVPNTunnel+  = lens _rsbpsLinkedVPNTunnel+      (\ s a -> s{_rsbpsLinkedVPNTunnel = a})++instance FromJSON RouterStatusBGPPeerStatus where+        parseJSON+          = withObject "RouterStatusBGPPeerStatus"+              (\ o ->+                 RouterStatusBGPPeerStatus' <$>+                   (o .:? "status") <*> (o .:? "ipAddress") <*>+                     (o .:? "state")+                     <*> (o .:? "peerIpAddress")+                     <*> (o .:? "uptime")+                     <*> (o .:? "numLearnedRoutes")+                     <*> (o .:? "name")+                     <*> (o .:? "uptimeSeconds")+                     <*> (o .:? "advertisedRoutes" .!= mempty)+                     <*> (o .:? "linkedVpnTunnel"))++instance ToJSON RouterStatusBGPPeerStatus where+        toJSON RouterStatusBGPPeerStatus'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _rsbpsStatus,+                  ("ipAddress" .=) <$> _rsbpsIPAddress,+                  ("state" .=) <$> _rsbpsState,+                  ("peerIpAddress" .=) <$> _rsbpsPeerIPAddress,+                  ("uptime" .=) <$> _rsbpsUptime,+                  ("numLearnedRoutes" .=) <$> _rsbpsNumLearnedRoutes,+                  ("name" .=) <$> _rsbpsName,+                  ("uptimeSeconds" .=) <$> _rsbpsUptimeSeconds,+                  ("advertisedRoutes" .=) <$> _rsbpsAdvertisedRoutes,+                  ("linkedVpnTunnel" .=) <$> _rsbpsLinkedVPNTunnel])++--+-- /See:/ 'urlMapReference' smart constructor.+newtype URLMapReference = URLMapReference'+    { _umrURLMap :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapReference' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umrURLMap'+urlMapReference+    :: URLMapReference+urlMapReference =+    URLMapReference'+    { _umrURLMap = Nothing+    }++umrURLMap :: Lens' URLMapReference (Maybe Text)+umrURLMap+  = lens _umrURLMap (\ s a -> s{_umrURLMap = a})++instance FromJSON URLMapReference where+        parseJSON+          = withObject "URLMapReference"+              (\ o -> URLMapReference' <$> (o .:? "urlMap"))++instance ToJSON URLMapReference where+        toJSON URLMapReference'{..}+          = object (catMaybes [("urlMap" .=) <$> _umrURLMap])++--+-- /See:/ 'targetPoolsAddHealthCheckRequest' smart constructor.+newtype TargetPoolsAddHealthCheckRequest = TargetPoolsAddHealthCheckRequest'+    { _tpahcrHealthChecks :: Maybe [HealthCheckReference]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsAddHealthCheckRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpahcrHealthChecks'+targetPoolsAddHealthCheckRequest+    :: TargetPoolsAddHealthCheckRequest+targetPoolsAddHealthCheckRequest =+    TargetPoolsAddHealthCheckRequest'+    { _tpahcrHealthChecks = Nothing+    }++-- | A list of HttpHealthCheck resources to add to the target pool.+tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]+tpahcrHealthChecks+  = lens _tpahcrHealthChecks+      (\ s a -> s{_tpahcrHealthChecks = a})+      . _Default+      . _Coerce++instance FromJSON TargetPoolsAddHealthCheckRequest+         where+        parseJSON+          = withObject "TargetPoolsAddHealthCheckRequest"+              (\ o ->+                 TargetPoolsAddHealthCheckRequest' <$>+                   (o .:? "healthChecks" .!= mempty))++instance ToJSON TargetPoolsAddHealthCheckRequest+         where+        toJSON TargetPoolsAddHealthCheckRequest'{..}+          = object+              (catMaybes+                 [("healthChecks" .=) <$> _tpahcrHealthChecks])++-- | [Output Only] A map of scoped disk lists.+--+-- /See:/ 'diskAggregatedListItems' smart constructor.+newtype DiskAggregatedListItems = DiskAggregatedListItems'+    { _daliAddtional :: HashMap Text DisksScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'daliAddtional'+diskAggregatedListItems+    :: HashMap Text DisksScopedList -- ^ 'daliAddtional'+    -> DiskAggregatedListItems+diskAggregatedListItems pDaliAddtional_ =+    DiskAggregatedListItems'+    { _daliAddtional = _Coerce # pDaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of disks.+daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)+daliAddtional+  = lens _daliAddtional+      (\ s a -> s{_daliAddtional = a})+      . _Coerce++instance FromJSON DiskAggregatedListItems where+        parseJSON+          = withObject "DiskAggregatedListItems"+              (\ o ->+                 DiskAggregatedListItems' <$> (parseJSONObject o))++instance ToJSON DiskAggregatedListItems where+        toJSON = toJSON . _daliAddtional++-- | The location in Cloud Storage and naming method of the daily usage+-- report. Contains bucket_name and report_name prefix.+--+-- /See:/ 'usageExportLocation' smart constructor.+data UsageExportLocation = UsageExportLocation'+    { _uelReportNamePrefix :: !(Maybe Text)+    , _uelBucketName       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'UsageExportLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uelReportNamePrefix'+--+-- * 'uelBucketName'+usageExportLocation+    :: UsageExportLocation+usageExportLocation =+    UsageExportLocation'+    { _uelReportNamePrefix = Nothing+    , _uelBucketName = Nothing+    }++-- | An optional prefix for the name of the usage report object stored in+-- bucketName. If not supplied, defaults to usage. The report is stored as+-- a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is+-- the day of the usage according to Pacific Time. If you supply a prefix,+-- it should conform to Cloud Storage object naming conventions.+uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)+uelReportNamePrefix+  = lens _uelReportNamePrefix+      (\ s a -> s{_uelReportNamePrefix = a})++-- | The name of an existing bucket in Cloud Storage where the usage report+-- object is stored. The Google Service Account is granted write access to+-- this bucket. This can either be the bucket name by itself, such as+-- example-bucket, or the bucket name with gs:\/\/ or+-- https:\/\/storage.googleapis.com\/ in front of it, such as+-- gs:\/\/example-bucket.+uelBucketName :: Lens' UsageExportLocation (Maybe Text)+uelBucketName+  = lens _uelBucketName+      (\ s a -> s{_uelBucketName = a})++instance FromJSON UsageExportLocation where+        parseJSON+          = withObject "UsageExportLocation"+              (\ o ->+                 UsageExportLocation' <$>+                   (o .:? "reportNamePrefix") <*> (o .:? "bucketName"))++instance ToJSON UsageExportLocation where+        toJSON UsageExportLocation'{..}+          = object+              (catMaybes+                 [("reportNamePrefix" .=) <$> _uelReportNamePrefix,+                  ("bucketName" .=) <$> _uelBucketName])++-- | Contains a list of zone resources.+--+-- /See:/ 'zoneList' smart constructor.+data ZoneList = ZoneList'+    { _zlNextPageToken :: !(Maybe Text)+    , _zlKind          :: !Text+    , _zlItems         :: !(Maybe [Zone])+    , _zlSelfLink      :: !(Maybe Text)+    , _zlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ZoneList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'zlNextPageToken'+--+-- * 'zlKind'+--+-- * 'zlItems'+--+-- * 'zlSelfLink'+--+-- * 'zlId'+zoneList+    :: ZoneList+zoneList =+    ZoneList'+    { _zlNextPageToken = Nothing+    , _zlKind = "compute#zoneList"+    , _zlItems = Nothing+    , _zlSelfLink = Nothing+    , _zlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+zlNextPageToken :: Lens' ZoneList (Maybe Text)+zlNextPageToken+  = lens _zlNextPageToken+      (\ s a -> s{_zlNextPageToken = a})++-- | Type of resource.+zlKind :: Lens' ZoneList Text+zlKind = lens _zlKind (\ s a -> s{_zlKind = a})++-- | [Output Only] A list of Zone resources.+zlItems :: Lens' ZoneList [Zone]+zlItems+  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+zlSelfLink :: Lens' ZoneList (Maybe Text)+zlSelfLink+  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})++-- | [Output Only] Unique identifier for the resource; defined by the server.+zlId :: Lens' ZoneList (Maybe Text)+zlId = lens _zlId (\ s a -> s{_zlId = a})++instance FromJSON ZoneList where+        parseJSON+          = withObject "ZoneList"+              (\ o ->+                 ZoneList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#zoneList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON ZoneList where+        toJSON ZoneList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _zlNextPageToken,+                  Just ("kind" .= _zlKind), ("items" .=) <$> _zlItems,+                  ("selfLink" .=) <$> _zlSelfLink,+                  ("id" .=) <$> _zlId])++--+-- /See:/ 'routerBGPPeer' smart constructor.+data RouterBGPPeer = RouterBGPPeer'+    { _rbpIPAddress               :: !(Maybe Text)+    , _rbpInterfaceName           :: !(Maybe Text)+    , _rbpPeerIPAddress           :: !(Maybe Text)+    , _rbpAdvertisedRoutePriority :: !(Maybe (Textual Word32))+    , _rbpPeerASN                 :: !(Maybe (Textual Word32))+    , _rbpName                    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterBGPPeer' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rbpIPAddress'+--+-- * 'rbpInterfaceName'+--+-- * 'rbpPeerIPAddress'+--+-- * 'rbpAdvertisedRoutePriority'+--+-- * 'rbpPeerASN'+--+-- * 'rbpName'+routerBGPPeer+    :: RouterBGPPeer+routerBGPPeer =+    RouterBGPPeer'+    { _rbpIPAddress = Nothing+    , _rbpInterfaceName = Nothing+    , _rbpPeerIPAddress = Nothing+    , _rbpAdvertisedRoutePriority = Nothing+    , _rbpPeerASN = Nothing+    , _rbpName = Nothing+    }++-- | IP address of the interface inside Google Cloud Platform.+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.+rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)+rbpPeerIPAddress+  = lens _rbpPeerIPAddress+      (\ s a -> s{_rbpPeerIPAddress = a})++-- | The priority of routes advertised to this BGP peer. In the case where+-- there is more than one matching route of maximum length, the routes with+-- lowest priority value win.+rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)+rbpAdvertisedRoutePriority+  = lens _rbpAdvertisedRoutePriority+      (\ s a -> s{_rbpAdvertisedRoutePriority = a})+      . mapping _Coerce++-- | Peer BGP Autonomous System Number (ASN). For VPN use case, this value+-- can be different for every tunnel.+rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)+rbpPeerASN+  = lens _rbpPeerASN (\ s a -> s{_rbpPeerASN = a}) .+      mapping _Coerce++-- | Name of this BGP peer. The name must be 1-63 characters long and comply+-- with RFC1035.+rbpName :: Lens' RouterBGPPeer (Maybe Text)+rbpName = lens _rbpName (\ s a -> s{_rbpName = a})++instance FromJSON RouterBGPPeer where+        parseJSON+          = withObject "RouterBGPPeer"+              (\ o ->+                 RouterBGPPeer' <$>+                   (o .:? "ipAddress") <*> (o .:? "interfaceName") <*>+                     (o .:? "peerIpAddress")+                     <*> (o .:? "advertisedRoutePriority")+                     <*> (o .:? "peerAsn")+                     <*> (o .:? "name"))++instance ToJSON RouterBGPPeer where+        toJSON RouterBGPPeer'{..}+          = object+              (catMaybes+                 [("ipAddress" .=) <$> _rbpIPAddress,+                  ("interfaceName" .=) <$> _rbpInterfaceName,+                  ("peerIpAddress" .=) <$> _rbpPeerIPAddress,+                  ("advertisedRoutePriority" .=) <$>+                    _rbpAdvertisedRoutePriority,+                  ("peerAsn" .=) <$> _rbpPeerASN,+                  ("name" .=) <$> _rbpName])++--+-- /See:/ 'managedInstance' smart constructor.+data ManagedInstance = ManagedInstance'+    { _miLastAttempt    :: !(Maybe ManagedInstanceLastAttempt)+    , _miCurrentAction  :: !(Maybe ManagedInstanceCurrentAction)+    , _miId             :: !(Maybe (Textual Word64))+    , _miInstanceStatus :: !(Maybe ManagedInstanceInstanceStatus)+    , _miInstance       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ManagedInstance' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'miLastAttempt'+--+-- * 'miCurrentAction'+--+-- * 'miId'+--+-- * 'miInstanceStatus'+--+-- * 'miInstance'+managedInstance+    :: ManagedInstance+managedInstance =+    ManagedInstance'+    { _miLastAttempt = Nothing+    , _miCurrentAction = Nothing+    , _miId = Nothing+    , _miInstanceStatus = Nothing+    , _miInstance = Nothing+    }++-- | [Output Only] Information about the last attempt to create or delete the+-- instance.+miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)+miLastAttempt+  = lens _miLastAttempt+      (\ s a -> s{_miLastAttempt = a})++-- | [Output Only] The current action that the managed instance group has+-- scheduled for the instance. Possible values: - NONE The instance is+-- running, and the managed instance group does not have any scheduled+-- actions for this instance. - CREATING The managed instance group is+-- creating this instance. If the group fails to create this instance, it+-- will try again until it is successful. - CREATING_WITHOUT_RETRIES The+-- managed instance group is attempting to create this instance only once.+-- If the group fails to create this instance, it does not try again and+-- the group\'s targetSize value is decreased instead. - RECREATING The+-- managed instance group is recreating this instance. - DELETING The+-- managed instance group is permanently deleting this instance. -+-- ABANDONING The managed instance group is abandoning this instance. The+-- instance will be removed from the instance group and from any target+-- pools that are associated with this group. - RESTARTING The managed+-- instance group is restarting the instance. - REFRESHING The managed+-- instance group is applying configuration changes to the instance without+-- stopping it. For example, the group can update the target pool list for+-- an instance without stopping that instance.+miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)+miCurrentAction+  = lens _miCurrentAction+      (\ s a -> s{_miCurrentAction = a})++-- | [Output only] The unique identifier for this resource. This field is+-- empty when instance does not exist.+miId :: Lens' ManagedInstance (Maybe Word64)+miId+  = lens _miId (\ s a -> s{_miId = a}) .+      mapping _Coerce++-- | [Output Only] The status of the instance. This field is empty when the+-- instance does not exist.+miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)+miInstanceStatus+  = lens _miInstanceStatus+      (\ s a -> s{_miInstanceStatus = a})++-- | [Output Only] The URL of the instance. The URL can exist even if the+-- instance has not yet been created.+miInstance :: Lens' ManagedInstance (Maybe Text)+miInstance+  = lens _miInstance (\ s a -> s{_miInstance = a})++instance FromJSON ManagedInstance where+        parseJSON+          = withObject "ManagedInstance"+              (\ o ->+                 ManagedInstance' <$>+                   (o .:? "lastAttempt") <*> (o .:? "currentAction") <*>+                     (o .:? "id")+                     <*> (o .:? "instanceStatus")+                     <*> (o .:? "instance"))++instance ToJSON ManagedInstance where+        toJSON ManagedInstance'{..}+          = object+              (catMaybes+                 [("lastAttempt" .=) <$> _miLastAttempt,+                  ("currentAction" .=) <$> _miCurrentAction,+                  ("id" .=) <$> _miId,+                  ("instanceStatus" .=) <$> _miInstanceStatus,+                  ("instance" .=) <$> _miInstance])++-- | [Output Only] A map of filtered managed instance group lists.+--+-- /See:/ 'instanceGroupManagerAggregatedListItems' smart constructor.+newtype InstanceGroupManagerAggregatedListItems = InstanceGroupManagerAggregatedListItems'+    { _igmaliAddtional :: HashMap Text InstanceGroupManagersScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagerAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmaliAddtional'+instanceGroupManagerAggregatedListItems+    :: HashMap Text InstanceGroupManagersScopedList -- ^ 'igmaliAddtional'+    -> InstanceGroupManagerAggregatedListItems+instanceGroupManagerAggregatedListItems pIgmaliAddtional_ =+    InstanceGroupManagerAggregatedListItems'+    { _igmaliAddtional = _Coerce # pIgmaliAddtional_+    }++-- | [Output Only] The name of the scope that contains this set of managed+-- instance groups.+igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)+igmaliAddtional+  = lens _igmaliAddtional+      (\ s a -> s{_igmaliAddtional = a})+      . _Coerce++instance FromJSON+         InstanceGroupManagerAggregatedListItems where+        parseJSON+          = withObject+              "InstanceGroupManagerAggregatedListItems"+              (\ o ->+                 InstanceGroupManagerAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON+         InstanceGroupManagerAggregatedListItems where+        toJSON = toJSON . _igmaliAddtional++--+-- /See:/ 'instanceGroupManagersDeleteInstancesRequest' smart constructor.+newtype InstanceGroupManagersDeleteInstancesRequest = InstanceGroupManagersDeleteInstancesRequest'+    { _igmdirInstances :: Maybe [Text]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmdirInstances'+instanceGroupManagersDeleteInstancesRequest+    :: InstanceGroupManagersDeleteInstancesRequest+instanceGroupManagersDeleteInstancesRequest =+    InstanceGroupManagersDeleteInstancesRequest'+    { _igmdirInstances = Nothing+    }++-- | The list of instances to delete from this managed instance group.+-- Specify one or more instance URLs.+igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]+igmdirInstances+  = lens _igmdirInstances+      (\ s a -> s{_igmdirInstances = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupManagersDeleteInstancesRequest where+        parseJSON+          = withObject+              "InstanceGroupManagersDeleteInstancesRequest"+              (\ o ->+                 InstanceGroupManagersDeleteInstancesRequest' <$>+                   (o .:? "instances" .!= mempty))++instance ToJSON+         InstanceGroupManagersDeleteInstancesRequest where+        toJSON+          InstanceGroupManagersDeleteInstancesRequest'{..}+          = object+              (catMaybes [("instances" .=) <$> _igmdirInstances])++-- | Message containing information of one individual backend.+--+-- /See:/ 'backend' smart constructor.+data Backend = Backend'+    { _bGroup                     :: !(Maybe Text)+    , _bBalancingMode             :: !(Maybe BackendBalancingMode)+    , _bMaxUtilization            :: !(Maybe (Textual Double))+    , _bMaxRate                   :: !(Maybe (Textual Int32))+    , _bMaxConnections            :: !(Maybe (Textual Int32))+    , _bMaxConnectionsPerInstance :: !(Maybe (Textual Int32))+    , _bMaxRatePerInstance        :: !(Maybe (Textual Double))+    , _bDescription               :: !(Maybe Text)+    , _bCapacityScaler            :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Backend' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bGroup'+--+-- * 'bBalancingMode'+--+-- * 'bMaxUtilization'+--+-- * 'bMaxRate'+--+-- * 'bMaxConnections'+--+-- * 'bMaxConnectionsPerInstance'+--+-- * 'bMaxRatePerInstance'+--+-- * 'bDescription'+--+-- * 'bCapacityScaler'+backend+    :: Backend+backend =+    Backend'+    { _bGroup = Nothing+    , _bBalancingMode = Nothing+    , _bMaxUtilization = Nothing+    , _bMaxRate = Nothing+    , _bMaxConnections = Nothing+    , _bMaxConnectionsPerInstance = Nothing+    , _bMaxRatePerInstance = Nothing+    , _bDescription = Nothing+    , _bCapacityScaler = Nothing+    }++-- | The fully-qualified URL of a zonal Instance Group resource. This+-- instance group defines the list of instances that serve traffic. Member+-- virtual machine instances from each instance group must live in the same+-- zone as the instance group itself. No two backends in a backend service+-- are allowed to use same Instance Group resource. Note that you must+-- specify an Instance Group resource using the fully-qualified URL, rather+-- than a partial URL. When the BackendService has load balancing scheme+-- INTERNAL, the instance group must be in a zone within the same region as+-- the BackendService.+bGroup :: Lens' Backend (Maybe Text)+bGroup = lens _bGroup (\ s a -> s{_bGroup = a})++-- | Specifies the balancing mode for this backend. For global HTTP(S) or+-- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are+-- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). This+-- cannot be used for internal load balancing.+bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)+bBalancingMode+  = lens _bBalancingMode+      (\ s a -> s{_bBalancingMode = a})++-- | Used when balancingMode is UTILIZATION. This ratio defines the CPU+-- utilization target for the group. The default is 0.8. Valid range is+-- [0.0, 1.0]. This cannot be used for internal load balancing.+bMaxUtilization :: Lens' Backend (Maybe Double)+bMaxUtilization+  = lens _bMaxUtilization+      (\ s a -> s{_bMaxUtilization = a})+      . mapping _Coerce++-- | The max requests per second (RPS) of the group. Can be used with either+-- RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE+-- mode, either maxRate or maxRatePerInstance must be set. This cannot be+-- used for internal load balancing.+bMaxRate :: Lens' Backend (Maybe Int32)+bMaxRate+  = lens _bMaxRate (\ s a -> s{_bMaxRate = a}) .+      mapping _Coerce++-- | The max number of simultaneous connections for the group. Can be used+-- with either CONNECTION or UTILIZATION balancing modes. For CONNECTION+-- mode, either maxConnections or maxConnectionsPerInstance must be set.+-- This cannot be used for internal load balancing.+bMaxConnections :: Lens' Backend (Maybe Int32)+bMaxConnections+  = lens _bMaxConnections+      (\ s a -> s{_bMaxConnections = a})+      . mapping _Coerce++-- | The max number of simultaneous connections that a single backend+-- instance can handle. This is used to calculate the capacity of the+-- group. Can be used in either CONNECTION or UTILIZATION balancing modes.+-- For CONNECTION mode, either maxConnections or maxConnectionsPerInstance+-- must be set. This cannot be used for internal load balancing.+bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)+bMaxConnectionsPerInstance+  = lens _bMaxConnectionsPerInstance+      (\ s a -> s{_bMaxConnectionsPerInstance = a})+      . mapping _Coerce++-- | The max requests per second (RPS) that a single backend instance can+-- handle.This is used to calculate the capacity of the group. Can be used+-- in either balancing mode. For RATE mode, either maxRate or+-- maxRatePerInstance must be set. This cannot be used for internal load+-- balancing.+bMaxRatePerInstance :: Lens' Backend (Maybe Double)+bMaxRatePerInstance+  = lens _bMaxRatePerInstance+      (\ s a -> s{_bMaxRatePerInstance = a})+      . mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+bDescription :: Lens' Backend (Maybe Text)+bDescription+  = lens _bDescription (\ s a -> s{_bDescription = a})++-- | A multiplier applied to the group\'s maximum servicing capacity (based+-- on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the+-- group will serve up to 100% of its configured capacity (depending on+-- balancingMode). A setting of 0 means the group is completely drained,+-- offering 0% of its available Capacity. Valid range is [0.0,1.0]. This+-- cannot be used for internal load balancing.+bCapacityScaler :: Lens' Backend (Maybe Double)+bCapacityScaler+  = lens _bCapacityScaler+      (\ s a -> s{_bCapacityScaler = a})+      . mapping _Coerce++instance FromJSON Backend where+        parseJSON+          = withObject "Backend"+              (\ o ->+                 Backend' <$>+                   (o .:? "group") <*> (o .:? "balancingMode") <*>+                     (o .:? "maxUtilization")+                     <*> (o .:? "maxRate")+                     <*> (o .:? "maxConnections")+                     <*> (o .:? "maxConnectionsPerInstance")+                     <*> (o .:? "maxRatePerInstance")+                     <*> (o .:? "description")+                     <*> (o .:? "capacityScaler"))++instance ToJSON Backend where+        toJSON Backend'{..}+          = object+              (catMaybes+                 [("group" .=) <$> _bGroup,+                  ("balancingMode" .=) <$> _bBalancingMode,+                  ("maxUtilization" .=) <$> _bMaxUtilization,+                  ("maxRate" .=) <$> _bMaxRate,+                  ("maxConnections" .=) <$> _bMaxConnections,+                  ("maxConnectionsPerInstance" .=) <$>+                    _bMaxConnectionsPerInstance,+                  ("maxRatePerInstance" .=) <$> _bMaxRatePerInstance,+                  ("description" .=) <$> _bDescription,+                  ("capacityScaler" .=) <$> _bCapacityScaler])++-- | [Output Only] Informational warning which replaces the list of addresses+-- when the list is empty.+--+-- /See:/ 'targetVPNGatewaysScopedListWarning' smart constructor.+data TargetVPNGatewaysScopedListWarning = TargetVPNGatewaysScopedListWarning'+    { _tvgslwData    :: !(Maybe [TargetVPNGatewaysScopedListWarningDataItem])+    , _tvgslwCode    :: !(Maybe TargetVPNGatewaysScopedListWarningCode)+    , _tvgslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewaysScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgslwData'+--+-- * 'tvgslwCode'+--+-- * 'tvgslwMessage'+targetVPNGatewaysScopedListWarning+    :: TargetVPNGatewaysScopedListWarning+targetVPNGatewaysScopedListWarning =+    TargetVPNGatewaysScopedListWarning'+    { _tvgslwData = Nothing+    , _tvgslwCode = Nothing+    , _tvgslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]+tvgslwData+  = lens _tvgslwData (\ s a -> s{_tvgslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)+tvgslwCode+  = lens _tvgslwCode (\ s a -> s{_tvgslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)+tvgslwMessage+  = lens _tvgslwMessage+      (\ s a -> s{_tvgslwMessage = a})++instance FromJSON TargetVPNGatewaysScopedListWarning+         where+        parseJSON+          = withObject "TargetVPNGatewaysScopedListWarning"+              (\ o ->+                 TargetVPNGatewaysScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON TargetVPNGatewaysScopedListWarning+         where+        toJSON TargetVPNGatewaysScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _tvgslwData,+                  ("code" .=) <$> _tvgslwCode,+                  ("message" .=) <$> _tvgslwMessage])++-- | Contains a list of addresses.+--+-- /See:/ 'addressList' smart constructor.+data AddressList = AddressList'+    { _alNextPageToken :: !(Maybe Text)+    , _alKind          :: !Text+    , _alItems         :: !(Maybe [Address])+    , _alSelfLink      :: !(Maybe Text)+    , _alId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'alNextPageToken'+--+-- * 'alKind'+--+-- * 'alItems'+--+-- * 'alSelfLink'+--+-- * 'alId'+addressList+    :: AddressList+addressList =+    AddressList'+    { _alNextPageToken = Nothing+    , _alKind = "compute#addressList"+    , _alItems = Nothing+    , _alSelfLink = Nothing+    , _alId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+alNextPageToken :: Lens' AddressList (Maybe Text)+alNextPageToken+  = lens _alNextPageToken+      (\ s a -> s{_alNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#addressList for lists of+-- addresses.+alKind :: Lens' AddressList Text+alKind = lens _alKind (\ s a -> s{_alKind = a})++-- | [Output Only] A list of addresses.+alItems :: Lens' AddressList [Address]+alItems+  = lens _alItems (\ s a -> s{_alItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for the resource.+alSelfLink :: Lens' AddressList (Maybe Text)+alSelfLink+  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+alId :: Lens' AddressList (Maybe Text)+alId = lens _alId (\ s a -> s{_alId = a})++instance FromJSON AddressList where+        parseJSON+          = withObject "AddressList"+              (\ o ->+                 AddressList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#addressList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON AddressList where+        toJSON AddressList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _alNextPageToken,+                  Just ("kind" .= _alKind), ("items" .=) <$> _alItems,+                  ("selfLink" .=) <$> _alSelfLink,+                  ("id" .=) <$> _alId])++-- | A map of scoped forwarding rule lists.+--+-- /See:/ 'forwardingRuleAggregatedListItems' smart constructor.+newtype ForwardingRuleAggregatedListItems = ForwardingRuleAggregatedListItems'+    { _fraliAddtional :: HashMap Text ForwardingRulesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRuleAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fraliAddtional'+forwardingRuleAggregatedListItems+    :: HashMap Text ForwardingRulesScopedList -- ^ 'fraliAddtional'+    -> ForwardingRuleAggregatedListItems+forwardingRuleAggregatedListItems pFraliAddtional_ =+    ForwardingRuleAggregatedListItems'+    { _fraliAddtional = _Coerce # pFraliAddtional_+    }++-- | Name of the scope containing this set of addresses.+fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)+fraliAddtional+  = lens _fraliAddtional+      (\ s a -> s{_fraliAddtional = a})+      . _Coerce++instance FromJSON ForwardingRuleAggregatedListItems+         where+        parseJSON+          = withObject "ForwardingRuleAggregatedListItems"+              (\ o ->+                 ForwardingRuleAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON ForwardingRuleAggregatedListItems+         where+        toJSON = toJSON . _fraliAddtional++-- | [Output Only] A map of scoped operation lists.+--+-- /See:/ 'operationAggregatedListItems' smart constructor.+newtype OperationAggregatedListItems = OperationAggregatedListItems'+    { _oaliAddtional :: HashMap Text OperationsScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oaliAddtional'+operationAggregatedListItems+    :: HashMap Text OperationsScopedList -- ^ 'oaliAddtional'+    -> OperationAggregatedListItems+operationAggregatedListItems pOaliAddtional_ =+    OperationAggregatedListItems'+    { _oaliAddtional = _Coerce # pOaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of operations.+oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)+oaliAddtional+  = lens _oaliAddtional+      (\ s a -> s{_oaliAddtional = a})+      . _Coerce++instance FromJSON OperationAggregatedListItems where+        parseJSON+          = withObject "OperationAggregatedListItems"+              (\ o ->+                 OperationAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON OperationAggregatedListItems where+        toJSON = toJSON . _oaliAddtional++--+-- /See:/ 'instanceGroupManagerActionsSummary' smart constructor.+data InstanceGroupManagerActionsSummary = InstanceGroupManagerActionsSummary'+    { _igmasDeleting               :: !(Maybe (Textual Int32))+    , _igmasRestarting             :: !(Maybe (Textual Int32))+    , _igmasNone                   :: !(Maybe (Textual Int32))+    , _igmasCreating               :: !(Maybe (Textual Int32))+    , _igmasRefreshing             :: !(Maybe (Textual Int32))+    , _igmasCreatingWithoutRetries :: !(Maybe (Textual Int32))+    , _igmasRecreating             :: !(Maybe (Textual Int32))+    , _igmasAbandoning             :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagerActionsSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmasDeleting'+--+-- * 'igmasRestarting'+--+-- * 'igmasNone'+--+-- * 'igmasCreating'+--+-- * 'igmasRefreshing'+--+-- * 'igmasCreatingWithoutRetries'+--+-- * 'igmasRecreating'+--+-- * 'igmasAbandoning'+instanceGroupManagerActionsSummary+    :: InstanceGroupManagerActionsSummary+instanceGroupManagerActionsSummary =+    InstanceGroupManagerActionsSummary'+    { _igmasDeleting = Nothing+    , _igmasRestarting = Nothing+    , _igmasNone = Nothing+    , _igmasCreating = Nothing+    , _igmasRefreshing = Nothing+    , _igmasCreatingWithoutRetries = Nothing+    , _igmasRecreating = Nothing+    , _igmasAbandoning = Nothing+    }++-- | [Output Only] The number of instances in the managed instance group that+-- are scheduled to be deleted or are currently being deleted.+igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasDeleting+  = lens _igmasDeleting+      (\ s a -> s{_igmasDeleting = a})+      . mapping _Coerce++-- | [Output Only] The number of instances in the managed instance group that+-- are scheduled to be restarted or are currently being restarted.+igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasRestarting+  = lens _igmasRestarting+      (\ s a -> s{_igmasRestarting = a})+      . mapping _Coerce++-- | [Output Only] The number of instances in the managed instance group that+-- are running and have no scheduled actions.+igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasNone+  = lens _igmasNone (\ s a -> s{_igmasNone = a}) .+      mapping _Coerce++-- | [Output Only] The number of instances in the managed instance group that+-- are scheduled to be created or are currently being created. If the group+-- fails to create any of these instances, it tries again until it creates+-- the instance successfully. If you have disabled creation retries, this+-- field will not be populated; instead, the creatingWithoutRetries field+-- will be populated.+igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasCreating+  = lens _igmasCreating+      (\ s a -> s{_igmasCreating = a})+      . mapping _Coerce++-- | [Output Only] The number of instances in the managed instance group that+-- are being reconfigured with properties that do not require a restart or+-- a recreate action. For example, setting or removing target pools for the+-- instance.+igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasRefreshing+  = lens _igmasRefreshing+      (\ s a -> s{_igmasRefreshing = a})+      . mapping _Coerce++-- | [Output Only] The number of instances that the managed instance group+-- will attempt to create. The group attempts to create each instance only+-- once. If the group fails to create any of these instances, it decreases+-- the group\'s targetSize value accordingly.+igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasCreatingWithoutRetries+  = lens _igmasCreatingWithoutRetries+      (\ s a -> s{_igmasCreatingWithoutRetries = a})+      . mapping _Coerce++-- | [Output Only] The number of instances in the managed instance group that+-- are scheduled to be recreated or are currently being being recreated.+-- Recreating an instance deletes the existing root persistent disk and+-- creates a new disk from the image that is defined in the instance+-- template.+igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasRecreating+  = lens _igmasRecreating+      (\ s a -> s{_igmasRecreating = a})+      . mapping _Coerce++-- | [Output Only] The total number of instances in the managed instance+-- group that are scheduled to be abandoned. Abandoning an instance removes+-- it from the managed instance group without deleting it.+igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)+igmasAbandoning+  = lens _igmasAbandoning+      (\ s a -> s{_igmasAbandoning = a})+      . mapping _Coerce++instance FromJSON InstanceGroupManagerActionsSummary+         where+        parseJSON+          = withObject "InstanceGroupManagerActionsSummary"+              (\ o ->+                 InstanceGroupManagerActionsSummary' <$>+                   (o .:? "deleting") <*> (o .:? "restarting") <*>+                     (o .:? "none")+                     <*> (o .:? "creating")+                     <*> (o .:? "refreshing")+                     <*> (o .:? "creatingWithoutRetries")+                     <*> (o .:? "recreating")+                     <*> (o .:? "abandoning"))++instance ToJSON InstanceGroupManagerActionsSummary+         where+        toJSON InstanceGroupManagerActionsSummary'{..}+          = object+              (catMaybes+                 [("deleting" .=) <$> _igmasDeleting,+                  ("restarting" .=) <$> _igmasRestarting,+                  ("none" .=) <$> _igmasNone,+                  ("creating" .=) <$> _igmasCreating,+                  ("refreshing" .=) <$> _igmasRefreshing,+                  ("creatingWithoutRetries" .=) <$>+                    _igmasCreatingWithoutRetries,+                  ("recreating" .=) <$> _igmasRecreating,+                  ("abandoning" .=) <$> _igmasAbandoning])++-- | A service account.+--+-- /See:/ 'serviceAccount' smart constructor.+data ServiceAccount = ServiceAccount'+    { _saEmail  :: !(Maybe Text)+    , _saScopes :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'saEmail'+--+-- * 'saScopes'+serviceAccount+    :: ServiceAccount+serviceAccount =+    ServiceAccount'+    { _saEmail = Nothing+    , _saScopes = Nothing+    }++-- | Email address of the service account.+saEmail :: Lens' ServiceAccount (Maybe Text)+saEmail = lens _saEmail (\ s a -> s{_saEmail = a})++-- | The list of scopes to be made available for this service account.+saScopes :: Lens' ServiceAccount [Text]+saScopes+  = lens _saScopes (\ s a -> s{_saScopes = a}) .+      _Default+      . _Coerce++instance FromJSON ServiceAccount where+        parseJSON+          = withObject "ServiceAccount"+              (\ o ->+                 ServiceAccount' <$>+                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))++instance ToJSON ServiceAccount where+        toJSON ServiceAccount'{..}+          = object+              (catMaybes+                 [("email" .=) <$> _saEmail,+                  ("scopes" .=) <$> _saScopes])++-- | Contains a list of networks.+--+-- /See:/ 'networkList' smart constructor.+data NetworkList = NetworkList'+    { _nlNextPageToken :: !(Maybe Text)+    , _nlKind          :: !Text+    , _nlItems         :: !(Maybe [Network])+    , _nlSelfLink      :: !(Maybe Text)+    , _nlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'NetworkList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'nlNextPageToken'+--+-- * 'nlKind'+--+-- * 'nlItems'+--+-- * 'nlSelfLink'+--+-- * 'nlId'+networkList+    :: NetworkList+networkList =+    NetworkList'+    { _nlNextPageToken = Nothing+    , _nlKind = "compute#networkList"+    , _nlItems = Nothing+    , _nlSelfLink = Nothing+    , _nlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+nlNextPageToken :: Lens' NetworkList (Maybe Text)+nlNextPageToken+  = lens _nlNextPageToken+      (\ s a -> s{_nlNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#networkList for lists of+-- networks.+nlKind :: Lens' NetworkList Text+nlKind = lens _nlKind (\ s a -> s{_nlKind = a})++-- | [Output Only] A list of Network resources.+nlItems :: Lens' NetworkList [Network]+nlItems+  = lens _nlItems (\ s a -> s{_nlItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+nlSelfLink :: Lens' NetworkList (Maybe Text)+nlSelfLink+  = lens _nlSelfLink (\ s a -> s{_nlSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+nlId :: Lens' NetworkList (Maybe Text)+nlId = lens _nlId (\ s a -> s{_nlId = a})++instance FromJSON NetworkList where+        parseJSON+          = withObject "NetworkList"+              (\ o ->+                 NetworkList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#networkList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON NetworkList where+        toJSON NetworkList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _nlNextPageToken,+                  Just ("kind" .= _nlKind), ("items" .=) <$> _nlItems,+                  ("selfLink" .=) <$> _nlSelfLink,+                  ("id" .=) <$> _nlId])++--+-- /See:/ 'instanceGroupsListInstancesRequest' smart constructor.+newtype InstanceGroupsListInstancesRequest = InstanceGroupsListInstancesRequest'+    { _iglirInstanceState :: Maybe InstanceGroupsListInstancesRequestInstanceState+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsListInstancesRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iglirInstanceState'+instanceGroupsListInstancesRequest+    :: InstanceGroupsListInstancesRequest+instanceGroupsListInstancesRequest =+    InstanceGroupsListInstancesRequest'+    { _iglirInstanceState = Nothing+    }++-- | A filter for the state of the instances in the instance group. Valid+-- options are ALL or RUNNING. If you do not specify this parameter the+-- list includes all instances regardless of their state.+iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)+iglirInstanceState+  = lens _iglirInstanceState+      (\ s a -> s{_iglirInstanceState = a})++instance FromJSON InstanceGroupsListInstancesRequest+         where+        parseJSON+          = withObject "InstanceGroupsListInstancesRequest"+              (\ o ->+                 InstanceGroupsListInstancesRequest' <$>+                   (o .:? "instanceState"))++instance ToJSON InstanceGroupsListInstancesRequest+         where+        toJSON InstanceGroupsListInstancesRequest'{..}+          = object+              (catMaybes+                 [("instanceState" .=) <$> _iglirInstanceState])++-- | [Output Only] A map of scoped target pool lists.+--+-- /See:/ 'targetPoolAggregatedListItems' smart constructor.+newtype TargetPoolAggregatedListItems = TargetPoolAggregatedListItems'+    { _tpaliAddtional :: HashMap Text TargetPoolsScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpaliAddtional'+targetPoolAggregatedListItems+    :: HashMap Text TargetPoolsScopedList -- ^ 'tpaliAddtional'+    -> TargetPoolAggregatedListItems+targetPoolAggregatedListItems pTpaliAddtional_ =+    TargetPoolAggregatedListItems'+    { _tpaliAddtional = _Coerce # pTpaliAddtional_+    }++-- | Name of the scope containing this set of target pools.+tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)+tpaliAddtional+  = lens _tpaliAddtional+      (\ s a -> s{_tpaliAddtional = a})+      . _Coerce++instance FromJSON TargetPoolAggregatedListItems where+        parseJSON+          = withObject "TargetPoolAggregatedListItems"+              (\ o ->+                 TargetPoolAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON TargetPoolAggregatedListItems where+        toJSON = toJSON . _tpaliAddtional++--+-- /See:/ 'targetInstancesScopedList' smart constructor.+data TargetInstancesScopedList = TargetInstancesScopedList'+    { _tislWarning         :: !(Maybe TargetInstancesScopedListWarning)+    , _tislTargetInstances :: !(Maybe [TargetInstance])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstancesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tislWarning'+--+-- * 'tislTargetInstances'+targetInstancesScopedList+    :: TargetInstancesScopedList+targetInstancesScopedList =+    TargetInstancesScopedList'+    { _tislWarning = Nothing+    , _tislTargetInstances = Nothing+    }++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)+tislWarning+  = lens _tislWarning (\ s a -> s{_tislWarning = a})++-- | List of target instances contained in this scope.+tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]+tislTargetInstances+  = lens _tislTargetInstances+      (\ s a -> s{_tislTargetInstances = a})+      . _Default+      . _Coerce++instance FromJSON TargetInstancesScopedList where+        parseJSON+          = withObject "TargetInstancesScopedList"+              (\ o ->+                 TargetInstancesScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "targetInstances" .!= mempty))++instance ToJSON TargetInstancesScopedList where+        toJSON TargetInstancesScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _tislWarning,+                  ("targetInstances" .=) <$> _tislTargetInstances])++-- | [Output Only] A map of scoped address lists.+--+-- /See:/ 'addressAggregatedListItems' smart constructor.+newtype AddressAggregatedListItems = AddressAggregatedListItems'+    { _aAddtional :: HashMap Text AddressesScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aAddtional'+addressAggregatedListItems+    :: HashMap Text AddressesScopedList -- ^ 'aAddtional'+    -> AddressAggregatedListItems+addressAggregatedListItems pAAddtional_ =+    AddressAggregatedListItems'+    { _aAddtional = _Coerce # pAAddtional_+    }++-- | [Output Only] Name of the scope containing this set of addresses.+aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)+aAddtional+  = lens _aAddtional (\ s a -> s{_aAddtional = a}) .+      _Coerce++instance FromJSON AddressAggregatedListItems where+        parseJSON+          = withObject "AddressAggregatedListItems"+              (\ o ->+                 AddressAggregatedListItems' <$> (parseJSONObject o))++instance ToJSON AddressAggregatedListItems where+        toJSON = toJSON . _aAddtional++-- | Contains a list of Autoscaler resources.+--+-- /See:/ 'autoscalerList' smart constructor.+data AutoscalerList = AutoscalerList'+    { _autNextPageToken :: !(Maybe Text)+    , _autKind          :: !Text+    , _autItems         :: !(Maybe [Autoscaler])+    , _autSelfLink      :: !(Maybe Text)+    , _autId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalerList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'autNextPageToken'+--+-- * 'autKind'+--+-- * 'autItems'+--+-- * 'autSelfLink'+--+-- * 'autId'+autoscalerList+    :: AutoscalerList+autoscalerList =+    AutoscalerList'+    { _autNextPageToken = Nothing+    , _autKind = "compute#autoscalerList"+    , _autItems = Nothing+    , _autSelfLink = Nothing+    , _autId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+autNextPageToken :: Lens' AutoscalerList (Maybe Text)+autNextPageToken+  = lens _autNextPageToken+      (\ s a -> s{_autNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#autoscalerList for lists+-- of autoscalers.+autKind :: Lens' AutoscalerList Text+autKind = lens _autKind (\ s a -> s{_autKind = a})++-- | A list of Autoscaler resources.+autItems :: Lens' AutoscalerList [Autoscaler]+autItems+  = lens _autItems (\ s a -> s{_autItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+autSelfLink :: Lens' AutoscalerList (Maybe Text)+autSelfLink+  = lens _autSelfLink (\ s a -> s{_autSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+autId :: Lens' AutoscalerList (Maybe Text)+autId = lens _autId (\ s a -> s{_autId = a})++instance FromJSON AutoscalerList where+        parseJSON+          = withObject "AutoscalerList"+              (\ o ->+                 AutoscalerList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#autoscalerList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON AutoscalerList where+        toJSON AutoscalerList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _autNextPageToken,+                  Just ("kind" .= _autKind),+                  ("items" .=) <$> _autItems,+                  ("selfLink" .=) <$> _autSelfLink,+                  ("id" .=) <$> _autId])++--+-- /See:/ 'targetSSLProxiesSetProxyHeaderRequest' smart constructor.+newtype TargetSSLProxiesSetProxyHeaderRequest = TargetSSLProxiesSetProxyHeaderRequest'+    { _tspsphrProxyHeader :: Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetSSLProxiesSetProxyHeaderRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tspsphrProxyHeader'+targetSSLProxiesSetProxyHeaderRequest+    :: TargetSSLProxiesSetProxyHeaderRequest+targetSSLProxiesSetProxyHeaderRequest =+    TargetSSLProxiesSetProxyHeaderRequest'+    { _tspsphrProxyHeader = Nothing+    }++-- | The new type of proxy header to append before sending data to the+-- backend. NONE or PROXY_V1 are allowed.+tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)+tspsphrProxyHeader+  = lens _tspsphrProxyHeader+      (\ s a -> s{_tspsphrProxyHeader = a})++instance FromJSON+         TargetSSLProxiesSetProxyHeaderRequest where+        parseJSON+          = withObject "TargetSSLProxiesSetProxyHeaderRequest"+              (\ o ->+                 TargetSSLProxiesSetProxyHeaderRequest' <$>+                   (o .:? "proxyHeader"))++instance ToJSON TargetSSLProxiesSetProxyHeaderRequest+         where+        toJSON TargetSSLProxiesSetProxyHeaderRequest'{..}+          = object+              (catMaybes+                 [("proxyHeader" .=) <$> _tspsphrProxyHeader])++--+-- /See:/ 'vpnTunnelAggregatedList' smart constructor.+data VPNTunnelAggregatedList = VPNTunnelAggregatedList'+    { _vtalNextPageToken :: !(Maybe Text)+    , _vtalKind          :: !Text+    , _vtalItems         :: !(Maybe VPNTunnelAggregatedListItems)+    , _vtalSelfLink      :: !(Maybe Text)+    , _vtalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtalNextPageToken'+--+-- * 'vtalKind'+--+-- * 'vtalItems'+--+-- * 'vtalSelfLink'+--+-- * 'vtalId'+vpnTunnelAggregatedList+    :: VPNTunnelAggregatedList+vpnTunnelAggregatedList =+    VPNTunnelAggregatedList'+    { _vtalNextPageToken = Nothing+    , _vtalKind = "compute#vpnTunnelAggregatedList"+    , _vtalItems = Nothing+    , _vtalSelfLink = Nothing+    , _vtalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)+vtalNextPageToken+  = lens _vtalNextPageToken+      (\ s a -> s{_vtalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN+-- tunnels.+vtalKind :: Lens' VPNTunnelAggregatedList Text+vtalKind = lens _vtalKind (\ s a -> s{_vtalKind = a})++-- | [Output Only] A map of scoped vpn tunnel lists.+vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)+vtalItems+  = lens _vtalItems (\ s a -> s{_vtalItems = a})++-- | [Output Only] Server-defined URL for this resource.+vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)+vtalSelfLink+  = lens _vtalSelfLink (\ s a -> s{_vtalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)+vtalId = lens _vtalId (\ s a -> s{_vtalId = a})++instance FromJSON VPNTunnelAggregatedList where+        parseJSON+          = withObject "VPNTunnelAggregatedList"+              (\ o ->+                 VPNTunnelAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#vpnTunnelAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON VPNTunnelAggregatedList where+        toJSON VPNTunnelAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _vtalNextPageToken,+                  Just ("kind" .= _vtalKind),+                  ("items" .=) <$> _vtalItems,+                  ("selfLink" .=) <$> _vtalSelfLink,+                  ("id" .=) <$> _vtalId])++-- | An instance-attached disk resource.+--+-- /See:/ 'attachedDisk' smart constructor.+data AttachedDisk = AttachedDisk'+    { _adDiskEncryptionKey :: !(Maybe CustomerEncryptionKey)+    , _adKind              :: !Text+    , _adMode              :: !(Maybe AttachedDiskMode)+    , _adBoot              :: !(Maybe Bool)+    , _adAutoDelete        :: !(Maybe Bool)+    , _adInitializeParams  :: !(Maybe AttachedDiskInitializeParams)+    , _adDeviceName        :: !(Maybe Text)+    , _adInterface         :: !(Maybe AttachedDiskInterface)+    , _adSource            :: !(Maybe Text)+    , _adLicenses          :: !(Maybe [Text])+    , _adType              :: !(Maybe AttachedDiskType)+    , _adIndex             :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AttachedDisk' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adDiskEncryptionKey'+--+-- * 'adKind'+--+-- * 'adMode'+--+-- * 'adBoot'+--+-- * 'adAutoDelete'+--+-- * 'adInitializeParams'+--+-- * 'adDeviceName'+--+-- * 'adInterface'+--+-- * 'adSource'+--+-- * 'adLicenses'+--+-- * 'adType'+--+-- * 'adIndex'+attachedDisk+    :: AttachedDisk+attachedDisk =+    AttachedDisk'+    { _adDiskEncryptionKey = Nothing+    , _adKind = "compute#attachedDisk"+    , _adMode = Nothing+    , _adBoot = Nothing+    , _adAutoDelete = Nothing+    , _adInitializeParams = Nothing+    , _adDeviceName = Nothing+    , _adInterface = Nothing+    , _adSource = Nothing+    , _adLicenses = Nothing+    , _adType = Nothing+    , _adIndex = Nothing+    }++-- | Encrypts or decrypts a disk using a customer-supplied encryption key. If+-- you are creating a new disk, this field encrypts the new disk using an+-- encryption key that you provide. If you are attaching an existing disk+-- that is already encrypted, this field decrypts the disk using the+-- customer-supplied encryption key. If you encrypt a disk using a+-- customer-supplied key, you must provide the same key again when you+-- attempt to use this resource at a later time. For example, you must+-- provide the key when you create a snapshot or an image from the disk or+-- when you attach the disk to a virtual machine instance. If you do not+-- provide an encryption key, then the disk will be encrypted using an+-- automatically generated key and you do not need to provide a key to use+-- the disk later. Instance templates do not store customer-supplied+-- encryption keys, so you cannot use your own keys to encrypt disks in a+-- managed instance group.+adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)+adDiskEncryptionKey+  = lens _adDiskEncryptionKey+      (\ s a -> s{_adDiskEncryptionKey = a})++-- | [Output Only] Type of the resource. Always compute#attachedDisk for+-- attached disks.+adKind :: Lens' AttachedDisk Text+adKind = lens _adKind (\ s a -> s{_adKind = a})++-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.+-- If not specified, the default is to attach the disk in READ_WRITE mode.+adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)+adMode = lens _adMode (\ s a -> s{_adMode = a})++-- | Indicates that this is a boot disk. The virtual machine will use the+-- first partition of the disk for its root filesystem.+adBoot :: Lens' AttachedDisk (Maybe Bool)+adBoot = lens _adBoot (\ s a -> s{_adBoot = a})++-- | Specifies whether the disk will be auto-deleted when the instance is+-- deleted (but not when the disk is detached from the instance).+adAutoDelete :: Lens' AttachedDisk (Maybe Bool)+adAutoDelete+  = lens _adAutoDelete (\ s a -> s{_adAutoDelete = a})++-- | [Input Only] Specifies the parameters for a new disk that will be+-- created alongside the new instance. Use initialization parameters to+-- create boot disks or local SSDs attached to the new instance. This+-- property is mutually exclusive with the source property; you can only+-- define one or the other, but not both.+adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)+adInitializeParams+  = lens _adInitializeParams+      (\ s a -> s{_adInitializeParams = a})++-- | Specifies a unique device name of your choice that is reflected into the+-- \/dev\/disk\/by-id\/google-* tree of a Linux operating system running+-- within the instance. This name can be used to reference the device for+-- mounting, resizing, and so on, from within the instance. If not+-- specified, the server chooses a default device name to apply to this+-- disk, in the form persistent-disks-x, where x is a number assigned by+-- Google Compute Engine. This field is only applicable for persistent+-- disks.+adDeviceName :: Lens' AttachedDisk (Maybe Text)+adDeviceName+  = lens _adDeviceName (\ s a -> s{_adDeviceName = a})++-- | Specifies the disk interface to use for attaching this disk, which is+-- either SCSI or NVME. The default is SCSI. Persistent disks must always+-- use SCSI and the request will fail if you attempt to attach a persistent+-- disk in any other format than SCSI. Local SSDs can use either NVME or+-- SCSI. For performance characteristics of SCSI over NVMe, see Local SSD+-- performance.+adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)+adInterface+  = lens _adInterface (\ s a -> s{_adInterface = a})++-- | Specifies a valid partial or full URL to an existing Persistent Disk+-- resource. This field is only applicable for persistent disks. Note that+-- for InstanceTemplate, it is just disk name, not URL for the disk.+adSource :: Lens' AttachedDisk (Maybe Text)+adSource = lens _adSource (\ s a -> s{_adSource = a})++-- | [Output Only] Any valid publicly visible licenses.+adLicenses :: Lens' AttachedDisk [Text]+adLicenses+  = lens _adLicenses (\ s a -> s{_adLicenses = a}) .+      _Default+      . _Coerce++-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not+-- specified, the default is PERSISTENT.+adType :: Lens' AttachedDisk (Maybe AttachedDiskType)+adType = lens _adType (\ s a -> s{_adType = a})++-- | Assigns a zero-based index to this disk, where 0 is reserved for the+-- boot disk. For example, if you have many disks attached to an instance,+-- each disk would have a unique index number. If not specified, the server+-- will choose an appropriate value.+adIndex :: Lens' AttachedDisk (Maybe Int32)+adIndex+  = lens _adIndex (\ s a -> s{_adIndex = a}) .+      mapping _Coerce++instance FromJSON AttachedDisk where+        parseJSON+          = withObject "AttachedDisk"+              (\ o ->+                 AttachedDisk' <$>+                   (o .:? "diskEncryptionKey") <*>+                     (o .:? "kind" .!= "compute#attachedDisk")+                     <*> (o .:? "mode")+                     <*> (o .:? "boot")+                     <*> (o .:? "autoDelete")+                     <*> (o .:? "initializeParams")+                     <*> (o .:? "deviceName")+                     <*> (o .:? "interface")+                     <*> (o .:? "source")+                     <*> (o .:? "licenses" .!= mempty)+                     <*> (o .:? "type")+                     <*> (o .:? "index"))++instance ToJSON AttachedDisk where+        toJSON AttachedDisk'{..}+          = object+              (catMaybes+                 [("diskEncryptionKey" .=) <$> _adDiskEncryptionKey,+                  Just ("kind" .= _adKind), ("mode" .=) <$> _adMode,+                  ("boot" .=) <$> _adBoot,+                  ("autoDelete" .=) <$> _adAutoDelete,+                  ("initializeParams" .=) <$> _adInitializeParams,+                  ("deviceName" .=) <$> _adDeviceName,+                  ("interface" .=) <$> _adInterface,+                  ("source" .=) <$> _adSource,+                  ("licenses" .=) <$> _adLicenses,+                  ("type" .=) <$> _adType, ("index" .=) <$> _adIndex])++-- | Contains a list of disk types.+--+-- /See:/ 'diskTypeList' smart constructor.+data DiskTypeList = DiskTypeList'+    { _dtlNextPageToken :: !(Maybe Text)+    , _dtlKind          :: !Text+    , _dtlItems         :: !(Maybe [DiskType])+    , _dtlSelfLink      :: !(Maybe Text)+    , _dtlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypeList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtlNextPageToken'+--+-- * 'dtlKind'+--+-- * 'dtlItems'+--+-- * 'dtlSelfLink'+--+-- * 'dtlId'+diskTypeList+    :: DiskTypeList+diskTypeList =+    DiskTypeList'+    { _dtlNextPageToken = Nothing+    , _dtlKind = "compute#diskTypeList"+    , _dtlItems = Nothing+    , _dtlSelfLink = Nothing+    , _dtlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)+dtlNextPageToken+  = lens _dtlNextPageToken+      (\ s a -> s{_dtlNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#diskTypeList for disk+-- types.+dtlKind :: Lens' DiskTypeList Text+dtlKind = lens _dtlKind (\ s a -> s{_dtlKind = a})++-- | [Output Only] A list of Disk Type resources.+dtlItems :: Lens' DiskTypeList [DiskType]+dtlItems+  = lens _dtlItems (\ s a -> s{_dtlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+dtlSelfLink :: Lens' DiskTypeList (Maybe Text)+dtlSelfLink+  = lens _dtlSelfLink (\ s a -> s{_dtlSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dtlId :: Lens' DiskTypeList (Maybe Text)+dtlId = lens _dtlId (\ s a -> s{_dtlId = a})++instance FromJSON DiskTypeList where+        parseJSON+          = withObject "DiskTypeList"+              (\ o ->+                 DiskTypeList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#diskTypeList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON DiskTypeList where+        toJSON DiskTypeList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _dtlNextPageToken,+                  Just ("kind" .= _dtlKind),+                  ("items" .=) <$> _dtlItems,+                  ("selfLink" .=) <$> _dtlSelfLink,+                  ("id" .=) <$> _dtlId])++-- | Contains a list of machine types.+--+-- /See:/ 'machineTypeList' smart constructor.+data MachineTypeList = MachineTypeList'+    { _mtlNextPageToken :: !(Maybe Text)+    , _mtlKind          :: !Text+    , _mtlItems         :: !(Maybe [MachineType])+    , _mtlSelfLink      :: !(Maybe Text)+    , _mtlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypeList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtlNextPageToken'+--+-- * 'mtlKind'+--+-- * 'mtlItems'+--+-- * 'mtlSelfLink'+--+-- * 'mtlId'+machineTypeList+    :: MachineTypeList+machineTypeList =+    MachineTypeList'+    { _mtlNextPageToken = Nothing+    , _mtlKind = "compute#machineTypeList"+    , _mtlItems = Nothing+    , _mtlSelfLink = Nothing+    , _mtlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)+mtlNextPageToken+  = lens _mtlNextPageToken+      (\ s a -> s{_mtlNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#machineTypeList for lists+-- of machine types.+mtlKind :: Lens' MachineTypeList Text+mtlKind = lens _mtlKind (\ s a -> s{_mtlKind = a})++-- | [Output Only] A list of Machine Type resources.+mtlItems :: Lens' MachineTypeList [MachineType]+mtlItems+  = lens _mtlItems (\ s a -> s{_mtlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+mtlSelfLink :: Lens' MachineTypeList (Maybe Text)+mtlSelfLink+  = lens _mtlSelfLink (\ s a -> s{_mtlSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+mtlId :: Lens' MachineTypeList (Maybe Text)+mtlId = lens _mtlId (\ s a -> s{_mtlId = a})++instance FromJSON MachineTypeList where+        parseJSON+          = withObject "MachineTypeList"+              (\ o ->+                 MachineTypeList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#machineTypeList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON MachineTypeList where+        toJSON MachineTypeList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _mtlNextPageToken,+                  Just ("kind" .= _mtlKind),+                  ("items" .=) <$> _mtlItems,+                  ("selfLink" .=) <$> _mtlSelfLink,+                  ("id" .=) <$> _mtlId])++-- | A list of TargetHttpProxy resources.+--+-- /See:/ 'targetHTTPProxyList' smart constructor.+data TargetHTTPProxyList = TargetHTTPProxyList'+    { _thttpplNextPageToken :: !(Maybe Text)+    , _thttpplKind          :: !Text+    , _thttpplItems         :: !(Maybe [TargetHTTPProxy])+    , _thttpplSelfLink      :: !(Maybe Text)+    , _thttpplId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetHTTPProxyList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'thttpplNextPageToken'+--+-- * 'thttpplKind'+--+-- * 'thttpplItems'+--+-- * 'thttpplSelfLink'+--+-- * 'thttpplId'+targetHTTPProxyList+    :: TargetHTTPProxyList+targetHTTPProxyList =+    TargetHTTPProxyList'+    { _thttpplNextPageToken = Nothing+    , _thttpplKind = "compute#targetHttpProxyList"+    , _thttpplItems = Nothing+    , _thttpplSelfLink = Nothing+    , _thttpplId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)+thttpplNextPageToken+  = lens _thttpplNextPageToken+      (\ s a -> s{_thttpplNextPageToken = a})++-- | Type of resource. Always compute#targetHttpProxyList for lists of target+-- HTTP proxies.+thttpplKind :: Lens' TargetHTTPProxyList Text+thttpplKind+  = lens _thttpplKind (\ s a -> s{_thttpplKind = a})++-- | A list of TargetHttpProxy resources.+thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]+thttpplItems+  = lens _thttpplItems (\ s a -> s{_thttpplItems = a})+      . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)+thttpplSelfLink+  = lens _thttpplSelfLink+      (\ s a -> s{_thttpplSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)+thttpplId+  = lens _thttpplId (\ s a -> s{_thttpplId = a})++instance FromJSON TargetHTTPProxyList where+        parseJSON+          = withObject "TargetHTTPProxyList"+              (\ o ->+                 TargetHTTPProxyList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#targetHttpProxyList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetHTTPProxyList where+        toJSON TargetHTTPProxyList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _thttpplNextPageToken,+                  Just ("kind" .= _thttpplKind),+                  ("items" .=) <$> _thttpplItems,+                  ("selfLink" .=) <$> _thttpplSelfLink,+                  ("id" .=) <$> _thttpplId])++--+-- /See:/ 'diskTypesScopedList' smart constructor.+data DiskTypesScopedList = DiskTypesScopedList'+    { _dtslDiskTypes :: !(Maybe [DiskType])+    , _dtslWarning   :: !(Maybe DiskTypesScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtslDiskTypes'+--+-- * 'dtslWarning'+diskTypesScopedList+    :: DiskTypesScopedList+diskTypesScopedList =+    DiskTypesScopedList'+    { _dtslDiskTypes = Nothing+    , _dtslWarning = Nothing+    }++-- | [Output Only] List of disk types contained in this scope.+dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]+dtslDiskTypes+  = lens _dtslDiskTypes+      (\ s a -> s{_dtslDiskTypes = a})+      . _Default+      . _Coerce++-- | [Output Only] Informational warning which replaces the list of disk+-- types when the list is empty.+dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)+dtslWarning+  = lens _dtslWarning (\ s a -> s{_dtslWarning = a})++instance FromJSON DiskTypesScopedList where+        parseJSON+          = withObject "DiskTypesScopedList"+              (\ o ->+                 DiskTypesScopedList' <$>+                   (o .:? "diskTypes" .!= mempty) <*> (o .:? "warning"))++instance ToJSON DiskTypesScopedList where+        toJSON DiskTypesScopedList'{..}+          = object+              (catMaybes+                 [("diskTypes" .=) <$> _dtslDiskTypes,+                  ("warning" .=) <$> _dtslWarning])++--+-- /See:/ 'diskTypeAggregatedList' smart constructor.+data DiskTypeAggregatedList = DiskTypeAggregatedList'+    { _dtalNextPageToken :: !(Maybe Text)+    , _dtalKind          :: !Text+    , _dtalItems         :: !(Maybe DiskTypeAggregatedListItems)+    , _dtalSelfLink      :: !(Maybe Text)+    , _dtalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypeAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtalNextPageToken'+--+-- * 'dtalKind'+--+-- * 'dtalItems'+--+-- * 'dtalSelfLink'+--+-- * 'dtalId'+diskTypeAggregatedList+    :: DiskTypeAggregatedList+diskTypeAggregatedList =+    DiskTypeAggregatedList'+    { _dtalNextPageToken = Nothing+    , _dtalKind = "compute#diskTypeAggregatedList"+    , _dtalItems = Nothing+    , _dtalSelfLink = Nothing+    , _dtalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)+dtalNextPageToken+  = lens _dtalNextPageToken+      (\ s a -> s{_dtalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#diskTypeAggregatedList.+dtalKind :: Lens' DiskTypeAggregatedList Text+dtalKind = lens _dtalKind (\ s a -> s{_dtalKind = a})++-- | [Output Only] A map of scoped disk type lists.+dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)+dtalItems+  = lens _dtalItems (\ s a -> s{_dtalItems = a})++-- | [Output Only] Server-defined URL for this resource.+dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)+dtalSelfLink+  = lens _dtalSelfLink (\ s a -> s{_dtalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)+dtalId = lens _dtalId (\ s a -> s{_dtalId = a})++instance FromJSON DiskTypeAggregatedList where+        parseJSON+          = withObject "DiskTypeAggregatedList"+              (\ o ->+                 DiskTypeAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#diskTypeAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON DiskTypeAggregatedList where+        toJSON DiskTypeAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _dtalNextPageToken,+                  Just ("kind" .= _dtalKind),+                  ("items" .=) <$> _dtalItems,+                  ("selfLink" .=) <$> _dtalSelfLink,+                  ("id" .=) <$> _dtalId])++-- | An HttpHealthCheck resource. This resource defines a template for how+-- individual instances should be checked for health, via HTTP.+--+-- /See:/ 'hTTPHealthCheck' smart constructor.+data HTTPHealthCheck = HTTPHealthCheck'+    { _hHealthyThreshold   :: !(Maybe (Textual Int32))+    , _hKind               :: !Text+    , _hRequestPath        :: !(Maybe Text)+    , _hSelfLink           :: !(Maybe Text)+    , _hCheckIntervalSec   :: !(Maybe (Textual Int32))+    , _hName               :: !(Maybe Text)+    , _hCreationTimestamp  :: !(Maybe Text)+    , _hId                 :: !(Maybe (Textual Word64))+    , _hHost               :: !(Maybe Text)+    , _hTimeoutSec         :: !(Maybe (Textual Int32))+    , _hDescription        :: !(Maybe Text)+    , _hUnhealthyThreshold :: !(Maybe (Textual Int32))+    , _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:+--+-- * 'hHealthyThreshold'+--+-- * 'hKind'+--+-- * 'hRequestPath'+--+-- * 'hSelfLink'+--+-- * 'hCheckIntervalSec'+--+-- * 'hName'+--+-- * 'hCreationTimestamp'+--+-- * 'hId'+--+-- * 'hHost'+--+-- * 'hTimeoutSec'+--+-- * 'hDescription'+--+-- * 'hUnhealthyThreshold'+--+-- * 'hPort'+hTTPHealthCheck+    :: HTTPHealthCheck+hTTPHealthCheck =+    HTTPHealthCheck'+    { _hHealthyThreshold = Nothing+    , _hKind = "compute#httpHealthCheck"+    , _hRequestPath = Nothing+    , _hSelfLink = Nothing+    , _hCheckIntervalSec = Nothing+    , _hName = Nothing+    , _hCreationTimestamp = Nothing+    , _hId = Nothing+    , _hHost = Nothing+    , _hTimeoutSec = Nothing+    , _hDescription = Nothing+    , _hUnhealthyThreshold = Nothing+    , _hPort = Nothing+    }++-- | A so-far unhealthy instance will be marked healthy after this many+-- consecutive successes. The default value is 2.+hHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)+hHealthyThreshold+  = lens _hHealthyThreshold+      (\ s a -> s{_hHealthyThreshold = a})+      . mapping _Coerce++-- | [Output Only] Type of the resource. Always compute#httpHealthCheck for+-- HTTP health checks.+hKind :: Lens' HTTPHealthCheck Text+hKind = lens _hKind (\ s a -> s{_hKind = 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})++-- | [Output Only] Server-defined URL for the resource.+hSelfLink :: Lens' HTTPHealthCheck (Maybe Text)+hSelfLink+  = lens _hSelfLink (\ s a -> s{_hSelfLink = a})++-- | How often (in seconds) to send a health check. The default value is 5+-- seconds.+hCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)+hCheckIntervalSec+  = lens _hCheckIntervalSec+      (\ s a -> s{_hCheckIntervalSec = 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.+hName :: Lens' HTTPHealthCheck (Maybe Text)+hName = lens _hName (\ s a -> s{_hName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+hCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)+hCreationTimestamp+  = lens _hCreationTimestamp+      (\ s a -> s{_hCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+hId :: Lens' HTTPHealthCheck (Maybe Word64)+hId+  = lens _hId (\ s a -> s{_hId = a}) . mapping _Coerce++-- | The value of the host header in the HTTP health check request. If left+-- empty (default value), the public 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})++-- | 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.+hTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)+hTimeoutSec+  = lens _hTimeoutSec (\ s a -> s{_hTimeoutSec = a}) .+      mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+hDescription :: Lens' HTTPHealthCheck (Maybe Text)+hDescription+  = lens _hDescription (\ s a -> s{_hDescription = a})++-- | A so-far healthy instance will be marked unhealthy after this many+-- consecutive failures. The default value is 2.+hUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)+hUnhealthyThreshold+  = lens _hUnhealthyThreshold+      (\ s a -> s{_hUnhealthyThreshold = a})+      . mapping _Coerce++-- | The TCP port number for the HTTP health check request. The default value+-- is 80.+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 .:? "healthyThreshold") <*>+                     (o .:? "kind" .!= "compute#httpHealthCheck")+                     <*> (o .:? "requestPath")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "checkIntervalSec")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "host")+                     <*> (o .:? "timeoutSec")+                     <*> (o .:? "description")+                     <*> (o .:? "unhealthyThreshold")+                     <*> (o .:? "port"))++instance ToJSON HTTPHealthCheck where+        toJSON HTTPHealthCheck'{..}+          = object+              (catMaybes+                 [("healthyThreshold" .=) <$> _hHealthyThreshold,+                  Just ("kind" .= _hKind),+                  ("requestPath" .=) <$> _hRequestPath,+                  ("selfLink" .=) <$> _hSelfLink,+                  ("checkIntervalSec" .=) <$> _hCheckIntervalSec,+                  ("name" .=) <$> _hName,+                  ("creationTimestamp" .=) <$> _hCreationTimestamp,+                  ("id" .=) <$> _hId, ("host" .=) <$> _hHost,+                  ("timeoutSec" .=) <$> _hTimeoutSec,+                  ("description" .=) <$> _hDescription,+                  ("unhealthyThreshold" .=) <$> _hUnhealthyThreshold,+                  ("port" .=) <$> _hPort])++--+-- /See:/ 'backendServiceGroupHealth' smart constructor.+data BackendServiceGroupHealth = BackendServiceGroupHealth'+    { _bsghKind         :: !Text+    , _bsghHealthStatus :: !(Maybe [HealthStatus])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BackendServiceGroupHealth' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bsghKind'+--+-- * 'bsghHealthStatus'+backendServiceGroupHealth+    :: BackendServiceGroupHealth+backendServiceGroupHealth =+    BackendServiceGroupHealth'+    { _bsghKind = "compute#backendServiceGroupHealth"+    , _bsghHealthStatus = Nothing+    }++-- | [Output Only] Type of resource. Always compute#backendServiceGroupHealth+-- for the health of backend services.+bsghKind :: Lens' BackendServiceGroupHealth Text+bsghKind = lens _bsghKind (\ s a -> s{_bsghKind = a})++bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]+bsghHealthStatus+  = lens _bsghHealthStatus+      (\ s a -> s{_bsghHealthStatus = a})+      . _Default+      . _Coerce++instance FromJSON BackendServiceGroupHealth where+        parseJSON+          = withObject "BackendServiceGroupHealth"+              (\ o ->+                 BackendServiceGroupHealth' <$>+                   (o .:? "kind" .!=+                      "compute#backendServiceGroupHealth")+                     <*> (o .:? "healthStatus" .!= mempty))++instance ToJSON BackendServiceGroupHealth where+        toJSON BackendServiceGroupHealth'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _bsghKind),+                  ("healthStatus" .=) <$> _bsghHealthStatus])++--+-- /See:/ 'autoscalersScopedList' smart constructor.+data AutoscalersScopedList = AutoscalersScopedList'+    { _aAutoscalers :: !(Maybe [Autoscaler])+    , _aWarning     :: !(Maybe AutoscalersScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalersScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aAutoscalers'+--+-- * 'aWarning'+autoscalersScopedList+    :: AutoscalersScopedList+autoscalersScopedList =+    AutoscalersScopedList'+    { _aAutoscalers = Nothing+    , _aWarning = Nothing+    }++-- | [Output Only] List of autoscalers contained in this scope.+aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]+aAutoscalers+  = lens _aAutoscalers (\ s a -> s{_aAutoscalers = a})+      . _Default+      . _Coerce++-- | [Output Only] Informational warning which replaces the list of+-- autoscalers when the list is empty.+aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)+aWarning = lens _aWarning (\ s a -> s{_aWarning = a})++instance FromJSON AutoscalersScopedList where+        parseJSON+          = withObject "AutoscalersScopedList"+              (\ o ->+                 AutoscalersScopedList' <$>+                   (o .:? "autoscalers" .!= mempty) <*>+                     (o .:? "warning"))++instance ToJSON AutoscalersScopedList where+        toJSON AutoscalersScopedList'{..}+          = object+              (catMaybes+                 [("autoscalers" .=) <$> _aAutoscalers,+                  ("warning" .=) <$> _aWarning])++--+-- /See:/ 'autoscalerAggregatedList' smart constructor.+data AutoscalerAggregatedList = AutoscalerAggregatedList'+    { _aalNextPageToken :: !(Maybe Text)+    , _aalKind          :: !Text+    , _aalItems         :: !(Maybe AutoscalerAggregatedListItems)+    , _aalSelfLink      :: !(Maybe Text)+    , _aalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalerAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aalNextPageToken'+--+-- * 'aalKind'+--+-- * 'aalItems'+--+-- * 'aalSelfLink'+--+-- * 'aalId'+autoscalerAggregatedList+    :: AutoscalerAggregatedList+autoscalerAggregatedList =+    AutoscalerAggregatedList'+    { _aalNextPageToken = Nothing+    , _aalKind = "compute#autoscalerAggregatedList"+    , _aalItems = Nothing+    , _aalSelfLink = Nothing+    , _aalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)+aalNextPageToken+  = lens _aalNextPageToken+      (\ s a -> s{_aalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#autoscalerAggregatedList+-- for aggregated lists of autoscalers.+aalKind :: Lens' AutoscalerAggregatedList Text+aalKind = lens _aalKind (\ s a -> s{_aalKind = a})++-- | A map of scoped autoscaler lists.+aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)+aalItems = lens _aalItems (\ s a -> s{_aalItems = a})++-- | [Output Only] Server-defined URL for this resource.+aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)+aalSelfLink+  = lens _aalSelfLink (\ s a -> s{_aalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+aalId :: Lens' AutoscalerAggregatedList (Maybe Text)+aalId = lens _aalId (\ s a -> s{_aalId = a})++instance FromJSON AutoscalerAggregatedList where+        parseJSON+          = withObject "AutoscalerAggregatedList"+              (\ o ->+                 AutoscalerAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#autoscalerAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON AutoscalerAggregatedList where+        toJSON AutoscalerAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _aalNextPageToken,+                  Just ("kind" .= _aalKind),+                  ("items" .=) <$> _aalItems,+                  ("selfLink" .=) <$> _aalSelfLink,+                  ("id" .=) <$> _aalId])++-- | A map of scoped router lists.+--+-- /See:/ 'routerAggregatedListItems' smart constructor.+newtype RouterAggregatedListItems = RouterAggregatedListItems'+    { _raliAddtional :: HashMap Text RoutersScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'raliAddtional'+routerAggregatedListItems+    :: HashMap Text RoutersScopedList -- ^ 'raliAddtional'+    -> RouterAggregatedListItems+routerAggregatedListItems pRaliAddtional_ =+    RouterAggregatedListItems'+    { _raliAddtional = _Coerce # pRaliAddtional_+    }++-- | Name of the scope containing this set of routers.+raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)+raliAddtional+  = lens _raliAddtional+      (\ s a -> s{_raliAddtional = a})+      . _Coerce++instance FromJSON RouterAggregatedListItems where+        parseJSON+          = withObject "RouterAggregatedListItems"+              (\ o ->+                 RouterAggregatedListItems' <$> (parseJSONObject o))++instance ToJSON RouterAggregatedListItems where+        toJSON = toJSON . _raliAddtional++-- | Cloud Autoscaler policy.+--+-- /See:/ 'autoscalingPolicy' smart constructor.+data AutoscalingPolicy = AutoscalingPolicy'+    { _apCustomMetricUtilizations :: !(Maybe [AutoscalingPolicyCustomMetricUtilization])+    , _apMaxNumReplicas           :: !(Maybe (Textual Int32))+    , _apCPUUtilization           :: !(Maybe AutoscalingPolicyCPUUtilization)+    , _apLoadBalancingUtilization :: !(Maybe AutoscalingPolicyLoadBalancingUtilization)+    , _apMinNumReplicas           :: !(Maybe (Textual Int32))+    , _apCoolDownPeriodSec        :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalingPolicy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apCustomMetricUtilizations'+--+-- * 'apMaxNumReplicas'+--+-- * 'apCPUUtilization'+--+-- * 'apLoadBalancingUtilization'+--+-- * 'apMinNumReplicas'+--+-- * 'apCoolDownPeriodSec'+autoscalingPolicy+    :: AutoscalingPolicy+autoscalingPolicy =+    AutoscalingPolicy'+    { _apCustomMetricUtilizations = Nothing+    , _apMaxNumReplicas = Nothing+    , _apCPUUtilization = Nothing+    , _apLoadBalancingUtilization = Nothing+    , _apMinNumReplicas = Nothing+    , _apCoolDownPeriodSec = Nothing+    }++-- | Configuration parameters of autoscaling based on a custom metric.+apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]+apCustomMetricUtilizations+  = lens _apCustomMetricUtilizations+      (\ s a -> s{_apCustomMetricUtilizations = a})+      . _Default+      . _Coerce++-- | The maximum number of instances that the autoscaler can scale up to.+-- This is required when creating or updating an autoscaler. The maximum+-- number of replicas should not be lower than minimal number of replicas.+apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)+apMaxNumReplicas+  = lens _apMaxNumReplicas+      (\ s a -> s{_apMaxNumReplicas = a})+      . mapping _Coerce++-- | Defines the CPU utilization policy that allows the autoscaler to scale+-- based on the average CPU utilization of a managed instance group.+apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)+apCPUUtilization+  = lens _apCPUUtilization+      (\ s a -> s{_apCPUUtilization = a})++-- | Configuration parameters of autoscaling based on load balancer.+apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)+apLoadBalancingUtilization+  = lens _apLoadBalancingUtilization+      (\ s a -> s{_apLoadBalancingUtilization = a})++-- | The minimum number of replicas that the autoscaler can scale down to.+-- This cannot be less than 0. If not provided, autoscaler will choose a+-- default value depending on maximum number of instances allowed.+apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)+apMinNumReplicas+  = lens _apMinNumReplicas+      (\ s a -> s{_apMinNumReplicas = a})+      . mapping _Coerce++-- | The number of seconds that the autoscaler should wait before it starts+-- collecting information from a new instance. This prevents the autoscaler+-- from collecting information when the instance is initializing, during+-- which the collected usage would not be reliable. The default time+-- autoscaler waits is 60 seconds. Virtual machine initialization times+-- might vary because of numerous factors. We recommend that you test how+-- long an instance may take to initialize. To do this, create an instance+-- and time the startup process.+apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)+apCoolDownPeriodSec+  = lens _apCoolDownPeriodSec+      (\ s a -> s{_apCoolDownPeriodSec = a})+      . mapping _Coerce++instance FromJSON AutoscalingPolicy where+        parseJSON+          = withObject "AutoscalingPolicy"+              (\ o ->+                 AutoscalingPolicy' <$>+                   (o .:? "customMetricUtilizations" .!= mempty) <*>+                     (o .:? "maxNumReplicas")+                     <*> (o .:? "cpuUtilization")+                     <*> (o .:? "loadBalancingUtilization")+                     <*> (o .:? "minNumReplicas")+                     <*> (o .:? "coolDownPeriodSec"))++instance ToJSON AutoscalingPolicy where+        toJSON AutoscalingPolicy'{..}+          = object+              (catMaybes+                 [("customMetricUtilizations" .=) <$>+                    _apCustomMetricUtilizations,+                  ("maxNumReplicas" .=) <$> _apMaxNumReplicas,+                  ("cpuUtilization" .=) <$> _apCPUUtilization,+                  ("loadBalancingUtilization" .=) <$>+                    _apLoadBalancingUtilization,+                  ("minNumReplicas" .=) <$> _apMinNumReplicas,+                  ("coolDownPeriodSec" .=) <$> _apCoolDownPeriodSec])++-- | Contains a list of region resources.+--+-- /See:/ 'regionList' smart constructor.+data RegionList = RegionList'+    { _regNextPageToken :: !(Maybe Text)+    , _regKind          :: !Text+    , _regItems         :: !(Maybe [Region])+    , _regSelfLink      :: !(Maybe Text)+    , _regId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RegionList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'regNextPageToken'+--+-- * 'regKind'+--+-- * 'regItems'+--+-- * 'regSelfLink'+--+-- * 'regId'+regionList+    :: RegionList+regionList =+    RegionList'+    { _regNextPageToken = Nothing+    , _regKind = "compute#regionList"+    , _regItems = Nothing+    , _regSelfLink = Nothing+    , _regId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+regNextPageToken :: Lens' RegionList (Maybe Text)+regNextPageToken+  = lens _regNextPageToken+      (\ s a -> s{_regNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#regionList for lists of+-- regions.+regKind :: Lens' RegionList Text+regKind = lens _regKind (\ s a -> s{_regKind = a})++-- | [Output Only] A list of Region resources.+regItems :: Lens' RegionList [Region]+regItems+  = lens _regItems (\ s a -> s{_regItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+regSelfLink :: Lens' RegionList (Maybe Text)+regSelfLink+  = lens _regSelfLink (\ s a -> s{_regSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+regId :: Lens' RegionList (Maybe Text)+regId = lens _regId (\ s a -> s{_regId = a})++instance FromJSON RegionList where+        parseJSON+          = withObject "RegionList"+              (\ o ->+                 RegionList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#regionList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON RegionList where+        toJSON RegionList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _regNextPageToken,+                  Just ("kind" .= _regKind),+                  ("items" .=) <$> _regItems,+                  ("selfLink" .=) <$> _regSelfLink,+                  ("id" .=) <$> _regId])++-- | Contains a list of VpnTunnel resources.+--+-- /See:/ 'vpnTunnelList' smart constructor.+data VPNTunnelList = VPNTunnelList'+    { _vtlNextPageToken :: !(Maybe Text)+    , _vtlKind          :: !Text+    , _vtlItems         :: !(Maybe [VPNTunnel])+    , _vtlSelfLink      :: !(Maybe Text)+    , _vtlId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtlNextPageToken'+--+-- * 'vtlKind'+--+-- * 'vtlItems'+--+-- * 'vtlSelfLink'+--+-- * 'vtlId'+vpnTunnelList+    :: VPNTunnelList+vpnTunnelList =+    VPNTunnelList'+    { _vtlNextPageToken = Nothing+    , _vtlKind = "compute#vpnTunnelList"+    , _vtlItems = Nothing+    , _vtlSelfLink = Nothing+    , _vtlId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)+vtlNextPageToken+  = lens _vtlNextPageToken+      (\ s a -> s{_vtlNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN+-- tunnels.+vtlKind :: Lens' VPNTunnelList Text+vtlKind = lens _vtlKind (\ s a -> s{_vtlKind = a})++-- | [Output Only] A list of VpnTunnel resources.+vtlItems :: Lens' VPNTunnelList [VPNTunnel]+vtlItems+  = lens _vtlItems (\ s a -> s{_vtlItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)+vtlSelfLink+  = lens _vtlSelfLink (\ s a -> s{_vtlSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+vtlId :: Lens' VPNTunnelList (Maybe Text)+vtlId = lens _vtlId (\ s a -> s{_vtlId = a})++instance FromJSON VPNTunnelList where+        parseJSON+          = withObject "VPNTunnelList"+              (\ o ->+                 VPNTunnelList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#vpnTunnelList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON VPNTunnelList where+        toJSON VPNTunnelList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _vtlNextPageToken,+                  Just ("kind" .= _vtlKind),+                  ("items" .=) <$> _vtlItems,+                  ("selfLink" .=) <$> _vtlSelfLink,+                  ("id" .=) <$> _vtlId])++--+-- /See:/ 'machineTypeScratchDisksItem' smart constructor.+newtype MachineTypeScratchDisksItem = MachineTypeScratchDisksItem'+    { _mtsdiDiskGb :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypeScratchDisksItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtsdiDiskGb'+machineTypeScratchDisksItem+    :: MachineTypeScratchDisksItem+machineTypeScratchDisksItem =+    MachineTypeScratchDisksItem'+    { _mtsdiDiskGb = Nothing+    }++-- | Size of the scratch disk, defined in GB.+mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)+mtsdiDiskGb+  = lens _mtsdiDiskGb (\ s a -> s{_mtsdiDiskGb = a}) .+      mapping _Coerce++instance FromJSON MachineTypeScratchDisksItem where+        parseJSON+          = withObject "MachineTypeScratchDisksItem"+              (\ o ->+                 MachineTypeScratchDisksItem' <$> (o .:? "diskGb"))++instance ToJSON MachineTypeScratchDisksItem where+        toJSON MachineTypeScratchDisksItem'{..}+          = object (catMaybes [("diskGb" .=) <$> _mtsdiDiskGb])++--+-- /See:/ 'subnetworksScopedListWarningDataItem' smart constructor.+data SubnetworksScopedListWarningDataItem = SubnetworksScopedListWarningDataItem'+    { _sslwdiValue :: !(Maybe Text)+    , _sslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworksScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sslwdiValue'+--+-- * 'sslwdiKey'+subnetworksScopedListWarningDataItem+    :: SubnetworksScopedListWarningDataItem+subnetworksScopedListWarningDataItem =+    SubnetworksScopedListWarningDataItem'+    { _sslwdiValue = Nothing+    , _sslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)+sslwdiValue+  = lens _sslwdiValue (\ s a -> s{_sslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)+sslwdiKey+  = lens _sslwdiKey (\ s a -> s{_sslwdiKey = a})++instance FromJSON+         SubnetworksScopedListWarningDataItem where+        parseJSON+          = withObject "SubnetworksScopedListWarningDataItem"+              (\ o ->+                 SubnetworksScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON SubnetworksScopedListWarningDataItem+         where+        toJSON SubnetworksScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _sslwdiValue,+                  ("key" .=) <$> _sslwdiKey])++--+-- /See:/ 'machineTypesScopedList' smart constructor.+data MachineTypesScopedList = MachineTypesScopedList'+    { _mtslMachineTypes :: !(Maybe [MachineType])+    , _mtslWarning      :: !(Maybe MachineTypesScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypesScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtslMachineTypes'+--+-- * 'mtslWarning'+machineTypesScopedList+    :: MachineTypesScopedList+machineTypesScopedList =+    MachineTypesScopedList'+    { _mtslMachineTypes = Nothing+    , _mtslWarning = Nothing+    }++-- | [Output Only] List of machine types contained in this scope.+mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]+mtslMachineTypes+  = lens _mtslMachineTypes+      (\ s a -> s{_mtslMachineTypes = a})+      . _Default+      . _Coerce++-- | [Output Only] An informational warning that appears when the machine+-- types list is empty.+mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)+mtslWarning+  = lens _mtslWarning (\ s a -> s{_mtslWarning = a})++instance FromJSON MachineTypesScopedList where+        parseJSON+          = withObject "MachineTypesScopedList"+              (\ o ->+                 MachineTypesScopedList' <$>+                   (o .:? "machineTypes" .!= mempty) <*>+                     (o .:? "warning"))++instance ToJSON MachineTypesScopedList where+        toJSON MachineTypesScopedList'{..}+          = object+              (catMaybes+                 [("machineTypes" .=) <$> _mtslMachineTypes,+                  ("warning" .=) <$> _mtslWarning])++-- | A Subnetwork resource.+--+-- /See:/ 'subnetwork' smart constructor.+data Subnetwork = Subnetwork'+    { _subKind              :: !Text+    , _subNetwork           :: !(Maybe Text)+    , _subGatewayAddress    :: !(Maybe Text)+    , _subSelfLink          :: !(Maybe Text)+    , _subName              :: !(Maybe Text)+    , _subCreationTimestamp :: !(Maybe Text)+    , _subIPCIdRRange       :: !(Maybe Text)+    , _subId                :: !(Maybe (Textual Word64))+    , _subRegion            :: !(Maybe Text)+    , _subDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Subnetwork' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'subKind'+--+-- * 'subNetwork'+--+-- * 'subGatewayAddress'+--+-- * 'subSelfLink'+--+-- * 'subName'+--+-- * 'subCreationTimestamp'+--+-- * 'subIPCIdRRange'+--+-- * 'subId'+--+-- * 'subRegion'+--+-- * 'subDescription'+subnetwork+    :: Subnetwork+subnetwork =+    Subnetwork'+    { _subKind = "compute#subnetwork"+    , _subNetwork = Nothing+    , _subGatewayAddress = Nothing+    , _subSelfLink = Nothing+    , _subName = Nothing+    , _subCreationTimestamp = Nothing+    , _subIPCIdRRange = Nothing+    , _subId = Nothing+    , _subRegion = Nothing+    , _subDescription = Nothing+    }++-- | [Output Only] Type of the resource. Always compute#subnetwork for+-- Subnetwork resources.+subKind :: Lens' Subnetwork Text+subKind = lens _subKind (\ s a -> s{_subKind = a})++-- | The URL of the network to which this subnetwork belongs, provided by the+-- client when initially creating the subnetwork. Only networks that are in+-- the distributed mode can have subnetworks.+subNetwork :: Lens' Subnetwork (Maybe Text)+subNetwork+  = lens _subNetwork (\ s a -> s{_subNetwork = a})++-- | [Output Only] The gateway address for default routes to reach+-- destination addresses outside this subnetwork.+subGatewayAddress :: Lens' Subnetwork (Maybe Text)+subGatewayAddress+  = lens _subGatewayAddress+      (\ s a -> s{_subGatewayAddress = a})++-- | [Output Only] Server-defined URL for the resource.+subSelfLink :: Lens' Subnetwork (Maybe Text)+subSelfLink+  = lens _subSelfLink (\ s a -> s{_subSelfLink = a})++-- | The name of the resource, provided by the client when initially creating+-- the resource. The name must be 1-63 characters long, and comply with+-- RFC1035. Specifically, the name must be 1-63 characters long and match+-- the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+subName :: Lens' Subnetwork (Maybe Text)+subName = lens _subName (\ s a -> s{_subName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+subCreationTimestamp :: Lens' Subnetwork (Maybe Text)+subCreationTimestamp+  = lens _subCreationTimestamp+      (\ s a -> s{_subCreationTimestamp = a})++-- | The range of internal addresses that are owned by this subnetwork.+-- Provide this property when you create the subnetwork. For example,+-- 10.0.0.0\/8 or 192.168.0.0\/16. Ranges must be unique and+-- non-overlapping within a network.+subIPCIdRRange :: Lens' Subnetwork (Maybe Text)+subIPCIdRRange+  = lens _subIPCIdRRange+      (\ s a -> s{_subIPCIdRRange = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+subId :: Lens' Subnetwork (Maybe Word64)+subId+  = lens _subId (\ s a -> s{_subId = a}) .+      mapping _Coerce++-- | URL of the region where the Subnetwork resides.+subRegion :: Lens' Subnetwork (Maybe Text)+subRegion+  = lens _subRegion (\ s a -> s{_subRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+subDescription :: Lens' Subnetwork (Maybe Text)+subDescription+  = lens _subDescription+      (\ s a -> s{_subDescription = a})++instance FromJSON Subnetwork where+        parseJSON+          = withObject "Subnetwork"+              (\ o ->+                 Subnetwork' <$>+                   (o .:? "kind" .!= "compute#subnetwork") <*>+                     (o .:? "network")+                     <*> (o .:? "gatewayAddress")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "ipCidrRange")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description"))++instance ToJSON Subnetwork where+        toJSON Subnetwork'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _subKind),+                  ("network" .=) <$> _subNetwork,+                  ("gatewayAddress" .=) <$> _subGatewayAddress,+                  ("selfLink" .=) <$> _subSelfLink,+                  ("name" .=) <$> _subName,+                  ("creationTimestamp" .=) <$> _subCreationTimestamp,+                  ("ipCidrRange" .=) <$> _subIPCIdRRange,+                  ("id" .=) <$> _subId, ("region" .=) <$> _subRegion,+                  ("description" .=) <$> _subDescription])++--+-- /See:/ 'machineTypeAggregatedList' smart constructor.+data MachineTypeAggregatedList = MachineTypeAggregatedList'+    { _mtalNextPageToken :: !(Maybe Text)+    , _mtalKind          :: !Text+    , _mtalItems         :: !(Maybe MachineTypeAggregatedListItems)+    , _mtalSelfLink      :: !(Maybe Text)+    , _mtalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypeAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtalNextPageToken'+--+-- * 'mtalKind'+--+-- * 'mtalItems'+--+-- * 'mtalSelfLink'+--+-- * 'mtalId'+machineTypeAggregatedList+    :: MachineTypeAggregatedList+machineTypeAggregatedList =+    MachineTypeAggregatedList'+    { _mtalNextPageToken = Nothing+    , _mtalKind = "compute#machineTypeAggregatedList"+    , _mtalItems = Nothing+    , _mtalSelfLink = Nothing+    , _mtalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)+mtalNextPageToken+  = lens _mtalNextPageToken+      (\ s a -> s{_mtalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#machineTypeAggregatedList+-- for aggregated lists of machine types.+mtalKind :: Lens' MachineTypeAggregatedList Text+mtalKind = lens _mtalKind (\ s a -> s{_mtalKind = a})++-- | [Output Only] A map of scoped machine type lists.+mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)+mtalItems+  = lens _mtalItems (\ s a -> s{_mtalItems = a})++-- | [Output Only] Server-defined URL for this resource.+mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)+mtalSelfLink+  = lens _mtalSelfLink (\ s a -> s{_mtalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)+mtalId = lens _mtalId (\ s a -> s{_mtalId = a})++instance FromJSON MachineTypeAggregatedList where+        parseJSON+          = withObject "MachineTypeAggregatedList"+              (\ o ->+                 MachineTypeAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#machineTypeAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON MachineTypeAggregatedList where+        toJSON MachineTypeAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _mtalNextPageToken,+                  Just ("kind" .= _mtalKind),+                  ("items" .=) <$> _mtalItems,+                  ("selfLink" .=) <$> _mtalSelfLink,+                  ("id" .=) <$> _mtalId])++-- | A DiskType resource.+--+-- /See:/ 'diskType' smart constructor.+data DiskType = DiskType'+    { _dtKind              :: !Text+    , _dtZone              :: !(Maybe Text)+    , _dtSelfLink          :: !(Maybe Text)+    , _dtName              :: !(Maybe Text)+    , _dtCreationTimestamp :: !(Maybe Text)+    , _dtId                :: !(Maybe (Textual Word64))+    , _dtValidDiskSize     :: !(Maybe Text)+    , _dtDescription       :: !(Maybe Text)+    , _dtDefaultDiskSizeGb :: !(Maybe (Textual Int64))+    , _dtDeprecated        :: !(Maybe DeprecationStatus)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtKind'+--+-- * 'dtZone'+--+-- * 'dtSelfLink'+--+-- * 'dtName'+--+-- * 'dtCreationTimestamp'+--+-- * 'dtId'+--+-- * 'dtValidDiskSize'+--+-- * 'dtDescription'+--+-- * 'dtDefaultDiskSizeGb'+--+-- * 'dtDeprecated'+diskType+    :: DiskType+diskType =+    DiskType'+    { _dtKind = "compute#diskType"+    , _dtZone = Nothing+    , _dtSelfLink = Nothing+    , _dtName = Nothing+    , _dtCreationTimestamp = Nothing+    , _dtId = Nothing+    , _dtValidDiskSize = Nothing+    , _dtDescription = Nothing+    , _dtDefaultDiskSizeGb = Nothing+    , _dtDeprecated = Nothing+    }++-- | [Output Only] Type of the resource. Always compute#diskType for disk+-- types.+dtKind :: Lens' DiskType Text+dtKind = lens _dtKind (\ s a -> s{_dtKind = a})++-- | [Output Only] URL of the zone where the disk type resides.+dtZone :: Lens' DiskType (Maybe Text)+dtZone = lens _dtZone (\ s a -> s{_dtZone = a})++-- | [Output Only] Server-defined URL for the resource.+dtSelfLink :: Lens' DiskType (Maybe Text)+dtSelfLink+  = lens _dtSelfLink (\ s a -> s{_dtSelfLink = a})++-- | [Output Only] Name of the resource.+dtName :: Lens' DiskType (Maybe Text)+dtName = lens _dtName (\ s a -> s{_dtName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+dtCreationTimestamp :: Lens' DiskType (Maybe Text)+dtCreationTimestamp+  = lens _dtCreationTimestamp+      (\ s a -> s{_dtCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+dtId :: Lens' DiskType (Maybe Word64)+dtId+  = lens _dtId (\ s a -> s{_dtId = a}) .+      mapping _Coerce++-- | [Output Only] An optional textual description of the valid disk size,+-- such as \"10GB-10TB\".+dtValidDiskSize :: Lens' DiskType (Maybe Text)+dtValidDiskSize+  = lens _dtValidDiskSize+      (\ s a -> s{_dtValidDiskSize = a})++-- | [Output Only] An optional description of this resource.+dtDescription :: Lens' DiskType (Maybe Text)+dtDescription+  = lens _dtDescription+      (\ s a -> s{_dtDescription = a})++-- | [Output Only] Server-defined default disk size in GB.+dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)+dtDefaultDiskSizeGb+  = lens _dtDefaultDiskSizeGb+      (\ s a -> s{_dtDefaultDiskSizeGb = a})+      . mapping _Coerce++-- | [Output Only] The deprecation status associated with this disk type.+dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)+dtDeprecated+  = lens _dtDeprecated (\ s a -> s{_dtDeprecated = a})++instance FromJSON DiskType where+        parseJSON+          = withObject "DiskType"+              (\ o ->+                 DiskType' <$>+                   (o .:? "kind" .!= "compute#diskType") <*>+                     (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "validDiskSize")+                     <*> (o .:? "description")+                     <*> (o .:? "defaultDiskSizeGb")+                     <*> (o .:? "deprecated"))++instance ToJSON DiskType where+        toJSON DiskType'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _dtKind), ("zone" .=) <$> _dtZone,+                  ("selfLink" .=) <$> _dtSelfLink,+                  ("name" .=) <$> _dtName,+                  ("creationTimestamp" .=) <$> _dtCreationTimestamp,+                  ("id" .=) <$> _dtId,+                  ("validDiskSize" .=) <$> _dtValidDiskSize,+                  ("description" .=) <$> _dtDescription,+                  ("defaultDiskSizeGb" .=) <$> _dtDefaultDiskSizeGb,+                  ("deprecated" .=) <$> _dtDeprecated])++-- | Message representing the validation result for a UrlMap.+--+-- /See:/ 'urlMapValidationResult' smart constructor.+data URLMapValidationResult = URLMapValidationResult'+    { _umvrLoadErrors    :: !(Maybe [Text])+    , _umvrLoadSucceeded :: !(Maybe Bool)+    , _umvrTestPassed    :: !(Maybe Bool)+    , _umvrTestFailures  :: !(Maybe [TestFailure])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapValidationResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umvrLoadErrors'+--+-- * 'umvrLoadSucceeded'+--+-- * 'umvrTestPassed'+--+-- * 'umvrTestFailures'+urlMapValidationResult+    :: URLMapValidationResult+urlMapValidationResult =+    URLMapValidationResult'+    { _umvrLoadErrors = Nothing+    , _umvrLoadSucceeded = Nothing+    , _umvrTestPassed = Nothing+    , _umvrTestFailures = Nothing+    }++umvrLoadErrors :: Lens' URLMapValidationResult [Text]+umvrLoadErrors+  = lens _umvrLoadErrors+      (\ s a -> s{_umvrLoadErrors = a})+      . _Default+      . _Coerce++-- | Whether the given UrlMap can be successfully loaded. If false,+-- \'loadErrors\' indicates the reasons.+umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)+umvrLoadSucceeded+  = lens _umvrLoadSucceeded+      (\ s a -> s{_umvrLoadSucceeded = a})++-- | If successfully loaded, this field indicates whether the test passed. If+-- false, \'testFailures\'s indicate the reason of failure.+umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)+umvrTestPassed+  = lens _umvrTestPassed+      (\ s a -> s{_umvrTestPassed = a})++umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]+umvrTestFailures+  = lens _umvrTestFailures+      (\ s a -> s{_umvrTestFailures = a})+      . _Default+      . _Coerce++instance FromJSON URLMapValidationResult where+        parseJSON+          = withObject "URLMapValidationResult"+              (\ o ->+                 URLMapValidationResult' <$>+                   (o .:? "loadErrors" .!= mempty) <*>+                     (o .:? "loadSucceeded")+                     <*> (o .:? "testPassed")+                     <*> (o .:? "testFailures" .!= mempty))++instance ToJSON URLMapValidationResult where+        toJSON URLMapValidationResult'{..}+          = object+              (catMaybes+                 [("loadErrors" .=) <$> _umvrLoadErrors,+                  ("loadSucceeded" .=) <$> _umvrLoadSucceeded,+                  ("testPassed" .=) <$> _umvrTestPassed,+                  ("testFailures" .=) <$> _umvrTestFailures])++-- | A metadata key\/value entry.+--+-- /See:/ 'metadata' smart constructor.+data Metadata = Metadata'+    { _mKind        :: !Text+    , _mFingerprint :: !(Maybe Base64)+    , _mItems       :: !(Maybe [MetadataItemsItem])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Metadata' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mKind'+--+-- * 'mFingerprint'+--+-- * 'mItems'+metadata+    :: Metadata+metadata =+    Metadata'+    { _mKind = "compute#metadata"+    , _mFingerprint = Nothing+    , _mItems = Nothing+    }++-- | [Output Only] Type of the resource. Always compute#metadata for+-- metadata.+mKind :: Lens' Metadata Text+mKind = lens _mKind (\ s a -> s{_mKind = a})++-- | Specifies a fingerprint for this request, which is essentially a hash of+-- the metadata\'s contents and used for optimistic locking. The+-- fingerprint is initially generated by Compute Engine and changes after+-- every request to modify or update metadata. You must always provide an+-- up-to-date fingerprint hash in order to update or change metadata.+mFingerprint :: Lens' Metadata (Maybe ByteString)+mFingerprint+  = lens _mFingerprint (\ s a -> s{_mFingerprint = a})+      . mapping _Base64++-- | Array of key\/value pairs. The total size of all keys and values must be+-- less than 512 KB.+mItems :: Lens' Metadata [MetadataItemsItem]+mItems+  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .+      _Coerce++instance FromJSON Metadata where+        parseJSON+          = withObject "Metadata"+              (\ o ->+                 Metadata' <$>+                   (o .:? "kind" .!= "compute#metadata") <*>+                     (o .:? "fingerprint")+                     <*> (o .:? "items" .!= mempty))++instance ToJSON Metadata where+        toJSON Metadata'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _mKind),+                  ("fingerprint" .=) <$> _mFingerprint,+                  ("items" .=) <$> _mItems])++--+-- /See:/ 'routeWarningsItem' smart constructor.+data RouteWarningsItem = RouteWarningsItem'+    { _rwiData    :: !(Maybe [RouteWarningsItemDataItem])+    , _rwiCode    :: !(Maybe RouteWarningsItemCode)+    , _rwiMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouteWarningsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rwiData'+--+-- * 'rwiCode'+--+-- * 'rwiMessage'+routeWarningsItem+    :: RouteWarningsItem+routeWarningsItem =+    RouteWarningsItem'+    { _rwiData = Nothing+    , _rwiCode = Nothing+    , _rwiMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]+rwiData+  = lens _rwiData (\ s a -> s{_rwiData = a}) . _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)+rwiCode = lens _rwiCode (\ s a -> s{_rwiCode = a})++-- | [Output Only] A human-readable description of the warning code.+rwiMessage :: Lens' RouteWarningsItem (Maybe Text)+rwiMessage+  = lens _rwiMessage (\ s a -> s{_rwiMessage = a})++instance FromJSON RouteWarningsItem where+        parseJSON+          = withObject "RouteWarningsItem"+              (\ o ->+                 RouteWarningsItem' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON RouteWarningsItem where+        toJSON RouteWarningsItem'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _rwiData, ("code" .=) <$> _rwiCode,+                  ("message" .=) <$> _rwiMessage])++--+-- /See:/ 'machineTypesScopedListWarningDataItem' smart constructor.+data MachineTypesScopedListWarningDataItem = MachineTypesScopedListWarningDataItem'+    { _mtslwdiValue :: !(Maybe Text)+    , _mtslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineTypesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtslwdiValue'+--+-- * 'mtslwdiKey'+machineTypesScopedListWarningDataItem+    :: MachineTypesScopedListWarningDataItem+machineTypesScopedListWarningDataItem =+    MachineTypesScopedListWarningDataItem'+    { _mtslwdiValue = Nothing+    , _mtslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)+mtslwdiValue+  = lens _mtslwdiValue (\ s a -> s{_mtslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)+mtslwdiKey+  = lens _mtslwdiKey (\ s a -> s{_mtslwdiKey = a})++instance FromJSON+         MachineTypesScopedListWarningDataItem where+        parseJSON+          = withObject "MachineTypesScopedListWarningDataItem"+              (\ o ->+                 MachineTypesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON MachineTypesScopedListWarningDataItem+         where+        toJSON MachineTypesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _mtslwdiValue,+                  ("key" .=) <$> _mtslwdiKey])++--+-- /See:/ 'diskTypesScopedListWarningDataItem' smart constructor.+data DiskTypesScopedListWarningDataItem = DiskTypesScopedListWarningDataItem'+    { _dtslwdiValue :: !(Maybe Text)+    , _dtslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DiskTypesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtslwdiValue'+--+-- * 'dtslwdiKey'+diskTypesScopedListWarningDataItem+    :: DiskTypesScopedListWarningDataItem+diskTypesScopedListWarningDataItem =+    DiskTypesScopedListWarningDataItem'+    { _dtslwdiValue = Nothing+    , _dtslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)+dtslwdiValue+  = lens _dtslwdiValue (\ s a -> s{_dtslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)+dtslwdiKey+  = lens _dtslwdiKey (\ s a -> s{_dtslwdiKey = a})++instance FromJSON DiskTypesScopedListWarningDataItem+         where+        parseJSON+          = withObject "DiskTypesScopedListWarningDataItem"+              (\ o ->+                 DiskTypesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON DiskTypesScopedListWarningDataItem+         where+        toJSON DiskTypesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _dtslwdiValue,+                  ("key" .=) <$> _dtslwdiKey])++-- | A TargetHttpProxy resource. This resource defines an HTTP proxy.+--+-- /See:/ 'targetHTTPProxy' smart constructor.+data TargetHTTPProxy = TargetHTTPProxy'+    { _thttppURLMap            :: !(Maybe Text)+    , _thttppKind              :: !Text+    , _thttppSelfLink          :: !(Maybe Text)+    , _thttppName              :: !(Maybe Text)+    , _thttppCreationTimestamp :: !(Maybe Text)+    , _thttppId                :: !(Maybe (Textual Word64))+    , _thttppDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetHTTPProxy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'thttppURLMap'+--+-- * 'thttppKind'+--+-- * 'thttppSelfLink'+--+-- * 'thttppName'+--+-- * 'thttppCreationTimestamp'+--+-- * 'thttppId'+--+-- * 'thttppDescription'+targetHTTPProxy+    :: TargetHTTPProxy+targetHTTPProxy =+    TargetHTTPProxy'+    { _thttppURLMap = Nothing+    , _thttppKind = "compute#targetHttpProxy"+    , _thttppSelfLink = Nothing+    , _thttppName = Nothing+    , _thttppCreationTimestamp = Nothing+    , _thttppId = Nothing+    , _thttppDescription = Nothing+    }++-- | URL to the UrlMap resource that defines the mapping from URL to the+-- BackendService.+thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)+thttppURLMap+  = lens _thttppURLMap (\ s a -> s{_thttppURLMap = a})++-- | [Output Only] Type of resource. Always compute#targetHttpProxy for+-- target HTTP proxies.+thttppKind :: Lens' TargetHTTPProxy Text+thttppKind+  = lens _thttppKind (\ s a -> s{_thttppKind = a})++-- | [Output Only] Server-defined URL for the resource.+thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)+thttppSelfLink+  = lens _thttppSelfLink+      (\ s a -> s{_thttppSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+thttppName :: Lens' TargetHTTPProxy (Maybe Text)+thttppName+  = lens _thttppName (\ s a -> s{_thttppName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)+thttppCreationTimestamp+  = lens _thttppCreationTimestamp+      (\ s a -> s{_thttppCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+thttppId :: Lens' TargetHTTPProxy (Maybe Word64)+thttppId+  = lens _thttppId (\ s a -> s{_thttppId = a}) .+      mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)+thttppDescription+  = lens _thttppDescription+      (\ s a -> s{_thttppDescription = a})++instance FromJSON TargetHTTPProxy where+        parseJSON+          = withObject "TargetHTTPProxy"+              (\ o ->+                 TargetHTTPProxy' <$>+                   (o .:? "urlMap") <*>+                     (o .:? "kind" .!= "compute#targetHttpProxy")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "description"))++instance ToJSON TargetHTTPProxy where+        toJSON TargetHTTPProxy'{..}+          = object+              (catMaybes+                 [("urlMap" .=) <$> _thttppURLMap,+                  Just ("kind" .= _thttppKind),+                  ("selfLink" .=) <$> _thttppSelfLink,+                  ("name" .=) <$> _thttppName,+                  ("creationTimestamp" .=) <$>+                    _thttppCreationTimestamp,+                  ("id" .=) <$> _thttppId,+                  ("description" .=) <$> _thttppDescription])++-- | A Machine Type resource.+--+-- /See:/ 'machineType' smart constructor.+data MachineType = MachineType'+    { _mtIsSharedCPU                  :: !(Maybe Bool)+    , _mtKind                         :: !Text+    , _mtImageSpaceGb                 :: !(Maybe (Textual Int32))+    , _mtZone                         :: !(Maybe Text)+    , _mtSelfLink                     :: !(Maybe Text)+    , _mtName                         :: !(Maybe Text)+    , _mtCreationTimestamp            :: !(Maybe Text)+    , _mtScratchDisks                 :: !(Maybe [MachineTypeScratchDisksItem])+    , _mtId                           :: !(Maybe (Textual Word64))+    , _mtGuestCPUs                    :: !(Maybe (Textual Int32))+    , _mtMaximumPersistentDisksSizeGb :: !(Maybe (Textual Int64))+    , _mtMaximumPersistentDisks       :: !(Maybe (Textual Int32))+    , _mtMemoryMb                     :: !(Maybe (Textual Int32))+    , _mtDescription                  :: !(Maybe Text)+    , _mtDeprecated                   :: !(Maybe DeprecationStatus)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MachineType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mtIsSharedCPU'+--+-- * 'mtKind'+--+-- * 'mtImageSpaceGb'+--+-- * 'mtZone'+--+-- * 'mtSelfLink'+--+-- * 'mtName'+--+-- * 'mtCreationTimestamp'+--+-- * 'mtScratchDisks'+--+-- * 'mtId'+--+-- * 'mtGuestCPUs'+--+-- * 'mtMaximumPersistentDisksSizeGb'+--+-- * 'mtMaximumPersistentDisks'+--+-- * 'mtMemoryMb'+--+-- * 'mtDescription'+--+-- * 'mtDeprecated'+machineType+    :: MachineType+machineType =+    MachineType'+    { _mtIsSharedCPU = Nothing+    , _mtKind = "compute#machineType"+    , _mtImageSpaceGb = Nothing+    , _mtZone = Nothing+    , _mtSelfLink = Nothing+    , _mtName = Nothing+    , _mtCreationTimestamp = Nothing+    , _mtScratchDisks = Nothing+    , _mtId = Nothing+    , _mtGuestCPUs = Nothing+    , _mtMaximumPersistentDisksSizeGb = Nothing+    , _mtMaximumPersistentDisks = Nothing+    , _mtMemoryMb = Nothing+    , _mtDescription = Nothing+    , _mtDeprecated = Nothing+    }++-- | [Output Only] Whether this machine type has a shared CPU. See+-- Shared-core machine types for more information.+mtIsSharedCPU :: Lens' MachineType (Maybe Bool)+mtIsSharedCPU+  = lens _mtIsSharedCPU+      (\ s a -> s{_mtIsSharedCPU = a})++-- | [Output Only] The type of the resource. Always compute#machineType for+-- machine types.+mtKind :: Lens' MachineType Text+mtKind = lens _mtKind (\ s a -> s{_mtKind = a})++-- | [Deprecated] This property is deprecated and will never be populated+-- with any relevant values.+mtImageSpaceGb :: Lens' MachineType (Maybe Int32)+mtImageSpaceGb+  = lens _mtImageSpaceGb+      (\ s a -> s{_mtImageSpaceGb = a})+      . mapping _Coerce++-- | [Output Only] The name of the zone where the machine type resides, such+-- as us-central1-a.+mtZone :: Lens' MachineType (Maybe Text)+mtZone = lens _mtZone (\ s a -> s{_mtZone = a})++-- | [Output Only] Server-defined URL for the resource.+mtSelfLink :: Lens' MachineType (Maybe Text)+mtSelfLink+  = lens _mtSelfLink (\ s a -> s{_mtSelfLink = a})++-- | [Output Only] Name of the resource.+mtName :: Lens' MachineType (Maybe Text)+mtName = lens _mtName (\ s a -> s{_mtName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+mtCreationTimestamp :: Lens' MachineType (Maybe Text)+mtCreationTimestamp+  = lens _mtCreationTimestamp+      (\ s a -> s{_mtCreationTimestamp = a})++-- | [Output Only] List of extended scratch disks assigned to the instance.+mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]+mtScratchDisks+  = lens _mtScratchDisks+      (\ s a -> s{_mtScratchDisks = a})+      . _Default+      . _Coerce++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+mtId :: Lens' MachineType (Maybe Word64)+mtId+  = lens _mtId (\ s a -> s{_mtId = a}) .+      mapping _Coerce++-- | [Output Only] The number of virtual CPUs that are available to the+-- instance.+mtGuestCPUs :: Lens' MachineType (Maybe Int32)+mtGuestCPUs+  = lens _mtGuestCPUs (\ s a -> s{_mtGuestCPUs = a}) .+      mapping _Coerce++-- | [Output Only] Maximum total persistent disks size (GB) allowed.+mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)+mtMaximumPersistentDisksSizeGb+  = lens _mtMaximumPersistentDisksSizeGb+      (\ s a -> s{_mtMaximumPersistentDisksSizeGb = a})+      . mapping _Coerce++-- | [Output Only] Maximum persistent disks allowed.+mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)+mtMaximumPersistentDisks+  = lens _mtMaximumPersistentDisks+      (\ s a -> s{_mtMaximumPersistentDisks = a})+      . mapping _Coerce++-- | [Output Only] The amount of physical memory available to the instance,+-- defined in MB.+mtMemoryMb :: Lens' MachineType (Maybe Int32)+mtMemoryMb+  = lens _mtMemoryMb (\ s a -> s{_mtMemoryMb = a}) .+      mapping _Coerce++-- | [Output Only] An optional textual description of the resource.+mtDescription :: Lens' MachineType (Maybe Text)+mtDescription+  = lens _mtDescription+      (\ s a -> s{_mtDescription = a})++-- | [Output Only] The deprecation status associated with this machine type.+mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)+mtDeprecated+  = lens _mtDeprecated (\ s a -> s{_mtDeprecated = a})++instance FromJSON MachineType where+        parseJSON+          = withObject "MachineType"+              (\ o ->+                 MachineType' <$>+                   (o .:? "isSharedCpu") <*>+                     (o .:? "kind" .!= "compute#machineType")+                     <*> (o .:? "imageSpaceGb")+                     <*> (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "scratchDisks" .!= mempty)+                     <*> (o .:? "id")+                     <*> (o .:? "guestCpus")+                     <*> (o .:? "maximumPersistentDisksSizeGb")+                     <*> (o .:? "maximumPersistentDisks")+                     <*> (o .:? "memoryMb")+                     <*> (o .:? "description")+                     <*> (o .:? "deprecated"))++instance ToJSON MachineType where+        toJSON MachineType'{..}+          = object+              (catMaybes+                 [("isSharedCpu" .=) <$> _mtIsSharedCPU,+                  Just ("kind" .= _mtKind),+                  ("imageSpaceGb" .=) <$> _mtImageSpaceGb,+                  ("zone" .=) <$> _mtZone,+                  ("selfLink" .=) <$> _mtSelfLink,+                  ("name" .=) <$> _mtName,+                  ("creationTimestamp" .=) <$> _mtCreationTimestamp,+                  ("scratchDisks" .=) <$> _mtScratchDisks,+                  ("id" .=) <$> _mtId,+                  ("guestCpus" .=) <$> _mtGuestCPUs,+                  ("maximumPersistentDisksSizeGb" .=) <$>+                    _mtMaximumPersistentDisksSizeGb,+                  ("maximumPersistentDisks" .=) <$>+                    _mtMaximumPersistentDisks,+                  ("memoryMb" .=) <$> _mtMemoryMb,+                  ("description" .=) <$> _mtDescription,+                  ("deprecated" .=) <$> _mtDeprecated])++-- | [Output Only] If errors are generated during processing of the+-- operation, this field will be populated.+--+-- /See:/ 'operationError' smart constructor.+newtype OperationError = OperationError'+    { _oeErrors :: Maybe [OperationErrorErrorsItem]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationError' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oeErrors'+operationError+    :: OperationError+operationError =+    OperationError'+    { _oeErrors = Nothing+    }++-- | [Output Only] The array of errors encountered while processing this+-- operation.+oeErrors :: Lens' OperationError [OperationErrorErrorsItem]+oeErrors+  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .+      _Default+      . _Coerce++instance FromJSON OperationError where+        parseJSON+          = withObject "OperationError"+              (\ o ->+                 OperationError' <$> (o .:? "errors" .!= mempty))++instance ToJSON OperationError where+        toJSON OperationError'{..}+          = object (catMaybes [("errors" .=) <$> _oeErrors])++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+--+-- /See:/ 'targetInstancesScopedListWarning' smart constructor.+data TargetInstancesScopedListWarning = TargetInstancesScopedListWarning'+    { _tislwData    :: !(Maybe [TargetInstancesScopedListWarningDataItem])+    , _tislwCode    :: !(Maybe TargetInstancesScopedListWarningCode)+    , _tislwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetInstancesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tislwData'+--+-- * 'tislwCode'+--+-- * 'tislwMessage'+targetInstancesScopedListWarning+    :: TargetInstancesScopedListWarning+targetInstancesScopedListWarning =+    TargetInstancesScopedListWarning'+    { _tislwData = Nothing+    , _tislwCode = Nothing+    , _tislwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]+tislwData+  = lens _tislwData (\ s a -> s{_tislwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)+tislwCode+  = lens _tislwCode (\ s a -> s{_tislwCode = a})++-- | [Output Only] A human-readable description of the warning code.+tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)+tislwMessage+  = lens _tislwMessage (\ s a -> s{_tislwMessage = a})++instance FromJSON TargetInstancesScopedListWarning+         where+        parseJSON+          = withObject "TargetInstancesScopedListWarning"+              (\ o ->+                 TargetInstancesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON TargetInstancesScopedListWarning+         where+        toJSON TargetInstancesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _tislwData,+                  ("code" .=) <$> _tislwCode,+                  ("message" .=) <$> _tislwMessage])++--+-- /See:/ 'subnetworkAggregatedList' smart constructor.+data SubnetworkAggregatedList = SubnetworkAggregatedList'+    { _salNextPageToken :: !(Maybe Text)+    , _salKind          :: !Text+    , _salItems         :: !(Maybe SubnetworkAggregatedListItems)+    , _salSelfLink      :: !(Maybe Text)+    , _salId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworkAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'salNextPageToken'+--+-- * 'salKind'+--+-- * 'salItems'+--+-- * 'salSelfLink'+--+-- * 'salId'+subnetworkAggregatedList+    :: SubnetworkAggregatedList+subnetworkAggregatedList =+    SubnetworkAggregatedList'+    { _salNextPageToken = Nothing+    , _salKind = "compute#subnetworkAggregatedList"+    , _salItems = Nothing+    , _salSelfLink = Nothing+    , _salId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)+salNextPageToken+  = lens _salNextPageToken+      (\ s a -> s{_salNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#subnetworkAggregatedList+-- for aggregated lists of subnetworks.+salKind :: Lens' SubnetworkAggregatedList Text+salKind = lens _salKind (\ s a -> s{_salKind = a})++-- | [Output] A map of scoped Subnetwork lists.+salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)+salItems = lens _salItems (\ s a -> s{_salItems = a})++-- | [Output Only] Server-defined URL for this resource.+salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)+salSelfLink+  = lens _salSelfLink (\ s a -> s{_salSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+salId :: Lens' SubnetworkAggregatedList (Maybe Text)+salId = lens _salId (\ s a -> s{_salId = a})++instance FromJSON SubnetworkAggregatedList where+        parseJSON+          = withObject "SubnetworkAggregatedList"+              (\ o ->+                 SubnetworkAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#subnetworkAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON SubnetworkAggregatedList where+        toJSON SubnetworkAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _salNextPageToken,+                  Just ("kind" .= _salKind),+                  ("items" .=) <$> _salItems,+                  ("selfLink" .=) <$> _salSelfLink,+                  ("id" .=) <$> _salId])++--+-- /See:/ 'disksResizeRequest' smart constructor.+newtype DisksResizeRequest = DisksResizeRequest'+    { _drrSizeGb :: Maybe (Textual Int64)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DisksResizeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drrSizeGb'+disksResizeRequest+    :: DisksResizeRequest+disksResizeRequest =+    DisksResizeRequest'+    { _drrSizeGb = Nothing+    }++-- | The new size of the persistent disk, which is specified in GB.+drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)+drrSizeGb+  = lens _drrSizeGb (\ s a -> s{_drrSizeGb = a}) .+      mapping _Coerce++instance FromJSON DisksResizeRequest where+        parseJSON+          = withObject "DisksResizeRequest"+              (\ o -> DisksResizeRequest' <$> (o .:? "sizeGb"))++instance ToJSON DisksResizeRequest where+        toJSON DisksResizeRequest'{..}+          = object (catMaybes [("sizeGb" .=) <$> _drrSizeGb])++--+-- /See:/ 'autoscalersScopedListWarningDataItem' smart constructor.+data AutoscalersScopedListWarningDataItem = AutoscalersScopedListWarningDataItem'+    { _aValue :: !(Maybe Text)+    , _aKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalersScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aValue'+--+-- * 'aKey'+autoscalersScopedListWarningDataItem+    :: AutoscalersScopedListWarningDataItem+autoscalersScopedListWarningDataItem =+    AutoscalersScopedListWarningDataItem'+    { _aValue = Nothing+    , _aKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)+aValue = lens _aValue (\ s a -> s{_aValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)+aKey = lens _aKey (\ s a -> s{_aKey = a})++instance FromJSON+         AutoscalersScopedListWarningDataItem where+        parseJSON+          = withObject "AutoscalersScopedListWarningDataItem"+              (\ o ->+                 AutoscalersScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON AutoscalersScopedListWarningDataItem+         where+        toJSON AutoscalersScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])++--+-- /See:/ 'instanceGroupsListInstances' smart constructor.+data InstanceGroupsListInstances = InstanceGroupsListInstances'+    { _igliNextPageToken :: !(Maybe Text)+    , _igliKind          :: !Text+    , _igliItems         :: !(Maybe [InstanceWithNamedPorts])+    , _igliSelfLink      :: !(Maybe Text)+    , _igliId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsListInstances' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igliNextPageToken'+--+-- * 'igliKind'+--+-- * 'igliItems'+--+-- * 'igliSelfLink'+--+-- * 'igliId'+instanceGroupsListInstances+    :: InstanceGroupsListInstances+instanceGroupsListInstances =+    InstanceGroupsListInstances'+    { _igliNextPageToken = Nothing+    , _igliKind = "compute#instanceGroupsListInstances"+    , _igliItems = Nothing+    , _igliSelfLink = Nothing+    , _igliId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)+igliNextPageToken+  = lens _igliNextPageToken+      (\ s a -> s{_igliNextPageToken = a})++-- | [Output Only] The resource type, which is always+-- compute#instanceGroupsListInstances for the list of instances in the+-- specified instance group.+igliKind :: Lens' InstanceGroupsListInstances Text+igliKind = lens _igliKind (\ s a -> s{_igliKind = a})++-- | [Output Only] A list of instances and any named ports that are assigned+-- to those instances.+igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]+igliItems+  = lens _igliItems (\ s a -> s{_igliItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] The URL for this list of instances in the specified+-- instance groups. The server generates this URL.+igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)+igliSelfLink+  = lens _igliSelfLink (\ s a -> s{_igliSelfLink = a})++-- | [Output Only] A unique identifier for this list of instances in the+-- specified instance group. The server generates this identifier.+igliId :: Lens' InstanceGroupsListInstances (Maybe Text)+igliId = lens _igliId (\ s a -> s{_igliId = a})++instance FromJSON InstanceGroupsListInstances where+        parseJSON+          = withObject "InstanceGroupsListInstances"+              (\ o ->+                 InstanceGroupsListInstances' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#instanceGroupsListInstances")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceGroupsListInstances where+        toJSON InstanceGroupsListInstances'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _igliNextPageToken,+                  Just ("kind" .= _igliKind),+                  ("items" .=) <$> _igliItems,+                  ("selfLink" .=) <$> _igliSelfLink,+                  ("id" .=) <$> _igliId])++-- | Represents an Autoscaler resource. Autoscalers allow you to+-- automatically scale virtual machine instances in managed instance groups+-- according to an autoscaling policy that you define. For more+-- information, read Autoscaling Groups of Instances.+--+-- /See:/ 'autoscaler' smart constructor.+data Autoscaler = Autoscaler'+    { _aaKind              :: !Text+    , _aaZone              :: !(Maybe Text)+    , _aaSelfLink          :: !(Maybe Text)+    , _aaName              :: !(Maybe Text)+    , _aaCreationTimestamp :: !(Maybe Text)+    , _aaAutoscalingPolicy :: !(Maybe AutoscalingPolicy)+    , _aaId                :: !(Maybe (Textual Word64))+    , _aaRegion            :: !(Maybe Text)+    , _aaDescription       :: !(Maybe Text)+    , _aaTarget            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Autoscaler' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aaKind'+--+-- * 'aaZone'+--+-- * 'aaSelfLink'+--+-- * 'aaName'+--+-- * 'aaCreationTimestamp'+--+-- * 'aaAutoscalingPolicy'+--+-- * 'aaId'+--+-- * 'aaRegion'+--+-- * 'aaDescription'+--+-- * 'aaTarget'+autoscaler+    :: Autoscaler+autoscaler =+    Autoscaler'+    { _aaKind = "compute#autoscaler"+    , _aaZone = Nothing+    , _aaSelfLink = Nothing+    , _aaName = Nothing+    , _aaCreationTimestamp = Nothing+    , _aaAutoscalingPolicy = Nothing+    , _aaId = Nothing+    , _aaRegion = Nothing+    , _aaDescription = Nothing+    , _aaTarget = Nothing+    }++-- | [Output Only] Type of the resource. Always compute#autoscaler for+-- autoscalers.+aaKind :: Lens' Autoscaler Text+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})++-- | [Output Only] URL of the zone where the instance group resides (for+-- autoscalers living in zonal scope).+aaZone :: Lens' Autoscaler (Maybe Text)+aaZone = lens _aaZone (\ s a -> s{_aaZone = a})++-- | [Output Only] Server-defined URL for the resource.+aaSelfLink :: Lens' Autoscaler (Maybe Text)+aaSelfLink+  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+aaName :: Lens' Autoscaler (Maybe Text)+aaName = lens _aaName (\ s a -> s{_aaName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)+aaCreationTimestamp+  = lens _aaCreationTimestamp+      (\ s a -> s{_aaCreationTimestamp = a})++-- | The configuration parameters for the autoscaling algorithm. You can+-- define one or more of the policies for an autoscaler: cpuUtilization,+-- customMetricUtilizations, and loadBalancingUtilization. If none of these+-- are specified, the default will be to autoscale based on cpuUtilization+-- to 0.6 or 60%.+aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)+aaAutoscalingPolicy+  = lens _aaAutoscalingPolicy+      (\ s a -> s{_aaAutoscalingPolicy = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+aaId :: Lens' Autoscaler (Maybe Word64)+aaId+  = lens _aaId (\ s a -> s{_aaId = a}) .+      mapping _Coerce++-- | [Output Only] URL of the region where the instance group resides (for+-- autoscalers living in regional scope).+aaRegion :: Lens' Autoscaler (Maybe Text)+aaRegion = lens _aaRegion (\ s a -> s{_aaRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+aaDescription :: Lens' Autoscaler (Maybe Text)+aaDescription+  = lens _aaDescription+      (\ s a -> s{_aaDescription = a})++-- | URL of the managed instance group that this autoscaler will scale.+aaTarget :: Lens' Autoscaler (Maybe Text)+aaTarget = lens _aaTarget (\ s a -> s{_aaTarget = a})++instance FromJSON Autoscaler where+        parseJSON+          = withObject "Autoscaler"+              (\ o ->+                 Autoscaler' <$>+                   (o .:? "kind" .!= "compute#autoscaler") <*>+                     (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "autoscalingPolicy")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "target"))++instance ToJSON Autoscaler where+        toJSON Autoscaler'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _aaKind), ("zone" .=) <$> _aaZone,+                  ("selfLink" .=) <$> _aaSelfLink,+                  ("name" .=) <$> _aaName,+                  ("creationTimestamp" .=) <$> _aaCreationTimestamp,+                  ("autoscalingPolicy" .=) <$> _aaAutoscalingPolicy,+                  ("id" .=) <$> _aaId, ("region" .=) <$> _aaRegion,+                  ("description" .=) <$> _aaDescription,+                  ("target" .=) <$> _aaTarget])++-- | [Output Only] Informational warning which replaces the list of disks+-- when the list is empty.+--+-- /See:/ 'disksScopedListWarning' smart constructor.+data DisksScopedListWarning = DisksScopedListWarning'+    { _dslwData    :: !(Maybe [DisksScopedListWarningDataItem])+    , _dslwCode    :: !(Maybe DisksScopedListWarningCode)+    , _dslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'DisksScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dslwData'+--+-- * 'dslwCode'+--+-- * 'dslwMessage'+disksScopedListWarning+    :: DisksScopedListWarning+disksScopedListWarning =+    DisksScopedListWarning'+    { _dslwData = Nothing+    , _dslwCode = Nothing+    , _dslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]+dslwData+  = lens _dslwData (\ s a -> s{_dslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)+dslwCode = lens _dslwCode (\ s a -> s{_dslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)+dslwMessage+  = lens _dslwMessage (\ s a -> s{_dslwMessage = a})++instance FromJSON DisksScopedListWarning where+        parseJSON+          = withObject "DisksScopedListWarning"+              (\ o ->+                 DisksScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON DisksScopedListWarning where+        toJSON DisksScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _dslwData,+                  ("code" .=) <$> _dslwCode,+                  ("message" .=) <$> _dslwMessage])++-- | A map of scoped target vpn gateway lists.+--+-- /See:/ 'targetVPNGatewayAggregatedListItems' smart constructor.+newtype TargetVPNGatewayAggregatedListItems = TargetVPNGatewayAggregatedListItems'+    { _tvgaliAddtional :: HashMap Text TargetVPNGatewaysScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewayAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgaliAddtional'+targetVPNGatewayAggregatedListItems+    :: HashMap Text TargetVPNGatewaysScopedList -- ^ 'tvgaliAddtional'+    -> TargetVPNGatewayAggregatedListItems+targetVPNGatewayAggregatedListItems pTvgaliAddtional_ =+    TargetVPNGatewayAggregatedListItems'+    { _tvgaliAddtional = _Coerce # pTvgaliAddtional_+    }++-- | [Output Only] Name of the scope containing this set of target VPN+-- gateways.+tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)+tvgaliAddtional+  = lens _tvgaliAddtional+      (\ s a -> s{_tvgaliAddtional = a})+      . _Coerce++instance FromJSON TargetVPNGatewayAggregatedListItems+         where+        parseJSON+          = withObject "TargetVPNGatewayAggregatedListItems"+              (\ o ->+                 TargetVPNGatewayAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON TargetVPNGatewayAggregatedListItems+         where+        toJSON = toJSON . _tvgaliAddtional++-- | Informational warning which replaces the list of addresses when the list+-- is empty.+--+-- /See:/ 'targetPoolsScopedListWarning' smart constructor.+data TargetPoolsScopedListWarning = TargetPoolsScopedListWarning'+    { _tpslwData    :: !(Maybe [TargetPoolsScopedListWarningDataItem])+    , _tpslwCode    :: !(Maybe TargetPoolsScopedListWarningCode)+    , _tpslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetPoolsScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tpslwData'+--+-- * 'tpslwCode'+--+-- * 'tpslwMessage'+targetPoolsScopedListWarning+    :: TargetPoolsScopedListWarning+targetPoolsScopedListWarning =+    TargetPoolsScopedListWarning'+    { _tpslwData = Nothing+    , _tpslwCode = Nothing+    , _tpslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]+tpslwData+  = lens _tpslwData (\ s a -> s{_tpslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)+tpslwCode+  = lens _tpslwCode (\ s a -> s{_tpslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)+tpslwMessage+  = lens _tpslwMessage (\ s a -> s{_tpslwMessage = a})++instance FromJSON TargetPoolsScopedListWarning where+        parseJSON+          = withObject "TargetPoolsScopedListWarning"+              (\ o ->+                 TargetPoolsScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON TargetPoolsScopedListWarning where+        toJSON TargetPoolsScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _tpslwData,+                  ("code" .=) <$> _tpslwCode,+                  ("message" .=) <$> _tpslwMessage])++--+-- /See:/ 'healthStatus' smart constructor.+data HealthStatus = HealthStatus'+    { _hsIPAddress   :: !(Maybe Text)+    , _hsHealthState :: !(Maybe HealthStatusHealthState)+    , _hsPort        :: !(Maybe (Textual Int32))+    , _hsInstance    :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HealthStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hsIPAddress'+--+-- * 'hsHealthState'+--+-- * 'hsPort'+--+-- * 'hsInstance'+healthStatus+    :: HealthStatus+healthStatus =+    HealthStatus'+    { _hsIPAddress = Nothing+    , _hsHealthState = Nothing+    , _hsPort = Nothing+    , _hsInstance = Nothing+    }++-- | The IP address represented by this resource.+hsIPAddress :: Lens' HealthStatus (Maybe Text)+hsIPAddress+  = lens _hsIPAddress (\ s a -> s{_hsIPAddress = a})++-- | Health state of the instance.+hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)+hsHealthState+  = lens _hsHealthState+      (\ s a -> s{_hsHealthState = a})++-- | The port on the instance.+hsPort :: Lens' HealthStatus (Maybe Int32)+hsPort+  = lens _hsPort (\ s a -> s{_hsPort = a}) .+      mapping _Coerce++-- | URL of the instance resource.+hsInstance :: Lens' HealthStatus (Maybe Text)+hsInstance+  = lens _hsInstance (\ s a -> s{_hsInstance = a})++instance FromJSON HealthStatus where+        parseJSON+          = withObject "HealthStatus"+              (\ o ->+                 HealthStatus' <$>+                   (o .:? "ipAddress") <*> (o .:? "healthState") <*>+                     (o .:? "port")+                     <*> (o .:? "instance"))++instance ToJSON HealthStatus where+        toJSON HealthStatus'{..}+          = object+              (catMaybes+                 [("ipAddress" .=) <$> _hsIPAddress,+                  ("healthState" .=) <$> _hsHealthState,+                  ("port" .=) <$> _hsPort,+                  ("instance" .=) <$> _hsInstance])++-- | Region resource.+--+-- /See:/ 'region' smart constructor.+data Region = Region'+    { _rrStatus            :: !(Maybe RegionStatus)+    , _rrZones             :: !(Maybe [Text])+    , _rrKind              :: !Text+    , _rrSelfLink          :: !(Maybe Text)+    , _rrName              :: !(Maybe Text)+    , _rrCreationTimestamp :: !(Maybe Text)+    , _rrQuotas            :: !(Maybe [Quota])+    , _rrId                :: !(Maybe (Textual Word64))+    , _rrDescription       :: !(Maybe Text)+    , _rrDeprecated        :: !(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:+--+-- * 'rrStatus'+--+-- * 'rrZones'+--+-- * 'rrKind'+--+-- * 'rrSelfLink'+--+-- * 'rrName'+--+-- * 'rrCreationTimestamp'+--+-- * 'rrQuotas'+--+-- * 'rrId'+--+-- * 'rrDescription'+--+-- * 'rrDeprecated'+region+    :: Region+region =+    Region'+    { _rrStatus = Nothing+    , _rrZones = Nothing+    , _rrKind = "compute#region"+    , _rrSelfLink = Nothing+    , _rrName = Nothing+    , _rrCreationTimestamp = Nothing+    , _rrQuotas = Nothing+    , _rrId = Nothing+    , _rrDescription = Nothing+    , _rrDeprecated = Nothing+    }++-- | [Output Only] Status of the region, either UP or DOWN.+rrStatus :: Lens' Region (Maybe RegionStatus)+rrStatus = lens _rrStatus (\ s a -> s{_rrStatus = a})++-- | [Output Only] A list of zones available in this region, in the form of+-- resource URLs.+rrZones :: Lens' Region [Text]+rrZones+  = lens _rrZones (\ s a -> s{_rrZones = a}) . _Default+      . _Coerce++-- | [Output Only] Type of the resource. Always compute#region for regions.+rrKind :: Lens' Region Text+rrKind = lens _rrKind (\ s a -> s{_rrKind = a})++-- | [Output Only] Server-defined URL for the resource.+rrSelfLink :: Lens' Region (Maybe Text)+rrSelfLink+  = lens _rrSelfLink (\ s a -> s{_rrSelfLink = a})++-- | [Output Only] Name of the resource.+rrName :: Lens' Region (Maybe Text)+rrName = lens _rrName (\ s a -> s{_rrName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+rrCreationTimestamp :: Lens' Region (Maybe Text)+rrCreationTimestamp+  = lens _rrCreationTimestamp+      (\ s a -> s{_rrCreationTimestamp = a})++-- | [Output Only] Quotas assigned to this region.+rrQuotas :: Lens' Region [Quota]+rrQuotas+  = lens _rrQuotas (\ s a -> s{_rrQuotas = a}) .+      _Default+      . _Coerce++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+rrId :: Lens' Region (Maybe Word64)+rrId+  = lens _rrId (\ s a -> s{_rrId = a}) .+      mapping _Coerce++-- | [Output Only] Textual description of the resource.+rrDescription :: Lens' Region (Maybe Text)+rrDescription+  = lens _rrDescription+      (\ s a -> s{_rrDescription = a})++-- | [Output Only] The deprecation status associated with this region.+rrDeprecated :: Lens' Region (Maybe DeprecationStatus)+rrDeprecated+  = lens _rrDeprecated (\ s a -> s{_rrDeprecated = 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" .=) <$> _rrStatus,+                  ("zones" .=) <$> _rrZones, Just ("kind" .= _rrKind),+                  ("selfLink" .=) <$> _rrSelfLink,+                  ("name" .=) <$> _rrName,+                  ("creationTimestamp" .=) <$> _rrCreationTimestamp,+                  ("quotas" .=) <$> _rrQuotas, ("id" .=) <$> _rrId,+                  ("description" .=) <$> _rrDescription,+                  ("deprecated" .=) <$> _rrDeprecated])++--+-- /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.+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.+vtPeerIP :: Lens' VPNTunnel (Maybe Text)+vtPeerIP = lens _vtPeerIP (\ s a -> s{_vtPeerIP = a})++-- | URL of router resource to be used for dynamic routing.+vtRouter :: Lens' VPNTunnel (Maybe Text)+vtRouter = lens _vtRouter (\ s a -> s{_vtRouter = a})++-- | URL of the VPN gateway with which this VPN tunnel is associated.+-- Provided by the client when the VPN tunnel is created.+vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)+vtTargetVPNGateway+  = lens _vtTargetVPNGateway+      (\ s a -> s{_vtTargetVPNGateway = a})++-- | Remote traffic selectors to use when establishing the VPN tunnel with+-- peer VPN gateway. The value should be a CIDR formatted string, for+-- example: 192.168.0.0\/16. The ranges should be disjoint.+vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]+vtRemoteTrafficSelector+  = lens _vtRemoteTrafficSelector+      (\ s a -> s{_vtRemoteTrafficSelector = a})+      . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for the resource.+vtSelfLink :: Lens' VPNTunnel (Maybe Text)+vtSelfLink+  = lens _vtSelfLink (\ s a -> s{_vtSelfLink = a})++-- | Shared secret used to set the secure session between the Cloud VPN+-- gateway and the peer VPN gateway.+vtSharedSecret :: Lens' VPNTunnel (Maybe Text)+vtSharedSecret+  = lens _vtSharedSecret+      (\ s a -> s{_vtSharedSecret = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+vtName :: Lens' VPNTunnel (Maybe Text)+vtName = lens _vtName (\ s a -> s{_vtName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)+vtCreationTimestamp+  = lens _vtCreationTimestamp+      (\ s a -> s{_vtCreationTimestamp = a})++-- | Hash of the shared secret.+vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)+vtSharedSecretHash+  = lens _vtSharedSecretHash+      (\ s a -> s{_vtSharedSecretHash = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+vtId :: Lens' VPNTunnel (Maybe Word64)+vtId+  = lens _vtId (\ s a -> s{_vtId = a}) .+      mapping _Coerce++-- | IKE protocol version to use when establishing the VPN tunnel with peer+-- VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.+vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)+vtIkeVersion+  = lens _vtIkeVersion (\ s a -> s{_vtIkeVersion = a})+      . mapping _Coerce++-- | [Output Only] URL of the region where the VPN tunnel resides.+vtRegion :: Lens' VPNTunnel (Maybe Text)+vtRegion = lens _vtRegion (\ s a -> s{_vtRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+vtDescription :: Lens' VPNTunnel (Maybe Text)+vtDescription+  = lens _vtDescription+      (\ s a -> s{_vtDescription = a})++instance FromJSON VPNTunnel where+        parseJSON+          = withObject "VPNTunnel"+              (\ o ->+                 VPNTunnel' <$>+                   (o .:? "detailedStatus") <*> (o .:? "status") <*>+                     (o .:? "localTrafficSelector" .!= mempty)+                     <*> (o .:? "kind" .!= "compute#vpnTunnel")+                     <*> (o .:? "peerIp")+                     <*> (o .:? "router")+                     <*> (o .:? "targetVpnGateway")+                     <*> (o .:? "remoteTrafficSelector" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "sharedSecret")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "sharedSecretHash")+                     <*> (o .:? "id")+                     <*> (o .:? "ikeVersion")+                     <*> (o .:? "region")+                     <*> (o .:? "description"))++instance ToJSON VPNTunnel where+        toJSON VPNTunnel'{..}+          = object+              (catMaybes+                 [("detailedStatus" .=) <$> _vtDetailedStatus,+                  ("status" .=) <$> _vtStatus,+                  ("localTrafficSelector" .=) <$>+                    _vtLocalTrafficSelector,+                  Just ("kind" .= _vtKind),+                  ("peerIp" .=) <$> _vtPeerIP,+                  ("router" .=) <$> _vtRouter,+                  ("targetVpnGateway" .=) <$> _vtTargetVPNGateway,+                  ("remoteTrafficSelector" .=) <$>+                    _vtRemoteTrafficSelector,+                  ("selfLink" .=) <$> _vtSelfLink,+                  ("sharedSecret" .=) <$> _vtSharedSecret,+                  ("name" .=) <$> _vtName,+                  ("creationTimestamp" .=) <$> _vtCreationTimestamp,+                  ("sharedSecretHash" .=) <$> _vtSharedSecretHash,+                  ("id" .=) <$> _vtId,+                  ("ikeVersion" .=) <$> _vtIkeVersion,+                  ("region" .=) <$> _vtRegion,+                  ("description" .=) <$> _vtDescription])++-- | [Output Only] Informational warning which replaces the list of+-- operations when the list is empty.+--+-- /See:/ 'operationsScopedListWarning' smart constructor.+data OperationsScopedListWarning = OperationsScopedListWarning'+    { _oslwData    :: !(Maybe [OperationsScopedListWarningDataItem])+    , _oslwCode    :: !(Maybe OperationsScopedListWarningCode)+    , _oslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationsScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oslwData'+--+-- * 'oslwCode'+--+-- * 'oslwMessage'+operationsScopedListWarning+    :: OperationsScopedListWarning+operationsScopedListWarning =+    OperationsScopedListWarning'+    { _oslwData = Nothing+    , _oslwCode = Nothing+    , _oslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]+oslwData+  = lens _oslwData (\ s a -> s{_oslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)+oslwCode = lens _oslwCode (\ s a -> s{_oslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)+oslwMessage+  = lens _oslwMessage (\ s a -> s{_oslwMessage = a})++instance FromJSON OperationsScopedListWarning where+        parseJSON+          = withObject "OperationsScopedListWarning"+              (\ o ->+                 OperationsScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON OperationsScopedListWarning where+        toJSON OperationsScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _oslwData,+                  ("code" .=) <$> _oslwCode,+                  ("message" .=) <$> _oslwMessage])++-- | Sets the scheduling options for an Instance.+--+-- /See:/ 'scheduling' smart constructor.+data Scheduling = Scheduling'+    { _sAutomaticRestart  :: !(Maybe Bool)+    , _sOnHostMaintenance :: !(Maybe SchedulingOnHostMaintenance)+    , _sPreemptible       :: !(Maybe Bool)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Scheduling' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sAutomaticRestart'+--+-- * 'sOnHostMaintenance'+--+-- * 'sPreemptible'+scheduling+    :: Scheduling+scheduling =+    Scheduling'+    { _sAutomaticRestart = Nothing+    , _sOnHostMaintenance = Nothing+    , _sPreemptible = Nothing+    }++-- | Specifies whether the instance should be automatically restarted if it+-- is terminated by Compute Engine (not terminated by a user). You can only+-- set the automatic restart option for standard instances. Preemptible+-- instances cannot be automatically restarted.+sAutomaticRestart :: Lens' Scheduling (Maybe Bool)+sAutomaticRestart+  = lens _sAutomaticRestart+      (\ s a -> s{_sAutomaticRestart = a})++-- | Defines the maintenance behavior for this instance. For standard+-- instances, the default behavior is MIGRATE. For preemptible instances,+-- the default and only possible behavior is TERMINATE. For more+-- information, see Setting Instance Scheduling Options.+sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)+sOnHostMaintenance+  = lens _sOnHostMaintenance+      (\ s a -> s{_sOnHostMaintenance = a})++-- | Whether the instance is preemptible.+sPreemptible :: Lens' Scheduling (Maybe Bool)+sPreemptible+  = lens _sPreemptible (\ s a -> s{_sPreemptible = a})++instance FromJSON Scheduling where+        parseJSON+          = withObject "Scheduling"+              (\ o ->+                 Scheduling' <$>+                   (o .:? "automaticRestart") <*>+                     (o .:? "onHostMaintenance")+                     <*> (o .:? "preemptible"))++instance ToJSON Scheduling where+        toJSON Scheduling'{..}+          = object+              (catMaybes+                 [("automaticRestart" .=) <$> _sAutomaticRestart,+                  ("onHostMaintenance" .=) <$> _sOnHostMaintenance,+                  ("preemptible" .=) <$> _sPreemptible])++--+-- /See:/ 'vpnTunnelsScopedListWarningDataItem' smart constructor.+data VPNTunnelsScopedListWarningDataItem = VPNTunnelsScopedListWarningDataItem'+    { _vtslwdiValue :: !(Maybe Text)+    , _vtslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelsScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtslwdiValue'+--+-- * 'vtslwdiKey'+vpnTunnelsScopedListWarningDataItem+    :: VPNTunnelsScopedListWarningDataItem+vpnTunnelsScopedListWarningDataItem =+    VPNTunnelsScopedListWarningDataItem'+    { _vtslwdiValue = Nothing+    , _vtslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)+vtslwdiValue+  = lens _vtslwdiValue (\ s a -> s{_vtslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)+vtslwdiKey+  = lens _vtslwdiKey (\ s a -> s{_vtslwdiKey = a})++instance FromJSON VPNTunnelsScopedListWarningDataItem+         where+        parseJSON+          = withObject "VPNTunnelsScopedListWarningDataItem"+              (\ o ->+                 VPNTunnelsScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON VPNTunnelsScopedListWarningDataItem+         where+        toJSON VPNTunnelsScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _vtslwdiValue,+                  ("key" .=) <$> _vtslwdiKey])++-- | Contains a list of Subnetwork resources.+--+-- /See:/ 'subnetworkList' smart constructor.+data SubnetworkList = SubnetworkList'+    { _slNextPageToken :: !(Maybe Text)+    , _slKind          :: !Text+    , _slItems         :: !(Maybe [Subnetwork])+    , _slSelfLink      :: !(Maybe Text)+    , _slId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworkList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'slNextPageToken'+--+-- * 'slKind'+--+-- * 'slItems'+--+-- * 'slSelfLink'+--+-- * 'slId'+subnetworkList+    :: SubnetworkList+subnetworkList =+    SubnetworkList'+    { _slNextPageToken = Nothing+    , _slKind = "compute#subnetworkList"+    , _slItems = Nothing+    , _slSelfLink = Nothing+    , _slId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+slNextPageToken :: Lens' SubnetworkList (Maybe Text)+slNextPageToken+  = lens _slNextPageToken+      (\ s a -> s{_slNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#subnetworkList for lists+-- of subnetworks.+slKind :: Lens' SubnetworkList Text+slKind = lens _slKind (\ s a -> s{_slKind = a})++-- | The Subnetwork resources.+slItems :: Lens' SubnetworkList [Subnetwork]+slItems+  = lens _slItems (\ s a -> s{_slItems = a}) . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+slSelfLink :: Lens' SubnetworkList (Maybe Text)+slSelfLink+  = lens _slSelfLink (\ s a -> s{_slSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+slId :: Lens' SubnetworkList (Maybe Text)+slId = lens _slId (\ s a -> s{_slId = a})++instance FromJSON SubnetworkList where+        parseJSON+          = withObject "SubnetworkList"+              (\ o ->+                 SubnetworkList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#subnetworkList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON SubnetworkList where+        toJSON SubnetworkList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _slNextPageToken,+                  Just ("kind" .= _slKind), ("items" .=) <$> _slItems,+                  ("selfLink" .=) <$> _slSelfLink,+                  ("id" .=) <$> _slId])++-- | Informational warning which replaces the list of forwarding rules when+-- the list is empty.+--+-- /See:/ 'forwardingRulesScopedListWarning' smart constructor.+data ForwardingRulesScopedListWarning = ForwardingRulesScopedListWarning'+    { _frslwData    :: !(Maybe [ForwardingRulesScopedListWarningDataItem])+    , _frslwCode    :: !(Maybe ForwardingRulesScopedListWarningCode)+    , _frslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ForwardingRulesScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'frslwData'+--+-- * 'frslwCode'+--+-- * 'frslwMessage'+forwardingRulesScopedListWarning+    :: ForwardingRulesScopedListWarning+forwardingRulesScopedListWarning =+    ForwardingRulesScopedListWarning'+    { _frslwData = Nothing+    , _frslwCode = Nothing+    , _frslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]+frslwData+  = lens _frslwData (\ s a -> s{_frslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)+frslwCode+  = lens _frslwCode (\ s a -> s{_frslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)+frslwMessage+  = lens _frslwMessage (\ s a -> s{_frslwMessage = a})++instance FromJSON ForwardingRulesScopedListWarning+         where+        parseJSON+          = withObject "ForwardingRulesScopedListWarning"+              (\ o ->+                 ForwardingRulesScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON ForwardingRulesScopedListWarning+         where+        toJSON ForwardingRulesScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _frslwData,+                  ("code" .=) <$> _frslwCode,+                  ("message" .=) <$> _frslwMessage])++-- | Contains a list of HttpHealthCheck resources.+--+-- /See:/ 'hTTPHealthCheckList' smart constructor.+data HTTPHealthCheckList = HTTPHealthCheckList'+    { _httphclNextPageToken :: !(Maybe Text)+    , _httphclKind          :: !Text+    , _httphclItems         :: !(Maybe [HTTPHealthCheck])+    , _httphclSelfLink      :: !(Maybe Text)+    , _httphclId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HTTPHealthCheckList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'httphclNextPageToken'+--+-- * 'httphclKind'+--+-- * 'httphclItems'+--+-- * 'httphclSelfLink'+--+-- * 'httphclId'+hTTPHealthCheckList+    :: HTTPHealthCheckList+hTTPHealthCheckList =+    HTTPHealthCheckList'+    { _httphclNextPageToken = Nothing+    , _httphclKind = "compute#httpHealthCheckList"+    , _httphclItems = Nothing+    , _httphclSelfLink = Nothing+    , _httphclId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)+httphclNextPageToken+  = lens _httphclNextPageToken+      (\ s a -> s{_httphclNextPageToken = a})++-- | Type of resource.+httphclKind :: Lens' HTTPHealthCheckList Text+httphclKind+  = lens _httphclKind (\ s a -> s{_httphclKind = a})++-- | A list of HttpHealthCheck resources.+httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]+httphclItems+  = lens _httphclItems (\ s a -> s{_httphclItems = a})+      . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)+httphclSelfLink+  = lens _httphclSelfLink+      (\ s a -> s{_httphclSelfLink = a})++-- | [Output Only] Unique identifier for the resource. Defined by the server.+httphclId :: Lens' HTTPHealthCheckList (Maybe Text)+httphclId+  = lens _httphclId (\ s a -> s{_httphclId = a})++instance FromJSON HTTPHealthCheckList where+        parseJSON+          = withObject "HTTPHealthCheckList"+              (\ o ->+                 HTTPHealthCheckList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#httpHealthCheckList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON HTTPHealthCheckList where+        toJSON HTTPHealthCheckList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _httphclNextPageToken,+                  Just ("kind" .= _httphclKind),+                  ("items" .=) <$> _httphclItems,+                  ("selfLink" .=) <$> _httphclSelfLink,+                  ("id" .=) <$> _httphclId])++-- | [Output Only] The warning that replaces the list of managed instance+-- groups when the list is empty.+--+-- /See:/ 'instanceGroupManagersScopedListWarning' smart constructor.+data InstanceGroupManagersScopedListWarning = InstanceGroupManagersScopedListWarning'+    { _igmslwData    :: !(Maybe [InstanceGroupManagersScopedListWarningDataItem])+    , _igmslwCode    :: !(Maybe InstanceGroupManagersScopedListWarningCode)+    , _igmslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupManagersScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmslwData'+--+-- * 'igmslwCode'+--+-- * 'igmslwMessage'+instanceGroupManagersScopedListWarning+    :: InstanceGroupManagersScopedListWarning+instanceGroupManagersScopedListWarning =+    InstanceGroupManagersScopedListWarning'+    { _igmslwData = Nothing+    , _igmslwCode = Nothing+    , _igmslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]+igmslwData+  = lens _igmslwData (\ s a -> s{_igmslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)+igmslwCode+  = lens _igmslwCode (\ s a -> s{_igmslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)+igmslwMessage+  = lens _igmslwMessage+      (\ s a -> s{_igmslwMessage = a})++instance FromJSON+         InstanceGroupManagersScopedListWarning where+        parseJSON+          = withObject "InstanceGroupManagersScopedListWarning"+              (\ o ->+                 InstanceGroupManagersScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON+         InstanceGroupManagersScopedListWarning where+        toJSON InstanceGroupManagersScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _igmslwData,+                  ("code" .=) <$> _igmslwCode,+                  ("message" .=) <$> _igmslwMessage])++--+-- /See:/ 'urlMapsValidateRequest' smart constructor.+newtype URLMapsValidateRequest = URLMapsValidateRequest'+    { _umvrResource :: Maybe URLMap+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapsValidateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umvrResource'+urlMapsValidateRequest+    :: URLMapsValidateRequest+urlMapsValidateRequest =+    URLMapsValidateRequest'+    { _umvrResource = Nothing+    }++-- | Content of the UrlMap to be validated.+umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)+umvrResource+  = lens _umvrResource (\ s a -> s{_umvrResource = a})++instance FromJSON URLMapsValidateRequest where+        parseJSON+          = withObject "URLMapsValidateRequest"+              (\ o ->+                 URLMapsValidateRequest' <$> (o .:? "resource"))++instance ToJSON URLMapsValidateRequest where+        toJSON URLMapsValidateRequest'{..}+          = object+              (catMaybes [("resource" .=) <$> _umvrResource])++--+-- /See:/ 'instanceGroupManagersSetTargetPoolsRequest' smart constructor.+data InstanceGroupManagersSetTargetPoolsRequest = InstanceGroupManagersSetTargetPoolsRequest'+    { _igmstprFingerprint :: !(Maybe Base64)+    , _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 _Base64++-- | The list of target pool URLs that instances in this managed instance+-- group belong to. The managed instance group applies these target pools+-- to all of the instances in the group. Existing instances and new+-- instances in the group all receive these target pool settings.+igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]+igmstprTargetPools+  = lens _igmstprTargetPools+      (\ s a -> s{_igmstprTargetPools = a})+      . _Default+      . _Coerce++instance FromJSON+         InstanceGroupManagersSetTargetPoolsRequest where+        parseJSON+          = withObject+              "InstanceGroupManagersSetTargetPoolsRequest"+              (\ o ->+                 InstanceGroupManagersSetTargetPoolsRequest' <$>+                   (o .:? "fingerprint") <*>+                     (o .:? "targetPools" .!= mempty))++instance ToJSON+         InstanceGroupManagersSetTargetPoolsRequest where+        toJSON+          InstanceGroupManagersSetTargetPoolsRequest'{..}+          = object+              (catMaybes+                 [("fingerprint" .=) <$> _igmstprFingerprint,+                  ("targetPools" .=) <$> _igmstprTargetPools])++-- | Contains a list of HttpsHealthCheck resources.+--+-- /See:/ 'httpsHealthCheckList' smart constructor.+data HTTPSHealthCheckList = HTTPSHealthCheckList'+    { _hhclNextPageToken :: !(Maybe Text)+    , _hhclKind          :: !Text+    , _hhclItems         :: !(Maybe [HTTPSHealthCheck])+    , _hhclSelfLink      :: !(Maybe Text)+    , _hhclId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HTTPSHealthCheckList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hhclNextPageToken'+--+-- * 'hhclKind'+--+-- * 'hhclItems'+--+-- * 'hhclSelfLink'+--+-- * 'hhclId'+httpsHealthCheckList+    :: HTTPSHealthCheckList+httpsHealthCheckList =+    HTTPSHealthCheckList'+    { _hhclNextPageToken = Nothing+    , _hhclKind = "compute#httpsHealthCheckList"+    , _hhclItems = Nothing+    , _hhclSelfLink = Nothing+    , _hhclId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)+hhclNextPageToken+  = lens _hhclNextPageToken+      (\ s a -> s{_hhclNextPageToken = a})++-- | Type of resource.+hhclKind :: Lens' HTTPSHealthCheckList Text+hhclKind = lens _hhclKind (\ s a -> s{_hhclKind = a})++-- | A list of HttpsHealthCheck resources.+hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]+hhclItems+  = lens _hhclItems (\ s a -> s{_hhclItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)+hhclSelfLink+  = lens _hhclSelfLink (\ s a -> s{_hhclSelfLink = a})++-- | [Output Only] Unique identifier for the resource; defined by the server.+hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)+hhclId = lens _hhclId (\ s a -> s{_hhclId = a})++instance FromJSON HTTPSHealthCheckList where+        parseJSON+          = withObject "HTTPSHealthCheckList"+              (\ o ->+                 HTTPSHealthCheckList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#httpsHealthCheckList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON HTTPSHealthCheckList where+        toJSON HTTPSHealthCheckList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _hhclNextPageToken,+                  Just ("kind" .= _hhclKind),+                  ("items" .=) <$> _hhclItems,+                  ("selfLink" .=) <$> _hhclSelfLink,+                  ("id" .=) <$> _hhclId])++--+-- /See:/ 'operationErrorErrorsItem' smart constructor.+data OperationErrorErrorsItem = OperationErrorErrorsItem'+    { _oeeiLocation :: !(Maybe Text)+    , _oeeiCode     :: !(Maybe Text)+    , _oeeiMessage  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'oeeiLocation'+--+-- * 'oeeiCode'+--+-- * 'oeeiMessage'+operationErrorErrorsItem+    :: OperationErrorErrorsItem+operationErrorErrorsItem =+    OperationErrorErrorsItem'+    { _oeeiLocation = Nothing+    , _oeeiCode = Nothing+    , _oeeiMessage = Nothing+    }++-- | [Output Only] Indicates the field in the request that caused the error.+-- This property is optional.+oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)+oeeiLocation+  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})++-- | [Output Only] The error type identifier for this error.+oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)+oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})++-- | [Output Only] An optional, human-readable error message.+oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)+oeeiMessage+  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})++instance FromJSON OperationErrorErrorsItem where+        parseJSON+          = withObject "OperationErrorErrorsItem"+              (\ o ->+                 OperationErrorErrorsItem' <$>+                   (o .:? "location") <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON OperationErrorErrorsItem where+        toJSON OperationErrorErrorsItem'{..}+          = object+              (catMaybes+                 [("location" .=) <$> _oeeiLocation,+                  ("code" .=) <$> _oeeiCode,+                  ("message" .=) <$> _oeeiMessage])++-- | A license resource.+--+-- /See:/ 'license' smart constructor.+data License = License'+    { _lChargesUseFee :: !(Maybe Bool)+    , _lKind          :: !Text+    , _lSelfLink      :: !(Maybe Text)+    , _lName          :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'License' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lChargesUseFee'+--+-- * 'lKind'+--+-- * 'lSelfLink'+--+-- * 'lName'+license+    :: License+license =+    License'+    { _lChargesUseFee = Nothing+    , _lKind = "compute#license"+    , _lSelfLink = Nothing+    , _lName = Nothing+    }++-- | [Output Only] If true, the customer will be charged license fee for+-- running software that contains this license on an instance.+lChargesUseFee :: Lens' License (Maybe Bool)+lChargesUseFee+  = lens _lChargesUseFee+      (\ s a -> s{_lChargesUseFee = a})++-- | [Output Only] Type of resource. Always compute#license for licenses.+lKind :: Lens' License Text+lKind = lens _lKind (\ s a -> s{_lKind = a})++-- | [Output Only] Server-defined URL for the resource.+lSelfLink :: Lens' License (Maybe Text)+lSelfLink+  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})++-- | [Output Only] Name of the resource. The name is 1-63 characters long and+-- complies with RFC1035.+lName :: Lens' License (Maybe Text)+lName = lens _lName (\ s a -> s{_lName = a})++instance FromJSON License where+        parseJSON+          = withObject "License"+              (\ o ->+                 License' <$>+                   (o .:? "chargesUseFee") <*>+                     (o .:? "kind" .!= "compute#license")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name"))++instance ToJSON License where+        toJSON License'{..}+          = object+              (catMaybes+                 [("chargesUseFee" .=) <$> _lChargesUseFee,+                  Just ("kind" .= _lKind),+                  ("selfLink" .=) <$> _lSelfLink,+                  ("name" .=) <$> _lName])++-- | A path-matching rule for a URL. If matched, will use the specified+-- BackendService to handle the traffic arriving at this URL.+--+-- /See:/ 'pathRule' smart constructor.+data PathRule = PathRule'+    { _prService :: !(Maybe Text)+    , _prPaths   :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'PathRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'prService'+--+-- * 'prPaths'+pathRule+    :: PathRule+pathRule =+    PathRule'+    { _prService = Nothing+    , _prPaths = Nothing+    }++-- | The URL of the BackendService resource if this rule is matched.+prService :: Lens' PathRule (Maybe Text)+prService+  = lens _prService (\ s a -> s{_prService = a})++-- | The list of path patterns to match. Each must start with \/ and the only+-- place a * is allowed is at the end following a \/. The string fed to the+-- path matcher does not include any text after the first ? or #, and those+-- chars are not allowed here.+prPaths :: Lens' PathRule [Text]+prPaths+  = lens _prPaths (\ s a -> s{_prPaths = a}) . _Default+      . _Coerce++instance FromJSON PathRule where+        parseJSON+          = withObject "PathRule"+              (\ o ->+                 PathRule' <$>+                   (o .:? "service") <*> (o .:? "paths" .!= mempty))++instance ToJSON PathRule where+        toJSON PathRule'{..}+          = object+              (catMaybes+                 [("service" .=) <$> _prService,+                  ("paths" .=) <$> _prPaths])++-- | Contains a list of instances.+--+-- /See:/ 'instanceList' smart constructor.+data InstanceList = InstanceList'+    { _insNextPageToken :: !(Maybe Text)+    , _insKind          :: !Text+    , _insItems         :: !(Maybe [Instance])+    , _insSelfLink      :: !(Maybe Text)+    , _insId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'insNextPageToken'+--+-- * 'insKind'+--+-- * 'insItems'+--+-- * 'insSelfLink'+--+-- * 'insId'+instanceList+    :: InstanceList+instanceList =+    InstanceList'+    { _insNextPageToken = Nothing+    , _insKind = "compute#instanceList"+    , _insItems = Nothing+    , _insSelfLink = Nothing+    , _insId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+insNextPageToken :: Lens' InstanceList (Maybe Text)+insNextPageToken+  = lens _insNextPageToken+      (\ s a -> s{_insNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#instanceList for lists of+-- Instance resources.+insKind :: Lens' InstanceList Text+insKind = lens _insKind (\ s a -> s{_insKind = a})++-- | [Output Only] A list of instances.+insItems :: Lens' InstanceList [Instance]+insItems+  = lens _insItems (\ s a -> s{_insItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+insSelfLink :: Lens' InstanceList (Maybe Text)+insSelfLink+  = lens _insSelfLink (\ s a -> s{_insSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+insId :: Lens' InstanceList (Maybe Text)+insId = lens _insId (\ s a -> s{_insId = a})++instance FromJSON InstanceList where+        parseJSON+          = withObject "InstanceList"+              (\ o ->+                 InstanceList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#instanceList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON InstanceList where+        toJSON InstanceList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _insNextPageToken,+                  Just ("kind" .= _insKind),+                  ("items" .=) <$> _insItems,+                  ("selfLink" .=) <$> _insSelfLink,+                  ("id" .=) <$> _insId])++-- | [Output] A map of scoped Subnetwork lists.+--+-- /See:/ 'subnetworkAggregatedListItems' smart constructor.+newtype SubnetworkAggregatedListItems = SubnetworkAggregatedListItems'+    { _saliAddtional :: HashMap Text SubnetworksScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SubnetworkAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'saliAddtional'+subnetworkAggregatedListItems+    :: HashMap Text SubnetworksScopedList -- ^ 'saliAddtional'+    -> SubnetworkAggregatedListItems+subnetworkAggregatedListItems pSaliAddtional_ =+    SubnetworkAggregatedListItems'+    { _saliAddtional = _Coerce # pSaliAddtional_+    }++-- | Name of the scope containing this set of Subnetworks.+saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)+saliAddtional+  = lens _saliAddtional+      (\ s a -> s{_saliAddtional = a})+      . _Coerce++instance FromJSON SubnetworkAggregatedListItems where+        parseJSON+          = withObject "SubnetworkAggregatedListItems"+              (\ o ->+                 SubnetworkAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON SubnetworkAggregatedListItems where+        toJSON = toJSON . _saliAddtional++--+-- /See:/ 'managedInstanceLastAttempt' smart constructor.+newtype ManagedInstanceLastAttempt = ManagedInstanceLastAttempt'+    { _milaErrors :: Maybe ManagedInstanceLastAttemptErrors+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ManagedInstanceLastAttempt' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'milaErrors'+managedInstanceLastAttempt+    :: ManagedInstanceLastAttempt+managedInstanceLastAttempt =+    ManagedInstanceLastAttempt'+    { _milaErrors = Nothing+    }++-- | [Output Only] Encountered errors during the last attempt to create or+-- delete the instance.+milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)+milaErrors+  = lens _milaErrors (\ s a -> s{_milaErrors = a})++instance FromJSON ManagedInstanceLastAttempt where+        parseJSON+          = withObject "ManagedInstanceLastAttempt"+              (\ o ->+                 ManagedInstanceLastAttempt' <$> (o .:? "errors"))++instance ToJSON ManagedInstanceLastAttempt where+        toJSON ManagedInstanceLastAttempt'{..}+          = object (catMaybes [("errors" .=) <$> _milaErrors])++-- | Contains a list of BackendService resources.+--+-- /See:/ 'backendServiceList' smart constructor.+data BackendServiceList = BackendServiceList'+    { _bslNextPageToken :: !(Maybe Text)+    , _bslKind          :: !Text+    , _bslItems         :: !(Maybe [BackendService])+    , _bslSelfLink      :: !(Maybe Text)+    , _bslId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BackendServiceList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bslNextPageToken'+--+-- * 'bslKind'+--+-- * 'bslItems'+--+-- * 'bslSelfLink'+--+-- * 'bslId'+backendServiceList+    :: BackendServiceList+backendServiceList =+    BackendServiceList'+    { _bslNextPageToken = Nothing+    , _bslKind = "compute#backendServiceList"+    , _bslItems = Nothing+    , _bslSelfLink = Nothing+    , _bslId = Nothing+    }++-- | [Output Only] A token used to continue a truncated list request.+bslNextPageToken :: Lens' BackendServiceList (Maybe Text)+bslNextPageToken+  = lens _bslNextPageToken+      (\ s a -> s{_bslNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#backendServiceList for+-- lists of backend services.+bslKind :: Lens' BackendServiceList Text+bslKind = lens _bslKind (\ s a -> s{_bslKind = a})++-- | A list of BackendService resources.+bslItems :: Lens' BackendServiceList [BackendService]+bslItems+  = lens _bslItems (\ s a -> s{_bslItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+bslSelfLink :: Lens' BackendServiceList (Maybe Text)+bslSelfLink+  = lens _bslSelfLink (\ s a -> s{_bslSelfLink = a})++-- | [Output Only] Unique identifier for the resource; defined by the server.+bslId :: Lens' BackendServiceList (Maybe Text)+bslId = lens _bslId (\ s a -> s{_bslId = a})++instance FromJSON BackendServiceList where+        parseJSON+          = withObject "BackendServiceList"+              (\ o ->+                 BackendServiceList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#backendServiceList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON BackendServiceList where+        toJSON BackendServiceList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _bslNextPageToken,+                  Just ("kind" .= _bslKind),+                  ("items" .=) <$> _bslItems,+                  ("selfLink" .=) <$> _bslSelfLink,+                  ("id" .=) <$> _bslId])++-- | [Output Only] An informational warning that replaces the list of+-- instance groups when the list is empty.+--+-- /See:/ 'instanceGroupsScopedListWarning' smart constructor.+data InstanceGroupsScopedListWarning = InstanceGroupsScopedListWarning'+    { _igslwData    :: !(Maybe [InstanceGroupsScopedListWarningDataItem])+    , _igslwCode    :: !(Maybe InstanceGroupsScopedListWarningCode)+    , _igslwMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsScopedListWarning' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igslwData'+--+-- * 'igslwCode'+--+-- * 'igslwMessage'+instanceGroupsScopedListWarning+    :: InstanceGroupsScopedListWarning+instanceGroupsScopedListWarning =+    InstanceGroupsScopedListWarning'+    { _igslwData = Nothing+    , _igslwCode = Nothing+    , _igslwMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]+igslwData+  = lens _igslwData (\ s a -> s{_igslwData = a}) .+      _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)+igslwCode+  = lens _igslwCode (\ s a -> s{_igslwCode = a})++-- | [Output Only] A human-readable description of the warning code.+igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)+igslwMessage+  = lens _igslwMessage (\ s a -> s{_igslwMessage = a})++instance FromJSON InstanceGroupsScopedListWarning+         where+        parseJSON+          = withObject "InstanceGroupsScopedListWarning"+              (\ o ->+                 InstanceGroupsScopedListWarning' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON InstanceGroupsScopedListWarning where+        toJSON InstanceGroupsScopedListWarning'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _igslwData,+                  ("code" .=) <$> _igslwCode,+                  ("message" .=) <$> _igslwMessage])++-- | CPU utilization policy.+--+-- /See:/ 'autoscalingPolicyCPUUtilization' smart constructor.+newtype AutoscalingPolicyCPUUtilization = AutoscalingPolicyCPUUtilization'+    { _apcuUtilizationTarget :: Maybe (Textual Double)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AutoscalingPolicyCPUUtilization' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'apcuUtilizationTarget'+autoscalingPolicyCPUUtilization+    :: AutoscalingPolicyCPUUtilization+autoscalingPolicyCPUUtilization =+    AutoscalingPolicyCPUUtilization'+    { _apcuUtilizationTarget = Nothing+    }++-- | The target CPU utilization that the autoscaler should maintain. Must be+-- a float value in the range (0, 1]. If not specified, the default is 0.6.+-- If the CPU level is below the target utilization, the autoscaler scales+-- down the number of instances until it reaches the minimum number of+-- instances you specified or until the average CPU of your instances+-- reaches the target utilization. If the average CPU is above the target+-- utilization, the autoscaler scales up until it reaches the maximum+-- number of instances you specified or until the average utilization+-- reaches the target utilization.+apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)+apcuUtilizationTarget+  = lens _apcuUtilizationTarget+      (\ s a -> s{_apcuUtilizationTarget = a})+      . mapping _Coerce++instance FromJSON AutoscalingPolicyCPUUtilization+         where+        parseJSON+          = withObject "AutoscalingPolicyCPUUtilization"+              (\ o ->+                 AutoscalingPolicyCPUUtilization' <$>+                   (o .:? "utilizationTarget"))++instance ToJSON AutoscalingPolicyCPUUtilization where+        toJSON AutoscalingPolicyCPUUtilization'{..}+          = object+              (catMaybes+                 [("utilizationTarget" .=) <$>+                    _apcuUtilizationTarget])++--+-- /See:/ 'instanceGroupsScopedListWarningDataItem' smart constructor.+data InstanceGroupsScopedListWarningDataItem = InstanceGroupsScopedListWarningDataItem'+    { _igslwdiValue :: !(Maybe Text)+    , _igslwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igslwdiValue'+--+-- * 'igslwdiKey'+instanceGroupsScopedListWarningDataItem+    :: InstanceGroupsScopedListWarningDataItem+instanceGroupsScopedListWarningDataItem =+    InstanceGroupsScopedListWarningDataItem'+    { _igslwdiValue = Nothing+    , _igslwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)+igslwdiValue+  = lens _igslwdiValue (\ s a -> s{_igslwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)+igslwdiKey+  = lens _igslwdiKey (\ s a -> s{_igslwdiKey = a})++instance FromJSON+         InstanceGroupsScopedListWarningDataItem where+        parseJSON+          = withObject+              "InstanceGroupsScopedListWarningDataItem"+              (\ o ->+                 InstanceGroupsScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON+         InstanceGroupsScopedListWarningDataItem where+        toJSON InstanceGroupsScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _igslwdiValue,+                  ("key" .=) <$> _igslwdiKey])++--+-- /See:/ 'resourceGroupReference' smart constructor.+newtype ResourceGroupReference = ResourceGroupReference'+    { _rgrGroup :: Maybe Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ResourceGroupReference' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rgrGroup'+resourceGroupReference+    :: ResourceGroupReference+resourceGroupReference =+    ResourceGroupReference'+    { _rgrGroup = Nothing+    }++-- | A URI referencing one of the instance groups listed in the backend+-- service.+rgrGroup :: Lens' ResourceGroupReference (Maybe Text)+rgrGroup = lens _rgrGroup (\ s a -> s{_rgrGroup = a})++instance FromJSON ResourceGroupReference where+        parseJSON+          = withObject "ResourceGroupReference"+              (\ o -> ResourceGroupReference' <$> (o .:? "group"))++instance ToJSON ResourceGroupReference where+        toJSON ResourceGroupReference'{..}+          = object (catMaybes [("group" .=) <$> _rgrGroup])++-- | Represents a Firewall resource.+--+-- /See:/ 'firewall' smart constructor.+data Firewall = Firewall'+    { _fSourceTags        :: !(Maybe [Text])+    , _fKind              :: !Text+    , _fTargetTags        :: !(Maybe [Text])+    , _fNetwork           :: !(Maybe Text)+    , _fSourceRanges      :: !(Maybe [Text])+    , _fSelfLink          :: !(Maybe Text)+    , _fName              :: !(Maybe Text)+    , _fCreationTimestamp :: !(Maybe Text)+    , _fId                :: !(Maybe (Textual Word64))+    , _fAllowed           :: !(Maybe [FirewallAllowedItem])+    , _fDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Firewall' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fSourceTags'+--+-- * 'fKind'+--+-- * 'fTargetTags'+--+-- * 'fNetwork'+--+-- * 'fSourceRanges'+--+-- * 'fSelfLink'+--+-- * 'fName'+--+-- * 'fCreationTimestamp'+--+-- * 'fId'+--+-- * 'fAllowed'+--+-- * 'fDescription'+firewall+    :: Firewall+firewall =+    Firewall'+    { _fSourceTags = Nothing+    , _fKind = "compute#firewall"+    , _fTargetTags = Nothing+    , _fNetwork = Nothing+    , _fSourceRanges = Nothing+    , _fSelfLink = Nothing+    , _fName = Nothing+    , _fCreationTimestamp = Nothing+    , _fId = Nothing+    , _fAllowed = Nothing+    , _fDescription = Nothing+    }++-- | If source tags are specified, the firewall will apply only to traffic+-- with source IP that belongs to a tag listed in source tags. Source tags+-- cannot be used to control traffic to an instance\'s external IP address.+-- Because tags are associated with an instance, not an IP address. One or+-- both of sourceRanges and sourceTags may be set. If both properties are+-- set, the firewall will apply to traffic that has source IP address+-- within sourceRanges OR the source IP that belongs to a tag listed in the+-- sourceTags property. The connection does not need to match both+-- properties for the firewall to apply.+fSourceTags :: Lens' Firewall [Text]+fSourceTags+  = lens _fSourceTags (\ s a -> s{_fSourceTags = a}) .+      _Default+      . _Coerce++-- | [Output Ony] Type of the resource. Always compute#firewall for firewall+-- rules.+fKind :: Lens' Firewall Text+fKind = lens _fKind (\ s a -> s{_fKind = a})++-- | A list of instance tags indicating sets of instances located in the+-- network that may make network connections as specified in allowed[]. If+-- no targetTags are specified, the firewall rule applies to all instances+-- on the specified network.+fTargetTags :: Lens' Firewall [Text]+fTargetTags+  = lens _fTargetTags (\ s a -> s{_fTargetTags = a}) .+      _Default+      . _Coerce++-- | URL of the network resource for this firewall rule. If not specified+-- when creating a firewall rule, the default network is used:+-- global\/networks\/default If you choose to specify this property, you+-- can specify the network as a full or partial URL. For example, the+-- following are all valid URLs: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/myproject\/global\/networks\/my-network+-- - projects\/myproject\/global\/networks\/my-network -+-- global\/networks\/default+fNetwork :: Lens' Firewall (Maybe Text)+fNetwork = lens _fNetwork (\ s a -> s{_fNetwork = a})++-- | If source ranges are specified, the firewall will apply only to traffic+-- that has source IP address in these ranges. These ranges must be+-- expressed in CIDR format. One or both of sourceRanges and sourceTags may+-- be set. If both properties are set, the firewall will apply to traffic+-- that has source IP address within sourceRanges OR the source IP that+-- belongs to a tag listed in the sourceTags property. The connection does+-- not need to match both properties for the firewall to apply.+fSourceRanges :: Lens' Firewall [Text]+fSourceRanges+  = lens _fSourceRanges+      (\ s a -> s{_fSourceRanges = a})+      . _Default+      . _Coerce++-- | [Output Only] Server-defined URL for the resource.+fSelfLink :: Lens' Firewall (Maybe Text)+fSelfLink+  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})++-- | Name of the resource; provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+fName :: Lens' Firewall (Maybe Text)+fName = lens _fName (\ s a -> s{_fName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+fCreationTimestamp :: Lens' Firewall (Maybe Text)+fCreationTimestamp+  = lens _fCreationTimestamp+      (\ s a -> s{_fCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+fId :: Lens' Firewall (Maybe Word64)+fId+  = lens _fId (\ s a -> s{_fId = a}) . mapping _Coerce++-- | The list of ALLOW rules specified by this firewall. Each rule specifies+-- a protocol and port-range tuple that describes a permitted connection.+fAllowed :: Lens' Firewall [FirewallAllowedItem]+fAllowed+  = lens _fAllowed (\ s a -> s{_fAllowed = a}) .+      _Default+      . _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+fDescription :: Lens' Firewall (Maybe Text)+fDescription+  = lens _fDescription (\ s a -> s{_fDescription = a})++instance FromJSON Firewall where+        parseJSON+          = withObject "Firewall"+              (\ o ->+                 Firewall' <$>+                   (o .:? "sourceTags" .!= mempty) <*>+                     (o .:? "kind" .!= "compute#firewall")+                     <*> (o .:? "targetTags" .!= mempty)+                     <*> (o .:? "network")+                     <*> (o .:? "sourceRanges" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "allowed" .!= mempty)+                     <*> (o .:? "description"))++instance ToJSON Firewall where+        toJSON Firewall'{..}+          = object+              (catMaybes+                 [("sourceTags" .=) <$> _fSourceTags,+                  Just ("kind" .= _fKind),+                  ("targetTags" .=) <$> _fTargetTags,+                  ("network" .=) <$> _fNetwork,+                  ("sourceRanges" .=) <$> _fSourceRanges,+                  ("selfLink" .=) <$> _fSelfLink,+                  ("name" .=) <$> _fName,+                  ("creationTimestamp" .=) <$> _fCreationTimestamp,+                  ("id" .=) <$> _fId, ("allowed" .=) <$> _fAllowed,+                  ("description" .=) <$> _fDescription])++-- | UrlMaps A host-matching rule for a URL. If matched, will use the named+-- PathMatcher to select the BackendService.+--+-- /See:/ 'hostRule' smart constructor.+data HostRule = HostRule'+    { _hrHosts       :: !(Maybe [Text])+    , _hrDescription :: !(Maybe Text)+    , _hrPathMatcher :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'HostRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hrHosts'+--+-- * 'hrDescription'+--+-- * 'hrPathMatcher'+hostRule+    :: HostRule+hostRule =+    HostRule'+    { _hrHosts = Nothing+    , _hrDescription = Nothing+    , _hrPathMatcher = Nothing+    }++-- | The list of host patterns to match. They must be valid hostnames, except+-- * will match any string of ([a-z0-9-.]*). In that case, * must be the+-- first character and must be followed in the pattern by either - or ..+hrHosts :: Lens' HostRule [Text]+hrHosts+  = lens _hrHosts (\ s a -> s{_hrHosts = a}) . _Default+      . _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+hrDescription :: Lens' HostRule (Maybe Text)+hrDescription+  = lens _hrDescription+      (\ s a -> s{_hrDescription = a})++-- | The name of the PathMatcher to use to match the path portion of the URL+-- if the hostRule matches the URL\'s host portion.+hrPathMatcher :: Lens' HostRule (Maybe Text)+hrPathMatcher+  = lens _hrPathMatcher+      (\ s a -> s{_hrPathMatcher = a})++instance FromJSON HostRule where+        parseJSON+          = withObject "HostRule"+              (\ o ->+                 HostRule' <$>+                   (o .:? "hosts" .!= mempty) <*> (o .:? "description")+                     <*> (o .:? "pathMatcher"))++instance ToJSON HostRule where+        toJSON HostRule'{..}+          = object+              (catMaybes+                 [("hosts" .=) <$> _hrHosts,+                  ("description" .=) <$> _hrDescription,+                  ("pathMatcher" .=) <$> _hrPathMatcher])++-- | A quotas entry.+--+-- /See:/ 'quota' smart constructor.+data Quota = Quota'+    { _qMetric :: !(Maybe QuotaMetric)+    , _qLimit  :: !(Maybe (Textual Double))+    , _qUsage  :: !(Maybe (Textual Double))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Quota' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'qMetric'+--+-- * 'qLimit'+--+-- * 'qUsage'+quota+    :: Quota+quota =+    Quota'+    { _qMetric = Nothing+    , _qLimit = Nothing+    , _qUsage = Nothing+    }++-- | [Output Only] Name of the quota metric.+qMetric :: Lens' Quota (Maybe QuotaMetric)+qMetric = lens _qMetric (\ s a -> s{_qMetric = a})++-- | [Output Only] Quota limit for this metric.+qLimit :: Lens' Quota (Maybe Double)+qLimit+  = lens _qLimit (\ s a -> s{_qLimit = a}) .+      mapping _Coerce++-- | [Output Only] Current usage of this metric.+qUsage :: Lens' Quota (Maybe Double)+qUsage+  = lens _qUsage (\ s a -> s{_qUsage = a}) .+      mapping _Coerce++instance FromJSON Quota where+        parseJSON+          = withObject "Quota"+              (\ o ->+                 Quota' <$>+                   (o .:? "metric") <*> (o .:? "limit") <*>+                     (o .:? "usage"))++instance ToJSON Quota where+        toJSON Quota'{..}+          = object+              (catMaybes+                 [("metric" .=) <$> _qMetric,+                  ("limit" .=) <$> _qLimit, ("usage" .=) <$> _qUsage])++--+-- /See:/ 'instanceGroup' smart constructor.+data InstanceGroup = InstanceGroup'+    { _iiSize              :: !(Maybe (Textual Int32))+    , _iiKind              :: !Text+    , _iiFingerprint       :: !(Maybe Base64)+    , _iiNetwork           :: !(Maybe Text)+    , _iiZone              :: !(Maybe Text)+    , _iiSelfLink          :: !(Maybe Text)+    , _iiName              :: !(Maybe Text)+    , _iiCreationTimestamp :: !(Maybe Text)+    , _iiSubnetwork        :: !(Maybe Text)+    , _iiId                :: !(Maybe (Textual Word64))+    , _iiRegion            :: !(Maybe Text)+    , _iiDescription       :: !(Maybe Text)+    , _iiNamedPorts        :: !(Maybe [NamedPort])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iiSize'+--+-- * 'iiKind'+--+-- * 'iiFingerprint'+--+-- * 'iiNetwork'+--+-- * 'iiZone'+--+-- * 'iiSelfLink'+--+-- * 'iiName'+--+-- * 'iiCreationTimestamp'+--+-- * 'iiSubnetwork'+--+-- * 'iiId'+--+-- * 'iiRegion'+--+-- * 'iiDescription'+--+-- * 'iiNamedPorts'+instanceGroup+    :: InstanceGroup+instanceGroup =+    InstanceGroup'+    { _iiSize = Nothing+    , _iiKind = "compute#instanceGroup"+    , _iiFingerprint = Nothing+    , _iiNetwork = Nothing+    , _iiZone = Nothing+    , _iiSelfLink = Nothing+    , _iiName = Nothing+    , _iiCreationTimestamp = Nothing+    , _iiSubnetwork = Nothing+    , _iiId = Nothing+    , _iiRegion = Nothing+    , _iiDescription = Nothing+    , _iiNamedPorts = Nothing+    }++-- | [Output Only] The total number of instances in the instance group.+iiSize :: Lens' InstanceGroup (Maybe Int32)+iiSize+  = lens _iiSize (\ s a -> s{_iiSize = a}) .+      mapping _Coerce++-- | [Output Only] The resource type, which is always compute#instanceGroup+-- for instance groups.+iiKind :: Lens' InstanceGroup Text+iiKind = lens _iiKind (\ s a -> s{_iiKind = a})++-- | [Output Only] The fingerprint of the named ports. The system uses this+-- fingerprint to detect conflicts when multiple users change the named+-- ports concurrently.+iiFingerprint :: Lens' InstanceGroup (Maybe ByteString)+iiFingerprint+  = lens _iiFingerprint+      (\ s a -> s{_iiFingerprint = a})+      . mapping _Base64++-- | The URL of the network to which all instances in the instance group+-- belong.+iiNetwork :: Lens' InstanceGroup (Maybe Text)+iiNetwork+  = lens _iiNetwork (\ s a -> s{_iiNetwork = a})++-- | [Output Only] The URL of the zone where the instance group is located+-- (for zonal resources).+iiZone :: Lens' InstanceGroup (Maybe Text)+iiZone = lens _iiZone (\ s a -> s{_iiZone = a})++-- | [Output Only] The URL for this instance group. The server generates this+-- URL.+iiSelfLink :: Lens' InstanceGroup (Maybe Text)+iiSelfLink+  = lens _iiSelfLink (\ s a -> s{_iiSelfLink = a})++-- | The name of the instance group. The name must be 1-63 characters long,+-- and comply with RFC1035.+iiName :: Lens' InstanceGroup (Maybe Text)+iiName = lens _iiName (\ s a -> s{_iiName = a})++-- | [Output Only] The creation timestamp for this instance group in RFC3339+-- text format.+iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)+iiCreationTimestamp+  = lens _iiCreationTimestamp+      (\ s a -> s{_iiCreationTimestamp = a})++-- | The URL of the subnetwork to which all instances in the instance group+-- belong.+iiSubnetwork :: Lens' InstanceGroup (Maybe Text)+iiSubnetwork+  = lens _iiSubnetwork (\ s a -> s{_iiSubnetwork = a})++-- | [Output Only] A unique identifier for this instance group, generated by+-- the server.+iiId :: Lens' InstanceGroup (Maybe Word64)+iiId+  = lens _iiId (\ s a -> s{_iiId = a}) .+      mapping _Coerce++-- | The URL of the region where the instance group is located (for regional+-- resources).+iiRegion :: Lens' InstanceGroup (Maybe Text)+iiRegion = lens _iiRegion (\ s a -> s{_iiRegion = a})++-- | An optional description of this resource. Provide this property when you+-- create the resource.+iiDescription :: Lens' InstanceGroup (Maybe Text)+iiDescription+  = lens _iiDescription+      (\ s a -> s{_iiDescription = a})++-- | Assigns a name to a port number. For example: {name: \"http\", port: 80}+-- This allows the system to reference ports by the assigned name instead+-- of a port number. Named ports can also contain multiple ports. For+-- example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] Named+-- ports apply to all instances in this instance group.+iiNamedPorts :: Lens' InstanceGroup [NamedPort]+iiNamedPorts+  = lens _iiNamedPorts (\ s a -> s{_iiNamedPorts = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroup where+        parseJSON+          = withObject "InstanceGroup"+              (\ o ->+                 InstanceGroup' <$>+                   (o .:? "size") <*>+                     (o .:? "kind" .!= "compute#instanceGroup")+                     <*> (o .:? "fingerprint")+                     <*> (o .:? "network")+                     <*> (o .:? "zone")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "subnetwork")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "description")+                     <*> (o .:? "namedPorts" .!= mempty))++instance ToJSON InstanceGroup where+        toJSON InstanceGroup'{..}+          = object+              (catMaybes+                 [("size" .=) <$> _iiSize, Just ("kind" .= _iiKind),+                  ("fingerprint" .=) <$> _iiFingerprint,+                  ("network" .=) <$> _iiNetwork,+                  ("zone" .=) <$> _iiZone,+                  ("selfLink" .=) <$> _iiSelfLink,+                  ("name" .=) <$> _iiName,+                  ("creationTimestamp" .=) <$> _iiCreationTimestamp,+                  ("subnetwork" .=) <$> _iiSubnetwork,+                  ("id" .=) <$> _iiId, ("region" .=) <$> _iiRegion,+                  ("description" .=) <$> _iiDescription,+                  ("namedPorts" .=) <$> _iiNamedPorts])++--+-- /See:/ 'routerInterface' smart constructor.+data RouterInterface = RouterInterface'+    { _riName            :: !(Maybe Text)+    , _riIPRange         :: !(Maybe Text)+    , _riLinkedVPNTunnel :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RouterInterface' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'riName'+--+-- * 'riIPRange'+--+-- * 'riLinkedVPNTunnel'+routerInterface+    :: RouterInterface+routerInterface =+    RouterInterface'+    { _riName = Nothing+    , _riIPRange = Nothing+    , _riLinkedVPNTunnel = Nothing+    }++-- | Name of this interface entry. The name must be 1-63 characters long and+-- comply with RFC1035.+riName :: Lens' RouterInterface (Maybe Text)+riName = lens _riName (\ s a -> s{_riName = a})++-- | IP address and range of the interface. The IP range must be in the+-- RFC3927 link-local IP space. The value must be a CIDR-formatted string,+-- for example: 169.254.0.1\/30. NOTE: Do not truncate the address as it+-- represents the IP address of the interface.+riIPRange :: Lens' RouterInterface (Maybe Text)+riIPRange+  = lens _riIPRange (\ s a -> s{_riIPRange = a})++-- | URI of linked VPN tunnel. It must be in the same region as the router.+-- Each interface can have at most one linked resource.+riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)+riLinkedVPNTunnel+  = lens _riLinkedVPNTunnel+      (\ s a -> s{_riLinkedVPNTunnel = a})++instance FromJSON RouterInterface where+        parseJSON+          = withObject "RouterInterface"+              (\ o ->+                 RouterInterface' <$>+                   (o .:? "name") <*> (o .:? "ipRange") <*>+                     (o .:? "linkedVpnTunnel"))++instance ToJSON RouterInterface where+        toJSON RouterInterface'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _riName,+                  ("ipRange" .=) <$> _riIPRange,+                  ("linkedVpnTunnel" .=) <$> _riLinkedVPNTunnel])++-- | Contains a list of Snapshot resources.+--+-- /See:/ 'snapshotList' smart constructor.+data SnapshotList = SnapshotList'+    { _snaNextPageToken :: !(Maybe Text)+    , _snaKind          :: !Text+    , _snaItems         :: !(Maybe [Snapshot])+    , _snaSelfLink      :: !(Maybe Text)+    , _snaId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'SnapshotList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'snaNextPageToken'+--+-- * 'snaKind'+--+-- * 'snaItems'+--+-- * 'snaSelfLink'+--+-- * 'snaId'+snapshotList+    :: SnapshotList+snapshotList =+    SnapshotList'+    { _snaNextPageToken = Nothing+    , _snaKind = "compute#snapshotList"+    , _snaItems = Nothing+    , _snaSelfLink = Nothing+    , _snaId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+snaNextPageToken :: Lens' SnapshotList (Maybe Text)+snaNextPageToken+  = lens _snaNextPageToken+      (\ s a -> s{_snaNextPageToken = a})++-- | Type of resource.+snaKind :: Lens' SnapshotList Text+snaKind = lens _snaKind (\ s a -> s{_snaKind = a})++-- | [Output Only] A list of Snapshot resources.+snaItems :: Lens' SnapshotList [Snapshot]+snaItems+  = lens _snaItems (\ s a -> s{_snaItems = a}) .+      _Default+      . _Coerce++-- | [Output Only] Server-defined URL for this resource.+snaSelfLink :: Lens' SnapshotList (Maybe Text)+snaSelfLink+  = lens _snaSelfLink (\ s a -> s{_snaSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+snaId :: Lens' SnapshotList (Maybe Text)+snaId = lens _snaId (\ s a -> s{_snaId = a})++instance FromJSON SnapshotList where+        parseJSON+          = withObject "SnapshotList"+              (\ o ->+                 SnapshotList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#snapshotList")+                     <*> (o .:? "items" .!= mempty)+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON SnapshotList where+        toJSON SnapshotList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _snaNextPageToken,+                  Just ("kind" .= _snaKind),+                  ("items" .=) <$> _snaItems,+                  ("selfLink" .=) <$> _snaSelfLink,+                  ("id" .=) <$> _snaId])++--+-- /See:/ 'testFailure' smart constructor.+data TestFailure = TestFailure'+    { _tfPath            :: !(Maybe Text)+    , _tfExpectedService :: !(Maybe Text)+    , _tfHost            :: !(Maybe Text)+    , _tfActualService   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TestFailure' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tfPath'+--+-- * 'tfExpectedService'+--+-- * 'tfHost'+--+-- * 'tfActualService'+testFailure+    :: TestFailure+testFailure =+    TestFailure'+    { _tfPath = Nothing+    , _tfExpectedService = Nothing+    , _tfHost = Nothing+    , _tfActualService = Nothing+    }++tfPath :: Lens' TestFailure (Maybe Text)+tfPath = lens _tfPath (\ s a -> s{_tfPath = a})++tfExpectedService :: Lens' TestFailure (Maybe Text)+tfExpectedService+  = lens _tfExpectedService+      (\ s a -> s{_tfExpectedService = a})++tfHost :: Lens' TestFailure (Maybe Text)+tfHost = lens _tfHost (\ s a -> s{_tfHost = a})++tfActualService :: Lens' TestFailure (Maybe Text)+tfActualService+  = lens _tfActualService+      (\ s a -> s{_tfActualService = a})++instance FromJSON TestFailure where+        parseJSON+          = withObject "TestFailure"+              (\ o ->+                 TestFailure' <$>+                   (o .:? "path") <*> (o .:? "expectedService") <*>+                     (o .:? "host")+                     <*> (o .:? "actualService"))++instance ToJSON TestFailure where+        toJSON TestFailure'{..}+          = object+              (catMaybes+                 [("path" .=) <$> _tfPath,+                  ("expectedService" .=) <$> _tfExpectedService,+                  ("host" .=) <$> _tfHost,+                  ("actualService" .=) <$> _tfActualService])++-- | An instance\'s serial console output.+--+-- /See:/ 'serialPortOutput' smart constructor.+data SerialPortOutput = SerialPortOutput'+    { _spoContents :: !(Maybe Text)+    , _spoKind     :: !Text+    , _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:+--+-- * 'spoContents'+--+-- * 'spoKind'+--+-- * 'spoSelfLink'+serialPortOutput+    :: SerialPortOutput+serialPortOutput =+    SerialPortOutput'+    { _spoContents = Nothing+    , _spoKind = "compute#serialPortOutput"+    , _spoSelfLink = Nothing+    }++-- | [Output Only] The contents of the console output.+spoContents :: Lens' SerialPortOutput (Maybe Text)+spoContents+  = lens _spoContents (\ s a -> s{_spoContents = a})++-- | [Output Only] Type of the resource. Always compute#serialPortOutput for+-- serial port output.+spoKind :: Lens' SerialPortOutput Text+spoKind = lens _spoKind (\ s a -> s{_spoKind = a})++-- | [Output Only] 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 .:? "contents") <*>+                     (o .:? "kind" .!= "compute#serialPortOutput")+                     <*> (o .:? "selfLink"))++instance ToJSON SerialPortOutput where+        toJSON SerialPortOutput'{..}+          = object+              (catMaybes+                 [("contents" .=) <$> _spoContents,+                  Just ("kind" .= _spoKind),+                  ("selfLink" .=) <$> _spoSelfLink])++--+-- /See:/ 'targetVPNGatewayAggregatedList' smart constructor.+data TargetVPNGatewayAggregatedList = TargetVPNGatewayAggregatedList'+    { _tvgalNextPageToken :: !(Maybe Text)+    , _tvgalKind          :: !Text+    , _tvgalItems         :: !(Maybe TargetVPNGatewayAggregatedListItems)+    , _tvgalSelfLink      :: !(Maybe Text)+    , _tvgalId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewayAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgalNextPageToken'+--+-- * 'tvgalKind'+--+-- * 'tvgalItems'+--+-- * 'tvgalSelfLink'+--+-- * 'tvgalId'+targetVPNGatewayAggregatedList+    :: TargetVPNGatewayAggregatedList+targetVPNGatewayAggregatedList =+    TargetVPNGatewayAggregatedList'+    { _tvgalNextPageToken = Nothing+    , _tvgalKind = "compute#targetVpnGatewayAggregatedList"+    , _tvgalItems = Nothing+    , _tvgalSelfLink = Nothing+    , _tvgalId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)+tvgalNextPageToken+  = lens _tvgalNextPageToken+      (\ s a -> s{_tvgalNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#targetVpnGateway for+-- target VPN gateways.+tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text+tvgalKind+  = lens _tvgalKind (\ s a -> s{_tvgalKind = a})++-- | A map of scoped target vpn gateway lists.+tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)+tvgalItems+  = lens _tvgalItems (\ s a -> s{_tvgalItems = a})++-- | [Output Only] Server-defined URL for this resource.+tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)+tvgalSelfLink+  = lens _tvgalSelfLink+      (\ s a -> s{_tvgalSelfLink = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)+tvgalId = lens _tvgalId (\ s a -> s{_tvgalId = a})++instance FromJSON TargetVPNGatewayAggregatedList+         where+        parseJSON+          = withObject "TargetVPNGatewayAggregatedList"+              (\ o ->+                 TargetVPNGatewayAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!=+                        "compute#targetVpnGatewayAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON TargetVPNGatewayAggregatedList where+        toJSON TargetVPNGatewayAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _tvgalNextPageToken,+                  Just ("kind" .= _tvgalKind),+                  ("items" .=) <$> _tvgalItems,+                  ("selfLink" .=) <$> _tvgalSelfLink,+                  ("id" .=) <$> _tvgalId])++--+-- /See:/ 'metadataItemsItem' smart constructor.+data MetadataItemsItem = MetadataItemsItem'+    { _miiValue :: !(Maybe Text)+    , _miiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'miiValue'+--+-- * 'miiKey'+metadataItemsItem+    :: MetadataItemsItem+metadataItemsItem =+    MetadataItemsItem'+    { _miiValue = Nothing+    , _miiKey = Nothing+    }++-- | Value for the metadata entry. These are free-form strings, and only have+-- meaning as interpreted by the image running in the instance. The only+-- restriction placed on values is that their size must be less than or+-- equal to 32768 bytes.+miiValue :: Lens' MetadataItemsItem (Maybe Text)+miiValue = lens _miiValue (\ s a -> s{_miiValue = a})++-- | Key for the metadata entry. Keys must conform to the following regexp:+-- [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected+-- as part of a URL in the metadata server. Additionally, to avoid+-- ambiguity, keys must not conflict with any other metadata keys for the+-- project.+miiKey :: Lens' MetadataItemsItem (Maybe Text)+miiKey = lens _miiKey (\ s a -> s{_miiKey = a})++instance FromJSON MetadataItemsItem where+        parseJSON+          = withObject "MetadataItemsItem"+              (\ o ->+                 MetadataItemsItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON MetadataItemsItem where+        toJSON MetadataItemsItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _miiValue, ("key" .=) <$> _miiKey])++-- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.+--+-- /See:/ 'targetHTTPSProxy' smart constructor.+data TargetHTTPSProxy = TargetHTTPSProxy'+    { _thpURLMap            :: !(Maybe Text)+    , _thpSSLCertificates   :: !(Maybe [Text])+    , _thpKind              :: !Text+    , _thpSelfLink          :: !(Maybe Text)+    , _thpName              :: !(Maybe Text)+    , _thpCreationTimestamp :: !(Maybe Text)+    , _thpId                :: !(Maybe (Textual Word64))+    , _thpDescription       :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetHTTPSProxy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'thpURLMap'+--+-- * 'thpSSLCertificates'+--+-- * 'thpKind'+--+-- * 'thpSelfLink'+--+-- * 'thpName'+--+-- * 'thpCreationTimestamp'+--+-- * 'thpId'+--+-- * 'thpDescription'+targetHTTPSProxy+    :: TargetHTTPSProxy+targetHTTPSProxy =+    TargetHTTPSProxy'+    { _thpURLMap = Nothing+    , _thpSSLCertificates = Nothing+    , _thpKind = "compute#targetHttpsProxy"+    , _thpSelfLink = Nothing+    , _thpName = Nothing+    , _thpCreationTimestamp = Nothing+    , _thpId = Nothing+    , _thpDescription = Nothing+    }++-- | A fully-qualified or valid partial URL to the UrlMap resource that+-- defines the mapping from URL to the BackendService. For example, the+-- following are all valid URLs for specifying a URL map: -+-- https:\/\/www.googleapis.compute\/v1\/projects\/project\/global\/urlMaps\/url-map+-- - projects\/project\/global\/urlMaps\/url-map - global\/urlMaps\/url-map+thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)+thpURLMap+  = lens _thpURLMap (\ s a -> s{_thpURLMap = a})++-- | URLs to SslCertificate resources that are used to authenticate+-- connections between users and the load balancer. Currently, exactly one+-- SSL certificate must be specified.+thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]+thpSSLCertificates+  = lens _thpSSLCertificates+      (\ s a -> s{_thpSSLCertificates = a})+      . _Default+      . _Coerce++-- | [Output Only] Type of resource. Always compute#targetHttpsProxy for+-- target HTTPS proxies.+thpKind :: Lens' TargetHTTPSProxy Text+thpKind = lens _thpKind (\ s a -> s{_thpKind = a})++-- | [Output Only] Server-defined URL for the resource.+thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)+thpSelfLink+  = lens _thpSelfLink (\ s a -> s{_thpSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+thpName :: Lens' TargetHTTPSProxy (Maybe Text)+thpName = lens _thpName (\ s a -> s{_thpName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)+thpCreationTimestamp+  = lens _thpCreationTimestamp+      (\ s a -> s{_thpCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+thpId :: Lens' TargetHTTPSProxy (Maybe Word64)+thpId+  = lens _thpId (\ s a -> s{_thpId = a}) .+      mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)+thpDescription+  = lens _thpDescription+      (\ s a -> s{_thpDescription = a})++instance FromJSON TargetHTTPSProxy where+        parseJSON+          = withObject "TargetHTTPSProxy"+              (\ o ->+                 TargetHTTPSProxy' <$>+                   (o .:? "urlMap") <*>+                     (o .:? "sslCertificates" .!= mempty)+                     <*> (o .:? "kind" .!= "compute#targetHttpsProxy")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "description"))++instance ToJSON TargetHTTPSProxy where+        toJSON TargetHTTPSProxy'{..}+          = object+              (catMaybes+                 [("urlMap" .=) <$> _thpURLMap,+                  ("sslCertificates" .=) <$> _thpSSLCertificates,+                  Just ("kind" .= _thpKind),+                  ("selfLink" .=) <$> _thpSelfLink,+                  ("name" .=) <$> _thpName,+                  ("creationTimestamp" .=) <$> _thpCreationTimestamp,+                  ("id" .=) <$> _thpId,+                  ("description" .=) <$> _thpDescription])++-- | Message containing connection draining configuration.+--+-- /See:/ 'connectionDraining' smart constructor.+newtype ConnectionDraining = ConnectionDraining'+    { _cdDrainingTimeoutSec :: Maybe (Textual Int32)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ConnectionDraining' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cdDrainingTimeoutSec'+connectionDraining+    :: ConnectionDraining+connectionDraining =+    ConnectionDraining'+    { _cdDrainingTimeoutSec = Nothing+    }++-- | Time for which instance will be drained (not accept new connections, but+-- still work to finish started).+cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)+cdDrainingTimeoutSec+  = lens _cdDrainingTimeoutSec+      (\ s a -> s{_cdDrainingTimeoutSec = a})+      . mapping _Coerce++instance FromJSON ConnectionDraining where+        parseJSON+          = withObject "ConnectionDraining"+              (\ o ->+                 ConnectionDraining' <$> (o .:? "drainingTimeoutSec"))++instance ToJSON ConnectionDraining where+        toJSON ConnectionDraining'{..}+          = object+              (catMaybes+                 [("drainingTimeoutSec" .=) <$>+                    _cdDrainingTimeoutSec])++--+-- /See:/ 'cacheInvalidationRule' smart constructor.+newtype CacheInvalidationRule = CacheInvalidationRule'+    { _cirPath :: 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'+cacheInvalidationRule+    :: CacheInvalidationRule+cacheInvalidationRule =+    CacheInvalidationRule'+    { _cirPath = Nothing+    }++cirPath :: Lens' CacheInvalidationRule (Maybe Text)+cirPath = lens _cirPath (\ s a -> s{_cirPath = a})++instance FromJSON CacheInvalidationRule where+        parseJSON+          = withObject "CacheInvalidationRule"+              (\ o -> CacheInvalidationRule' <$> (o .:? "path"))++instance ToJSON CacheInvalidationRule where+        toJSON CacheInvalidationRule'{..}+          = object (catMaybes [("path" .=) <$> _cirPath])++--+-- /See:/ 'targetVPNGatewaysScopedList' smart constructor.+data TargetVPNGatewaysScopedList = TargetVPNGatewaysScopedList'+    { _tvgslTargetVPNGateways :: !(Maybe [TargetVPNGateway])+    , _tvgslWarning           :: !(Maybe TargetVPNGatewaysScopedListWarning)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'TargetVPNGatewaysScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tvgslTargetVPNGateways'+--+-- * 'tvgslWarning'+targetVPNGatewaysScopedList+    :: TargetVPNGatewaysScopedList+targetVPNGatewaysScopedList =+    TargetVPNGatewaysScopedList'+    { _tvgslTargetVPNGateways = Nothing+    , _tvgslWarning = Nothing+    }++-- | [Output Only] List of target vpn gateways contained in this scope.+tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]+tvgslTargetVPNGateways+  = lens _tvgslTargetVPNGateways+      (\ s a -> s{_tvgslTargetVPNGateways = a})+      . _Default+      . _Coerce++-- | [Output Only] Informational warning which replaces the list of addresses+-- when the list is empty.+tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)+tvgslWarning+  = lens _tvgslWarning (\ s a -> s{_tvgslWarning = a})++instance FromJSON TargetVPNGatewaysScopedList where+        parseJSON+          = withObject "TargetVPNGatewaysScopedList"+              (\ o ->+                 TargetVPNGatewaysScopedList' <$>+                   (o .:? "targetVpnGateways" .!= mempty) <*>+                     (o .:? "warning"))++instance ToJSON TargetVPNGatewaysScopedList where+        toJSON TargetVPNGatewaysScopedList'{..}+          = object+              (catMaybes+                 [("targetVpnGateways" .=) <$>+                    _tvgslTargetVPNGateways,+                  ("warning" .=) <$> _tvgslWarning])++-- | An access configuration attached to an instance\'s network interface.+-- Only one access config per instance is supported.+--+-- /See:/ 'accessConfig' smart constructor.+data AccessConfig = AccessConfig'+    { _acKind  :: !Text+    , _acName  :: !(Maybe Text)+    , _acNATIP :: !(Maybe Text)+    , _acType  :: !AccessConfigType+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AccessConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'acKind'+--+-- * 'acName'+--+-- * 'acNATIP'+--+-- * 'acType'+accessConfig+    :: AccessConfig+accessConfig =+    AccessConfig'+    { _acKind = "compute#accessConfig"+    , _acName = Nothing+    , _acNATIP = Nothing+    , _acType = OneToOneNAT+    }++-- | [Output Only] Type of the resource. Always compute#accessConfig for+-- access configs.+acKind :: Lens' AccessConfig Text+acKind = lens _acKind (\ s a -> s{_acKind = a})++-- | Name of this access configuration.+acName :: Lens' AccessConfig (Maybe Text)+acName = lens _acName (\ s a -> s{_acName = a})++-- | An external IP address associated with this instance. Specify an unused+-- static external IP address available to the project or leave this field+-- undefined to use an IP from a shared ephemeral IP address pool. If you+-- specify a static external IP address, it must live in the same region as+-- the zone of the instance.+acNATIP :: Lens' AccessConfig (Maybe Text)+acNATIP = lens _acNATIP (\ s a -> s{_acNATIP = a})++-- | The type of configuration. The default and only option is+-- ONE_TO_ONE_NAT.+acType :: Lens' AccessConfig AccessConfigType+acType = lens _acType (\ s a -> s{_acType = a})++instance FromJSON AccessConfig where+        parseJSON+          = withObject "AccessConfig"+              (\ o ->+                 AccessConfig' <$>+                   (o .:? "kind" .!= "compute#accessConfig") <*>+                     (o .:? "name")+                     <*> (o .:? "natIP")+                     <*> (o .:? "type" .!= OneToOneNAT))++instance ToJSON AccessConfig where+        toJSON AccessConfig'{..}+          = object+              (catMaybes+                 [Just ("kind" .= _acKind), ("name" .=) <$> _acName,+                  ("natIP" .=) <$> _acNATIP, Just ("type" .= _acType)])++--+-- /See:/ 'managedInstanceLastAttemptErrorsErrorsItem' smart constructor.+data ManagedInstanceLastAttemptErrorsErrorsItem = ManagedInstanceLastAttemptErrorsErrorsItem'+    { _milaeeiLocation :: !(Maybe Text)+    , _milaeeiCode     :: !(Maybe Text)+    , _milaeeiMessage  :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'ManagedInstanceLastAttemptErrorsErrorsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'milaeeiLocation'+--+-- * 'milaeeiCode'+--+-- * 'milaeeiMessage'+managedInstanceLastAttemptErrorsErrorsItem+    :: ManagedInstanceLastAttemptErrorsErrorsItem+managedInstanceLastAttemptErrorsErrorsItem =+    ManagedInstanceLastAttemptErrorsErrorsItem'+    { _milaeeiLocation = Nothing+    , _milaeeiCode = Nothing+    , _milaeeiMessage = Nothing+    }++-- | [Output Only] Indicates the field in the request that caused the error.+-- This property is optional.+milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)+milaeeiLocation+  = lens _milaeeiLocation+      (\ s a -> s{_milaeeiLocation = a})++-- | [Output Only] The error type identifier for this error.+milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)+milaeeiCode+  = lens _milaeeiCode (\ s a -> s{_milaeeiCode = a})++-- | [Output Only] An optional, human-readable error message.+milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)+milaeeiMessage+  = lens _milaeeiMessage+      (\ s a -> s{_milaeeiMessage = a})++instance FromJSON+         ManagedInstanceLastAttemptErrorsErrorsItem where+        parseJSON+          = withObject+              "ManagedInstanceLastAttemptErrorsErrorsItem"+              (\ o ->+                 ManagedInstanceLastAttemptErrorsErrorsItem' <$>+                   (o .:? "location") <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON+         ManagedInstanceLastAttemptErrorsErrorsItem where+        toJSON+          ManagedInstanceLastAttemptErrorsErrorsItem'{..}+          = object+              (catMaybes+                 [("location" .=) <$> _milaeeiLocation,+                  ("code" .=) <$> _milaeeiCode,+                  ("message" .=) <$> _milaeeiMessage])++--+-- /See:/ 'instancesScopedListWarningDataItem' smart constructor.+data InstancesScopedListWarningDataItem = InstancesScopedListWarningDataItem'+    { _islwdiValue :: !(Maybe Text)+    , _islwdiKey   :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesScopedListWarningDataItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'islwdiValue'+--+-- * 'islwdiKey'+instancesScopedListWarningDataItem+    :: InstancesScopedListWarningDataItem+instancesScopedListWarningDataItem =+    InstancesScopedListWarningDataItem'+    { _islwdiValue = Nothing+    , _islwdiKey = Nothing+    }++-- | [Output Only] A warning data value corresponding to the key.+islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)+islwdiValue+  = lens _islwdiValue (\ s a -> s{_islwdiValue = a})++-- | [Output Only] A key that provides more detail on the warning being+-- returned. For example, for warnings where there are no results in a list+-- request for a particular zone, this key might be scope and the key value+-- might be the zone name. Other examples might be a key indicating a+-- deprecated resource and a suggested replacement, or a warning about+-- invalid network settings (for example, if an instance attempts to+-- perform IP forwarding but is not enabled for IP forwarding).+islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)+islwdiKey+  = lens _islwdiKey (\ s a -> s{_islwdiKey = a})++instance FromJSON InstancesScopedListWarningDataItem+         where+        parseJSON+          = withObject "InstancesScopedListWarningDataItem"+              (\ o ->+                 InstancesScopedListWarningDataItem' <$>+                   (o .:? "value") <*> (o .:? "key"))++instance ToJSON InstancesScopedListWarningDataItem+         where+        toJSON InstancesScopedListWarningDataItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _islwdiValue,+                  ("key" .=) <$> _islwdiKey])++-- | A BackendService resource. This resource defines a group of backend+-- virtual machines and their serving capacity.+--+-- /See:/ 'backendService' smart constructor.+data BackendService = BackendService'+    { _bsSessionAffinity      :: !(Maybe BackendServiceSessionAffinity)+    , _bsBackends             :: !(Maybe [Backend])+    , _bsAffinityCookieTtlSec :: !(Maybe (Textual Int32))+    , _bsKind                 :: !Text+    , _bsEnableCDN            :: !(Maybe Bool)+    , _bsFingerprint          :: !(Maybe Base64)+    , _bsProtocol             :: !(Maybe BackendServiceProtocol)+    , _bsSelfLink             :: !(Maybe Text)+    , _bsName                 :: !(Maybe Text)+    , _bsCreationTimestamp    :: !(Maybe Text)+    , _bsId                   :: !(Maybe (Textual Word64))+    , _bsRegion               :: !(Maybe Text)+    , _bsConnectionDraining   :: !(Maybe ConnectionDraining)+    , _bsTimeoutSec           :: !(Maybe (Textual Int32))+    , _bsDescription          :: !(Maybe Text)+    , _bsPortName             :: !(Maybe Text)+    , _bsHealthChecks         :: !(Maybe [Text])+    , _bsPort                 :: !(Maybe (Textual Int32))+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'BackendService' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bsSessionAffinity'+--+-- * 'bsBackends'+--+-- * 'bsAffinityCookieTtlSec'+--+-- * 'bsKind'+--+-- * 'bsEnableCDN'+--+-- * 'bsFingerprint'+--+-- * 'bsProtocol'+--+-- * 'bsSelfLink'+--+-- * 'bsName'+--+-- * 'bsCreationTimestamp'+--+-- * 'bsId'+--+-- * 'bsRegion'+--+-- * 'bsConnectionDraining'+--+-- * 'bsTimeoutSec'+--+-- * 'bsDescription'+--+-- * 'bsPortName'+--+-- * 'bsHealthChecks'+--+-- * 'bsPort'+backendService+    :: BackendService+backendService =+    BackendService'+    { _bsSessionAffinity = Nothing+    , _bsBackends = Nothing+    , _bsAffinityCookieTtlSec = Nothing+    , _bsKind = "compute#backendService"+    , _bsEnableCDN = Nothing+    , _bsFingerprint = Nothing+    , _bsProtocol = Nothing+    , _bsSelfLink = Nothing+    , _bsName = Nothing+    , _bsCreationTimestamp = Nothing+    , _bsId = Nothing+    , _bsRegion = Nothing+    , _bsConnectionDraining = Nothing+    , _bsTimeoutSec = Nothing+    , _bsDescription = Nothing+    , _bsPortName = Nothing+    , _bsHealthChecks = Nothing+    , _bsPort = Nothing+    }++-- | Type of session affinity to use. The default is NONE. When the load+-- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or+-- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be+-- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the+-- protocol is UDP, this field is not used.+bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)+bsSessionAffinity+  = lens _bsSessionAffinity+      (\ s a -> s{_bsSessionAffinity = a})++-- | The list of backends that serve this BackendService.+bsBackends :: Lens' BackendService [Backend]+bsBackends+  = lens _bsBackends (\ s a -> s{_bsBackends = a}) .+      _Default+      . _Coerce++-- | Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE.+-- If set to 0, the cookie is non-persistent and lasts only until the end+-- of the browser session (or equivalent). The maximum allowed value for+-- TTL is one day. When the load balancing scheme is INTERNAL, this field+-- is not used.+bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)+bsAffinityCookieTtlSec+  = lens _bsAffinityCookieTtlSec+      (\ s a -> s{_bsAffinityCookieTtlSec = a})+      . mapping _Coerce++-- | [Output Only] Type of resource. Always compute#backendService for+-- backend services.+bsKind :: Lens' BackendService Text+bsKind = lens _bsKind (\ s a -> s{_bsKind = a})++-- | If true, enable Cloud CDN for this BackendService. When the load+-- balancing scheme is INTERNAL, this field is not used.+bsEnableCDN :: Lens' BackendService (Maybe Bool)+bsEnableCDN+  = lens _bsEnableCDN (\ s a -> s{_bsEnableCDN = a})++-- | Fingerprint of this resource. A hash of the contents stored in this+-- object. This field is used in optimistic locking. This field will be+-- ignored when inserting a BackendService. An up-to-date fingerprint must+-- be provided in order to update the BackendService.+bsFingerprint :: Lens' BackendService (Maybe ByteString)+bsFingerprint+  = lens _bsFingerprint+      (\ s a -> s{_bsFingerprint = a})+      . mapping _Base64++-- | The protocol this BackendService uses to communicate with backends.+-- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is+-- HTTP. For internal load balancing, the possible values are TCP and UDP,+-- and the default is TCP.+bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)+bsProtocol+  = lens _bsProtocol (\ s a -> s{_bsProtocol = a})++-- | [Output Only] Server-defined URL for the resource.+bsSelfLink :: Lens' BackendService (Maybe Text)+bsSelfLink+  = lens _bsSelfLink (\ s a -> s{_bsSelfLink = a})++-- | Name of the resource. Provided by the client when the resource is+-- created. The name must be 1-63 characters long, and comply with RFC1035.+-- Specifically, the name must be 1-63 characters long and match the+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first+-- character must be a lowercase letter, and all following characters must+-- be a dash, lowercase letter, or digit, except the last character, which+-- cannot be a dash.+bsName :: Lens' BackendService (Maybe Text)+bsName = lens _bsName (\ s a -> s{_bsName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+bsCreationTimestamp :: Lens' BackendService (Maybe Text)+bsCreationTimestamp+  = lens _bsCreationTimestamp+      (\ s a -> s{_bsCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+bsId :: Lens' BackendService (Maybe Word64)+bsId+  = lens _bsId (\ s a -> s{_bsId = a}) .+      mapping _Coerce++-- | [Output Only] URL of the region where the regional backend service+-- resides. This field is not applicable to global backend services.+bsRegion :: Lens' BackendService (Maybe Text)+bsRegion = lens _bsRegion (\ s a -> s{_bsRegion = a})++bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)+bsConnectionDraining+  = lens _bsConnectionDraining+      (\ s a -> s{_bsConnectionDraining = a})++-- | How many seconds to wait for the backend before considering it a failed+-- request. Default is 30 seconds.+bsTimeoutSec :: Lens' BackendService (Maybe Int32)+bsTimeoutSec+  = lens _bsTimeoutSec (\ s a -> s{_bsTimeoutSec = a})+      . mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+bsDescription :: Lens' BackendService (Maybe Text)+bsDescription+  = lens _bsDescription+      (\ s a -> s{_bsDescription = a})++-- | Name of backend port. The same name should appear in the instance groups+-- referenced by this service. Required when the load balancing scheme is+-- EXTERNAL. When the load balancing scheme is INTERNAL, this field is not+-- used.+bsPortName :: Lens' BackendService (Maybe Text)+bsPortName+  = lens _bsPortName (\ s a -> s{_bsPortName = a})++-- | The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for+-- health checking this BackendService. Currently at most one health check+-- can be specified, and a health check is required. For internal load+-- balancing, a URL to a HealthCheck resource must be specified instead.+bsHealthChecks :: Lens' BackendService [Text]+bsHealthChecks+  = lens _bsHealthChecks+      (\ s a -> s{_bsHealthChecks = a})+      . _Default+      . _Coerce++-- | Deprecated in favor of portName. The TCP port to connect on the backend.+-- The default value is 80. This cannot be used for internal load+-- balancing.+bsPort :: Lens' BackendService (Maybe Int32)+bsPort+  = lens _bsPort (\ s a -> s{_bsPort = a}) .+      mapping _Coerce++instance FromJSON BackendService where+        parseJSON+          = withObject "BackendService"+              (\ o ->+                 BackendService' <$>+                   (o .:? "sessionAffinity") <*>+                     (o .:? "backends" .!= mempty)+                     <*> (o .:? "affinityCookieTtlSec")+                     <*> (o .:? "kind" .!= "compute#backendService")+                     <*> (o .:? "enableCDN")+                     <*> (o .:? "fingerprint")+                     <*> (o .:? "protocol")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "region")+                     <*> (o .:? "connectionDraining")+                     <*> (o .:? "timeoutSec")+                     <*> (o .:? "description")+                     <*> (o .:? "portName")+                     <*> (o .:? "healthChecks" .!= mempty)+                     <*> (o .:? "port"))++instance ToJSON BackendService where+        toJSON BackendService'{..}+          = object+              (catMaybes+                 [("sessionAffinity" .=) <$> _bsSessionAffinity,+                  ("backends" .=) <$> _bsBackends,+                  ("affinityCookieTtlSec" .=) <$>+                    _bsAffinityCookieTtlSec,+                  Just ("kind" .= _bsKind),+                  ("enableCDN" .=) <$> _bsEnableCDN,+                  ("fingerprint" .=) <$> _bsFingerprint,+                  ("protocol" .=) <$> _bsProtocol,+                  ("selfLink" .=) <$> _bsSelfLink,+                  ("name" .=) <$> _bsName,+                  ("creationTimestamp" .=) <$> _bsCreationTimestamp,+                  ("id" .=) <$> _bsId, ("region" .=) <$> _bsRegion,+                  ("connectionDraining" .=) <$> _bsConnectionDraining,+                  ("timeoutSec" .=) <$> _bsTimeoutSec,+                  ("description" .=) <$> _bsDescription,+                  ("portName" .=) <$> _bsPortName,+                  ("healthChecks" .=) <$> _bsHealthChecks,+                  ("port" .=) <$> _bsPort])++--+-- /See:/ 'instanceMoveRequest' smart constructor.+data InstanceMoveRequest = InstanceMoveRequest'+    { _imrTargetInstance  :: !(Maybe Text)+    , _imrDestinationZone :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceMoveRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'imrTargetInstance'+--+-- * 'imrDestinationZone'+instanceMoveRequest+    :: InstanceMoveRequest+instanceMoveRequest =+    InstanceMoveRequest'+    { _imrTargetInstance = Nothing+    , _imrDestinationZone = Nothing+    }++-- | The URL of the target instance to move. This can be a full or partial+-- URL. For example, the following are all valid URLs to an instance: -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance+-- - projects\/project\/zones\/zone\/instances\/instance -+-- zones\/zone\/instances\/instance+imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)+imrTargetInstance+  = lens _imrTargetInstance+      (\ s a -> s{_imrTargetInstance = a})++-- | The URL of the destination zone to move the instance. This can be a full+-- or partial URL. For example, the following are all valid URLs to a zone:+-- -+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone+-- - projects\/project\/zones\/zone - zones\/zone+imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)+imrDestinationZone+  = lens _imrDestinationZone+      (\ s a -> s{_imrDestinationZone = a})++instance FromJSON InstanceMoveRequest where+        parseJSON+          = withObject "InstanceMoveRequest"+              (\ o ->+                 InstanceMoveRequest' <$>+                   (o .:? "targetInstance") <*>+                     (o .:? "destinationZone"))++instance ToJSON InstanceMoveRequest where+        toJSON InstanceMoveRequest'{..}+          = object+              (catMaybes+                 [("targetInstance" .=) <$> _imrTargetInstance,+                  ("destinationZone" .=) <$> _imrDestinationZone])++--+-- /See:/ 'instanceGroupsScopedList' smart constructor.+data InstanceGroupsScopedList = InstanceGroupsScopedList'+    { _igslWarning        :: !(Maybe InstanceGroupsScopedListWarning)+    , _igslInstanceGroups :: !(Maybe [InstanceGroup])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstanceGroupsScopedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igslWarning'+--+-- * 'igslInstanceGroups'+instanceGroupsScopedList+    :: InstanceGroupsScopedList+instanceGroupsScopedList =+    InstanceGroupsScopedList'+    { _igslWarning = Nothing+    , _igslInstanceGroups = Nothing+    }++-- | [Output Only] An informational warning that replaces the list of+-- instance groups when the list is empty.+igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)+igslWarning+  = lens _igslWarning (\ s a -> s{_igslWarning = a})++-- | [Output Only] The list of instance groups that are contained in this+-- scope.+igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]+igslInstanceGroups+  = lens _igslInstanceGroups+      (\ s a -> s{_igslInstanceGroups = a})+      . _Default+      . _Coerce++instance FromJSON InstanceGroupsScopedList where+        parseJSON+          = withObject "InstanceGroupsScopedList"+              (\ o ->+                 InstanceGroupsScopedList' <$>+                   (o .:? "warning") <*>+                     (o .:? "instanceGroups" .!= mempty))++instance ToJSON InstanceGroupsScopedList where+        toJSON InstanceGroupsScopedList'{..}+          = object+              (catMaybes+                 [("warning" .=) <$> _igslWarning,+                  ("instanceGroups" .=) <$> _igslInstanceGroups])++--+-- /See:/ 'instancesStartWithEncryptionKeyRequest' smart constructor.+newtype InstancesStartWithEncryptionKeyRequest = InstancesStartWithEncryptionKeyRequest'+    { _iswekrDisks :: Maybe [CustomerEncryptionKeyProtectedDisk]+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesStartWithEncryptionKeyRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iswekrDisks'+instancesStartWithEncryptionKeyRequest+    :: InstancesStartWithEncryptionKeyRequest+instancesStartWithEncryptionKeyRequest =+    InstancesStartWithEncryptionKeyRequest'+    { _iswekrDisks = Nothing+    }++-- | Array of disks associated with this instance that are protected with a+-- customer-supplied encryption key. In order to start the instance, the+-- disk url and its corresponding key must be provided. If the disk is not+-- protected with a customer-supplied encryption key it should not be+-- specified.+iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]+iswekrDisks+  = lens _iswekrDisks (\ s a -> s{_iswekrDisks = a}) .+      _Default+      . _Coerce++instance FromJSON+         InstancesStartWithEncryptionKeyRequest where+        parseJSON+          = withObject "InstancesStartWithEncryptionKeyRequest"+              (\ o ->+                 InstancesStartWithEncryptionKeyRequest' <$>+                   (o .:? "disks" .!= mempty))++instance ToJSON+         InstancesStartWithEncryptionKeyRequest where+        toJSON InstancesStartWithEncryptionKeyRequest'{..}+          = object (catMaybes [("disks" .=) <$> _iswekrDisks])++-- | An HttpsHealthCheck resource. This resource defines a template for how+-- individual instances should be checked for health, via HTTPS.+--+-- /See:/ 'httpsHealthCheck' smart constructor.+data HTTPSHealthCheck = HTTPSHealthCheck'+    { _hhcHealthyThreshold   :: !(Maybe (Textual Int32))+    , _hhcKind               :: !Text+    , _hhcRequestPath        :: !(Maybe Text)+    , _hhcSelfLink           :: !(Maybe Text)+    , _hhcCheckIntervalSec   :: !(Maybe (Textual Int32))+    , _hhcName               :: !(Maybe Text)+    , _hhcCreationTimestamp  :: !(Maybe Text)+    , _hhcId                 :: !(Maybe (Textual Word64))+    , _hhcHost               :: !(Maybe Text)+    , _hhcTimeoutSec         :: !(Maybe (Textual Int32))+    , _hhcDescription        :: !(Maybe Text)+    , _hhcUnhealthyThreshold :: !(Maybe (Textual Int32))+    , _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:+--+-- * 'hhcHealthyThreshold'+--+-- * 'hhcKind'+--+-- * 'hhcRequestPath'+--+-- * 'hhcSelfLink'+--+-- * 'hhcCheckIntervalSec'+--+-- * 'hhcName'+--+-- * 'hhcCreationTimestamp'+--+-- * 'hhcId'+--+-- * 'hhcHost'+--+-- * 'hhcTimeoutSec'+--+-- * 'hhcDescription'+--+-- * 'hhcUnhealthyThreshold'+--+-- * 'hhcPort'+httpsHealthCheck+    :: HTTPSHealthCheck+httpsHealthCheck =+    HTTPSHealthCheck'+    { _hhcHealthyThreshold = Nothing+    , _hhcKind = "compute#httpsHealthCheck"+    , _hhcRequestPath = Nothing+    , _hhcSelfLink = Nothing+    , _hhcCheckIntervalSec = Nothing+    , _hhcName = Nothing+    , _hhcCreationTimestamp = Nothing+    , _hhcId = Nothing+    , _hhcHost = Nothing+    , _hhcTimeoutSec = Nothing+    , _hhcDescription = Nothing+    , _hhcUnhealthyThreshold = Nothing+    , _hhcPort = Nothing+    }++-- | A so-far unhealthy instance will be marked healthy after this many+-- consecutive successes. The default value is 2.+hhcHealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)+hhcHealthyThreshold+  = lens _hhcHealthyThreshold+      (\ s a -> s{_hhcHealthyThreshold = a})+      . mapping _Coerce++-- | Type of the resource.+hhcKind :: Lens' HTTPSHealthCheck Text+hhcKind = lens _hhcKind (\ s a -> s{_hhcKind = 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})++-- | [Output Only] Server-defined URL for the resource.+hhcSelfLink :: Lens' HTTPSHealthCheck (Maybe Text)+hhcSelfLink+  = lens _hhcSelfLink (\ s a -> s{_hhcSelfLink = a})++-- | How often (in seconds) to send a health check. The default value is 5+-- seconds.+hhcCheckIntervalSec :: Lens' HTTPSHealthCheck (Maybe Int32)+hhcCheckIntervalSec+  = lens _hhcCheckIntervalSec+      (\ s a -> s{_hhcCheckIntervalSec = 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.+hhcName :: Lens' HTTPSHealthCheck (Maybe Text)+hhcName = lens _hhcName (\ s a -> s{_hhcName = a})++-- | [Output Only] Creation timestamp in RFC3339 text format.+hhcCreationTimestamp :: Lens' HTTPSHealthCheck (Maybe Text)+hhcCreationTimestamp+  = lens _hhcCreationTimestamp+      (\ s a -> s{_hhcCreationTimestamp = a})++-- | [Output Only] The unique identifier for the resource. This identifier is+-- defined by the server.+hhcId :: Lens' HTTPSHealthCheck (Maybe Word64)+hhcId+  = lens _hhcId (\ s a -> s{_hhcId = a}) .+      mapping _Coerce++-- | The value of the host header in the HTTPS health check request. If left+-- empty (default value), the public 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})++-- | How long (in seconds) to wait before claiming failure. The default value+-- is 5 seconds. It is invalid for timeoutSec to have a greater value than+-- checkIntervalSec.+hhcTimeoutSec :: Lens' HTTPSHealthCheck (Maybe Int32)+hhcTimeoutSec+  = lens _hhcTimeoutSec+      (\ s a -> s{_hhcTimeoutSec = a})+      . mapping _Coerce++-- | An optional description of this resource. Provide this property when you+-- create the resource.+hhcDescription :: Lens' HTTPSHealthCheck (Maybe Text)+hhcDescription+  = lens _hhcDescription+      (\ s a -> s{_hhcDescription = a})++-- | A so-far healthy instance will be marked unhealthy after this many+-- consecutive failures. The default value is 2.+hhcUnhealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)+hhcUnhealthyThreshold+  = lens _hhcUnhealthyThreshold+      (\ s a -> s{_hhcUnhealthyThreshold = a})+      . mapping _Coerce++-- | The TCP port number for the HTTPS health check request. The default+-- value is 443.+hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)+hhcPort+  = lens _hhcPort (\ s a -> s{_hhcPort = a}) .+      mapping _Coerce++instance FromJSON HTTPSHealthCheck where+        parseJSON+          = withObject "HTTPSHealthCheck"+              (\ o ->+                 HTTPSHealthCheck' <$>+                   (o .:? "healthyThreshold") <*>+                     (o .:? "kind" .!= "compute#httpsHealthCheck")+                     <*> (o .:? "requestPath")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "checkIntervalSec")+                     <*> (o .:? "name")+                     <*> (o .:? "creationTimestamp")+                     <*> (o .:? "id")+                     <*> (o .:? "host")+                     <*> (o .:? "timeoutSec")+                     <*> (o .:? "description")+                     <*> (o .:? "unhealthyThreshold")+                     <*> (o .:? "port"))++instance ToJSON HTTPSHealthCheck where+        toJSON HTTPSHealthCheck'{..}+          = object+              (catMaybes+                 [("healthyThreshold" .=) <$> _hhcHealthyThreshold,+                  Just ("kind" .= _hhcKind),+                  ("requestPath" .=) <$> _hhcRequestPath,+                  ("selfLink" .=) <$> _hhcSelfLink,+                  ("checkIntervalSec" .=) <$> _hhcCheckIntervalSec,+                  ("name" .=) <$> _hhcName,+                  ("creationTimestamp" .=) <$> _hhcCreationTimestamp,+                  ("id" .=) <$> _hhcId, ("host" .=) <$> _hhcHost,+                  ("timeoutSec" .=) <$> _hhcTimeoutSec,+                  ("description" .=) <$> _hhcDescription,+                  ("unhealthyThreshold" .=) <$> _hhcUnhealthyThreshold,+                  ("port" .=) <$> _hhcPort])++-- | [Output Only] A map of scoped vpn tunnel lists.+--+-- /See:/ 'vpnTunnelAggregatedListItems' smart constructor.+newtype VPNTunnelAggregatedListItems = VPNTunnelAggregatedListItems'+    { _vtaliAddtional :: HashMap Text VPNTunnelsScopedList+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'VPNTunnelAggregatedListItems' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vtaliAddtional'+vpnTunnelAggregatedListItems+    :: HashMap Text VPNTunnelsScopedList -- ^ 'vtaliAddtional'+    -> VPNTunnelAggregatedListItems+vpnTunnelAggregatedListItems pVtaliAddtional_ =+    VPNTunnelAggregatedListItems'+    { _vtaliAddtional = _Coerce # pVtaliAddtional_+    }++-- | Name of the scope containing this set of vpn tunnels.+vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)+vtaliAddtional+  = lens _vtaliAddtional+      (\ s a -> s{_vtaliAddtional = a})+      . _Coerce++instance FromJSON VPNTunnelAggregatedListItems where+        parseJSON+          = withObject "VPNTunnelAggregatedListItems"+              (\ o ->+                 VPNTunnelAggregatedListItems' <$>+                   (parseJSONObject o))++instance ToJSON VPNTunnelAggregatedListItems where+        toJSON = toJSON . _vtaliAddtional++-- | A set of instance tags.+--+-- /See:/ 'tags' smart constructor.+data Tags = Tags'+    { _tFingerprint :: !(Maybe Base64)+    , _tItems       :: !(Maybe [Text])+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Tags' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tFingerprint'+--+-- * 'tItems'+tags+    :: Tags+tags =+    Tags'+    { _tFingerprint = Nothing+    , _tItems = Nothing+    }++-- | Specifies a fingerprint for this request, which is essentially a hash of+-- the metadata\'s contents and used for optimistic locking. The+-- fingerprint is initially generated by Compute Engine and changes after+-- every request to modify or update metadata. You must always provide an+-- up-to-date fingerprint hash in order to update or change metadata. To+-- see the latest fingerprint, make get() request to the instance.+tFingerprint :: Lens' Tags (Maybe ByteString)+tFingerprint+  = lens _tFingerprint (\ s a -> s{_tFingerprint = a})+      . mapping _Base64++-- | An array of tags. Each tag must be 1-63 characters long, and comply with+-- RFC1035.+tItems :: Lens' Tags [Text]+tItems+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .+      _Coerce++instance FromJSON Tags where+        parseJSON+          = withObject "Tags"+              (\ o ->+                 Tags' <$>+                   (o .:? "fingerprint") <*> (o .:? "items" .!= mempty))++instance ToJSON Tags where+        toJSON Tags'{..}+          = object+              (catMaybes+                 [("fingerprint" .=) <$> _tFingerprint,+                  ("items" .=) <$> _tItems])++--+-- /See:/ 'addressAggregatedList' smart constructor.+data AddressAggregatedList = AddressAggregatedList'+    { _addNextPageToken :: !(Maybe Text)+    , _addKind          :: !Text+    , _addItems         :: !(Maybe AddressAggregatedListItems)+    , _addSelfLink      :: !(Maybe Text)+    , _addId            :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'AddressAggregatedList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'addNextPageToken'+--+-- * 'addKind'+--+-- * 'addItems'+--+-- * 'addSelfLink'+--+-- * 'addId'+addressAggregatedList+    :: AddressAggregatedList+addressAggregatedList =+    AddressAggregatedList'+    { _addNextPageToken = Nothing+    , _addKind = "compute#addressAggregatedList"+    , _addItems = Nothing+    , _addSelfLink = Nothing+    , _addId = Nothing+    }++-- | [Output Only] This token allows you to get the next page of results for+-- list requests. If the number of results is larger than maxResults, use+-- the nextPageToken as a value for the query parameter pageToken in the+-- next list request. Subsequent list requests will have their own+-- nextPageToken to continue paging through the results.+addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)+addNextPageToken+  = lens _addNextPageToken+      (\ s a -> s{_addNextPageToken = a})++-- | [Output Only] Type of resource. Always compute#addressAggregatedList for+-- aggregated lists of addresses.+addKind :: Lens' AddressAggregatedList Text+addKind = lens _addKind (\ s a -> s{_addKind = a})++-- | [Output Only] A map of scoped address lists.+addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)+addItems = lens _addItems (\ s a -> s{_addItems = a})++-- | [Output Only] Server-defined URL for this resource.+addSelfLink :: Lens' AddressAggregatedList (Maybe Text)+addSelfLink+  = lens _addSelfLink (\ s a -> s{_addSelfLink = a})++-- | [Output Only] Unique identifier for the resource; defined by the server.+addId :: Lens' AddressAggregatedList (Maybe Text)+addId = lens _addId (\ s a -> s{_addId = a})++instance FromJSON AddressAggregatedList where+        parseJSON+          = withObject "AddressAggregatedList"+              (\ o ->+                 AddressAggregatedList' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "kind" .!= "compute#addressAggregatedList")+                     <*> (o .:? "items")+                     <*> (o .:? "selfLink")+                     <*> (o .:? "id"))++instance ToJSON AddressAggregatedList where+        toJSON AddressAggregatedList'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _addNextPageToken,+                  Just ("kind" .= _addKind),+                  ("items" .=) <$> _addItems,+                  ("selfLink" .=) <$> _addSelfLink,+                  ("id" .=) <$> _addId])++--+-- /See:/ 'operationWarningsItem' smart constructor.+data OperationWarningsItem = OperationWarningsItem'+    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])+    , _owiCode    :: !(Maybe OperationWarningsItemCode)+    , _owiMessage :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'owiData'+--+-- * 'owiCode'+--+-- * 'owiMessage'+operationWarningsItem+    :: OperationWarningsItem+operationWarningsItem =+    OperationWarningsItem'+    { _owiData = Nothing+    , _owiCode = Nothing+    , _owiMessage = Nothing+    }++-- | [Output Only] Metadata about this warning in key: value format. For+-- example: \"data\": [ { \"key\": \"scope\", \"value\":+-- \"zones\/us-east1-d\" }+owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]+owiData+  = lens _owiData (\ s a -> s{_owiData = a}) . _Default+      . _Coerce++-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)+owiCode = lens _owiCode (\ s a -> s{_owiCode = a})++-- | [Output Only] A human-readable description of the warning code.+owiMessage :: Lens' OperationWarningsItem (Maybe Text)+owiMessage+  = lens _owiMessage (\ s a -> s{_owiMessage = a})++instance FromJSON OperationWarningsItem where+        parseJSON+          = withObject "OperationWarningsItem"+              (\ o ->+                 OperationWarningsItem' <$>+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON OperationWarningsItem where+        toJSON OperationWarningsItem'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,+                  ("message" .=) <$> _owiMessage])++-- | Message for the expected URL mappings.+--+-- /See:/ 'urlMapTest' smart constructor.+data URLMapTest = URLMapTest'+    { _umtPath        :: !(Maybe Text)+    , _umtService     :: !(Maybe Text)+    , _umtHost        :: !(Maybe Text)+    , _umtDescription :: !(Maybe Text)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'URLMapTest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'umtPath'+--+-- * 'umtService'+--+-- * 'umtHost'+--+-- * 'umtDescription'+urlMapTest+    :: URLMapTest+urlMapTest =+    URLMapTest'+    { _umtPath = Nothing+    , _umtService = Nothing+    , _umtHost = Nothing+    , _umtDescription = Nothing+    }++-- | Path portion of the URL.+umtPath :: Lens' URLMapTest (Maybe Text)+umtPath = lens _umtPath (\ s a -> s{_umtPath = a})++-- | Expected BackendService resource the given URL should be mapped to.+umtService :: Lens' URLMapTest (Maybe Text)+umtService+  = lens _umtService (\ s a -> s{_umtService = a})++-- | Host portion of the URL.+umtHost :: Lens' URLMapTest (Maybe Text)+umtHost = lens _umtHost (\ s a -> s{_umtHost = a})++-- | Description of this test case.+umtDescription :: Lens' URLMapTest (Maybe Text)+umtDescription+  = lens _umtDescription+      (\ s a -> s{_umtDescription = a})++instance FromJSON URLMapTest where+        parseJSON+          = withObject "URLMapTest"+              (\ o ->+                 URLMapTest' <$>+                   (o .:? "path") <*> (o .:? "service") <*>+                     (o .:? "host")+                     <*> (o .:? "description"))++instance ToJSON URLMapTest where+        toJSON URLMapTest'{..}+          = object+              (catMaybes+                 [("path" .=) <$> _umtPath,+                  ("service" .=) <$> _umtService,+                  ("host" .=) <$> _umtHost,+                  ("description" .=) <$> _umtDescription])++--+-- /See:/ 'routersPreviewResponse' smart constructor.+newtype RoutersPreviewResponse = RoutersPreviewResponse'+    { _rprResource :: Maybe Router+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersPreviewResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rprResource'+routersPreviewResponse+    :: RoutersPreviewResponse+routersPreviewResponse =+    RoutersPreviewResponse'+    { _rprResource = Nothing+    }++-- | Preview of given router.+rprResource :: Lens' RoutersPreviewResponse (Maybe Router)+rprResource+  = lens _rprResource (\ s a -> s{_rprResource = a})++instance FromJSON RoutersPreviewResponse where+        parseJSON+          = withObject "RoutersPreviewResponse"+              (\ o ->+                 RoutersPreviewResponse' <$> (o .:? "resource"))++instance ToJSON RoutersPreviewResponse where+        toJSON RoutersPreviewResponse'{..}+          = object+              (catMaybes [("resource" .=) <$> _rprResource])++-- | An Instance resource.+--+-- /See:/ 'instance'' smart constructor.+data Instance = Instance'+    { _insnStatus            :: !(Maybe InstanceStatus)+    , _insnServiceAccounts   :: !(Maybe [ServiceAccount])+    , _insnNetworkInterfaces :: !(Maybe [NetworkInterface])+    , _insnKind              :: !Text+    , _insnZone              :: !(Maybe Text)+    , _insnCPUPlatform       :: !(Maybe Text)+    , _insnSelfLink          :: !(Maybe Text)+    , _insnName              :: !(Maybe Text)+    , _insnStatusMessage     :: !(Maybe Text)+    , _insnCreationTimestamp :: !(Maybe Text)+    , _insnMachineType       :: !(Maybe Text)+    , _insnMetadata          :: !(Maybe Metadata)+    , _insnId                :: !(Maybe (Textual Word64))+    , _insnScheduling        :: !(Maybe Scheduling)+    , _insnDisks             :: !(Maybe [AttachedDisk])+    , _insnCanIPForward      :: !(Maybe Bool)+    , _insnDescription       :: !(Maybe Text)+    , _insnTags              :: !(Maybe Tags)+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'Instance' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'insnStatus'+--+-- * 'insnServiceAccounts'+--+-- * 'insnNetworkInterfaces'+--+-- * 'insnKind'+--+-- * 'insnZone'+--+-- * 'insnCPUPlatform'+--+-- * 'insnSelfLink'+--+-- * 'insnName'+--+-- * 'insnStatusMessage'+--+-- * 'insnCreationTimestamp'+--+-- * 'insnMachineType'+--+-- * 'insnMetadata'+--+-- * 'insnId'+--+-- * 'insnScheduling'+--+-- * 'insnDisks'+--+-- * 'insnCanIPForward'+--+-- * 'insnDescription'+--+-- * 'insnTags'+instance'+    :: Instance+instance' =+    Instance'+    { _insnStatus = Nothing+    , _insnServiceAccounts = Nothing+    , _insnNetworkInterfaces = Nothing+    , _insnKind = "compute#instance"+    , _insnZone = Nothing+    , _insnCPUPlatform = Nothing+    , _insnSelfLink = Nothing+    , _insnName = Nothing+    , _insnStatusMessage = Nothing+    , _insnCreationTimestamp = Nothing+    , _insnMachineType = Nothing+    , _insnMetadata = Nothing+    , _insnId = Nothing+    , _insnScheduling = Nothing+    , _insnDisks = Nothing+    , _insnCanIPForward = Nothing+    , _insnDescription = Nothing+    , _insnTags = Nothing+    }++-- | [Output Only] The status of the instance. One of the following values:+-- PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, and+-- TERMINATED.+insnStatus :: Lens' Instance (Maybe InstanceStatus)+insnStatus+  = lens _insnStatus (\ s a -> s{_insnStatus = a})++-- | A list of service accounts, with their specified scopes, authorized for+-- this instance. Service accounts generate access tokens that can be+-- accessed through the metadata server and used to authenticate+-- applications on the instance. See Service Accounts for more information.+insnServiceAccounts :: Lens' Instance [ServiceAccount]+insnServiceAccounts+  = lens _insnServiceAccounts+      (\ s a -> s{_insnServiceAccounts = a})+      . _Default+      . _Coerce++-- | An array of configurations for this interface. This specifies how this+-- interface is configured to interact with other network services, such as+-- connecting to the internet. Only one interface is supported per+-- instance. insnNetworkInterfaces :: Lens' Instance [NetworkInterface] insnNetworkInterfaces   = lens _insnNetworkInterfaces
gen/Network/Google/Compute/Types/Sum.hs view
@@ -48,9 +48,9 @@ instance ToJSON SchedulingOnHostMaintenance where     toJSON = toJSONText --- | Defines how target utilization value is expressed for a Cloud Monitoring--- metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not--- specified, the default is GAUGE.+-- | Defines how target utilization value is expressed for a Stackdriver+-- Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE.+-- If not specified, the default is GAUGE. data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType     = DeltaPerMinute       -- ^ @DELTA_PER_MINUTE@@@ -90,6 +90,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | DiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | FieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | InjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | NextHopAddressNotAssigned@@ -123,6 +125,7 @@         "CLEANUP_FAILED" -> Right CleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right DeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right FieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right InjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right NextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right NextHopCannotIPForward@@ -142,6 +145,7 @@         CleanupFailed -> "CLEANUP_FAILED"         DeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         DiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        FieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         InjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         NextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         NextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -162,12 +166,18 @@     toJSON = toJSONText  -- | The protocol this BackendService uses to communicate with backends.--- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL.+-- Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is+-- HTTP. For internal load balancing, the possible values are TCP and UDP,+-- and the default is TCP. data BackendServiceProtocol     = HTTP       -- ^ @HTTP@     | HTTPS       -- ^ @HTTPS@+    | SSL+      -- ^ @SSL@+    | TCP+      -- ^ @TCP@       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)  instance Hashable BackendServiceProtocol@@ -176,12 +186,16 @@     parseQueryParam = \case         "HTTP" -> Right HTTP         "HTTPS" -> Right HTTPS+        "SSL" -> Right SSL+        "TCP" -> Right TCP         x -> Left ("Unable to parse BackendServiceProtocol from: " <> x)  instance ToHttpApiData BackendServiceProtocol where     toQueryParam = \case         HTTP -> "HTTP"         HTTPS -> "HTTPS"+        SSL -> "SSL"+        TCP -> "TCP"  instance FromJSON BackendServiceProtocol where     parseJSON = parseJSONText "BackendServiceProtocol"@@ -217,6 +231,34 @@ instance ToJSON AttachedDiskType where     toJSON = toJSONText +-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+data TargetSSLProxyProxyHeader+    = None+      -- ^ @NONE@+    | ProxyV1+      -- ^ @PROXY_V1@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TargetSSLProxyProxyHeader++instance FromHttpApiData TargetSSLProxyProxyHeader where+    parseQueryParam = \case+        "NONE" -> Right None+        "PROXY_V1" -> Right ProxyV1+        x -> Left ("Unable to parse TargetSSLProxyProxyHeader from: " <> x)++instance ToHttpApiData TargetSSLProxyProxyHeader where+    toQueryParam = \case+        None -> "NONE"+        ProxyV1 -> "PROXY_V1"++instance FromJSON TargetSSLProxyProxyHeader where+    parseJSON = parseJSONText "TargetSSLProxyProxyHeader"++instance ToJSON TargetSSLProxyProxyHeader where+    toJSON = toJSONText+ -- | The type of the image used to create this disk. The default and only -- value is RAW data ImageSourceType@@ -241,6 +283,45 @@ instance ToJSON ImageSourceType where     toJSON = toJSONText +-- | Type of session affinity to use. The default is NONE. When the load+-- balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or+-- GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be+-- NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the+-- protocol is UDP, this field is not used.+data BackendServiceSessionAffinity+    = BSSAClientIP+      -- ^ @CLIENT_IP@+    | 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_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"+        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@@ -250,6 +331,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | FRSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | FRSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | FRSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | FRSLWCNextHopAddressNotAssigned@@ -283,6 +366,7 @@         "CLEANUP_FAILED" -> Right FRSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right FRSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right FRSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right FRSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right FRSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right FRSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right FRSLWCNextHopCannotIPForward@@ -302,6 +386,7 @@         FRSLWCCleanupFailed -> "CLEANUP_FAILED"         FRSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         FRSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        FRSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         FRSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         FRSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         FRSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -330,6 +415,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | OSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | OSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | OSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | OSLWCNextHopAddressNotAssigned@@ -363,6 +450,7 @@         "CLEANUP_FAILED" -> Right OSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right OSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right OSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right OSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right OSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right OSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right OSLWCNextHopCannotIPForward@@ -382,6 +470,7 @@         OSLWCCleanupFailed -> "CLEANUP_FAILED"         OSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         OSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        OSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         OSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         OSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         OSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -410,6 +499,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | DSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | DSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | DSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | DSLWCNextHopAddressNotAssigned@@ -443,6 +534,7 @@         "CLEANUP_FAILED" -> Right DSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right DSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right DSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right DSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DSLWCNextHopCannotIPForward@@ -462,6 +554,7 @@         DSLWCCleanupFailed -> "CLEANUP_FAILED"         DSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         DSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        DSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         DSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         DSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         DSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -490,6 +583,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | IGMSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | IGMSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | IGMSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | IGMSLWCNextHopAddressNotAssigned@@ -523,6 +618,7 @@         "CLEANUP_FAILED" -> Right IGMSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right IGMSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGMSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right IGMSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right IGMSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGMSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGMSLWCNextHopCannotIPForward@@ -542,6 +638,7 @@         IGMSLWCCleanupFailed -> "CLEANUP_FAILED"         IGMSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         IGMSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        IGMSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         IGMSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         IGMSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         IGMSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -570,6 +667,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | TPSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | TPSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | TPSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | TPSLWCNextHopAddressNotAssigned@@ -603,6 +702,7 @@         "CLEANUP_FAILED" -> Right TPSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right TPSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TPSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right TPSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right TPSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TPSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TPSLWCNextHopCannotIPForward@@ -622,6 +722,7 @@         TPSLWCCleanupFailed -> "CLEANUP_FAILED"         TPSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         TPSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        TPSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         TPSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         TPSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         TPSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -641,6 +742,34 @@ instance ToJSON TargetPoolsScopedListWarningCode where     toJSON = toJSONText +-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+data SSLHealthCheckProxyHeader+    = SHCPHNone+      -- ^ @NONE@+    | SHCPHProxyV1+      -- ^ @PROXY_V1@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable SSLHealthCheckProxyHeader++instance FromHttpApiData SSLHealthCheckProxyHeader where+    parseQueryParam = \case+        "NONE" -> Right SHCPHNone+        "PROXY_V1" -> Right SHCPHProxyV1+        x -> Left ("Unable to parse SSLHealthCheckProxyHeader from: " <> x)++instance ToHttpApiData SSLHealthCheckProxyHeader where+    toQueryParam = \case+        SHCPHNone -> "NONE"+        SHCPHProxyV1 -> "PROXY_V1"++instance FromJSON SSLHealthCheckProxyHeader where+    parseJSON = parseJSONText "SSLHealthCheckProxyHeader"++instance ToJSON SSLHealthCheckProxyHeader where+    toJSON = toJSONText+ -- | [Output Only] The status of the VPN gateway. data TargetVPNGatewayStatus     = Creating@@ -725,6 +854,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | TISLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | TISLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | TISLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | TISLWCNextHopAddressNotAssigned@@ -758,6 +889,7 @@         "CLEANUP_FAILED" -> Right TISLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right TISLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TISLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right TISLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right TISLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TISLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TISLWCNextHopCannotIPForward@@ -777,6 +909,7 @@         TISLWCCleanupFailed -> "CLEANUP_FAILED"         TISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         TISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        TISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         TISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         TISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         TISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -805,6 +938,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | RWICDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | RWICFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | RWICInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | RWICNextHopAddressNotAssigned@@ -838,6 +973,7 @@         "CLEANUP_FAILED" -> Right RWICCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right RWICDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RWICDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right RWICFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right RWICInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RWICNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RWICNextHopCannotIPForward@@ -857,6 +993,7 @@         RWICCleanupFailed -> "CLEANUP_FAILED"         RWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         RWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        RWICFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         RWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         RWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         RWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -915,6 +1052,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | ASLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | ASLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | ASLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | ASLWCNextHopAddressNotAssigned@@ -948,6 +1087,7 @@         "CLEANUP_FAILED" -> Right ASLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right ASLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ASLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right ASLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right ASLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ASLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ASLWCNextHopCannotIPForward@@ -967,6 +1107,7 @@         ASLWCCleanupFailed -> "CLEANUP_FAILED"         ASLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         ASLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        ASLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         ASLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         ASLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         ASLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -1083,6 +1224,90 @@ instance ToJSON DeprecationStatusState where     toJSON = toJSONText +-- | [Output Only] A warning code, if applicable. For example, Compute Engine+-- returns NO_RESULTS_ON_PAGE if there are no results in the response.+data RoutersScopedListWarningCode+    = RSLWCCleanupFailed+      -- ^ @CLEANUP_FAILED@+    | RSLWCDeprecatedResourceUsed+      -- ^ @DEPRECATED_RESOURCE_USED@+    | RSLWCDiskSizeLargerThanImageSize+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | RSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@+    | RSLWCInjectedKernelsDeprecated+      -- ^ @INJECTED_KERNELS_DEPRECATED@+    | RSLWCNextHopAddressNotAssigned+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@+    | RSLWCNextHopCannotIPForward+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@+    | RSLWCNextHopInstanceNotFound+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@+    | RSLWCNextHopInstanceNotOnNetwork+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@+    | RSLWCNextHopNotRunning+      -- ^ @NEXT_HOP_NOT_RUNNING@+    | RSLWCNotCriticalError+      -- ^ @NOT_CRITICAL_ERROR@+    | RSLWCNoResultsOnPage+      -- ^ @NO_RESULTS_ON_PAGE@+    | RSLWCRequiredTosAgreement+      -- ^ @REQUIRED_TOS_AGREEMENT@+    | RSLWCResourceNotDeleted+      -- ^ @RESOURCE_NOT_DELETED@+    | RSLWCSingleInstancePropertyTemplate+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@+    | RSLWCUnreachable+      -- ^ @UNREACHABLE@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable RoutersScopedListWarningCode++instance FromHttpApiData RoutersScopedListWarningCode where+    parseQueryParam = \case+        "CLEANUP_FAILED" -> Right RSLWCCleanupFailed+        "DEPRECATED_RESOURCE_USED" -> Right RSLWCDeprecatedResourceUsed+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right RSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right RSLWCFieldValueOverriden+        "INJECTED_KERNELS_DEPRECATED" -> Right RSLWCInjectedKernelsDeprecated+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right RSLWCNextHopAddressNotAssigned+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Right RSLWCNextHopCannotIPForward+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Right RSLWCNextHopInstanceNotFound+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Right RSLWCNextHopInstanceNotOnNetwork+        "NEXT_HOP_NOT_RUNNING" -> Right RSLWCNextHopNotRunning+        "NOT_CRITICAL_ERROR" -> Right RSLWCNotCriticalError+        "NO_RESULTS_ON_PAGE" -> Right RSLWCNoResultsOnPage+        "REQUIRED_TOS_AGREEMENT" -> Right RSLWCRequiredTosAgreement+        "RESOURCE_NOT_DELETED" -> Right RSLWCResourceNotDeleted+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Right RSLWCSingleInstancePropertyTemplate+        "UNREACHABLE" -> Right RSLWCUnreachable+        x -> Left ("Unable to parse RoutersScopedListWarningCode from: " <> x)++instance ToHttpApiData RoutersScopedListWarningCode where+    toQueryParam = \case+        RSLWCCleanupFailed -> "CLEANUP_FAILED"+        RSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"+        RSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        RSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"+        RSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"+        RSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"+        RSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"+        RSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"+        RSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"+        RSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"+        RSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"+        RSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"+        RSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"+        RSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"+        RSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"+        RSLWCUnreachable -> "UNREACHABLE"++instance FromJSON RoutersScopedListWarningCode where+    parseJSON = parseJSONText "RoutersScopedListWarningCode"++instance ToJSON RoutersScopedListWarningCode where+    toJSON = toJSONText+ -- | [Output Only] The current action that the managed instance group has -- scheduled for the instance. Possible values: - NONE The instance is -- running, and the managed instance group does not have any scheduled@@ -1091,21 +1316,23 @@ -- 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 target_size value is decreased. - 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.+-- the group\'s targetSize value is decreased instead. - RECREATING The+-- managed instance group is recreating this instance. - DELETING The+-- managed instance group is permanently deleting this instance. -+-- ABANDONING The managed instance group is abandoning this instance. The+-- instance will be removed from the instance group and from any target+-- pools that are associated with this group. - RESTARTING The managed+-- instance group is restarting the instance. - REFRESHING The managed+-- instance group is applying configuration changes to the instance without+-- stopping it. For example, the group can update the target pool list for+-- an instance without stopping that instance. data ManagedInstanceCurrentAction     = MICAAbandoning       -- ^ @ABANDONING@     | MICACreating       -- ^ @CREATING@+    | MICACreatingWithoutRetries+      -- ^ @CREATING_WITHOUT_RETRIES@     | MICADeleting       -- ^ @DELETING@     | MICANone@@ -1124,6 +1351,7 @@     parseQueryParam = \case         "ABANDONING" -> Right MICAAbandoning         "CREATING" -> Right MICACreating+        "CREATING_WITHOUT_RETRIES" -> Right MICACreatingWithoutRetries         "DELETING" -> Right MICADeleting         "NONE" -> Right MICANone         "RECREATING" -> Right MICARecreating@@ -1135,6 +1363,7 @@     toQueryParam = \case         MICAAbandoning -> "ABANDONING"         MICACreating -> "CREATING"+        MICACreatingWithoutRetries -> "CREATING_WITHOUT_RETRIES"         MICADeleting -> "DELETING"         MICANone -> "NONE"         MICARecreating -> "RECREATING"@@ -1236,6 +1465,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | TVGSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | TVGSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | TVGSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | TVGSLWCNextHopAddressNotAssigned@@ -1269,6 +1500,7 @@         "CLEANUP_FAILED" -> Right TVGSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right TVGSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right TVGSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right TVGSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right TVGSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right TVGSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right TVGSLWCNextHopCannotIPForward@@ -1288,6 +1520,7 @@         TVGSLWCCleanupFailed -> "CLEANUP_FAILED"         TVGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         TVGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        TVGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         TVGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         TVGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         TVGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -1307,8 +1540,7 @@ instance ToJSON TargetVPNGatewaysScopedListWarningCode where     toJSON = toJSONText --- | [Output Only] The status of disk creation. Applicable statuses includes:--- CREATING, FAILED, READY, RESTORING.+-- | [Output Only] The status of disk creation. data DiskStatus     = DSCreating       -- ^ @CREATING@@@ -1450,6 +1682,34 @@ instance ToJSON RegionStatus where     toJSON = toJSONText +-- | The new type of proxy header to append before sending data to the+-- backend. NONE or PROXY_V1 are allowed.+data TargetSSLProxiesSetProxyHeaderRequestProxyHeader+    = TSPSPHRPHNone+      -- ^ @NONE@+    | TSPSPHRPHProxyV1+      -- ^ @PROXY_V1@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TargetSSLProxiesSetProxyHeaderRequestProxyHeader++instance FromHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where+    parseQueryParam = \case+        "NONE" -> Right TSPSPHRPHNone+        "PROXY_V1" -> Right TSPSPHRPHProxyV1+        x -> Left ("Unable to parse TargetSSLProxiesSetProxyHeaderRequestProxyHeader from: " <> x)++instance ToHttpApiData TargetSSLProxiesSetProxyHeaderRequestProxyHeader where+    toQueryParam = \case+        TSPSPHRPHNone -> "NONE"+        TSPSPHRPHProxyV1 -> "PROXY_V1"++instance FromJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where+    parseJSON = parseJSONText "TargetSSLProxiesSetProxyHeaderRequestProxyHeader"++instance ToJSON TargetSSLProxiesSetProxyHeaderRequestProxyHeader where+    toJSON = toJSONText+ -- | [Output Only] The status of the VPN tunnel. data VPNTunnelStatus     = VTSAllocatingResources@@ -1517,11 +1777,14 @@ instance ToJSON VPNTunnelStatus where     toJSON = toJSONText --- | Specifies the balancing mode for this backend. For global HTTP(S) load--- balancing, the default is UTILIZATION. Valid values are UTILIZATION and--- RATE.+-- | Specifies the balancing mode for this backend. For global HTTP(S) or+-- TCP\/SSL load balancing, the default is UTILIZATION. Valid values are+-- UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP\/SSL). This+-- cannot be used for internal load balancing. data BackendBalancingMode-    = Rate+    = Connection+      -- ^ @CONNECTION@+    | Rate       -- ^ @RATE@     | Utilization       -- ^ @UTILIZATION@@@ -1531,12 +1794,14 @@  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" @@ -1547,17 +1812,17 @@     toJSON = toJSONText  -- | The IP protocol to which this rule applies. Valid options are TCP, UDP,--- ESP, AH, SCTP or ICMP.+-- ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL data ForwardingRuleIPProtocol-    = AH+    = FRIPAH       -- ^ @AH@-    | Esp+    | FRIPEsp       -- ^ @ESP@-    | Sctp+    | FRIPSctp       -- ^ @SCTP@-    | TCP+    | FRIPTCP       -- ^ @TCP@-    | Udp+    | FRIPUdp       -- ^ @UDP@       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic) @@ -1565,20 +1830,20 @@  instance FromHttpApiData ForwardingRuleIPProtocol where     parseQueryParam = \case-        "AH" -> Right AH-        "ESP" -> Right Esp-        "SCTP" -> Right Sctp-        "TCP" -> Right TCP-        "UDP" -> Right Udp+        "AH" -> Right FRIPAH+        "ESP" -> Right FRIPEsp+        "SCTP" -> Right FRIPSctp+        "TCP" -> Right FRIPTCP+        "UDP" -> Right FRIPUdp         x -> Left ("Unable to parse ForwardingRuleIPProtocol from: " <> x)  instance ToHttpApiData ForwardingRuleIPProtocol where     toQueryParam = \case-        AH -> "AH"-        Esp -> "ESP"-        Sctp -> "SCTP"-        TCP -> "TCP"-        Udp -> "UDP"+        FRIPAH -> "AH"+        FRIPEsp -> "ESP"+        FRIPSctp -> "SCTP"+        FRIPTCP -> "TCP"+        FRIPUdp -> "UDP"  instance FromJSON ForwardingRuleIPProtocol where     parseJSON = parseJSONText "ForwardingRuleIPProtocol"@@ -1677,6 +1942,52 @@ instance ToJSON AttachedDiskInterface where     toJSON = toJSONText +-- | Specifies the type of the healthCheck, either TCP, UDP, 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] Status of the zone, either UP or DOWN. data ZoneStatus     = ZSDown@@ -1713,6 +2024,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | SSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | SSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | SSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | SSLWCNextHopAddressNotAssigned@@ -1746,6 +2059,7 @@         "CLEANUP_FAILED" -> Right SSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right SSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right SSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right SSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right SSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right SSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right SSLWCNextHopCannotIPForward@@ -1765,6 +2079,7 @@         SSLWCCleanupFailed -> "CLEANUP_FAILED"         SSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         SSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        SSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         SSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         SSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         SSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -1816,6 +2131,14 @@       -- ^ @LOCAL_SSD_TOTAL_GB@     | Networks       -- ^ @NETWORKS@+    | PreemptibleCPUs+      -- ^ @PREEMPTIBLE_CPUS@+    | RegionalAutoscalers+      -- ^ @REGIONAL_AUTOSCALERS@+    | RegionalInstanceGroupManagers+      -- ^ @REGIONAL_INSTANCE_GROUP_MANAGERS@+    | Routers+      -- ^ @ROUTERS@     | Routes       -- ^ @ROUTES@     | Snapshots@@ -1836,6 +2159,8 @@       -- ^ @TARGET_INSTANCES@     | TargetPools       -- ^ @TARGET_POOLS@+    | TargetSSLProxies+      -- ^ @TARGET_SSL_PROXIES@     | TargetVPNGateways       -- ^ @TARGET_VPN_GATEWAYS@     | URLMaps@@ -1863,6 +2188,10 @@         "IN_USE_ADDRESSES" -> Right InUseAddresses         "LOCAL_SSD_TOTAL_GB" -> Right LocalSsdTotalGb         "NETWORKS" -> Right Networks+        "PREEMPTIBLE_CPUS" -> Right PreemptibleCPUs+        "REGIONAL_AUTOSCALERS" -> Right RegionalAutoscalers+        "REGIONAL_INSTANCE_GROUP_MANAGERS" -> Right RegionalInstanceGroupManagers+        "ROUTERS" -> Right Routers         "ROUTES" -> Right Routes         "SNAPSHOTS" -> Right Snapshots         "SSD_TOTAL_GB" -> Right SsdTotalGb@@ -1873,6 +2202,7 @@         "TARGET_HTTP_PROXIES" -> Right TargetHTTPProxies         "TARGET_INSTANCES" -> Right TargetInstances         "TARGET_POOLS" -> Right TargetPools+        "TARGET_SSL_PROXIES" -> Right TargetSSLProxies         "TARGET_VPN_GATEWAYS" -> Right TargetVPNGateways         "URL_MAPS" -> Right URLMaps         "VPN_TUNNELS" -> Right VPNTunnels@@ -1895,6 +2225,10 @@         InUseAddresses -> "IN_USE_ADDRESSES"         LocalSsdTotalGb -> "LOCAL_SSD_TOTAL_GB"         Networks -> "NETWORKS"+        PreemptibleCPUs -> "PREEMPTIBLE_CPUS"+        RegionalAutoscalers -> "REGIONAL_AUTOSCALERS"+        RegionalInstanceGroupManagers -> "REGIONAL_INSTANCE_GROUP_MANAGERS"+        Routers -> "ROUTERS"         Routes -> "ROUTES"         Snapshots -> "SNAPSHOTS"         SsdTotalGb -> "SSD_TOTAL_GB"@@ -1905,6 +2239,7 @@         TargetHTTPProxies -> "TARGET_HTTP_PROXIES"         TargetInstances -> "TARGET_INSTANCES"         TargetPools -> "TARGET_POOLS"+        TargetSSLProxies -> "TARGET_SSL_PROXIES"         TargetVPNGateways -> "TARGET_VPN_GATEWAYS"         URLMaps -> "URL_MAPS"         VPNTunnels -> "VPN_TUNNELS"@@ -1916,7 +2251,8 @@     toJSON = toJSONText  -- | [Output Only] The status of the instance. One of the following values:--- PROVISIONING, STAGING, RUNNING, STOPPING, and TERMINATED.+-- PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, and+-- TERMINATED. data InstanceStatus     = ISProvisioning       -- ^ @PROVISIONING@@@ -1976,6 +2312,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | MTSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | MTSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | MTSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | MTSLWCNextHopAddressNotAssigned@@ -2009,6 +2347,7 @@         "CLEANUP_FAILED" -> Right MTSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right MTSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right MTSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right MTSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right MTSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right MTSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right MTSLWCNextHopCannotIPForward@@ -2028,6 +2367,7 @@         MTSLWCCleanupFailed -> "CLEANUP_FAILED"         MTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         MTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        MTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         MTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         MTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         MTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2056,6 +2396,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | DTSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | DTSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | DTSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | DTSLWCNextHopAddressNotAssigned@@ -2089,6 +2431,7 @@         "CLEANUP_FAILED" -> Right DTSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right DTSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right DTSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right DTSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right DTSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right DTSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right DTSLWCNextHopCannotIPForward@@ -2108,6 +2451,7 @@         DTSLWCCleanupFailed -> "CLEANUP_FAILED"         DTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         DTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        DTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         DTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         DTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         DTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2136,6 +2480,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | ADiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | AFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | AInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | ANextHopAddressNotAssigned@@ -2169,6 +2515,7 @@         "CLEANUP_FAILED" -> Right ACleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right ADeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ADiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right AFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right AInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ANextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ANextHopCannotIPForward@@ -2188,6 +2535,7 @@         ACleanupFailed -> "CLEANUP_FAILED"         ADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         ADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        AFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         AInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         ANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         ANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2207,6 +2555,37 @@ instance ToJSON AutoscalersScopedListWarningCode where     toJSON = toJSONText +-- | Status of the BGP peer: {UP, DOWN}+data RouterStatusBGPPeerStatusStatus+    = RSBPSSDown+      -- ^ @DOWN@+    | RSBPSSUnknown+      -- ^ @UNKNOWN@+    | RSBPSSUP+      -- ^ @UP@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable RouterStatusBGPPeerStatusStatus++instance FromHttpApiData RouterStatusBGPPeerStatusStatus where+    parseQueryParam = \case+        "DOWN" -> Right RSBPSSDown+        "UNKNOWN" -> Right RSBPSSUnknown+        "UP" -> Right RSBPSSUP+        x -> Left ("Unable to parse RouterStatusBGPPeerStatusStatus from: " <> x)++instance ToHttpApiData RouterStatusBGPPeerStatusStatus where+    toQueryParam = \case+        RSBPSSDown -> "DOWN"+        RSBPSSUnknown -> "UNKNOWN"+        RSBPSSUP -> "UP"++instance FromJSON RouterStatusBGPPeerStatusStatus where+    parseJSON = parseJSONText "RouterStatusBGPPeerStatusStatus"++instance ToJSON RouterStatusBGPPeerStatusStatus where+    toJSON = toJSONText+ -- | [Output Only] A warning code, if applicable. For example, Compute Engine -- returns NO_RESULTS_ON_PAGE if there are no results in the response. data VPNTunnelsScopedListWarningCode@@ -2216,6 +2595,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | VTSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | VTSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | VTSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | VTSLWCNextHopAddressNotAssigned@@ -2249,6 +2630,7 @@         "CLEANUP_FAILED" -> Right VTSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right VTSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right VTSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right VTSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right VTSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right VTSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right VTSLWCNextHopCannotIPForward@@ -2268,6 +2650,7 @@         VTSLWCCleanupFailed -> "CLEANUP_FAILED"         VTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         VTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        VTSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         VTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         VTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         VTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2287,6 +2670,34 @@ instance ToJSON VPNTunnelsScopedListWarningCode 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+    = HTTPHCPHNone+      -- ^ @NONE@+    | HTTPHCPHProxyV1+      -- ^ @PROXY_V1@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable HTTP2HealthCheckProxyHeader++instance FromHttpApiData HTTP2HealthCheckProxyHeader where+    parseQueryParam = \case+        "NONE" -> Right HTTPHCPHNone+        "PROXY_V1" -> Right HTTPHCPHProxyV1+        x -> Left ("Unable to parse HTTP2HealthCheckProxyHeader from: " <> x)++instance ToHttpApiData HTTP2HealthCheckProxyHeader where+    toQueryParam = \case+        HTTPHCPHNone -> "NONE"+        HTTPHCPHProxyV1 -> "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 InstanceGroupsScopedListWarningCode@@ -2296,6 +2707,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | IGSLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | IGSLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | IGSLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | IGSLWCNextHopAddressNotAssigned@@ -2329,6 +2742,7 @@         "CLEANUP_FAILED" -> Right IGSLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right IGSLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right IGSLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right IGSLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right IGSLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right IGSLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right IGSLWCNextHopCannotIPForward@@ -2348,6 +2762,7 @@         IGSLWCCleanupFailed -> "CLEANUP_FAILED"         IGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         IGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        IGSLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         IGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         IGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         IGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2418,6 +2833,34 @@ instance ToJSON InstanceWithNamedPortsStatus where     toJSON = toJSONText +-- | Specifies the type of proxy header to append before sending data to the+-- backend, either NONE or PROXY_V1. The default is NONE.+data TCPHealthCheckProxyHeader+    = THCPHNone+      -- ^ @NONE@+    | THCPHProxyV1+      -- ^ @PROXY_V1@+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)++instance Hashable TCPHealthCheckProxyHeader++instance FromHttpApiData TCPHealthCheckProxyHeader where+    parseQueryParam = \case+        "NONE" -> Right THCPHNone+        "PROXY_V1" -> Right THCPHProxyV1+        x -> Left ("Unable to parse TCPHealthCheckProxyHeader from: " <> x)++instance ToHttpApiData TCPHealthCheckProxyHeader where+    toQueryParam = \case+        THCPHNone -> "NONE"+        THCPHProxyV1 -> "PROXY_V1"++instance FromJSON TCPHealthCheckProxyHeader where+    parseJSON = parseJSONText "TCPHealthCheckProxyHeader"++instance ToJSON TCPHealthCheckProxyHeader where+    toJSON = toJSONText+ -- | [Output Only] A warning code, if applicable. For example, Compute Engine -- returns NO_RESULTS_ON_PAGE if there are no results in the response. data InstancesScopedListWarningCode@@ -2427,6 +2870,8 @@       -- ^ @DEPRECATED_RESOURCE_USED@     | ISLWCDiskSizeLargerThanImageSize       -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@+    | ISLWCFieldValueOverriden+      -- ^ @FIELD_VALUE_OVERRIDEN@     | ISLWCInjectedKernelsDeprecated       -- ^ @INJECTED_KERNELS_DEPRECATED@     | ISLWCNextHopAddressNotAssigned@@ -2460,6 +2905,7 @@         "CLEANUP_FAILED" -> Right ISLWCCleanupFailed         "DEPRECATED_RESOURCE_USED" -> Right ISLWCDeprecatedResourceUsed         "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Right ISLWCDiskSizeLargerThanImageSize+        "FIELD_VALUE_OVERRIDEN" -> Right ISLWCFieldValueOverriden         "INJECTED_KERNELS_DEPRECATED" -> Right ISLWCInjectedKernelsDeprecated         "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Right ISLWCNextHopAddressNotAssigned         "NEXT_HOP_CANNOT_IP_FORWARD" -> Right ISLWCNextHopCannotIPForward@@ -2479,6 +2925,7 @@         ISLWCCleanupFailed -> "CLEANUP_FAILED"         ISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"         ISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"+        ISLWCFieldValueOverriden -> "FIELD_VALUE_OVERRIDEN"         ISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"         ISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"         ISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"@@ -2506,11 +2953,13 @@ -- protocol will go to the same instance in the pool while that instance -- remains healthy. data TargetPoolSessionAffinity-    = ClientIP+    = TPSAClientIP       -- ^ @CLIENT_IP@-    | ClientIPProto+    | TPSAClientIPProto       -- ^ @CLIENT_IP_PROTO@-    | None+    | TPSAGeneratedCookie+      -- ^ @GENERATED_COOKIE@+    | TPSANone       -- ^ @NONE@       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic) @@ -2518,16 +2967,18 @@  instance FromHttpApiData TargetPoolSessionAffinity where     parseQueryParam = \case-        "CLIENT_IP" -> Right ClientIP-        "CLIENT_IP_PROTO" -> Right ClientIPProto-        "NONE" -> Right None+        "CLIENT_IP" -> Right TPSAClientIP+        "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-        ClientIP -> "CLIENT_IP"-        ClientIPProto -> "CLIENT_IP_PROTO"-        None -> "NONE"+        TPSAClientIP -> "CLIENT_IP"+        TPSAClientIPProto -> "CLIENT_IP_PROTO"+        TPSAGeneratedCookie -> "GENERATED_COOKIE"+        TPSANone -> "NONE"  instance FromJSON TargetPoolSessionAffinity where     parseJSON = parseJSONText "TargetPoolSessionAffinity"
gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs view
@@ -33,6 +33,7 @@     , AddressesAggregatedList      -- * Request Lenses+    , aalOrderBy     , aalProject     , aalFilter     , aalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "addresses" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] AddressAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] AddressAggregatedList  -- | Retrieves an aggregated list of addresses. -- -- /See:/ 'addressesAggregatedList' smart constructor. data AddressesAggregatedList = AddressesAggregatedList'-    { _aalProject    :: !Text+    { _aalOrderBy    :: !(Maybe Text)+    , _aalProject    :: !Text     , _aalFilter     :: !(Maybe Text)     , _aalPageToken  :: !(Maybe Text)     , _aalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'aalOrderBy'+-- -- * 'aalProject' -- -- * 'aalFilter'@@ -83,12 +88,25 @@     -> AddressesAggregatedList addressesAggregatedList pAalProject_ =     AddressesAggregatedList'-    { _aalProject = pAalProject_+    { _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+-- 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.+aalOrderBy :: Lens' AddressesAggregatedList (Maybe Text)+aalOrderBy+  = lens _aalOrderBy (\ s a -> s{_aalOrderBy = a})+ -- | Project ID for this request. aalProject :: Lens' AddressesAggregatedList Text aalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. aalFilter :: Lens' AddressesAggregatedList (Maybe Text) aalFilter   = lens _aalFilter (\ s a -> s{_aalFilter = a})@@ -143,7 +160,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient AddressesAggregatedList'{..}-          = go _aalProject _aalFilter _aalPageToken+          = go _aalProject _aalOrderBy _aalFilter _aalPageToken               (Just _aalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Addresses/Delete.hs view
@@ -33,9 +33,9 @@     , AddressesDelete      -- * Request Lenses-    , aaProject-    , aaAddress-    , aaRegion+    , adddProject+    , adddAddress+    , adddRegion     ) where  import           Network.Google.Compute.Types@@ -58,45 +58,46 @@ -- -- /See:/ 'addressesDelete' smart constructor. data AddressesDelete = AddressesDelete'-    { _aaProject :: !Text-    , _aaAddress :: !Text-    , _aaRegion  :: !Text+    { _adddProject :: !Text+    , _adddAddress :: !Text+    , _adddRegion  :: !Text     } deriving (Eq,Show,Data,Typeable,Generic)  -- | Creates a value of 'AddressesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: ----- * 'aaProject'+-- * 'adddProject' ----- * 'aaAddress'+-- * 'adddAddress' ----- * 'aaRegion'+-- * 'adddRegion' addressesDelete-    :: Text -- ^ 'aaProject'-    -> Text -- ^ 'aaAddress'-    -> Text -- ^ 'aaRegion'+    :: Text -- ^ 'adddProject'+    -> Text -- ^ 'adddAddress'+    -> Text -- ^ 'adddRegion'     -> AddressesDelete-addressesDelete pAaProject_ pAaAddress_ pAaRegion_ =+addressesDelete pAdddProject_ pAdddAddress_ pAdddRegion_ =     AddressesDelete'-    { _aaProject = pAaProject_-    , _aaAddress = pAaAddress_-    , _aaRegion = pAaRegion_+    { _adddProject = pAdddProject_+    , _adddAddress = pAdddAddress_+    , _adddRegion = pAdddRegion_     }  -- | Project ID for this request.-aaProject :: Lens' AddressesDelete Text-aaProject-  = lens _aaProject (\ s a -> s{_aaProject = a})+adddProject :: Lens' AddressesDelete Text+adddProject+  = lens _adddProject (\ s a -> s{_adddProject = a})  -- | Name of the address resource to delete.-aaAddress :: Lens' AddressesDelete Text-aaAddress-  = lens _aaAddress (\ s a -> s{_aaAddress = a})+adddAddress :: Lens' AddressesDelete Text+adddAddress+  = lens _adddAddress (\ s a -> s{_adddAddress = a})  -- | Name of the region for this request.-aaRegion :: Lens' AddressesDelete Text-aaRegion = lens _aaRegion (\ s a -> s{_aaRegion = a})+adddRegion :: Lens' AddressesDelete Text+adddRegion+  = lens _adddRegion (\ s a -> s{_adddRegion = a})  instance GoogleRequest AddressesDelete where         type Rs AddressesDelete = Operation@@ -104,7 +105,8 @@              '["https://www.googleapis.com/auth/cloud-platform",                "https://www.googleapis.com/auth/compute"]         requestClient AddressesDelete'{..}-          = go _aaProject _aaRegion _aaAddress (Just AltJSON)+          = go _adddProject _adddRegion _adddAddress+              (Just AltJSON)               computeService           where go                   = buildClient
gen/Network/Google/Resource/Compute/Addresses/List.hs view
@@ -33,6 +33,7 @@     , AddressesList      -- * Request Lenses+    , alOrderBy     , alProject     , alFilter     , alRegion@@ -53,16 +54,18 @@              "regions" :>                Capture "region" Text :>                  "addresses" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] AddressList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] AddressList  -- | Retrieves a list of addresses contained within the specified region. -- -- /See:/ 'addressesList' smart constructor. data AddressesList = AddressesList'-    { _alProject    :: !Text+    { _alOrderBy    :: !(Maybe Text)+    , _alProject    :: !Text     , _alFilter     :: !(Maybe Text)     , _alRegion     :: !Text     , _alPageToken  :: !(Maybe Text)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'alOrderBy'+-- -- * 'alProject' -- -- * 'alFilter'@@ -88,13 +93,26 @@     -> AddressesList addressesList pAlProject_ pAlRegion_ =     AddressesList'-    { _alProject = pAlProject_+    { _alOrderBy = Nothing+    , _alProject = pAlProject_     , _alFilter = Nothing     , _alRegion = pAlRegion_     , _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+-- 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.+alOrderBy :: Lens' AddressesList (Maybe Text)+alOrderBy+  = lens _alOrderBy (\ s a -> s{_alOrderBy = a})+ -- | Project ID for this request. alProject :: Lens' AddressesList Text alProject@@ -111,16 +129,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. alFilter :: Lens' AddressesList (Maybe Text) alFilter = lens _alFilter (\ s a -> s{_alFilter = a}) @@ -150,7 +167,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient AddressesList'{..}-          = go _alProject _alRegion _alFilter _alPageToken+          = go _alProject _alRegion _alOrderBy _alFilter+              _alPageToken               (Just _alMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs view
@@ -33,6 +33,7 @@     , AutoscalersAggregatedList      -- * Request Lenses+    , autOrderBy     , autProject     , autFilter     , autPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "autoscalers" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] AutoscalerAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] AutoscalerAggregatedList  -- | Retrieves an aggregated list of autoscalers. -- -- /See:/ 'autoscalersAggregatedList' smart constructor. data AutoscalersAggregatedList = AutoscalersAggregatedList'-    { _autProject    :: !Text+    { _autOrderBy    :: !(Maybe Text)+    , _autProject    :: !Text     , _autFilter     :: !(Maybe Text)     , _autPageToken  :: !(Maybe Text)     , _autMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'autOrderBy'+-- -- * 'autProject' -- -- * 'autFilter'@@ -83,12 +88,25 @@     -> AutoscalersAggregatedList autoscalersAggregatedList pAutProject_ =     AutoscalersAggregatedList'-    { _autProject = pAutProject_+    { _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+-- 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.+autOrderBy :: Lens' AutoscalersAggregatedList (Maybe Text)+autOrderBy+  = lens _autOrderBy (\ s a -> s{_autOrderBy = a})+ -- | Project ID for this request. autProject :: Lens' AutoscalersAggregatedList Text autProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. autFilter :: Lens' AutoscalersAggregatedList (Maybe Text) autFilter   = lens _autFilter (\ s a -> s{_autFilter = a})@@ -144,7 +161,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient AutoscalersAggregatedList'{..}-          = go _autProject _autFilter _autPageToken+          = go _autProject _autOrderBy _autFilter _autPageToken               (Just _autMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Autoscalers/List.hs view
@@ -33,6 +33,7 @@     , AutoscalersList      -- * Request Lenses+    , aOrderBy     , aProject     , aZone     , aFilter@@ -53,17 +54,19 @@              "zones" :>                Capture "zone" Text :>                  "autoscalers" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] AutoscalerList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] AutoscalerList  -- | Retrieves a list of autoscalers contained within the specified zone. -- -- /See:/ 'autoscalersList' smart constructor. data AutoscalersList = AutoscalersList'-    { _aProject    :: !Text+    { _aOrderBy    :: !(Maybe Text)+    , _aProject    :: !Text     , _aZone       :: !Text     , _aFilter     :: !(Maybe Text)     , _aPageToken  :: !(Maybe Text)@@ -74,6 +77,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'aOrderBy'+-- -- * 'aProject' -- -- * 'aZone'@@ -89,13 +94,25 @@     -> AutoscalersList autoscalersList pAProject_ pAZone_ =     AutoscalersList'-    { _aProject = pAProject_+    { _aOrderBy = Nothing+    , _aProject = pAProject_     , _aZone = pAZone_     , _aFilter = Nothing     , _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+-- 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.+aOrderBy :: Lens' AutoscalersList (Maybe Text)+aOrderBy = lens _aOrderBy (\ s a -> s{_aOrderBy = a})+ -- | Project ID for this request. aProject :: Lens' AutoscalersList Text aProject = lens _aProject (\ s a -> s{_aProject = a})@@ -115,16 +132,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. aFilter :: Lens' AutoscalersList (Maybe Text) aFilter = lens _aFilter (\ s a -> s{_aFilter = a}) @@ -150,7 +166,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient AutoscalersList'{..}-          = go _aProject _aZone _aFilter _aPageToken+          = go _aProject _aZone _aOrderBy _aFilter _aPageToken               (Just _aMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/BackendServices/List.hs view
@@ -34,6 +34,7 @@     , BackendServicesList      -- * Request Lenses+    , bslOrderBy     , bslProject     , bslFilter     , bslPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "backendServices" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] BackendServiceList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] BackendServiceList  -- | Retrieves the list of BackendService resources available to the -- specified project. -- -- /See:/ 'backendServicesList' smart constructor. data BackendServicesList = BackendServicesList'-    { _bslProject    :: !Text+    { _bslOrderBy    :: !(Maybe Text)+    , _bslProject    :: !Text     , _bslFilter     :: !(Maybe Text)     , _bslPageToken  :: !(Maybe Text)     , _bslMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'bslOrderBy'+-- -- * 'bslProject' -- -- * 'bslFilter'@@ -85,12 +90,25 @@     -> BackendServicesList backendServicesList pBslProject_ =     BackendServicesList'-    { _bslProject = pBslProject_+    { _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+-- 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.+bslOrderBy :: Lens' BackendServicesList (Maybe Text)+bslOrderBy+  = lens _bslOrderBy (\ s a -> s{_bslOrderBy = a})+ -- | Project ID for this request. bslProject :: Lens' BackendServicesList Text bslProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. bslFilter :: Lens' BackendServicesList (Maybe Text) bslFilter   = lens _bslFilter (\ s a -> s{_bslFilter = a})@@ -144,7 +161,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient BackendServicesList'{..}-          = go _bslProject _bslFilter _bslPageToken+          = go _bslProject _bslOrderBy _bslFilter _bslPageToken               (Just _bslMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/BackendServices/Patch.hs view
@@ -20,10 +20,10 @@ -- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Updates the entire content of the BackendService resource. There are--- several restrictions and guidelines to keep in mind when updating a--- backend service. Read Restrictions and Guidelines for more information.--- This method supports patch semantics.+-- Updates the specified BackendService resource with the data included in+-- the request. There are several restrictions and guidelines to keep in+-- mind when updating a backend service. Read Restrictions and Guidelines+-- for more information. This method supports patch semantics. -- -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.patch@. module Network.Google.Resource.Compute.BackendServices.Patch@@ -58,10 +58,10 @@                      ReqBody '[JSON] BackendService :>                        Patch '[JSON] Operation --- | Updates the entire content of the BackendService resource. There are--- several restrictions and guidelines to keep in mind when updating a--- backend service. Read Restrictions and Guidelines for more information.--- This method supports patch semantics.+-- | Updates the specified BackendService resource with the data included in+-- the request. There are several restrictions and guidelines to keep in+-- mind when updating a backend service. Read Restrictions and Guidelines+-- for more information. This method supports patch semantics. -- -- /See:/ 'backendServicesPatch' smart constructor. data BackendServicesPatch = BackendServicesPatch'
gen/Network/Google/Resource/Compute/BackendServices/Update.hs view
@@ -20,9 +20,10 @@ -- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Updates the entire content of the BackendService resource. There are--- several restrictions and guidelines to keep in mind when updating a--- backend service. Read Restrictions and Guidelines for more information.+-- Updates the specified BackendService resource with the data included in+-- the request. There are several restrictions and guidelines to keep in+-- mind when updating a backend service. Read Restrictions and Guidelines+-- for more information. -- -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.update@. module Network.Google.Resource.Compute.BackendServices.Update@@ -57,9 +58,10 @@                      ReqBody '[JSON] BackendService :>                        Put '[JSON] Operation --- | Updates the entire content of the BackendService resource. There are--- several restrictions and guidelines to keep in mind when updating a--- backend service. Read Restrictions and Guidelines for more information.+-- | Updates the specified BackendService resource with the data included in+-- the request. There are several restrictions and guidelines to keep in+-- mind when updating a backend service. Read Restrictions and Guidelines+-- for more information. -- -- /See:/ 'backendServicesUpdate' smart constructor. data BackendServicesUpdate = BackendServicesUpdate'
gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs view
@@ -33,6 +33,7 @@     , DiskTypesAggregatedList      -- * Request Lenses+    , dtalOrderBy     , dtalProject     , dtalFilter     , dtalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "diskTypes" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] DiskTypeAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] DiskTypeAggregatedList  -- | Retrieves an aggregated list of disk types. -- -- /See:/ 'diskTypesAggregatedList' smart constructor. data DiskTypesAggregatedList = DiskTypesAggregatedList'-    { _dtalProject    :: !Text+    { _dtalOrderBy    :: !(Maybe Text)+    , _dtalProject    :: !Text     , _dtalFilter     :: !(Maybe Text)     , _dtalPageToken  :: !(Maybe Text)     , _dtalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'dtalOrderBy'+-- -- * 'dtalProject' -- -- * 'dtalFilter'@@ -83,12 +88,25 @@     -> DiskTypesAggregatedList diskTypesAggregatedList pDtalProject_ =     DiskTypesAggregatedList'-    { _dtalProject = pDtalProject_+    { _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+-- 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.+dtalOrderBy :: Lens' DiskTypesAggregatedList (Maybe Text)+dtalOrderBy+  = lens _dtalOrderBy (\ s a -> s{_dtalOrderBy = a})+ -- | Project ID for this request. dtalProject :: Lens' DiskTypesAggregatedList Text dtalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. dtalFilter :: Lens' DiskTypesAggregatedList (Maybe Text) dtalFilter   = lens _dtalFilter (\ s a -> s{_dtalFilter = a})@@ -144,7 +161,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient DiskTypesAggregatedList'{..}-          = go _dtalProject _dtalFilter _dtalPageToken+          = go _dtalProject _dtalOrderBy _dtalFilter+              _dtalPageToken               (Just _dtalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/DiskTypes/List.hs view
@@ -33,6 +33,7 @@     , DiskTypesList      -- * Request Lenses+    , dtlOrderBy     , dtlProject     , dtlZone     , dtlFilter@@ -53,16 +54,18 @@              "zones" :>                Capture "zone" Text :>                  "diskTypes" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList  -- | Retrieves a list of disk types available to the specified project. -- -- /See:/ 'diskTypesList' smart constructor. data DiskTypesList = DiskTypesList'-    { _dtlProject    :: !Text+    { _dtlOrderBy    :: !(Maybe Text)+    , _dtlProject    :: !Text     , _dtlZone       :: !Text     , _dtlFilter     :: !(Maybe Text)     , _dtlPageToken  :: !(Maybe Text)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'dtlOrderBy'+-- -- * 'dtlProject' -- -- * 'dtlZone'@@ -88,13 +93,26 @@     -> DiskTypesList diskTypesList pDtlProject_ pDtlZone_ =     DiskTypesList'-    { _dtlProject = pDtlProject_+    { _dtlOrderBy = Nothing+    , _dtlProject = pDtlProject_     , _dtlZone = pDtlZone_     , _dtlFilter = Nothing     , _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+-- 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.+dtlOrderBy :: Lens' DiskTypesList (Maybe Text)+dtlOrderBy+  = lens _dtlOrderBy (\ s a -> s{_dtlOrderBy = a})+ -- | Project ID for this request. dtlProject :: Lens' DiskTypesList Text dtlProject@@ -115,16 +133,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. dtlFilter :: Lens' DiskTypesList (Maybe Text) dtlFilter   = lens _dtlFilter (\ s a -> s{_dtlFilter = a})@@ -152,7 +169,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient DiskTypesList'{..}-          = go _dtlProject _dtlZone _dtlFilter _dtlPageToken+          = go _dtlProject _dtlZone _dtlOrderBy _dtlFilter+              _dtlPageToken               (Just _dtlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs view
@@ -33,6 +33,7 @@     , DisksAggregatedList      -- * Request Lenses+    , dalOrderBy     , dalProject     , dalFilter     , dalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "disks" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] DiskAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] DiskAggregatedList  -- | Retrieves an aggregated list of persistent disks. -- -- /See:/ 'disksAggregatedList' smart constructor. data DisksAggregatedList = DisksAggregatedList'-    { _dalProject    :: !Text+    { _dalOrderBy    :: !(Maybe Text)+    , _dalProject    :: !Text     , _dalFilter     :: !(Maybe Text)     , _dalPageToken  :: !(Maybe Text)     , _dalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'dalOrderBy'+-- -- * 'dalProject' -- -- * 'dalFilter'@@ -83,12 +88,25 @@     -> DisksAggregatedList disksAggregatedList pDalProject_ =     DisksAggregatedList'-    { _dalProject = pDalProject_+    { _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+-- 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.+dalOrderBy :: Lens' DisksAggregatedList (Maybe Text)+dalOrderBy+  = lens _dalOrderBy (\ s a -> s{_dalOrderBy = a})+ -- | Project ID for this request. dalProject :: Lens' DisksAggregatedList Text dalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. dalFilter :: Lens' DisksAggregatedList (Maybe Text) dalFilter   = lens _dalFilter (\ s a -> s{_dalFilter = a})@@ -142,7 +159,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient DisksAggregatedList'{..}-          = go _dalProject _dalFilter _dalPageToken+          = go _dalProject _dalOrderBy _dalFilter _dalPageToken               (Just _dalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Disks/List.hs view
@@ -34,6 +34,7 @@     , DisksList      -- * Request Lenses+    , dlOrderBy     , dlProject     , dlZone     , dlFilter@@ -54,17 +55,19 @@              "zones" :>                Capture "zone" Text :>                  "disks" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] DiskList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] DiskList  -- | Retrieves a list of persistent disks contained within the specified -- zone. -- -- /See:/ 'disksList' smart constructor. data DisksList = DisksList'-    { _dlProject    :: !Text+    { _dlOrderBy    :: !(Maybe Text)+    , _dlProject    :: !Text     , _dlZone       :: !Text     , _dlFilter     :: !(Maybe Text)     , _dlPageToken  :: !(Maybe Text)@@ -75,6 +78,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'dlOrderBy'+-- -- * 'dlProject' -- -- * 'dlZone'@@ -90,13 +95,26 @@     -> DisksList disksList pDlProject_ pDlZone_ =     DisksList'-    { _dlProject = pDlProject_+    { _dlOrderBy = Nothing+    , _dlProject = pDlProject_     , _dlZone = pDlZone_     , _dlFilter = Nothing     , _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+-- 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.+dlOrderBy :: Lens' DisksList (Maybe Text)+dlOrderBy+  = lens _dlOrderBy (\ s a -> s{_dlOrderBy = a})+ -- | Project ID for this request. dlProject :: Lens' DisksList Text dlProject@@ -117,16 +135,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. dlFilter :: Lens' DisksList (Maybe Text) dlFilter = lens _dlFilter (\ s a -> s{_dlFilter = a}) @@ -152,7 +169,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient DisksList'{..}-          = go _dlProject _dlZone _dlFilter _dlPageToken+          = go _dlProject _dlZone _dlOrderBy _dlFilter+              _dlPageToken               (Just _dlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Firewalls/List.hs view
@@ -33,6 +33,7 @@     , FirewallsList      -- * Request Lenses+    , flOrderBy     , flProject     , flFilter     , flPageToken@@ -51,16 +52,18 @@            Capture "project" Text :>              "global" :>                "firewalls" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] FirewallList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] FirewallList  -- | Retrieves the list of firewall rules available to the specified project. -- -- /See:/ 'firewallsList' smart constructor. data FirewallsList = FirewallsList'-    { _flProject    :: !Text+    { _flOrderBy    :: !(Maybe Text)+    , _flProject    :: !Text     , _flFilter     :: !(Maybe Text)     , _flPageToken  :: !(Maybe Text)     , _flMaxResults :: !(Textual Word32)@@ -70,6 +73,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'flOrderBy'+-- -- * 'flProject' -- -- * 'flFilter'@@ -82,12 +87,25 @@     -> FirewallsList firewallsList pFlProject_ =     FirewallsList'-    { _flProject = pFlProject_+    { _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+-- 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.+flOrderBy :: Lens' FirewallsList (Maybe Text)+flOrderBy+  = lens _flOrderBy (\ s a -> s{_flOrderBy = a})+ -- | Project ID for this request. flProject :: Lens' FirewallsList Text flProject@@ -104,16 +122,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. flFilter :: Lens' FirewallsList (Maybe Text) flFilter = lens _flFilter (\ s a -> s{_flFilter = a}) @@ -139,7 +156,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient FirewallsList'{..}-          = go _flProject _flFilter _flPageToken+          = go _flProject _flOrderBy _flFilter _flPageToken               (Just _flMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs view
@@ -33,6 +33,7 @@     , ForwardingRulesAggregatedList      -- * Request Lenses+    , fralOrderBy     , fralProject     , fralFilter     , fralPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "forwardingRules" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] ForwardingRuleAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] ForwardingRuleAggregatedList  -- | Retrieves an aggregated list of forwarding rules. -- -- /See:/ 'forwardingRulesAggregatedList' smart constructor. data ForwardingRulesAggregatedList = ForwardingRulesAggregatedList'-    { _fralProject    :: !Text+    { _fralOrderBy    :: !(Maybe Text)+    , _fralProject    :: !Text     , _fralFilter     :: !(Maybe Text)     , _fralPageToken  :: !(Maybe Text)     , _fralMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'fralOrderBy'+-- -- * 'fralProject' -- -- * 'fralFilter'@@ -83,12 +88,25 @@     -> ForwardingRulesAggregatedList forwardingRulesAggregatedList pFralProject_ =     ForwardingRulesAggregatedList'-    { _fralProject = pFralProject_+    { _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+-- 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.+fralOrderBy :: Lens' ForwardingRulesAggregatedList (Maybe Text)+fralOrderBy+  = lens _fralOrderBy (\ s a -> s{_fralOrderBy = a})+ -- | Project ID for this request. fralProject :: Lens' ForwardingRulesAggregatedList Text fralProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. fralFilter :: Lens' ForwardingRulesAggregatedList (Maybe Text) fralFilter   = lens _fralFilter (\ s a -> s{_fralFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient ForwardingRulesAggregatedList'{..}-          = go _fralProject _fralFilter _fralPageToken+          = go _fralProject _fralOrderBy _fralFilter+              _fralPageToken               (Just _fralMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/ForwardingRules/List.hs view
@@ -34,6 +34,7 @@     , ForwardingRulesList      -- * Request Lenses+    , frlOrderBy     , frlProject     , frlFilter     , frlRegion@@ -54,18 +55,20 @@              "regions" :>                Capture "region" Text :>                  "forwardingRules" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] ForwardingRuleList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] ForwardingRuleList  -- | Retrieves a list of ForwardingRule resources available to the specified -- project and region. -- -- /See:/ 'forwardingRulesList' smart constructor. data ForwardingRulesList = ForwardingRulesList'-    { _frlProject    :: !Text+    { _frlOrderBy    :: !(Maybe Text)+    , _frlProject    :: !Text     , _frlFilter     :: !(Maybe Text)     , _frlRegion     :: !Text     , _frlPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'frlOrderBy'+-- -- * 'frlProject' -- -- * 'frlFilter'@@ -91,13 +96,26 @@     -> ForwardingRulesList forwardingRulesList pFrlProject_ pFrlRegion_ =     ForwardingRulesList'-    { _frlProject = pFrlProject_+    { _frlOrderBy = Nothing+    , _frlProject = pFrlProject_     , _frlFilter = Nothing     , _frlRegion = pFrlRegion_     , _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+-- 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.+frlOrderBy :: Lens' ForwardingRulesList (Maybe Text)+frlOrderBy+  = lens _frlOrderBy (\ s a -> s{_frlOrderBy = a})+ -- | Project ID for this request. frlProject :: Lens' ForwardingRulesList Text frlProject@@ -114,16 +132,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. frlFilter :: Lens' ForwardingRulesList (Maybe Text) frlFilter   = lens _frlFilter (\ s a -> s{_frlFilter = a})@@ -156,7 +173,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient ForwardingRulesList'{..}-          = go _frlProject _frlRegion _frlFilter _frlPageToken+          = go _frlProject _frlRegion _frlOrderBy _frlFilter+              _frlPageToken               (Just _frlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs view
@@ -33,6 +33,7 @@     , GlobalAddressesList      -- * Request Lenses+    , galOrderBy     , galProject     , galFilter     , galPageToken@@ -51,16 +52,18 @@            Capture "project" Text :>              "global" :>                "addresses" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] AddressList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] AddressList  -- | Retrieves a list of global addresses. -- -- /See:/ 'globalAddressesList' smart constructor. data GlobalAddressesList = GlobalAddressesList'-    { _galProject    :: !Text+    { _galOrderBy    :: !(Maybe Text)+    , _galProject    :: !Text     , _galFilter     :: !(Maybe Text)     , _galPageToken  :: !(Maybe Text)     , _galMaxResults :: !(Textual Word32)@@ -70,6 +73,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'galOrderBy'+-- -- * 'galProject' -- -- * 'galFilter'@@ -82,12 +87,25 @@     -> GlobalAddressesList globalAddressesList pGalProject_ =     GlobalAddressesList'-    { _galProject = pGalProject_+    { _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+-- 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.+galOrderBy :: Lens' GlobalAddressesList (Maybe Text)+galOrderBy+  = lens _galOrderBy (\ s a -> s{_galOrderBy = a})+ -- | Project ID for this request. galProject :: Lens' GlobalAddressesList Text galProject@@ -104,16 +122,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. galFilter :: Lens' GlobalAddressesList (Maybe Text) galFilter   = lens _galFilter (\ s a -> s{_galFilter = a})@@ -141,7 +158,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient GlobalAddressesList'{..}-          = go _galProject _galFilter _galPageToken+          = go _galProject _galOrderBy _galFilter _galPageToken               (Just _galMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs view
@@ -34,6 +34,7 @@     , GlobalForwardingRulesList      -- * Request Lenses+    , gfrlOrderBy     , gfrlProject     , gfrlFilter     , gfrlPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "forwardingRules" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] ForwardingRuleList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] ForwardingRuleList  -- | Retrieves a list of ForwardingRule resources available to the specified -- project. -- -- /See:/ 'globalForwardingRulesList' smart constructor. data GlobalForwardingRulesList = GlobalForwardingRulesList'-    { _gfrlProject    :: !Text+    { _gfrlOrderBy    :: !(Maybe Text)+    , _gfrlProject    :: !Text     , _gfrlFilter     :: !(Maybe Text)     , _gfrlPageToken  :: !(Maybe Text)     , _gfrlMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'gfrlOrderBy'+-- -- * 'gfrlProject' -- -- * 'gfrlFilter'@@ -85,12 +90,25 @@     -> GlobalForwardingRulesList globalForwardingRulesList pGfrlProject_ =     GlobalForwardingRulesList'-    { _gfrlProject = pGfrlProject_+    { _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+-- 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.+gfrlOrderBy :: Lens' GlobalForwardingRulesList (Maybe Text)+gfrlOrderBy+  = lens _gfrlOrderBy (\ s a -> s{_gfrlOrderBy = a})+ -- | Project ID for this request. gfrlProject :: Lens' GlobalForwardingRulesList Text gfrlProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. gfrlFilter :: Lens' GlobalForwardingRulesList (Maybe Text) gfrlFilter   = lens _gfrlFilter (\ s a -> s{_gfrlFilter = a})@@ -147,7 +164,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient GlobalForwardingRulesList'{..}-          = go _gfrlProject _gfrlFilter _gfrlPageToken+          = go _gfrlProject _gfrlOrderBy _gfrlFilter+              _gfrlPageToken               (Just _gfrlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs view
@@ -33,6 +33,7 @@     , GlobalOperationsAggregatedList      -- * Request Lenses+    , goalOrderBy     , goalProject     , goalFilter     , goalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "operations" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] OperationAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] OperationAggregatedList  -- | Retrieves an aggregated list of all operations. -- -- /See:/ 'globalOperationsAggregatedList' smart constructor. data GlobalOperationsAggregatedList = GlobalOperationsAggregatedList'-    { _goalProject    :: !Text+    { _goalOrderBy    :: !(Maybe Text)+    , _goalProject    :: !Text     , _goalFilter     :: !(Maybe Text)     , _goalPageToken  :: !(Maybe Text)     , _goalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'goalOrderBy'+-- -- * 'goalProject' -- -- * 'goalFilter'@@ -83,12 +88,25 @@     -> GlobalOperationsAggregatedList globalOperationsAggregatedList pGoalProject_ =     GlobalOperationsAggregatedList'-    { _goalProject = pGoalProject_+    { _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+-- 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.+goalOrderBy :: Lens' GlobalOperationsAggregatedList (Maybe Text)+goalOrderBy+  = lens _goalOrderBy (\ s a -> s{_goalOrderBy = a})+ -- | Project ID for this request. goalProject :: Lens' GlobalOperationsAggregatedList Text goalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. goalFilter :: Lens' GlobalOperationsAggregatedList (Maybe Text) goalFilter   = lens _goalFilter (\ s a -> s{_goalFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient GlobalOperationsAggregatedList'{..}-          = go _goalProject _goalFilter _goalPageToken+          = go _goalProject _goalOrderBy _goalFilter+              _goalPageToken               (Just _goalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/GlobalOperations/List.hs view
@@ -34,6 +34,7 @@     , GlobalOperationsList      -- * Request Lenses+    , golOrderBy     , golProject     , golFilter     , golPageToken@@ -52,17 +53,19 @@            Capture "project" Text :>              "global" :>                "operations" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] OperationList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList  -- | Retrieves a list of Operation resources contained within the specified -- project. -- -- /See:/ 'globalOperationsList' smart constructor. data GlobalOperationsList = GlobalOperationsList'-    { _golProject    :: !Text+    { _golOrderBy    :: !(Maybe Text)+    , _golProject    :: !Text     , _golFilter     :: !(Maybe Text)     , _golPageToken  :: !(Maybe Text)     , _golMaxResults :: !(Textual Word32)@@ -72,6 +75,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'golOrderBy'+-- -- * 'golProject' -- -- * 'golFilter'@@ -84,12 +89,25 @@     -> GlobalOperationsList globalOperationsList pGolProject_ =     GlobalOperationsList'-    { _golProject = pGolProject_+    { _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+-- 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.+golOrderBy :: Lens' GlobalOperationsList (Maybe Text)+golOrderBy+  = lens _golOrderBy (\ s a -> s{_golOrderBy = a})+ -- | Project ID for this request. golProject :: Lens' GlobalOperationsList Text golProject@@ -106,16 +124,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. golFilter :: Lens' GlobalOperationsList (Maybe Text) golFilter   = lens _golFilter (\ s a -> s{_golFilter = a})@@ -143,7 +160,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient GlobalOperationsList'{..}-          = go _golProject _golFilter _golPageToken+          = go _golProject _golOrderBy _golFilter _golPageToken               (Just _golMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs view
@@ -34,6 +34,7 @@     , HTTPHealthChecksList      -- * Request Lenses+    , httphclOrderBy     , httphclProject     , httphclFilter     , httphclPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "httpHealthChecks" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] HTTPHealthCheckList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] HTTPHealthCheckList  -- | Retrieves the list of HttpHealthCheck resources available to the -- specified project. -- -- /See:/ 'hTTPHealthChecksList' smart constructor. data HTTPHealthChecksList = HTTPHealthChecksList'-    { _httphclProject    :: !Text+    { _httphclOrderBy    :: !(Maybe Text)+    , _httphclProject    :: !Text     , _httphclFilter     :: !(Maybe Text)     , _httphclPageToken  :: !(Maybe Text)     , _httphclMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'httphclOrderBy'+-- -- * 'httphclProject' -- -- * 'httphclFilter'@@ -85,12 +90,26 @@     -> HTTPHealthChecksList hTTPHealthChecksList pHttphclProject_ =     HTTPHealthChecksList'-    { _httphclProject = pHttphclProject_+    { _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+-- 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.+httphclOrderBy :: Lens' HTTPHealthChecksList (Maybe Text)+httphclOrderBy+  = lens _httphclOrderBy+      (\ s a -> s{_httphclOrderBy = a})+ -- | Project ID for this request. httphclProject :: Lens' HTTPHealthChecksList Text httphclProject@@ -108,16 +127,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. httphclFilter :: Lens' HTTPHealthChecksList (Maybe Text) httphclFilter   = lens _httphclFilter@@ -147,7 +165,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient HTTPHealthChecksList'{..}-          = go _httphclProject _httphclFilter _httphclPageToken+          = go _httphclProject _httphclOrderBy _httphclFilter+              _httphclPageToken               (Just _httphclMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs view
@@ -34,6 +34,7 @@     , HTTPSHealthChecksList      -- * Request Lenses+    , hhclOrderBy     , hhclProject     , hhclFilter     , hhclPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "httpsHealthChecks" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] HTTPSHealthCheckList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] HTTPSHealthCheckList  -- | Retrieves the list of HttpsHealthCheck resources available to the -- specified project. -- -- /See:/ 'httpsHealthChecksList' smart constructor. data HTTPSHealthChecksList = HTTPSHealthChecksList'-    { _hhclProject    :: !Text+    { _hhclOrderBy    :: !(Maybe Text)+    , _hhclProject    :: !Text     , _hhclFilter     :: !(Maybe Text)     , _hhclPageToken  :: !(Maybe Text)     , _hhclMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'hhclOrderBy'+-- -- * 'hhclProject' -- -- * 'hhclFilter'@@ -85,12 +90,25 @@     -> HTTPSHealthChecksList httpsHealthChecksList pHhclProject_ =     HTTPSHealthChecksList'-    { _hhclProject = pHhclProject_+    { _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+-- 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.+hhclOrderBy :: Lens' HTTPSHealthChecksList (Maybe Text)+hhclOrderBy+  = lens _hhclOrderBy (\ s a -> s{_hhclOrderBy = a})+ -- | Project ID for this request. hhclProject :: Lens' HTTPSHealthChecksList Text hhclProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. hhclFilter :: Lens' HTTPSHealthChecksList (Maybe Text) hhclFilter   = lens _hhclFilter (\ s a -> s{_hhclFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient HTTPSHealthChecksList'{..}-          = go _hhclProject _hhclFilter _hhclPageToken+          = go _hhclProject _hhclOrderBy _hhclFilter+              _hhclPageToken               (Just _hhclMaxResults)               (Just AltJSON)               computeService
+ gen/Network/Google/Resource/Compute/HealthChecks/Delete.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.HealthChecks.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 HealthCheck resource.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.delete@.+module Network.Google.Resource.Compute.HealthChecks.Delete+    (+    -- * REST Resource+      HealthChecksDeleteResource++    -- * Creating a Request+    , healthChecksDelete+    , HealthChecksDelete++    -- * Request Lenses+    , hcdHealthCheck+    , hcdProject+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.delete@ method which the+-- 'HealthChecksDelete' request conforms to.+type HealthChecksDeleteResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 Capture "healthCheck" Text :>+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation++-- | Deletes the specified HealthCheck resource.+--+-- /See:/ 'healthChecksDelete' smart constructor.+data HealthChecksDelete = HealthChecksDelete'+    { _hcdHealthCheck :: !Text+    , _hcdProject     :: !Text+    } 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:+--+-- * 'hcdHealthCheck'+--+-- * 'hcdProject'+healthChecksDelete+    :: Text -- ^ 'hcdHealthCheck'+    -> Text -- ^ 'hcdProject'+    -> HealthChecksDelete+healthChecksDelete pHcdHealthCheck_ pHcdProject_ =+    HealthChecksDelete'+    { _hcdHealthCheck = pHcdHealthCheck_+    , _hcdProject = pHcdProject_+    }++-- | Name of the HealthCheck resource to delete.+hcdHealthCheck :: Lens' HealthChecksDelete Text+hcdHealthCheck+  = lens _hcdHealthCheck+      (\ s a -> s{_hcdHealthCheck = a})++-- | Project ID for this request.+hcdProject :: Lens' HealthChecksDelete Text+hcdProject+  = lens _hcdProject (\ s a -> s{_hcdProject = a})++instance GoogleRequest HealthChecksDelete where+        type Rs HealthChecksDelete = Operation+        type Scopes HealthChecksDelete =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient HealthChecksDelete'{..}+          = go _hcdProject _hcdHealthCheck (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksDeleteResource)+                      mempty
+ gen/Network/Google/Resource/Compute/HealthChecks/Get.hs view
@@ -0,0 +1,105 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.HealthChecks.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 HealthCheck resource. Get a list of available+-- health checks by making a list() request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.get@.+module Network.Google.Resource.Compute.HealthChecks.Get+    (+    -- * REST Resource+      HealthChecksGetResource++    -- * Creating a Request+    , healthChecksGet+    , HealthChecksGet++    -- * Request Lenses+    , hcgHealthCheck+    , hcgProject+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.get@ method which the+-- 'HealthChecksGet' request conforms to.+type HealthChecksGetResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 Capture "healthCheck" Text :>+                   QueryParam "alt" AltJSON :> Get '[JSON] HealthCheck++-- | Returns the specified HealthCheck resource. Get a list of available+-- health checks by making a list() request.+--+-- /See:/ 'healthChecksGet' smart constructor.+data HealthChecksGet = HealthChecksGet'+    { _hcgHealthCheck :: !Text+    , _hcgProject     :: !Text+    } 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:+--+-- * 'hcgHealthCheck'+--+-- * 'hcgProject'+healthChecksGet+    :: Text -- ^ 'hcgHealthCheck'+    -> Text -- ^ 'hcgProject'+    -> HealthChecksGet+healthChecksGet pHcgHealthCheck_ pHcgProject_ =+    HealthChecksGet'+    { _hcgHealthCheck = pHcgHealthCheck_+    , _hcgProject = pHcgProject_+    }++-- | Name of the HealthCheck resource to return.+hcgHealthCheck :: Lens' HealthChecksGet Text+hcgHealthCheck+  = lens _hcgHealthCheck+      (\ s a -> s{_hcgHealthCheck = a})++-- | Project ID for this request.+hcgProject :: Lens' HealthChecksGet Text+hcgProject+  = lens _hcgProject (\ s a -> s{_hcgProject = a})++instance GoogleRequest HealthChecksGet where+        type Rs HealthChecksGet = HealthCheck+        type Scopes HealthChecksGet =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient HealthChecksGet'{..}+          = go _hcgProject _hcgHealthCheck (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksGetResource)+                      mempty
+ gen/Network/Google/Resource/Compute/HealthChecks/Insert.hs view
@@ -0,0 +1,103 @@+{-# 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.HealthChecks.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 HealthCheck resource in the specified project using the data+-- included in the request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.insert@.+module Network.Google.Resource.Compute.HealthChecks.Insert+    (+    -- * REST Resource+      HealthChecksInsertResource++    -- * Creating a Request+    , healthChecksInsert+    , HealthChecksInsert++    -- * Request Lenses+    , hciProject+    , hciPayload+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.insert@ method which the+-- 'HealthChecksInsert' request conforms to.+type HealthChecksInsertResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 QueryParam "alt" AltJSON :>+                   ReqBody '[JSON] HealthCheck :> Post '[JSON] Operation++-- | Creates a HealthCheck resource in the specified project using the data+-- included in the request.+--+-- /See:/ 'healthChecksInsert' smart constructor.+data HealthChecksInsert = HealthChecksInsert'+    { _hciProject :: !Text+    , _hciPayload :: !HealthCheck+    } 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:+--+-- * 'hciProject'+--+-- * 'hciPayload'+healthChecksInsert+    :: Text -- ^ 'hciProject'+    -> HealthCheck -- ^ 'hciPayload'+    -> HealthChecksInsert+healthChecksInsert pHciProject_ pHciPayload_ =+    HealthChecksInsert'+    { _hciProject = pHciProject_+    , _hciPayload = pHciPayload_+    }++-- | Project ID for this request.+hciProject :: Lens' HealthChecksInsert Text+hciProject+  = lens _hciProject (\ s a -> s{_hciProject = a})++-- | Multipart request metadata.+hciPayload :: Lens' HealthChecksInsert HealthCheck+hciPayload+  = lens _hciPayload (\ s a -> s{_hciPayload = a})++instance GoogleRequest HealthChecksInsert where+        type Rs HealthChecksInsert = Operation+        type Scopes HealthChecksInsert =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient HealthChecksInsert'{..}+          = go _hciProject (Just AltJSON) _hciPayload+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksInsertResource)+                      mempty
+ gen/Network/Google/Resource/Compute/HealthChecks/List.hs view
@@ -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.HealthChecks.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 HealthCheck resources available to the specified+-- project.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.list@.+module Network.Google.Resource.Compute.HealthChecks.List+    (+    -- * REST Resource+      HealthChecksListResource++    -- * Creating a Request+    , healthChecksList+    , HealthChecksList++    -- * Request Lenses+    , hclOrderBy+    , hclProject+    , hclFilter+    , hclPageToken+    , hclMaxResults+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.list@ method which the+-- 'HealthChecksList' request conforms to.+type HealthChecksListResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] HealthCheckList++-- | Retrieves the list of HealthCheck resources available to the specified+-- project.+--+-- /See:/ 'healthChecksList' smart constructor.+data HealthChecksList = HealthChecksList'+    { _hclOrderBy    :: !(Maybe Text)+    , _hclProject    :: !Text+    , _hclFilter     :: !(Maybe Text)+    , _hclPageToken  :: !(Maybe Text)+    , _hclMaxResults :: !(Textual Word32)+    } 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:+--+-- * 'hclOrderBy'+--+-- * 'hclProject'+--+-- * 'hclFilter'+--+-- * 'hclPageToken'+--+-- * 'hclMaxResults'+healthChecksList+    :: Text -- ^ 'hclProject'+    -> HealthChecksList+healthChecksList pHclProject_ =+    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+-- 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.+hclOrderBy :: Lens' HealthChecksList (Maybe Text)+hclOrderBy+  = lens _hclOrderBy (\ s a -> s{_hclOrderBy = a})++-- | Project ID for this request.+hclProject :: Lens' HealthChecksList Text+hclProject+  = lens _hclProject (\ s a -> s{_hclProject = a})++-- | Sets a filter expression for filtering listed resources, in the form+-- filter={expression}. Your {expression} must be in the format: field_name+-- comparison_string literal_string. The field_name is the name of the+-- field you want to compare. Only atomic field types are supported+-- (string, number, boolean). The comparison_string must be either eq+-- (equals) or ne (not equals). The literal_string is the string value to+-- filter to. The literal value must be valid for the type of field you are+-- filtering by (string, number, boolean). For string fields, the literal+-- value is interpreted as a regular expression using RE2 syntax. The+-- literal value must match the entire field. For example, to filter for+-- instances that do not have a name of example-instance, you would use+-- filter=name ne example-instance. You can filter on nested fields. For+-- example, you could filter on instances that have set the+-- scheduling.automaticRestart field to true. Use filtering on nested+-- fields to take advantage of labels to organize and search for results+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+hclFilter :: Lens' HealthChecksList (Maybe Text)+hclFilter+  = lens _hclFilter (\ s a -> s{_hclFilter = 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.+hclPageToken :: Lens' HealthChecksList (Maybe Text)+hclPageToken+  = lens _hclPageToken (\ s a -> s{_hclPageToken = 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.+hclMaxResults :: Lens' HealthChecksList Word32+hclMaxResults+  = lens _hclMaxResults+      (\ s a -> s{_hclMaxResults = a})+      . _Coerce++instance GoogleRequest HealthChecksList where+        type Rs HealthChecksList = HealthCheckList+        type Scopes HealthChecksList =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient HealthChecksList'{..}+          = go _hclProject _hclOrderBy _hclFilter _hclPageToken+              (Just _hclMaxResults)+              (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksListResource)+                      mempty
+ gen/Network/Google/Resource/Compute/HealthChecks/Patch.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.HealthChecks.Patch+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a HealthCheck resource in the specified project using the data+-- included in the request. This method supports patch semantics.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.patch@.+module Network.Google.Resource.Compute.HealthChecks.Patch+    (+    -- * REST Resource+      HealthChecksPatchResource++    -- * Creating a Request+    , healthChecksPatch+    , HealthChecksPatch++    -- * Request Lenses+    , hcpHealthCheck+    , hcpProject+    , hcpPayload+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.patch@ method which the+-- 'HealthChecksPatch' request conforms to.+type HealthChecksPatchResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 Capture "healthCheck" Text :>+                   QueryParam "alt" AltJSON :>+                     ReqBody '[JSON] HealthCheck :>+                       Patch '[JSON] Operation++-- | Updates a HealthCheck resource in the specified project using the data+-- included in the request. This method supports patch semantics.+--+-- /See:/ 'healthChecksPatch' smart constructor.+data HealthChecksPatch = HealthChecksPatch'+    { _hcpHealthCheck :: !Text+    , _hcpProject     :: !Text+    , _hcpPayload     :: !HealthCheck+    } 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:+--+-- * 'hcpHealthCheck'+--+-- * 'hcpProject'+--+-- * 'hcpPayload'+healthChecksPatch+    :: Text -- ^ 'hcpHealthCheck'+    -> Text -- ^ 'hcpProject'+    -> HealthCheck -- ^ 'hcpPayload'+    -> HealthChecksPatch+healthChecksPatch pHcpHealthCheck_ pHcpProject_ pHcpPayload_ =+    HealthChecksPatch'+    { _hcpHealthCheck = pHcpHealthCheck_+    , _hcpProject = pHcpProject_+    , _hcpPayload = pHcpPayload_+    }++-- | Name of the HealthCheck resource to update.+hcpHealthCheck :: Lens' HealthChecksPatch Text+hcpHealthCheck+  = lens _hcpHealthCheck+      (\ s a -> s{_hcpHealthCheck = a})++-- | Project ID for this request.+hcpProject :: Lens' HealthChecksPatch Text+hcpProject+  = lens _hcpProject (\ s a -> s{_hcpProject = a})++-- | Multipart request metadata.+hcpPayload :: Lens' HealthChecksPatch HealthCheck+hcpPayload+  = lens _hcpPayload (\ s a -> s{_hcpPayload = a})++instance GoogleRequest HealthChecksPatch where+        type Rs HealthChecksPatch = Operation+        type Scopes HealthChecksPatch =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient HealthChecksPatch'{..}+          = go _hcpProject _hcpHealthCheck (Just AltJSON)+              _hcpPayload+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksPatchResource)+                      mempty
+ gen/Network/Google/Resource/Compute/HealthChecks/Update.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.HealthChecks.Update+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a HealthCheck resource in the specified project using the data+-- included in the request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.healthChecks.update@.+module Network.Google.Resource.Compute.HealthChecks.Update+    (+    -- * REST Resource+      HealthChecksUpdateResource++    -- * Creating a Request+    , healthChecksUpdate+    , HealthChecksUpdate++    -- * Request Lenses+    , hcuHealthCheck+    , hcuProject+    , hcuPayload+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.healthChecks.update@ method which the+-- 'HealthChecksUpdate' request conforms to.+type HealthChecksUpdateResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "healthChecks" :>+                 Capture "healthCheck" Text :>+                   QueryParam "alt" AltJSON :>+                     ReqBody '[JSON] HealthCheck :> Put '[JSON] Operation++-- | Updates a HealthCheck resource in the specified project using the data+-- included in the request.+--+-- /See:/ 'healthChecksUpdate' smart constructor.+data HealthChecksUpdate = HealthChecksUpdate'+    { _hcuHealthCheck :: !Text+    , _hcuProject     :: !Text+    , _hcuPayload     :: !HealthCheck+    } 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:+--+-- * 'hcuHealthCheck'+--+-- * 'hcuProject'+--+-- * 'hcuPayload'+healthChecksUpdate+    :: Text -- ^ 'hcuHealthCheck'+    -> Text -- ^ 'hcuProject'+    -> HealthCheck -- ^ 'hcuPayload'+    -> HealthChecksUpdate+healthChecksUpdate pHcuHealthCheck_ pHcuProject_ pHcuPayload_ =+    HealthChecksUpdate'+    { _hcuHealthCheck = pHcuHealthCheck_+    , _hcuProject = pHcuProject_+    , _hcuPayload = pHcuPayload_+    }++-- | Name of the HealthCheck resource to update.+hcuHealthCheck :: Lens' HealthChecksUpdate Text+hcuHealthCheck+  = lens _hcuHealthCheck+      (\ s a -> s{_hcuHealthCheck = a})++-- | Project ID for this request.+hcuProject :: Lens' HealthChecksUpdate Text+hcuProject+  = lens _hcuProject (\ s a -> s{_hcuProject = a})++-- | Multipart request metadata.+hcuPayload :: Lens' HealthChecksUpdate HealthCheck+hcuPayload+  = lens _hcuPayload (\ s a -> s{_hcuPayload = a})++instance GoogleRequest HealthChecksUpdate where+        type Rs HealthChecksUpdate = Operation+        type Scopes HealthChecksUpdate =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient HealthChecksUpdate'{..}+          = go _hcuProject _hcuHealthCheck (Just AltJSON)+              _hcuPayload+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy HealthChecksUpdateResource)+                      mempty
gen/Network/Google/Resource/Compute/Images/GetFromFamily.hs view
@@ -85,7 +85,7 @@ igffProject   = lens _igffProject (\ s a -> s{_igffProject = a}) --- | Name of the image resource to return.+-- | Name of the image family to search for. igffFamily :: Lens' ImagesGetFromFamily Text igffFamily   = lens _igffFamily (\ s a -> s{_igffFamily = a})
gen/Network/Google/Resource/Compute/Images/List.hs view
@@ -23,10 +23,9 @@ -- Retrieves the list of private images available to the specified project. -- Private images are images you create that belong to your project. This -- method does not get any images that belong to other projects, including--- publicly-available images, like Debian 7. If you want to get a list of+-- publicly-available images, like Debian 8. If you want to get a list of -- publicly-available images, use this method to make a request to the--- respective image project, such as debian-cloud or windows-cloud. See--- Accessing images for more information.+-- respective image project, such as debian-cloud or windows-cloud. -- -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.list@. module Network.Google.Resource.Compute.Images.List@@ -39,6 +38,7 @@     , ImagesList      -- * Request Lenses+    , illOrderBy     , illProject     , illFilter     , illPageToken@@ -57,22 +57,23 @@            Capture "project" Text :>              "global" :>                "images" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] ImageList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] ImageList  -- | Retrieves the list of private images available to the specified project. -- Private images are images you create that belong to your project. This -- method does not get any images that belong to other projects, including--- publicly-available images, like Debian 7. If you want to get a list of+-- publicly-available images, like Debian 8. If you want to get a list of -- publicly-available images, use this method to make a request to the--- respective image project, such as debian-cloud or windows-cloud. See--- Accessing images for more information.+-- respective image project, such as debian-cloud or windows-cloud. -- -- /See:/ 'imagesList' smart constructor. data ImagesList = ImagesList'-    { _illProject    :: !Text+    { _illOrderBy    :: !(Maybe Text)+    , _illProject    :: !Text     , _illFilter     :: !(Maybe Text)     , _illPageToken  :: !(Maybe Text)     , _illMaxResults :: !(Textual Word32)@@ -82,6 +83,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'illOrderBy'+-- -- * 'illProject' -- -- * 'illFilter'@@ -94,12 +97,25 @@     -> ImagesList imagesList pIllProject_ =     ImagesList'-    { _illProject = pIllProject_+    { _illOrderBy = Nothing+    , _illProject = pIllProject_     , _illFilter = Nothing     , _illPageToken = Nothing     , _illMaxResults = 500     } +-- | Sorts list results by a certain order. By default, results are returned+-- in alphanumerical order based on the resource name. You can also sort+-- results in descending order based on the creation timestamp using+-- orderBy=\"creationTimestamp desc\". This sorts results based on the+-- creationTimestamp field in reverse chronological order (newest result+-- first). Use this to sort resources like operations so that the newest+-- operation is returned first. Currently, only sorting by name or+-- creationTimestamp desc is supported.+illOrderBy :: Lens' ImagesList (Maybe Text)+illOrderBy+  = lens _illOrderBy (\ s a -> s{_illOrderBy = a})+ -- | Project ID for this request. illProject :: Lens' ImagesList Text illProject@@ -116,16 +132,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. illFilter :: Lens' ImagesList (Maybe Text) illFilter   = lens _illFilter (\ s a -> s{_illFilter = a})@@ -153,7 +168,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient ImagesList'{..}-          = go _illProject _illFilter _illPageToken+          = go _illProject _illOrderBy _illFilter _illPageToken               (Just _illMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs view
@@ -33,6 +33,7 @@     , InstanceGroupManagersAggregatedList      -- * Request Lenses+    , igmalOrderBy     , igmalProject     , igmalFilter     , igmalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "instanceGroupManagers" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] InstanceGroupManagerAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] InstanceGroupManagerAggregatedList  -- | Retrieves the list of managed instance groups and groups them by zone. -- -- /See:/ 'instanceGroupManagersAggregatedList' smart constructor. data InstanceGroupManagersAggregatedList = InstanceGroupManagersAggregatedList'-    { _igmalProject    :: !Text+    { _igmalOrderBy    :: !(Maybe Text)+    , _igmalProject    :: !Text     , _igmalFilter     :: !(Maybe Text)     , _igmalPageToken  :: !(Maybe Text)     , _igmalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'igmalOrderBy'+-- -- * 'igmalProject' -- -- * 'igmalFilter'@@ -83,12 +88,25 @@     -> InstanceGroupManagersAggregatedList instanceGroupManagersAggregatedList pIgmalProject_ =     InstanceGroupManagersAggregatedList'-    { _igmalProject = pIgmalProject_+    { _igmalOrderBy = Nothing+    , _igmalProject = pIgmalProject_     , _igmalFilter = Nothing     , _igmalPageToken = Nothing     , _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+-- 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.+igmalOrderBy :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)+igmalOrderBy+  = lens _igmalOrderBy (\ s a -> s{_igmalOrderBy = a})+ -- | Project ID for this request. igmalProject :: Lens' InstanceGroupManagersAggregatedList Text igmalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. igmalFilter :: Lens' InstanceGroupManagersAggregatedList (Maybe Text) igmalFilter   = lens _igmalFilter (\ s a -> s{_igmalFilter = a})@@ -146,7 +163,8 @@                "https://www.googleapis.com/auth/compute.readonly"]         requestClient           InstanceGroupManagersAggregatedList'{..}-          = go _igmalProject _igmalFilter _igmalPageToken+          = go _igmalProject _igmalOrderBy _igmalFilter+              _igmalPageToken               (Just _igmalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs view
@@ -34,6 +34,7 @@     , InstanceGroupManagersList      -- * Request Lenses+    , igmlOrderBy     , igmlProject     , igmlZone     , igmlFilter@@ -54,18 +55,20 @@              "zones" :>                Capture "zone" Text :>                  "instanceGroupManagers" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] InstanceGroupManagerList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] InstanceGroupManagerList  -- | Retrieves a list of managed instance groups that are contained within -- the specified project and zone. -- -- /See:/ 'instanceGroupManagersList' smart constructor. data InstanceGroupManagersList = InstanceGroupManagersList'-    { _igmlProject    :: !Text+    { _igmlOrderBy    :: !(Maybe Text)+    , _igmlProject    :: !Text     , _igmlZone       :: !Text     , _igmlFilter     :: !(Maybe Text)     , _igmlPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'igmlOrderBy'+-- -- * 'igmlProject' -- -- * 'igmlZone'@@ -91,13 +96,26 @@     -> InstanceGroupManagersList instanceGroupManagersList pIgmlProject_ pIgmlZone_ =     InstanceGroupManagersList'-    { _igmlProject = pIgmlProject_+    { _igmlOrderBy = Nothing+    , _igmlProject = pIgmlProject_     , _igmlZone = pIgmlZone_     , _igmlFilter = Nothing     , _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+-- 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.+igmlOrderBy :: Lens' InstanceGroupManagersList (Maybe Text)+igmlOrderBy+  = lens _igmlOrderBy (\ s a -> s{_igmlOrderBy = a})+ -- | Project ID for this request. igmlProject :: Lens' InstanceGroupManagersList Text igmlProject@@ -118,16 +136,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. igmlFilter :: Lens' InstanceGroupManagersList (Maybe Text) igmlFilter   = lens _igmlFilter (\ s a -> s{_igmlFilter = a})@@ -158,7 +175,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstanceGroupManagersList'{..}-          = go _igmlProject _igmlZone _igmlFilter+          = go _igmlProject _igmlZone _igmlOrderBy _igmlFilter               _igmlPageToken               (Just _igmlMaxResults)               (Just AltJSON)
gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs view
@@ -33,6 +33,7 @@     , InstanceGroupsAggregatedList      -- * Request Lenses+    , igalOrderBy     , igalProject     , igalFilter     , igalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "instanceGroups" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] InstanceGroupAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] InstanceGroupAggregatedList  -- | Retrieves the list of instance groups and sorts them by zone. -- -- /See:/ 'instanceGroupsAggregatedList' smart constructor. data InstanceGroupsAggregatedList = InstanceGroupsAggregatedList'-    { _igalProject    :: !Text+    { _igalOrderBy    :: !(Maybe Text)+    , _igalProject    :: !Text     , _igalFilter     :: !(Maybe Text)     , _igalPageToken  :: !(Maybe Text)     , _igalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'igalOrderBy'+-- -- * 'igalProject' -- -- * 'igalFilter'@@ -83,12 +88,25 @@     -> InstanceGroupsAggregatedList instanceGroupsAggregatedList pIgalProject_ =     InstanceGroupsAggregatedList'-    { _igalProject = pIgalProject_+    { _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+-- 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.+igalOrderBy :: Lens' InstanceGroupsAggregatedList (Maybe Text)+igalOrderBy+  = lens _igalOrderBy (\ s a -> s{_igalOrderBy = a})+ -- | Project ID for this request. igalProject :: Lens' InstanceGroupsAggregatedList Text igalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. igalFilter :: Lens' InstanceGroupsAggregatedList (Maybe Text) igalFilter   = lens _igalFilter (\ s a -> s{_igalFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstanceGroupsAggregatedList'{..}-          = go _igalProject _igalFilter _igalPageToken+          = go _igalProject _igalOrderBy _igalFilter+              _igalPageToken               (Just _igalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/InstanceGroups/List.hs view
@@ -34,6 +34,7 @@     , InstanceGroupsList      -- * Request Lenses+    , iglOrderBy     , iglProject     , iglZone     , iglFilter@@ -54,18 +55,20 @@              "zones" :>                Capture "zone" Text :>                  "instanceGroups" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] InstanceGroupList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] InstanceGroupList  -- | Retrieves the list of instance groups that are located in the specified -- project and zone. -- -- /See:/ 'instanceGroupsList' smart constructor. data InstanceGroupsList = InstanceGroupsList'-    { _iglProject    :: !Text+    { _iglOrderBy    :: !(Maybe Text)+    , _iglProject    :: !Text     , _iglZone       :: !Text     , _iglFilter     :: !(Maybe Text)     , _iglPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'iglOrderBy'+-- -- * 'iglProject' -- -- * 'iglZone'@@ -91,13 +96,26 @@     -> InstanceGroupsList instanceGroupsList pIglProject_ pIglZone_ =     InstanceGroupsList'-    { _iglProject = pIglProject_+    { _iglOrderBy = Nothing+    , _iglProject = pIglProject_     , _iglZone = pIglZone_     , _iglFilter = Nothing     , _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+-- 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.+iglOrderBy :: Lens' InstanceGroupsList (Maybe Text)+iglOrderBy+  = lens _iglOrderBy (\ s a -> s{_iglOrderBy = a})+ -- | Project ID for this request. iglProject :: Lens' InstanceGroupsList Text iglProject@@ -118,16 +136,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. iglFilter :: Lens' InstanceGroupsList (Maybe Text) iglFilter   = lens _iglFilter (\ s a -> s{_iglFilter = a})@@ -155,7 +172,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstanceGroupsList'{..}-          = go _iglProject _iglZone _iglFilter _iglPageToken+          = go _iglProject _iglZone _iglOrderBy _iglFilter+              _iglPageToken               (Just _iglMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs view
@@ -33,6 +33,7 @@     , InstanceGroupsListInstances'      -- * Request Lenses+    , igliOrderBy     , igliProject     , igliZone     , igliPayload@@ -57,19 +58,21 @@                  "instanceGroups" :>                    Capture "instanceGroup" Text :>                      "listInstances" :>-                       QueryParam "filter" Text :>-                         QueryParam "pageToken" Text :>-                           QueryParam "maxResults" (Textual Word32) :>-                             QueryParam "alt" AltJSON :>-                               ReqBody '[JSON]-                                 InstanceGroupsListInstancesRequest-                                 :> Post '[JSON] InstanceGroupsListInstances+                       QueryParam "orderBy" Text :>+                         QueryParam "filter" Text :>+                           QueryParam "pageToken" Text :>+                             QueryParam "maxResults" (Textual Word32) :>+                               QueryParam "alt" AltJSON :>+                                 ReqBody '[JSON]+                                   InstanceGroupsListInstancesRequest+                                   :> Post '[JSON] InstanceGroupsListInstances  -- | Lists the instances in the specified instance group. -- -- /See:/ 'instanceGroupsListInstances'' smart constructor. data InstanceGroupsListInstances' = InstanceGroupsListInstances''-    { _igliProject       :: !Text+    { _igliOrderBy       :: !(Maybe Text)+    , _igliProject       :: !Text     , _igliZone          :: !Text     , _igliPayload       :: !InstanceGroupsListInstancesRequest     , _igliFilter        :: !(Maybe Text)@@ -82,6 +85,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'igliOrderBy'+-- -- * 'igliProject' -- -- * 'igliZone'@@ -103,7 +108,8 @@     -> InstanceGroupsListInstances' instanceGroupsListInstances' pIgliProject_ pIgliZone_ pIgliPayload_ pIgliInstanceGroup_ =     InstanceGroupsListInstances''-    { _igliProject = pIgliProject_+    { _igliOrderBy = Nothing+    , _igliProject = pIgliProject_     , _igliZone = pIgliZone_     , _igliPayload = pIgliPayload_     , _igliFilter = Nothing@@ -112,6 +118,18 @@     , _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+-- 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.+igliOrderBy :: Lens' InstanceGroupsListInstances' (Maybe Text)+igliOrderBy+  = lens _igliOrderBy (\ s a -> s{_igliOrderBy = a})+ -- | Project ID for this request. igliProject :: Lens' InstanceGroupsListInstances' Text igliProject@@ -137,16 +155,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. igliFilter :: Lens' InstanceGroupsListInstances' (Maybe Text) igliFilter   = lens _igliFilter (\ s a -> s{_igliFilter = a})@@ -185,6 +202,7 @@                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstanceGroupsListInstances''{..}           = go _igliProject _igliZone _igliInstanceGroup+              _igliOrderBy               _igliFilter               _igliPageToken               (Just _igliMaxResults)
gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs view
@@ -34,6 +34,7 @@     , InstanceTemplatesList      -- * Request Lenses+    , itlOrderBy     , itlProject     , itlFilter     , itlPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "instanceTemplates" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] InstanceTemplateList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] InstanceTemplateList  -- | Retrieves a list of instance templates that are contained within the -- specified project and zone. -- -- /See:/ 'instanceTemplatesList' smart constructor. data InstanceTemplatesList = InstanceTemplatesList'-    { _itlProject    :: !Text+    { _itlOrderBy    :: !(Maybe Text)+    , _itlProject    :: !Text     , _itlFilter     :: !(Maybe Text)     , _itlPageToken  :: !(Maybe Text)     , _itlMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'itlOrderBy'+-- -- * 'itlProject' -- -- * 'itlFilter'@@ -85,12 +90,25 @@     -> InstanceTemplatesList instanceTemplatesList pItlProject_ =     InstanceTemplatesList'-    { _itlProject = pItlProject_+    { _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+-- 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.+itlOrderBy :: Lens' InstanceTemplatesList (Maybe Text)+itlOrderBy+  = lens _itlOrderBy (\ s a -> s{_itlOrderBy = a})+ -- | Project ID for this request. itlProject :: Lens' InstanceTemplatesList Text itlProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. itlFilter :: Lens' InstanceTemplatesList (Maybe Text) itlFilter   = lens _itlFilter (\ s a -> s{_itlFilter = a})@@ -144,7 +161,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstanceTemplatesList'{..}-          = go _itlProject _itlFilter _itlPageToken+          = go _itlProject _itlOrderBy _itlFilter _itlPageToken               (Just _itlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs view
@@ -33,6 +33,7 @@     , InstancesAggregatedList      -- * Request Lenses+    , ialOrderBy     , ialProject     , ialFilter     , ialPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "instances" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] InstanceAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] InstanceAggregatedList  -- | Retrieves aggregated list of instances. -- -- /See:/ 'instancesAggregatedList' smart constructor. data InstancesAggregatedList = InstancesAggregatedList'-    { _ialProject    :: !Text+    { _ialOrderBy    :: !(Maybe Text)+    , _ialProject    :: !Text     , _ialFilter     :: !(Maybe Text)     , _ialPageToken  :: !(Maybe Text)     , _ialMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'ialOrderBy'+-- -- * 'ialProject' -- -- * 'ialFilter'@@ -83,12 +88,25 @@     -> InstancesAggregatedList instancesAggregatedList pIalProject_ =     InstancesAggregatedList'-    { _ialProject = pIalProject_+    { _ialOrderBy = Nothing+    , _ialProject = pIalProject_     , _ialFilter = Nothing     , _ialPageToken = Nothing     , _ialMaxResults = 500     } +-- | Sorts list results by a certain order. By default, results are returned+-- in alphanumerical order based on the resource name. You can also sort+-- results in descending order based on the creation timestamp using+-- orderBy=\"creationTimestamp desc\". This sorts results based on the+-- creationTimestamp field in reverse chronological order (newest result+-- first). Use this to sort resources like operations so that the newest+-- operation is returned first. Currently, only sorting by name or+-- creationTimestamp desc is supported.+ialOrderBy :: Lens' InstancesAggregatedList (Maybe Text)+ialOrderBy+  = lens _ialOrderBy (\ s a -> s{_ialOrderBy = a})+ -- | Project ID for this request. ialProject :: Lens' InstancesAggregatedList Text ialProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. ialFilter :: Lens' InstancesAggregatedList (Maybe Text) ialFilter   = lens _ialFilter (\ s a -> s{_ialFilter = a})@@ -143,7 +160,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstancesAggregatedList'{..}-          = go _ialProject _ialFilter _ialPageToken+          = go _ialProject _ialOrderBy _ialFilter _ialPageToken               (Just _ialMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Instances/List.hs view
@@ -33,6 +33,7 @@     , InstancesList      -- * Request Lenses+    , ilOrderBy     , ilProject     , ilZone     , ilFilter@@ -53,16 +54,18 @@              "zones" :>                Capture "zone" Text :>                  "instances" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] InstanceList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] InstanceList  -- | Retrieves the list of instances contained within the specified zone. -- -- /See:/ 'instancesList' smart constructor. data InstancesList = InstancesList'-    { _ilProject    :: !Text+    { _ilOrderBy    :: !(Maybe Text)+    , _ilProject    :: !Text     , _ilZone       :: !Text     , _ilFilter     :: !(Maybe Text)     , _ilPageToken  :: !(Maybe Text)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'ilOrderBy'+-- -- * 'ilProject' -- -- * 'ilZone'@@ -88,13 +93,26 @@     -> InstancesList instancesList pIlProject_ pIlZone_ =     InstancesList'-    { _ilProject = pIlProject_+    { _ilOrderBy = Nothing+    , _ilProject = pIlProject_     , _ilZone = pIlZone_     , _ilFilter = Nothing     , _ilPageToken = Nothing     , _ilMaxResults = 500     } +-- | Sorts list results by a certain order. By default, results are returned+-- in alphanumerical order based on the resource name. You can also sort+-- results in descending order based on the creation timestamp using+-- orderBy=\"creationTimestamp desc\". This sorts results based on the+-- creationTimestamp field in reverse chronological order (newest result+-- first). Use this to sort resources like operations so that the newest+-- operation is returned first. Currently, only sorting by name or+-- creationTimestamp desc is supported.+ilOrderBy :: Lens' InstancesList (Maybe Text)+ilOrderBy+  = lens _ilOrderBy (\ s a -> s{_ilOrderBy = a})+ -- | Project ID for this request. ilProject :: Lens' InstancesList Text ilProject@@ -115,16 +133,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. ilFilter :: Lens' InstancesList (Maybe Text) ilFilter = lens _ilFilter (\ s a -> s{_ilFilter = a}) @@ -150,7 +167,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient InstancesList'{..}-          = go _ilProject _ilZone _ilFilter _ilPageToken+          = go _ilProject _ilZone _ilOrderBy _ilFilter+              _ilPageToken               (Just _ilMaxResults)               (Just AltJSON)               computeService
+ gen/Network/Google/Resource/Compute/Instances/StartWithEncryptionKey.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Instances.StartWithEncryptionKey+-- 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)+--+-- Starts an instance that was stopped using the using the instances().stop+-- method. For more information, see Restart an instance.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.startWithEncryptionKey@.+module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey+    (+    -- * REST Resource+      InstancesStartWithEncryptionKeyResource++    -- * Creating a Request+    , instancesStartWithEncryptionKey+    , InstancesStartWithEncryptionKey++    -- * Request Lenses+    , iswekProject+    , iswekZone+    , iswekPayload+    , iswekInstance+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.instances.startWithEncryptionKey@ method which the+-- 'InstancesStartWithEncryptionKey' request conforms to.+type InstancesStartWithEncryptionKeyResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "zones" :>+               Capture "zone" Text :>+                 "instances" :>+                   Capture "instance" Text :>+                     "startWithEncryptionKey" :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON]+                           InstancesStartWithEncryptionKeyRequest+                           :> Post '[JSON] Operation++-- | Starts an instance that was stopped using the using the instances().stop+-- method. For more information, see Restart an instance.+--+-- /See:/ 'instancesStartWithEncryptionKey' smart constructor.+data InstancesStartWithEncryptionKey = InstancesStartWithEncryptionKey'+    { _iswekProject  :: !Text+    , _iswekZone     :: !Text+    , _iswekPayload  :: !InstancesStartWithEncryptionKeyRequest+    , _iswekInstance :: !Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'InstancesStartWithEncryptionKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iswekProject'+--+-- * 'iswekZone'+--+-- * 'iswekPayload'+--+-- * 'iswekInstance'+instancesStartWithEncryptionKey+    :: Text -- ^ 'iswekProject'+    -> Text -- ^ 'iswekZone'+    -> InstancesStartWithEncryptionKeyRequest -- ^ 'iswekPayload'+    -> Text -- ^ 'iswekInstance'+    -> InstancesStartWithEncryptionKey+instancesStartWithEncryptionKey pIswekProject_ pIswekZone_ pIswekPayload_ pIswekInstance_ =+    InstancesStartWithEncryptionKey'+    { _iswekProject = pIswekProject_+    , _iswekZone = pIswekZone_+    , _iswekPayload = pIswekPayload_+    , _iswekInstance = pIswekInstance_+    }++-- | Project ID for this request.+iswekProject :: Lens' InstancesStartWithEncryptionKey Text+iswekProject+  = lens _iswekProject (\ s a -> s{_iswekProject = a})++-- | The name of the zone for this request.+iswekZone :: Lens' InstancesStartWithEncryptionKey Text+iswekZone+  = lens _iswekZone (\ s a -> s{_iswekZone = a})++-- | Multipart request metadata.+iswekPayload :: Lens' InstancesStartWithEncryptionKey InstancesStartWithEncryptionKeyRequest+iswekPayload+  = lens _iswekPayload (\ s a -> s{_iswekPayload = a})++-- | Name of the instance resource to start.+iswekInstance :: Lens' InstancesStartWithEncryptionKey Text+iswekInstance+  = lens _iswekInstance+      (\ s a -> s{_iswekInstance = a})++instance GoogleRequest+         InstancesStartWithEncryptionKey where+        type Rs InstancesStartWithEncryptionKey = Operation+        type Scopes InstancesStartWithEncryptionKey =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient InstancesStartWithEncryptionKey'{..}+          = go _iswekProject _iswekZone _iswekInstance+              (Just AltJSON)+              _iswekPayload+              computeService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy InstancesStartWithEncryptionKeyResource)+                      mempty
gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs view
@@ -33,6 +33,7 @@     , MachineTypesAggregatedList      -- * Request Lenses+    , mtalOrderBy     , mtalProject     , mtalFilter     , mtalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "machineTypes" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] MachineTypeAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] MachineTypeAggregatedList  -- | Retrieves an aggregated list of machine types. -- -- /See:/ 'machineTypesAggregatedList' smart constructor. data MachineTypesAggregatedList = MachineTypesAggregatedList'-    { _mtalProject    :: !Text+    { _mtalOrderBy    :: !(Maybe Text)+    , _mtalProject    :: !Text     , _mtalFilter     :: !(Maybe Text)     , _mtalPageToken  :: !(Maybe Text)     , _mtalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'mtalOrderBy'+-- -- * 'mtalProject' -- -- * 'mtalFilter'@@ -83,12 +88,25 @@     -> MachineTypesAggregatedList machineTypesAggregatedList pMtalProject_ =     MachineTypesAggregatedList'-    { _mtalProject = pMtalProject_+    { _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+-- 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.+mtalOrderBy :: Lens' MachineTypesAggregatedList (Maybe Text)+mtalOrderBy+  = lens _mtalOrderBy (\ s a -> s{_mtalOrderBy = a})+ -- | Project ID for this request. mtalProject :: Lens' MachineTypesAggregatedList Text mtalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. mtalFilter :: Lens' MachineTypesAggregatedList (Maybe Text) mtalFilter   = lens _mtalFilter (\ s a -> s{_mtalFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient MachineTypesAggregatedList'{..}-          = go _mtalProject _mtalFilter _mtalPageToken+          = go _mtalProject _mtalOrderBy _mtalFilter+              _mtalPageToken               (Just _mtalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/MachineTypes/List.hs view
@@ -33,6 +33,7 @@     , MachineTypesList      -- * Request Lenses+    , mtlOrderBy     , mtlProject     , mtlZone     , mtlFilter@@ -53,17 +54,19 @@              "zones" :>                Capture "zone" Text :>                  "machineTypes" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] MachineTypeList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] MachineTypeList  -- | Retrieves a list of machine types available to the specified project. -- -- /See:/ 'machineTypesList' smart constructor. data MachineTypesList = MachineTypesList'-    { _mtlProject    :: !Text+    { _mtlOrderBy    :: !(Maybe Text)+    , _mtlProject    :: !Text     , _mtlZone       :: !Text     , _mtlFilter     :: !(Maybe Text)     , _mtlPageToken  :: !(Maybe Text)@@ -74,6 +77,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'mtlOrderBy'+-- -- * 'mtlProject' -- -- * 'mtlZone'@@ -89,13 +94,26 @@     -> MachineTypesList machineTypesList pMtlProject_ pMtlZone_ =     MachineTypesList'-    { _mtlProject = pMtlProject_+    { _mtlOrderBy = Nothing+    , _mtlProject = pMtlProject_     , _mtlZone = pMtlZone_     , _mtlFilter = Nothing     , _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+-- 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.+mtlOrderBy :: Lens' MachineTypesList (Maybe Text)+mtlOrderBy+  = lens _mtlOrderBy (\ s a -> s{_mtlOrderBy = a})+ -- | Project ID for this request. mtlProject :: Lens' MachineTypesList Text mtlProject@@ -116,16 +134,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. mtlFilter :: Lens' MachineTypesList (Maybe Text) mtlFilter   = lens _mtlFilter (\ s a -> s{_mtlFilter = a})@@ -153,7 +170,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient MachineTypesList'{..}-          = go _mtlProject _mtlZone _mtlFilter _mtlPageToken+          = go _mtlProject _mtlZone _mtlOrderBy _mtlFilter+              _mtlPageToken               (Just _mtlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Networks/List.hs view
@@ -33,6 +33,7 @@     , NetworksList      -- * Request Lenses+    , nlOrderBy     , nlProject     , nlFilter     , nlPageToken@@ -51,16 +52,18 @@            Capture "project" Text :>              "global" :>                "networks" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] NetworkList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] NetworkList  -- | Retrieves the list of networks available to the specified project. -- -- /See:/ 'networksList' smart constructor. data NetworksList = NetworksList'-    { _nlProject    :: !Text+    { _nlOrderBy    :: !(Maybe Text)+    , _nlProject    :: !Text     , _nlFilter     :: !(Maybe Text)     , _nlPageToken  :: !(Maybe Text)     , _nlMaxResults :: !(Textual Word32)@@ -70,6 +73,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'nlOrderBy'+-- -- * 'nlProject' -- -- * 'nlFilter'@@ -82,12 +87,25 @@     -> NetworksList networksList pNlProject_ =     NetworksList'-    { _nlProject = pNlProject_+    { _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+-- 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.+nlOrderBy :: Lens' NetworksList (Maybe Text)+nlOrderBy+  = lens _nlOrderBy (\ s a -> s{_nlOrderBy = a})+ -- | Project ID for this request. nlProject :: Lens' NetworksList Text nlProject@@ -104,16 +122,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. nlFilter :: Lens' NetworksList (Maybe Text) nlFilter = lens _nlFilter (\ s a -> s{_nlFilter = a}) @@ -139,7 +156,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient NetworksList'{..}-          = go _nlProject _nlFilter _nlPageToken+          = go _nlProject _nlOrderBy _nlFilter _nlPageToken               (Just _nlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/RegionOperations/List.hs view
@@ -34,6 +34,7 @@     , RegionOperationsList      -- * Request Lenses+    , rolOrderBy     , rolProject     , rolFilter     , rolRegion@@ -54,17 +55,19 @@              "regions" :>                Capture "region" Text :>                  "operations" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] OperationList  -- | Retrieves a list of Operation resources contained within the specified -- region. -- -- /See:/ 'regionOperationsList' smart constructor. data RegionOperationsList = RegionOperationsList'-    { _rolProject    :: !Text+    { _rolOrderBy    :: !(Maybe Text)+    , _rolProject    :: !Text     , _rolFilter     :: !(Maybe Text)     , _rolRegion     :: !Text     , _rolPageToken  :: !(Maybe Text)@@ -75,6 +78,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'rolOrderBy'+-- -- * 'rolProject' -- -- * 'rolFilter'@@ -90,13 +95,26 @@     -> RegionOperationsList regionOperationsList pRolProject_ pRolRegion_ =     RegionOperationsList'-    { _rolProject = pRolProject_+    { _rolOrderBy = Nothing+    , _rolProject = pRolProject_     , _rolFilter = Nothing     , _rolRegion = pRolRegion_     , _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+-- 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.+rolOrderBy :: Lens' RegionOperationsList (Maybe Text)+rolOrderBy+  = lens _rolOrderBy (\ s a -> s{_rolOrderBy = a})+ -- | Project ID for this request. rolProject :: Lens' RegionOperationsList Text rolProject@@ -113,16 +131,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. rolFilter :: Lens' RegionOperationsList (Maybe Text) rolFilter   = lens _rolFilter (\ s a -> s{_rolFilter = a})@@ -155,7 +172,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient RegionOperationsList'{..}-          = go _rolProject _rolRegion _rolFilter _rolPageToken+          = go _rolProject _rolRegion _rolOrderBy _rolFilter+              _rolPageToken               (Just _rolMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Regions/List.hs view
@@ -34,10 +34,11 @@     , RegionsList      -- * Request Lenses-    , rProject-    , rFilter-    , rPageToken-    , rMaxResults+    , regOrderBy+    , regProject+    , regFilter+    , regPageToken+    , regMaxResults     ) where  import           Network.Google.Compute.Types@@ -51,47 +52,65 @@          "projects" :>            Capture "project" Text :>              "regions" :>-               QueryParam "filter" Text :>-                 QueryParam "pageToken" Text :>-                   QueryParam "maxResults" (Textual Word32) :>-                     QueryParam "alt" AltJSON :> Get '[JSON] RegionList+               QueryParam "orderBy" Text :>+                 QueryParam "filter" Text :>+                   QueryParam "pageToken" Text :>+                     QueryParam "maxResults" (Textual Word32) :>+                       QueryParam "alt" AltJSON :> Get '[JSON] RegionList  -- | Retrieves the list of region resources available to the specified -- project. -- -- /See:/ 'regionsList' smart constructor. data RegionsList = RegionsList'-    { _rProject    :: !Text-    , _rFilter     :: !(Maybe Text)-    , _rPageToken  :: !(Maybe Text)-    , _rMaxResults :: !(Textual Word32)+    { _regOrderBy    :: !(Maybe Text)+    , _regProject    :: !Text+    , _regFilter     :: !(Maybe Text)+    , _regPageToken  :: !(Maybe Text)+    , _regMaxResults :: !(Textual Word32)     } 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: ----- * 'rProject'+-- * 'regOrderBy' ----- * 'rFilter'+-- * 'regProject' ----- * 'rPageToken'+-- * 'regFilter' ----- * 'rMaxResults'+-- * 'regPageToken'+--+-- * 'regMaxResults' regionsList-    :: Text -- ^ 'rProject'+    :: Text -- ^ 'regProject'     -> RegionsList-regionsList pRProject_ =+regionsList pRegProject_ =     RegionsList'-    { _rProject = pRProject_-    , _rFilter = Nothing-    , _rPageToken = Nothing-    , _rMaxResults = 500+    { _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+-- 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.+regOrderBy :: Lens' RegionsList (Maybe Text)+regOrderBy+  = lens _regOrderBy (\ s a -> s{_regOrderBy = a})+ -- | Project ID for this request.-rProject :: Lens' RegionsList Text-rProject = lens _rProject (\ s a -> s{_rProject = a})+regProject :: Lens' RegionsList Text+regProject+  = lens _regProject (\ s a -> s{_regProject = a})  -- | Sets a filter expression for filtering listed resources, in the form -- filter={expression}. Your {expression} must be in the format: field_name@@ -104,33 +123,34 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.-rFilter :: Lens' RegionsList (Maybe Text)-rFilter = lens _rFilter (\ s a -> s{_rFilter = a})+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+regFilter :: Lens' RegionsList (Maybe Text)+regFilter+  = lens _regFilter (\ s a -> s{_regFilter = 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.-rPageToken :: Lens' RegionsList (Maybe Text)-rPageToken-  = lens _rPageToken (\ s a -> s{_rPageToken = a})+regPageToken :: Lens' RegionsList (Maybe Text)+regPageToken+  = lens _regPageToken (\ s a -> s{_regPageToken = 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.-rMaxResults :: Lens' RegionsList Word32-rMaxResults-  = lens _rMaxResults (\ s a -> s{_rMaxResults = a}) .-      _Coerce+regMaxResults :: Lens' RegionsList Word32+regMaxResults+  = lens _regMaxResults+      (\ s a -> s{_regMaxResults = a})+      . _Coerce  instance GoogleRequest RegionsList where         type Rs RegionsList = RegionList@@ -139,8 +159,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient RegionsList'{..}-          = go _rProject _rFilter _rPageToken-              (Just _rMaxResults)+          = go _regProject _regOrderBy _regFilter _regPageToken+              (Just _regMaxResults)               (Just AltJSON)               computeService           where go
+ gen/Network/Google/Resource/Compute/Routers/AggregatedList.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.AggregatedList+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves an aggregated list of routers.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.aggregatedList@.+module Network.Google.Resource.Compute.Routers.AggregatedList+    (+    -- * REST Resource+      RoutersAggregatedListResource++    -- * Creating a Request+    , routersAggregatedList+    , RoutersAggregatedList++    -- * Request Lenses+    , ralOrderBy+    , ralProject+    , ralFilter+    , ralPageToken+    , ralMaxResults+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.aggregatedList@ method which the+-- 'RoutersAggregatedList' request conforms to.+type RoutersAggregatedListResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "aggregated" :>+               "routers" :>+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] RouterAggregatedList++-- | Retrieves an aggregated list of routers.+--+-- /See:/ 'routersAggregatedList' smart constructor.+data RoutersAggregatedList = RoutersAggregatedList'+    { _ralOrderBy    :: !(Maybe Text)+    , _ralProject    :: !Text+    , _ralFilter     :: !(Maybe Text)+    , _ralPageToken  :: !(Maybe Text)+    , _ralMaxResults :: !(Textual Word32)+    } 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:+--+-- * 'ralOrderBy'+--+-- * 'ralProject'+--+-- * 'ralFilter'+--+-- * 'ralPageToken'+--+-- * 'ralMaxResults'+routersAggregatedList+    :: Text -- ^ 'ralProject'+    -> RoutersAggregatedList+routersAggregatedList pRalProject_ =+    RoutersAggregatedList'+    { _ralOrderBy = Nothing+    , _ralProject = pRalProject_+    , _ralFilter = Nothing+    , _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+-- 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.+ralOrderBy :: Lens' RoutersAggregatedList (Maybe Text)+ralOrderBy+  = lens _ralOrderBy (\ s a -> s{_ralOrderBy = a})++-- | Project ID for this request.+ralProject :: Lens' RoutersAggregatedList Text+ralProject+  = lens _ralProject (\ s a -> s{_ralProject = a})++-- | Sets a filter expression for filtering listed resources, in the form+-- filter={expression}. Your {expression} must be in the format: field_name+-- comparison_string literal_string. The field_name is the name of the+-- field you want to compare. Only atomic field types are supported+-- (string, number, boolean). The comparison_string must be either eq+-- (equals) or ne (not equals). The literal_string is the string value to+-- filter to. The literal value must be valid for the type of field you are+-- filtering by (string, number, boolean). For string fields, the literal+-- value is interpreted as a regular expression using RE2 syntax. The+-- literal value must match the entire field. For example, to filter for+-- instances that do not have a name of example-instance, you would use+-- filter=name ne example-instance. You can filter on nested fields. For+-- example, you could filter on instances that have set the+-- scheduling.automaticRestart field to true. Use filtering on nested+-- fields to take advantage of labels to organize and search for results+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+ralFilter :: Lens' RoutersAggregatedList (Maybe Text)+ralFilter+  = lens _ralFilter (\ s a -> s{_ralFilter = 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.+ralPageToken :: Lens' RoutersAggregatedList (Maybe Text)+ralPageToken+  = lens _ralPageToken (\ s a -> s{_ralPageToken = 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.+ralMaxResults :: Lens' RoutersAggregatedList Word32+ralMaxResults+  = lens _ralMaxResults+      (\ s a -> s{_ralMaxResults = a})+      . _Coerce++instance GoogleRequest RoutersAggregatedList where+        type Rs RoutersAggregatedList = RouterAggregatedList+        type Scopes RoutersAggregatedList =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient RoutersAggregatedList'{..}+          = go _ralProject _ralOrderBy _ralFilter _ralPageToken+              (Just _ralMaxResults)+              (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy RoutersAggregatedListResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Delete.hs view
@@ -0,0 +1,112 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.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 Router resource.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.delete@.+module Network.Google.Resource.Compute.Routers.Delete+    (+    -- * REST Resource+      RoutersDeleteResource++    -- * Creating a Request+    , routersDelete+    , RoutersDelete++    -- * Request Lenses+    , rddProject+    , rddRouter+    , rddRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.delete@ method which the+-- 'RoutersDelete' request conforms to.+type RoutersDeleteResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation++-- | Deletes the specified Router resource.+--+-- /See:/ 'routersDelete' smart constructor.+data RoutersDelete = RoutersDelete'+    { _rddProject :: !Text+    , _rddRouter  :: !Text+    , _rddRegion  :: !Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersDelete' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rddProject'+--+-- * 'rddRouter'+--+-- * 'rddRegion'+routersDelete+    :: Text -- ^ 'rddProject'+    -> Text -- ^ 'rddRouter'+    -> Text -- ^ 'rddRegion'+    -> RoutersDelete+routersDelete pRddProject_ pRddRouter_ pRddRegion_ =+    RoutersDelete'+    { _rddProject = pRddProject_+    , _rddRouter = pRddRouter_+    , _rddRegion = pRddRegion_+    }++-- | Project ID for this request.+rddProject :: Lens' RoutersDelete Text+rddProject+  = lens _rddProject (\ s a -> s{_rddProject = a})++-- | Name of the Router resource to delete.+rddRouter :: Lens' RoutersDelete Text+rddRouter+  = lens _rddRouter (\ s a -> s{_rddRouter = a})++-- | Name of the region for this request.+rddRegion :: Lens' RoutersDelete Text+rddRegion+  = lens _rddRegion (\ s a -> s{_rddRegion = a})++instance GoogleRequest RoutersDelete where+        type Rs RoutersDelete = Operation+        type Scopes RoutersDelete =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient RoutersDelete'{..}+          = go _rddProject _rddRegion _rddRouter (Just AltJSON)+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersDeleteResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Get.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.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 Router resource. Get a list of available routers+-- by making a list() request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.get@.+module Network.Google.Resource.Compute.Routers.Get+    (+    -- * REST Resource+      RoutersGetResource++    -- * Creating a Request+    , routersGet+    , RoutersGet++    -- * Request Lenses+    , rggProject+    , rggRouter+    , rggRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.get@ method which the+-- 'RoutersGet' request conforms to.+type RoutersGetResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     QueryParam "alt" AltJSON :> Get '[JSON] Router++-- | Returns the specified Router resource. Get a list of available routers+-- by making a list() request.+--+-- /See:/ 'routersGet' smart constructor.+data RoutersGet = RoutersGet'+    { _rggProject :: !Text+    , _rggRouter  :: !Text+    , _rggRegion  :: !Text+    } 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:+--+-- * 'rggProject'+--+-- * 'rggRouter'+--+-- * 'rggRegion'+routersGet+    :: Text -- ^ 'rggProject'+    -> Text -- ^ 'rggRouter'+    -> Text -- ^ 'rggRegion'+    -> RoutersGet+routersGet pRggProject_ pRggRouter_ pRggRegion_ =+    RoutersGet'+    { _rggProject = pRggProject_+    , _rggRouter = pRggRouter_+    , _rggRegion = pRggRegion_+    }++-- | Project ID for this request.+rggProject :: Lens' RoutersGet Text+rggProject+  = lens _rggProject (\ s a -> s{_rggProject = a})++-- | Name of the Router resource to return.+rggRouter :: Lens' RoutersGet Text+rggRouter+  = lens _rggRouter (\ s a -> s{_rggRouter = a})++-- | Name of the region for this request.+rggRegion :: Lens' RoutersGet Text+rggRegion+  = lens _rggRegion (\ s a -> s{_rggRegion = a})++instance GoogleRequest RoutersGet where+        type Rs RoutersGet = Router+        type Scopes RoutersGet =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient RoutersGet'{..}+          = go _rggProject _rggRegion _rggRouter (Just AltJSON)+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersGetResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/GetRouterStatus.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.GetRouterStatus+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves runtime information of the specified router.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.getRouterStatus@.+module Network.Google.Resource.Compute.Routers.GetRouterStatus+    (+    -- * REST Resource+      RoutersGetRouterStatusResource++    -- * Creating a Request+    , routersGetRouterStatus+    , RoutersGetRouterStatus++    -- * Request Lenses+    , rgrsProject+    , rgrsRouter+    , rgrsRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.getRouterStatus@ method which the+-- 'RoutersGetRouterStatus' request conforms to.+type RoutersGetRouterStatusResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     "getRouterStatus" :>+                       QueryParam "alt" AltJSON :>+                         Get '[JSON] RouterStatusResponse++-- | Retrieves runtime information of the specified router.+--+-- /See:/ 'routersGetRouterStatus' smart constructor.+data RoutersGetRouterStatus = RoutersGetRouterStatus'+    { _rgrsProject :: !Text+    , _rgrsRouter  :: !Text+    , _rgrsRegion  :: !Text+    } 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:+--+-- * 'rgrsProject'+--+-- * 'rgrsRouter'+--+-- * 'rgrsRegion'+routersGetRouterStatus+    :: Text -- ^ 'rgrsProject'+    -> Text -- ^ 'rgrsRouter'+    -> Text -- ^ 'rgrsRegion'+    -> RoutersGetRouterStatus+routersGetRouterStatus pRgrsProject_ pRgrsRouter_ pRgrsRegion_ =+    RoutersGetRouterStatus'+    { _rgrsProject = pRgrsProject_+    , _rgrsRouter = pRgrsRouter_+    , _rgrsRegion = pRgrsRegion_+    }++-- | Project ID for this request.+rgrsProject :: Lens' RoutersGetRouterStatus Text+rgrsProject+  = lens _rgrsProject (\ s a -> s{_rgrsProject = a})++-- | Name of the Router resource to query.+rgrsRouter :: Lens' RoutersGetRouterStatus Text+rgrsRouter+  = lens _rgrsRouter (\ s a -> s{_rgrsRouter = a})++-- | Name of the region for this request.+rgrsRegion :: Lens' RoutersGetRouterStatus Text+rgrsRegion+  = lens _rgrsRegion (\ s a -> s{_rgrsRegion = a})++instance GoogleRequest RoutersGetRouterStatus where+        type Rs RoutersGetRouterStatus = RouterStatusResponse+        type Scopes RoutersGetRouterStatus =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient RoutersGetRouterStatus'{..}+          = go _rgrsProject _rgrsRegion _rgrsRouter+              (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy RoutersGetRouterStatusResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Insert.hs view
@@ -0,0 +1,113 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.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 Router resource in the specified project and region using the+-- data included in the request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.insert@.+module Network.Google.Resource.Compute.Routers.Insert+    (+    -- * REST Resource+      RoutersInsertResource++    -- * Creating a Request+    , routersInsert+    , RoutersInsert++    -- * Request Lenses+    , riProject+    , riPayload+    , riRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.insert@ method which the+-- 'RoutersInsert' request conforms to.+type RoutersInsertResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   QueryParam "alt" AltJSON :>+                     ReqBody '[JSON] Router :> Post '[JSON] Operation++-- | Creates a Router resource in the specified project and region using the+-- data included in the request.+--+-- /See:/ 'routersInsert' smart constructor.+data RoutersInsert = RoutersInsert'+    { _riProject :: !Text+    , _riPayload :: !Router+    , _riRegion  :: !Text+    } 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:+--+-- * 'riProject'+--+-- * 'riPayload'+--+-- * 'riRegion'+routersInsert+    :: Text -- ^ 'riProject'+    -> Router -- ^ 'riPayload'+    -> Text -- ^ 'riRegion'+    -> RoutersInsert+routersInsert pRiProject_ pRiPayload_ pRiRegion_ =+    RoutersInsert'+    { _riProject = pRiProject_+    , _riPayload = pRiPayload_+    , _riRegion = pRiRegion_+    }++-- | Project ID for this request.+riProject :: Lens' RoutersInsert Text+riProject+  = lens _riProject (\ s a -> s{_riProject = a})++-- | Multipart request metadata.+riPayload :: Lens' RoutersInsert Router+riPayload+  = lens _riPayload (\ s a -> s{_riPayload = a})++-- | Name of the region for this request.+riRegion :: Lens' RoutersInsert Text+riRegion = lens _riRegion (\ s a -> s{_riRegion = a})++instance GoogleRequest RoutersInsert where+        type Rs RoutersInsert = Operation+        type Scopes RoutersInsert =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient RoutersInsert'{..}+          = go _riProject _riRegion (Just AltJSON) _riPayload+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersInsertResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/List.hs view
@@ -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.Routers.List+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a list of Router resources available to the specified project.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.list@.+module Network.Google.Resource.Compute.Routers.List+    (+    -- * REST Resource+      RoutersListResource++    -- * Creating a Request+    , routersList+    , RoutersList++    -- * Request Lenses+    , rlOrderBy+    , rlProject+    , rlFilter+    , rlRegion+    , rlPageToken+    , rlMaxResults+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.list@ method which the+-- 'RoutersList' request conforms to.+type RoutersListResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] RouterList++-- | Retrieves a list of Router resources available to the specified project.+--+-- /See:/ 'routersList' smart constructor.+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)++-- | 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:+--+-- * 'rlOrderBy'+--+-- * 'rlProject'+--+-- * 'rlFilter'+--+-- * 'rlRegion'+--+-- * 'rlPageToken'+--+-- * 'rlMaxResults'+routersList+    :: Text -- ^ 'rlProject'+    -> Text -- ^ 'rlRegion'+    -> RoutersList+routersList pRlProject_ pRlRegion_ =+    RoutersList'+    { _rlOrderBy = Nothing+    , _rlProject = pRlProject_+    , _rlFilter = Nothing+    , _rlRegion = pRlRegion_+    , _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+-- 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.+rlOrderBy :: Lens' RoutersList (Maybe Text)+rlOrderBy+  = lens _rlOrderBy (\ s a -> s{_rlOrderBy = a})++-- | Project ID for this request.+rlProject :: Lens' RoutersList Text+rlProject+  = lens _rlProject (\ s a -> s{_rlProject = a})++-- | Sets a filter expression for filtering listed resources, in the form+-- filter={expression}. Your {expression} must be in the format: field_name+-- comparison_string literal_string. The field_name is the name of the+-- field you want to compare. Only atomic field types are supported+-- (string, number, boolean). The comparison_string must be either eq+-- (equals) or ne (not equals). The literal_string is the string value to+-- filter to. The literal value must be valid for the type of field you are+-- filtering by (string, number, boolean). For string fields, the literal+-- value is interpreted as a regular expression using RE2 syntax. The+-- literal value must match the entire field. For example, to filter for+-- instances that do not have a name of example-instance, you would use+-- filter=name ne example-instance. You can filter on nested fields. For+-- example, you could filter on instances that have set the+-- scheduling.automaticRestart field to true. Use filtering on nested+-- fields to take advantage of labels to organize and search for results+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+rlFilter :: Lens' RoutersList (Maybe Text)+rlFilter = lens _rlFilter (\ s a -> s{_rlFilter = a})++-- | Name of the region for this request.+rlRegion :: Lens' RoutersList Text+rlRegion = lens _rlRegion (\ s a -> s{_rlRegion = 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.+rlPageToken :: Lens' RoutersList (Maybe Text)+rlPageToken+  = lens _rlPageToken (\ s a -> s{_rlPageToken = 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.+rlMaxResults :: Lens' RoutersList Word32+rlMaxResults+  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})+      . _Coerce++instance GoogleRequest RoutersList where+        type Rs RoutersList = RouterList+        type Scopes RoutersList =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient RoutersList'{..}+          = go _rlProject _rlRegion _rlOrderBy _rlFilter+              _rlPageToken+              (Just _rlMaxResults)+              (Just AltJSON)+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersListResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Patch.hs view
@@ -0,0 +1,125 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.Patch+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified Router resource with the data included in the+-- request. This method supports patch semantics.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.patch@.+module Network.Google.Resource.Compute.Routers.Patch+    (+    -- * REST Resource+      RoutersPatchResource++    -- * Creating a Request+    , routersPatch+    , RoutersPatch++    -- * Request Lenses+    , rpProject+    , rpRouter+    , rpPayload+    , rpRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.patch@ method which the+-- 'RoutersPatch' request conforms to.+type RoutersPatchResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] Router :> Patch '[JSON] Operation++-- | Updates the specified Router resource with the data included in the+-- request. This method supports patch semantics.+--+-- /See:/ 'routersPatch' smart constructor.+data RoutersPatch = RoutersPatch'+    { _rpProject :: !Text+    , _rpRouter  :: !Text+    , _rpPayload :: !Router+    , _rpRegion  :: !Text+    } deriving (Eq,Show,Data,Typeable,Generic)++-- | Creates a value of 'RoutersPatch' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rpProject'+--+-- * 'rpRouter'+--+-- * 'rpPayload'+--+-- * 'rpRegion'+routersPatch+    :: Text -- ^ 'rpProject'+    -> Text -- ^ 'rpRouter'+    -> Router -- ^ 'rpPayload'+    -> Text -- ^ 'rpRegion'+    -> RoutersPatch+routersPatch pRpProject_ pRpRouter_ pRpPayload_ pRpRegion_ =+    RoutersPatch'+    { _rpProject = pRpProject_+    , _rpRouter = pRpRouter_+    , _rpPayload = pRpPayload_+    , _rpRegion = pRpRegion_+    }++-- | Project ID for this request.+rpProject :: Lens' RoutersPatch Text+rpProject+  = lens _rpProject (\ s a -> s{_rpProject = a})++-- | Name of the Router resource to update.+rpRouter :: Lens' RoutersPatch Text+rpRouter = lens _rpRouter (\ s a -> s{_rpRouter = a})++-- | Multipart request metadata.+rpPayload :: Lens' RoutersPatch Router+rpPayload+  = lens _rpPayload (\ s a -> s{_rpPayload = a})++-- | Name of the region for this request.+rpRegion :: Lens' RoutersPatch Text+rpRegion = lens _rpRegion (\ s a -> s{_rpRegion = a})++instance GoogleRequest RoutersPatch where+        type Rs RoutersPatch = Operation+        type Scopes RoutersPatch =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient RoutersPatch'{..}+          = go _rpProject _rpRegion _rpRouter (Just AltJSON)+              _rpPayload+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersPatchResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Preview.hs view
@@ -0,0 +1,130 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.Preview+-- 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)+--+-- Preview fields auto-generated during router create and update+-- operations. Calling this method does NOT create or update the router.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.preview@.+module Network.Google.Resource.Compute.Routers.Preview+    (+    -- * REST Resource+      RoutersPreviewResource++    -- * Creating a Request+    , routersPreview+    , RoutersPreview++    -- * Request Lenses+    , rppProject+    , rppRouter+    , rppPayload+    , rppRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.preview@ method which the+-- 'RoutersPreview' request conforms to.+type RoutersPreviewResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     "preview" :>+                       QueryParam "alt" AltJSON :>+                         ReqBody '[JSON] Router :>+                           Post '[JSON] RoutersPreviewResponse++-- | Preview fields auto-generated during router create and update+-- operations. Calling this method does NOT create or update the router.+--+-- /See:/ 'routersPreview' smart constructor.+data RoutersPreview = RoutersPreview'+    { _rppProject :: !Text+    , _rppRouter  :: !Text+    , _rppPayload :: !Router+    , _rppRegion  :: !Text+    } 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:+--+-- * 'rppProject'+--+-- * 'rppRouter'+--+-- * 'rppPayload'+--+-- * 'rppRegion'+routersPreview+    :: Text -- ^ 'rppProject'+    -> Text -- ^ 'rppRouter'+    -> Router -- ^ 'rppPayload'+    -> Text -- ^ 'rppRegion'+    -> RoutersPreview+routersPreview pRppProject_ pRppRouter_ pRppPayload_ pRppRegion_ =+    RoutersPreview'+    { _rppProject = pRppProject_+    , _rppRouter = pRppRouter_+    , _rppPayload = pRppPayload_+    , _rppRegion = pRppRegion_+    }++-- | Project ID for this request.+rppProject :: Lens' RoutersPreview Text+rppProject+  = lens _rppProject (\ s a -> s{_rppProject = a})++-- | Name of the Router resource to query.+rppRouter :: Lens' RoutersPreview Text+rppRouter+  = lens _rppRouter (\ s a -> s{_rppRouter = a})++-- | Multipart request metadata.+rppPayload :: Lens' RoutersPreview Router+rppPayload+  = lens _rppPayload (\ s a -> s{_rppPayload = a})++-- | Name of the region for this request.+rppRegion :: Lens' RoutersPreview Text+rppRegion+  = lens _rppRegion (\ s a -> s{_rppRegion = a})++instance GoogleRequest RoutersPreview where+        type Rs RoutersPreview = RoutersPreviewResponse+        type Scopes RoutersPreview =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient RoutersPreview'{..}+          = go _rppProject _rppRegion _rppRouter (Just AltJSON)+              _rppPayload+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersPreviewResource)+                      mempty
+ gen/Network/Google/Resource/Compute/Routers/Update.hs view
@@ -0,0 +1,125 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.Routers.Update+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates the specified Router resource with the data included in the+-- request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routers.update@.+module Network.Google.Resource.Compute.Routers.Update+    (+    -- * REST Resource+      RoutersUpdateResource++    -- * Creating a Request+    , routersUpdate+    , RoutersUpdate++    -- * Request Lenses+    , ruProject+    , ruRouter+    , ruPayload+    , ruRegion+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.routers.update@ method which the+-- 'RoutersUpdate' request conforms to.+type RoutersUpdateResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "regions" :>+               Capture "region" Text :>+                 "routers" :>+                   Capture "router" Text :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] Router :> Put '[JSON] Operation++-- | Updates the specified Router resource with the data included in the+-- request.+--+-- /See:/ 'routersUpdate' smart constructor.+data RoutersUpdate = RoutersUpdate'+    { _ruProject :: !Text+    , _ruRouter  :: !Text+    , _ruPayload :: !Router+    , _ruRegion  :: !Text+    } 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:+--+-- * 'ruProject'+--+-- * 'ruRouter'+--+-- * 'ruPayload'+--+-- * 'ruRegion'+routersUpdate+    :: Text -- ^ 'ruProject'+    -> Text -- ^ 'ruRouter'+    -> Router -- ^ 'ruPayload'+    -> Text -- ^ 'ruRegion'+    -> RoutersUpdate+routersUpdate pRuProject_ pRuRouter_ pRuPayload_ pRuRegion_ =+    RoutersUpdate'+    { _ruProject = pRuProject_+    , _ruRouter = pRuRouter_+    , _ruPayload = pRuPayload_+    , _ruRegion = pRuRegion_+    }++-- | Project ID for this request.+ruProject :: Lens' RoutersUpdate Text+ruProject+  = lens _ruProject (\ s a -> s{_ruProject = a})++-- | Name of the Router resource to update.+ruRouter :: Lens' RoutersUpdate Text+ruRouter = lens _ruRouter (\ s a -> s{_ruRouter = a})++-- | Multipart request metadata.+ruPayload :: Lens' RoutersUpdate Router+ruPayload+  = lens _ruPayload (\ s a -> s{_ruPayload = a})++-- | Name of the region for this request.+ruRegion :: Lens' RoutersUpdate Text+ruRegion = lens _ruRegion (\ s a -> s{_ruRegion = a})++instance GoogleRequest RoutersUpdate where+        type Rs RoutersUpdate = Operation+        type Scopes RoutersUpdate =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient RoutersUpdate'{..}+          = go _ruProject _ruRegion _ruRouter (Just AltJSON)+              _ruPayload+              computeService+          where go+                  = buildClient (Proxy :: Proxy RoutersUpdateResource)+                      mempty
gen/Network/Google/Resource/Compute/Routes/Get.hs view
@@ -34,8 +34,8 @@     , RoutesGet      -- * Request Lenses-    , rouProject-    , rouRoute+    , rrProject+    , rrRoute     ) where  import           Network.Google.Compute.Types@@ -58,35 +58,35 @@ -- -- /See:/ 'routesGet' smart constructor. data RoutesGet = RoutesGet'-    { _rouProject :: !Text-    , _rouRoute   :: !Text+    { _rrProject :: !Text+    , _rrRoute   :: !Text     } 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: ----- * 'rouProject'+-- * 'rrProject' ----- * 'rouRoute'+-- * 'rrRoute' routesGet-    :: Text -- ^ 'rouProject'-    -> Text -- ^ 'rouRoute'+    :: Text -- ^ 'rrProject'+    -> Text -- ^ 'rrRoute'     -> RoutesGet-routesGet pRouProject_ pRouRoute_ =+routesGet pRrProject_ pRrRoute_ =     RoutesGet'-    { _rouProject = pRouProject_-    , _rouRoute = pRouRoute_+    { _rrProject = pRrProject_+    , _rrRoute = pRrRoute_     }  -- | Project ID for this request.-rouProject :: Lens' RoutesGet Text-rouProject-  = lens _rouProject (\ s a -> s{_rouProject = a})+rrProject :: Lens' RoutesGet Text+rrProject+  = lens _rrProject (\ s a -> s{_rrProject = a})  -- | Name of the Route resource to return.-rouRoute :: Lens' RoutesGet Text-rouRoute = lens _rouRoute (\ s a -> s{_rouRoute = a})+rrRoute :: Lens' RoutesGet Text+rrRoute = lens _rrRoute (\ s a -> s{_rrRoute = a})  instance GoogleRequest RoutesGet where         type Rs RoutesGet = Route@@ -95,7 +95,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient RoutesGet'{..}-          = go _rouProject _rouRoute (Just AltJSON)+          = go _rrProject _rrRoute (Just AltJSON)               computeService           where go                   = buildClient (Proxy :: Proxy RoutesGetResource)
gen/Network/Google/Resource/Compute/Routes/Insert.hs view
@@ -34,8 +34,8 @@     , RoutesInsert      -- * Request Lenses-    , riProject-    , riPayload+    , rProject+    , rPayload     ) where  import           Network.Google.Compute.Types@@ -58,36 +58,34 @@ -- -- /See:/ 'routesInsert' smart constructor. data RoutesInsert = RoutesInsert'-    { _riProject :: !Text-    , _riPayload :: !Route+    { _rProject :: !Text+    , _rPayload :: !Route     } deriving (Eq,Show,Data,Typeable,Generic)  -- | Creates a value of 'RoutesInsert' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: ----- * 'riProject'+-- * 'rProject' ----- * 'riPayload'+-- * 'rPayload' routesInsert-    :: Text -- ^ 'riProject'-    -> Route -- ^ 'riPayload'+    :: Text -- ^ 'rProject'+    -> Route -- ^ 'rPayload'     -> RoutesInsert-routesInsert pRiProject_ pRiPayload_ =+routesInsert pRProject_ pRPayload_ =     RoutesInsert'-    { _riProject = pRiProject_-    , _riPayload = pRiPayload_+    { _rProject = pRProject_+    , _rPayload = pRPayload_     }  -- | Project ID for this request.-riProject :: Lens' RoutesInsert Text-riProject-  = lens _riProject (\ s a -> s{_riProject = a})+rProject :: Lens' RoutesInsert Text+rProject = lens _rProject (\ s a -> s{_rProject = a})  -- | Multipart request metadata.-riPayload :: Lens' RoutesInsert Route-riPayload-  = lens _riPayload (\ s a -> s{_riPayload = a})+rPayload :: Lens' RoutesInsert Route+rPayload = lens _rPayload (\ s a -> s{_rPayload = a})  instance GoogleRequest RoutesInsert where         type Rs RoutesInsert = Operation@@ -95,7 +93,7 @@              '["https://www.googleapis.com/auth/cloud-platform",                "https://www.googleapis.com/auth/compute"]         requestClient RoutesInsert'{..}-          = go _riProject (Just AltJSON) _riPayload+          = go _rProject (Just AltJSON) _rPayload               computeService           where go                   = buildClient (Proxy :: Proxy RoutesInsertResource)
gen/Network/Google/Resource/Compute/Routes/List.hs view
@@ -34,10 +34,11 @@     , RoutesList      -- * Request Lenses-    , rlProject-    , rlFilter-    , rlPageToken-    , rlMaxResults+    , rouOrderBy+    , rouProject+    , rouFilter+    , rouPageToken+    , rouMaxResults     ) where  import           Network.Google.Compute.Types@@ -52,48 +53,65 @@            Capture "project" Text :>              "global" :>                "routes" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] RouteList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] RouteList  -- | Retrieves the list of Route resources available to the specified -- project. -- -- /See:/ 'routesList' smart constructor. data RoutesList = RoutesList'-    { _rlProject    :: !Text-    , _rlFilter     :: !(Maybe Text)-    , _rlPageToken  :: !(Maybe Text)-    , _rlMaxResults :: !(Textual Word32)+    { _rouOrderBy    :: !(Maybe Text)+    , _rouProject    :: !Text+    , _rouFilter     :: !(Maybe Text)+    , _rouPageToken  :: !(Maybe Text)+    , _rouMaxResults :: !(Textual Word32)     } 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: ----- * 'rlProject'+-- * 'rouOrderBy' ----- * 'rlFilter'+-- * 'rouProject' ----- * 'rlPageToken'+-- * 'rouFilter' ----- * 'rlMaxResults'+-- * 'rouPageToken'+--+-- * 'rouMaxResults' routesList-    :: Text -- ^ 'rlProject'+    :: Text -- ^ 'rouProject'     -> RoutesList-routesList pRlProject_ =+routesList pRouProject_ =     RoutesList'-    { _rlProject = pRlProject_-    , _rlFilter = Nothing-    , _rlPageToken = Nothing-    , _rlMaxResults = 500+    { _rouOrderBy = Nothing+    , _rouProject = pRouProject_+    , _rouFilter = Nothing+    , _rouPageToken = Nothing+    , _rouMaxResults = 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.+rouOrderBy :: Lens' RoutesList (Maybe Text)+rouOrderBy+  = lens _rouOrderBy (\ s a -> s{_rouOrderBy = a})+ -- | Project ID for this request.-rlProject :: Lens' RoutesList Text-rlProject-  = lens _rlProject (\ s a -> s{_rlProject = a})+rouProject :: Lens' RoutesList Text+rouProject+  = lens _rouProject (\ s a -> s{_rouProject = a})  -- | Sets a filter expression for filtering listed resources, in the form -- filter={expression}. Your {expression} must be in the format: field_name@@ -106,32 +124,33 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.-rlFilter :: Lens' RoutesList (Maybe Text)-rlFilter = lens _rlFilter (\ s a -> s{_rlFilter = a})+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+rouFilter :: Lens' RoutesList (Maybe Text)+rouFilter+  = lens _rouFilter (\ s a -> s{_rouFilter = 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.-rlPageToken :: Lens' RoutesList (Maybe Text)-rlPageToken-  = lens _rlPageToken (\ s a -> s{_rlPageToken = a})+rouPageToken :: Lens' RoutesList (Maybe Text)+rouPageToken+  = lens _rouPageToken (\ s a -> s{_rouPageToken = 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.-rlMaxResults :: Lens' RoutesList Word32-rlMaxResults-  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})+rouMaxResults :: Lens' RoutesList Word32+rouMaxResults+  = lens _rouMaxResults+      (\ s a -> s{_rouMaxResults = a})       . _Coerce  instance GoogleRequest RoutesList where@@ -141,8 +160,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient RoutesList'{..}-          = go _rlProject _rlFilter _rlPageToken-              (Just _rlMaxResults)+          = go _rouProject _rouOrderBy _rouFilter _rouPageToken+              (Just _rouMaxResults)               (Just AltJSON)               computeService           where go
gen/Network/Google/Resource/Compute/SSLCertificates/List.hs view
@@ -34,6 +34,7 @@     , SSLCertificatesList      -- * Request Lenses+    , sclOrderBy     , sclProject     , sclFilter     , sclPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "sslCertificates" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] SSLCertificateList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] SSLCertificateList  -- | Retrieves the list of SslCertificate resources available to the -- specified project. -- -- /See:/ 'sslCertificatesList' smart constructor. data SSLCertificatesList = SSLCertificatesList'-    { _sclProject    :: !Text+    { _sclOrderBy    :: !(Maybe Text)+    , _sclProject    :: !Text     , _sclFilter     :: !(Maybe Text)     , _sclPageToken  :: !(Maybe Text)     , _sclMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'sclOrderBy'+-- -- * 'sclProject' -- -- * 'sclFilter'@@ -85,12 +90,25 @@     -> SSLCertificatesList sslCertificatesList pSclProject_ =     SSLCertificatesList'-    { _sclProject = pSclProject_+    { _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+-- 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.+sclOrderBy :: Lens' SSLCertificatesList (Maybe Text)+sclOrderBy+  = lens _sclOrderBy (\ s a -> s{_sclOrderBy = a})+ -- | Project ID for this request. sclProject :: Lens' SSLCertificatesList Text sclProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. sclFilter :: Lens' SSLCertificatesList (Maybe Text) sclFilter   = lens _sclFilter (\ s a -> s{_sclFilter = a})@@ -144,7 +161,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient SSLCertificatesList'{..}-          = go _sclProject _sclFilter _sclPageToken+          = go _sclProject _sclOrderBy _sclFilter _sclPageToken               (Just _sclMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Snapshots/List.hs view
@@ -34,6 +34,7 @@     , SnapshotsList      -- * Request Lenses+    , sOrderBy     , sProject     , sFilter     , sPageToken@@ -52,17 +53,19 @@            Capture "project" Text :>              "global" :>                "snapshots" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList  -- | Retrieves the list of Snapshot resources contained within the specified -- project. -- -- /See:/ 'snapshotsList' smart constructor. data SnapshotsList = SnapshotsList'-    { _sProject    :: !Text+    { _sOrderBy    :: !(Maybe Text)+    , _sProject    :: !Text     , _sFilter     :: !(Maybe Text)     , _sPageToken  :: !(Maybe Text)     , _sMaxResults :: !(Textual Word32)@@ -72,6 +75,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'sOrderBy'+-- -- * 'sProject' -- -- * 'sFilter'@@ -84,12 +89,24 @@     -> SnapshotsList snapshotsList pSProject_ =     SnapshotsList'-    { _sProject = pSProject_+    { _sOrderBy = Nothing+    , _sProject = pSProject_     , _sFilter = Nothing     , _sPageToken = Nothing     , _sMaxResults = 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.+sOrderBy :: Lens' SnapshotsList (Maybe Text)+sOrderBy = lens _sOrderBy (\ s a -> s{_sOrderBy = a})+ -- | Project ID for this request. sProject :: Lens' SnapshotsList Text sProject = lens _sProject (\ s a -> s{_sProject = a})@@ -105,16 +122,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. sFilter :: Lens' SnapshotsList (Maybe Text) sFilter = lens _sFilter (\ s a -> s{_sFilter = a}) @@ -140,7 +156,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient SnapshotsList'{..}-          = go _sProject _sFilter _sPageToken+          = go _sProject _sOrderBy _sFilter _sPageToken               (Just _sMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Subnetworks/AggregatedList.hs view
@@ -33,6 +33,7 @@     , SubnetworksAggregatedList      -- * Request Lenses+    , salOrderBy     , salProject     , salFilter     , salPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "subnetworks" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] SubnetworkAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] SubnetworkAggregatedList  -- | Retrieves an aggregated list of subnetworks. -- -- /See:/ 'subnetworksAggregatedList' smart constructor. data SubnetworksAggregatedList = SubnetworksAggregatedList'-    { _salProject    :: !Text+    { _salOrderBy    :: !(Maybe Text)+    , _salProject    :: !Text     , _salFilter     :: !(Maybe Text)     , _salPageToken  :: !(Maybe Text)     , _salMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'salOrderBy'+-- -- * 'salProject' -- -- * 'salFilter'@@ -83,12 +88,25 @@     -> SubnetworksAggregatedList subnetworksAggregatedList pSalProject_ =     SubnetworksAggregatedList'-    { _salProject = pSalProject_+    { _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+-- 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.+salOrderBy :: Lens' SubnetworksAggregatedList (Maybe Text)+salOrderBy+  = lens _salOrderBy (\ s a -> s{_salOrderBy = a})+ -- | Project ID for this request. salProject :: Lens' SubnetworksAggregatedList Text salProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. salFilter :: Lens' SubnetworksAggregatedList (Maybe Text) salFilter   = lens _salFilter (\ s a -> s{_salFilter = a})@@ -144,7 +161,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient SubnetworksAggregatedList'{..}-          = go _salProject _salFilter _salPageToken+          = go _salProject _salOrderBy _salFilter _salPageToken               (Just _salMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Subnetworks/List.hs view
@@ -33,6 +33,7 @@     , SubnetworksList      -- * Request Lenses+    , slOrderBy     , slProject     , slFilter     , slRegion@@ -53,17 +54,19 @@              "regions" :>                Capture "region" Text :>                  "subnetworks" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] SubnetworkList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] SubnetworkList  -- | Retrieves a list of subnetworks available to the specified project. -- -- /See:/ 'subnetworksList' smart constructor. data SubnetworksList = SubnetworksList'-    { _slProject    :: !Text+    { _slOrderBy    :: !(Maybe Text)+    , _slProject    :: !Text     , _slFilter     :: !(Maybe Text)     , _slRegion     :: !Text     , _slPageToken  :: !(Maybe Text)@@ -74,6 +77,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'slOrderBy'+-- -- * 'slProject' -- -- * 'slFilter'@@ -89,13 +94,26 @@     -> SubnetworksList subnetworksList pSlProject_ pSlRegion_ =     SubnetworksList'-    { _slProject = pSlProject_+    { _slOrderBy = Nothing+    , _slProject = pSlProject_     , _slFilter = Nothing     , _slRegion = pSlRegion_     , _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+-- 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.+slOrderBy :: Lens' SubnetworksList (Maybe Text)+slOrderBy+  = lens _slOrderBy (\ s a -> s{_slOrderBy = a})+ -- | Project ID for this request. slProject :: Lens' SubnetworksList Text slProject@@ -112,16 +130,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. slFilter :: Lens' SubnetworksList (Maybe Text) slFilter = lens _slFilter (\ s a -> s{_slFilter = a}) @@ -151,7 +168,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient SubnetworksList'{..}-          = go _slProject _slRegion _slFilter _slPageToken+          = go _slProject _slRegion _slOrderBy _slFilter+              _slPageToken               (Just _slMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs view
@@ -34,6 +34,7 @@     , TargetHTTPProxiesList      -- * Request Lenses+    , thttpplOrderBy     , thttpplProject     , thttpplFilter     , thttpplPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "targetHttpProxies" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] TargetHTTPProxyList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetHTTPProxyList  -- | Retrieves the list of TargetHttpProxy resources available to the -- specified project. -- -- /See:/ 'targetHTTPProxiesList' smart constructor. data TargetHTTPProxiesList = TargetHTTPProxiesList'-    { _thttpplProject    :: !Text+    { _thttpplOrderBy    :: !(Maybe Text)+    , _thttpplProject    :: !Text     , _thttpplFilter     :: !(Maybe Text)     , _thttpplPageToken  :: !(Maybe Text)     , _thttpplMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'thttpplOrderBy'+-- -- * 'thttpplProject' -- -- * 'thttpplFilter'@@ -85,12 +90,26 @@     -> TargetHTTPProxiesList targetHTTPProxiesList pThttpplProject_ =     TargetHTTPProxiesList'-    { _thttpplProject = pThttpplProject_+    { _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+-- 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.+thttpplOrderBy :: Lens' TargetHTTPProxiesList (Maybe Text)+thttpplOrderBy+  = lens _thttpplOrderBy+      (\ s a -> s{_thttpplOrderBy = a})+ -- | Project ID for this request. thttpplProject :: Lens' TargetHTTPProxiesList Text thttpplProject@@ -108,16 +127,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. thttpplFilter :: Lens' TargetHTTPProxiesList (Maybe Text) thttpplFilter   = lens _thttpplFilter@@ -147,7 +165,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetHTTPProxiesList'{..}-          = go _thttpplProject _thttpplFilter _thttpplPageToken+          = go _thttpplProject _thttpplOrderBy _thttpplFilter+              _thttpplPageToken               (Just _thttpplMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs view
@@ -34,6 +34,7 @@     , TargetHTTPSProxiesList      -- * Request Lenses+    , thplOrderBy     , thplProject     , thplFilter     , thplPageToken@@ -52,18 +53,20 @@            Capture "project" Text :>              "global" :>                "targetHttpsProxies" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] TargetHTTPSProxyList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetHTTPSProxyList  -- | Retrieves the list of TargetHttpsProxy resources available to the -- specified project. -- -- /See:/ 'targetHTTPSProxiesList' smart constructor. data TargetHTTPSProxiesList = TargetHTTPSProxiesList'-    { _thplProject    :: !Text+    { _thplOrderBy    :: !(Maybe Text)+    , _thplProject    :: !Text     , _thplFilter     :: !(Maybe Text)     , _thplPageToken  :: !(Maybe Text)     , _thplMaxResults :: !(Textual Word32)@@ -73,6 +76,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'thplOrderBy'+-- -- * 'thplProject' -- -- * 'thplFilter'@@ -85,12 +90,25 @@     -> TargetHTTPSProxiesList targetHTTPSProxiesList pThplProject_ =     TargetHTTPSProxiesList'-    { _thplProject = pThplProject_+    { _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+-- 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.+thplOrderBy :: Lens' TargetHTTPSProxiesList (Maybe Text)+thplOrderBy+  = lens _thplOrderBy (\ s a -> s{_thplOrderBy = a})+ -- | Project ID for this request. thplProject :: Lens' TargetHTTPSProxiesList Text thplProject@@ -107,16 +125,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. thplFilter :: Lens' TargetHTTPSProxiesList (Maybe Text) thplFilter   = lens _thplFilter (\ s a -> s{_thplFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetHTTPSProxiesList'{..}-          = go _thplProject _thplFilter _thplPageToken+          = go _thplProject _thplOrderBy _thplFilter+              _thplPageToken               (Just _thplMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs view
@@ -33,6 +33,7 @@     , TargetInstancesAggregatedList      -- * Request Lenses+    , tialOrderBy     , tialProject     , tialFilter     , tialPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "targetInstances" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] TargetInstanceAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetInstanceAggregatedList  -- | Retrieves an aggregated list of target instances. -- -- /See:/ 'targetInstancesAggregatedList' smart constructor. data TargetInstancesAggregatedList = TargetInstancesAggregatedList'-    { _tialProject    :: !Text+    { _tialOrderBy    :: !(Maybe Text)+    , _tialProject    :: !Text     , _tialFilter     :: !(Maybe Text)     , _tialPageToken  :: !(Maybe Text)     , _tialMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tialOrderBy'+-- -- * 'tialProject' -- -- * 'tialFilter'@@ -83,12 +88,25 @@     -> TargetInstancesAggregatedList targetInstancesAggregatedList pTialProject_ =     TargetInstancesAggregatedList'-    { _tialProject = pTialProject_+    { _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+-- 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.+tialOrderBy :: Lens' TargetInstancesAggregatedList (Maybe Text)+tialOrderBy+  = lens _tialOrderBy (\ s a -> s{_tialOrderBy = a})+ -- | Project ID for this request. tialProject :: Lens' TargetInstancesAggregatedList Text tialProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tialFilter :: Lens' TargetInstancesAggregatedList (Maybe Text) tialFilter   = lens _tialFilter (\ s a -> s{_tialFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetInstancesAggregatedList'{..}-          = go _tialProject _tialFilter _tialPageToken+          = go _tialProject _tialOrderBy _tialFilter+              _tialPageToken               (Just _tialMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetInstances/List.hs view
@@ -34,6 +34,7 @@     , TargetInstancesList      -- * Request Lenses+    , tilOrderBy     , tilProject     , tilZone     , tilFilter@@ -54,18 +55,20 @@              "zones" :>                Capture "zone" Text :>                  "targetInstances" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] TargetInstanceList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] TargetInstanceList  -- | Retrieves a list of TargetInstance resources available to the specified -- project and zone. -- -- /See:/ 'targetInstancesList' smart constructor. data TargetInstancesList = TargetInstancesList'-    { _tilProject    :: !Text+    { _tilOrderBy    :: !(Maybe Text)+    , _tilProject    :: !Text     , _tilZone       :: !Text     , _tilFilter     :: !(Maybe Text)     , _tilPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tilOrderBy'+-- -- * 'tilProject' -- -- * 'tilZone'@@ -91,13 +96,26 @@     -> TargetInstancesList targetInstancesList pTilProject_ pTilZone_ =     TargetInstancesList'-    { _tilProject = pTilProject_+    { _tilOrderBy = Nothing+    , _tilProject = pTilProject_     , _tilZone = pTilZone_     , _tilFilter = Nothing     , _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+-- 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.+tilOrderBy :: Lens' TargetInstancesList (Maybe Text)+tilOrderBy+  = lens _tilOrderBy (\ s a -> s{_tilOrderBy = a})+ -- | Project ID for this request. tilProject :: Lens' TargetInstancesList Text tilProject@@ -118,16 +136,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tilFilter :: Lens' TargetInstancesList (Maybe Text) tilFilter   = lens _tilFilter (\ s a -> s{_tilFilter = a})@@ -155,7 +172,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetInstancesList'{..}-          = go _tilProject _tilZone _tilFilter _tilPageToken+          = go _tilProject _tilZone _tilOrderBy _tilFilter+              _tilPageToken               (Just _tilMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs view
@@ -33,6 +33,7 @@     , TargetPoolsAggregatedList      -- * Request Lenses+    , tpalOrderBy     , tpalProject     , tpalFilter     , tpalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "targetPools" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] TargetPoolAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetPoolAggregatedList  -- | Retrieves an aggregated list of target pools. -- -- /See:/ 'targetPoolsAggregatedList' smart constructor. data TargetPoolsAggregatedList = TargetPoolsAggregatedList'-    { _tpalProject    :: !Text+    { _tpalOrderBy    :: !(Maybe Text)+    , _tpalProject    :: !Text     , _tpalFilter     :: !(Maybe Text)     , _tpalPageToken  :: !(Maybe Text)     , _tpalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tpalOrderBy'+-- -- * 'tpalProject' -- -- * 'tpalFilter'@@ -83,12 +88,25 @@     -> TargetPoolsAggregatedList targetPoolsAggregatedList pTpalProject_ =     TargetPoolsAggregatedList'-    { _tpalProject = pTpalProject_+    { _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+-- 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.+tpalOrderBy :: Lens' TargetPoolsAggregatedList (Maybe Text)+tpalOrderBy+  = lens _tpalOrderBy (\ s a -> s{_tpalOrderBy = a})+ -- | Project ID for this request. tpalProject :: Lens' TargetPoolsAggregatedList Text tpalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tpalFilter :: Lens' TargetPoolsAggregatedList (Maybe Text) tpalFilter   = lens _tpalFilter (\ s a -> s{_tpalFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetPoolsAggregatedList'{..}-          = go _tpalProject _tpalFilter _tpalPageToken+          = go _tpalProject _tpalOrderBy _tpalFilter+              _tpalPageToken               (Just _tpalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetPools/List.hs view
@@ -34,6 +34,7 @@     , TargetPoolsList      -- * Request Lenses+    , tplOrderBy     , tplProject     , tplFilter     , tplRegion@@ -54,18 +55,20 @@              "regions" :>                Capture "region" Text :>                  "targetPools" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] TargetPoolList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] TargetPoolList  -- | Retrieves a list of target pools available to the specified project and -- region. -- -- /See:/ 'targetPoolsList' smart constructor. data TargetPoolsList = TargetPoolsList'-    { _tplProject    :: !Text+    { _tplOrderBy    :: !(Maybe Text)+    , _tplProject    :: !Text     , _tplFilter     :: !(Maybe Text)     , _tplRegion     :: !Text     , _tplPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tplOrderBy'+-- -- * 'tplProject' -- -- * 'tplFilter'@@ -91,13 +96,26 @@     -> TargetPoolsList targetPoolsList pTplProject_ pTplRegion_ =     TargetPoolsList'-    { _tplProject = pTplProject_+    { _tplOrderBy = Nothing+    , _tplProject = pTplProject_     , _tplFilter = Nothing     , _tplRegion = pTplRegion_     , _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+-- 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.+tplOrderBy :: Lens' TargetPoolsList (Maybe Text)+tplOrderBy+  = lens _tplOrderBy (\ s a -> s{_tplOrderBy = a})+ -- | Project ID for this request. tplProject :: Lens' TargetPoolsList Text tplProject@@ -114,16 +132,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tplFilter :: Lens' TargetPoolsList (Maybe Text) tplFilter   = lens _tplFilter (\ s a -> s{_tplFilter = a})@@ -156,7 +173,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetPoolsList'{..}-          = go _tplProject _tplRegion _tplFilter _tplPageToken+          = go _tplProject _tplRegion _tplOrderBy _tplFilter+              _tplPageToken               (Just _tplMaxResults)               (Just AltJSON)               computeService
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/Delete.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.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 TargetSslProxy resource.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.delete@.+module Network.Google.Resource.Compute.TargetSSLProxies.Delete+    (+    -- * REST Resource+      TargetSSLProxiesDeleteResource++    -- * Creating a Request+    , targetSSLProxiesDelete+    , TargetSSLProxiesDelete++    -- * Request Lenses+    , tspdProject+    , tspdTargetSSLProxy+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.delete@ method which the+-- 'TargetSSLProxiesDelete' request conforms to.+type TargetSSLProxiesDeleteResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 Capture "targetSslProxy" Text :>+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation++-- | Deletes the specified TargetSslProxy resource.+--+-- /See:/ 'targetSSLProxiesDelete' smart constructor.+data TargetSSLProxiesDelete = TargetSSLProxiesDelete'+    { _tspdProject        :: !Text+    , _tspdTargetSSLProxy :: !Text+    } 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:+--+-- * 'tspdProject'+--+-- * 'tspdTargetSSLProxy'+targetSSLProxiesDelete+    :: Text -- ^ 'tspdProject'+    -> Text -- ^ 'tspdTargetSSLProxy'+    -> TargetSSLProxiesDelete+targetSSLProxiesDelete pTspdProject_ pTspdTargetSSLProxy_ =+    TargetSSLProxiesDelete'+    { _tspdProject = pTspdProject_+    , _tspdTargetSSLProxy = pTspdTargetSSLProxy_+    }++-- | Project ID for this request.+tspdProject :: Lens' TargetSSLProxiesDelete Text+tspdProject+  = lens _tspdProject (\ s a -> s{_tspdProject = a})++-- | Name of the TargetSslProxy resource to delete.+tspdTargetSSLProxy :: Lens' TargetSSLProxiesDelete Text+tspdTargetSSLProxy+  = lens _tspdTargetSSLProxy+      (\ s a -> s{_tspdTargetSSLProxy = a})++instance GoogleRequest TargetSSLProxiesDelete where+        type Rs TargetSSLProxiesDelete = Operation+        type Scopes TargetSSLProxiesDelete =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient TargetSSLProxiesDelete'{..}+          = go _tspdProject _tspdTargetSSLProxy (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy TargetSSLProxiesDeleteResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/Get.hs view
@@ -0,0 +1,106 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.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 TargetSslProxy resource. Get a list of available+-- target SSL proxies by making a list() request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.get@.+module Network.Google.Resource.Compute.TargetSSLProxies.Get+    (+    -- * REST Resource+      TargetSSLProxiesGetResource++    -- * Creating a Request+    , targetSSLProxiesGet+    , TargetSSLProxiesGet++    -- * Request Lenses+    , tspgProject+    , tspgTargetSSLProxy+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.get@ method which the+-- 'TargetSSLProxiesGet' request conforms to.+type TargetSSLProxiesGetResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 Capture "targetSslProxy" Text :>+                   QueryParam "alt" AltJSON :>+                     Get '[JSON] TargetSSLProxy++-- | Returns the specified TargetSslProxy resource. Get a list of available+-- target SSL proxies by making a list() request.+--+-- /See:/ 'targetSSLProxiesGet' smart constructor.+data TargetSSLProxiesGet = TargetSSLProxiesGet'+    { _tspgProject        :: !Text+    , _tspgTargetSSLProxy :: !Text+    } 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:+--+-- * 'tspgProject'+--+-- * 'tspgTargetSSLProxy'+targetSSLProxiesGet+    :: Text -- ^ 'tspgProject'+    -> Text -- ^ 'tspgTargetSSLProxy'+    -> TargetSSLProxiesGet+targetSSLProxiesGet pTspgProject_ pTspgTargetSSLProxy_ =+    TargetSSLProxiesGet'+    { _tspgProject = pTspgProject_+    , _tspgTargetSSLProxy = pTspgTargetSSLProxy_+    }++-- | Project ID for this request.+tspgProject :: Lens' TargetSSLProxiesGet Text+tspgProject+  = lens _tspgProject (\ s a -> s{_tspgProject = a})++-- | Name of the TargetSslProxy resource to return.+tspgTargetSSLProxy :: Lens' TargetSSLProxiesGet Text+tspgTargetSSLProxy+  = lens _tspgTargetSSLProxy+      (\ s a -> s{_tspgTargetSSLProxy = a})++instance GoogleRequest TargetSSLProxiesGet where+        type Rs TargetSSLProxiesGet = TargetSSLProxy+        type Scopes TargetSSLProxiesGet =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient TargetSSLProxiesGet'{..}+          = go _tspgProject _tspgTargetSSLProxy (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy TargetSSLProxiesGetResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/Insert.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.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 TargetSslProxy resource in the specified project using the+-- data included in the request.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.insert@.+module Network.Google.Resource.Compute.TargetSSLProxies.Insert+    (+    -- * REST Resource+      TargetSSLProxiesInsertResource++    -- * Creating a Request+    , targetSSLProxiesInsert+    , TargetSSLProxiesInsert++    -- * Request Lenses+    , tspiProject+    , tspiPayload+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.insert@ method which the+-- 'TargetSSLProxiesInsert' request conforms to.+type TargetSSLProxiesInsertResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 QueryParam "alt" AltJSON :>+                   ReqBody '[JSON] TargetSSLProxy :>+                     Post '[JSON] Operation++-- | Creates a TargetSslProxy resource in the specified project using the+-- data included in the request.+--+-- /See:/ 'targetSSLProxiesInsert' smart constructor.+data TargetSSLProxiesInsert = TargetSSLProxiesInsert'+    { _tspiProject :: !Text+    , _tspiPayload :: !TargetSSLProxy+    } 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:+--+-- * 'tspiProject'+--+-- * 'tspiPayload'+targetSSLProxiesInsert+    :: Text -- ^ 'tspiProject'+    -> TargetSSLProxy -- ^ 'tspiPayload'+    -> TargetSSLProxiesInsert+targetSSLProxiesInsert pTspiProject_ pTspiPayload_ =+    TargetSSLProxiesInsert'+    { _tspiProject = pTspiProject_+    , _tspiPayload = pTspiPayload_+    }++-- | Project ID for this request.+tspiProject :: Lens' TargetSSLProxiesInsert Text+tspiProject+  = lens _tspiProject (\ s a -> s{_tspiProject = a})++-- | Multipart request metadata.+tspiPayload :: Lens' TargetSSLProxiesInsert TargetSSLProxy+tspiPayload+  = lens _tspiPayload (\ s a -> s{_tspiPayload = a})++instance GoogleRequest TargetSSLProxiesInsert where+        type Rs TargetSSLProxiesInsert = Operation+        type Scopes TargetSSLProxiesInsert =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient TargetSSLProxiesInsert'{..}+          = go _tspiProject (Just AltJSON) _tspiPayload+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy TargetSSLProxiesInsertResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/List.hs view
@@ -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.TargetSSLProxies.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 TargetSslProxy resources available to the+-- specified project.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.list@.+module Network.Google.Resource.Compute.TargetSSLProxies.List+    (+    -- * REST Resource+      TargetSSLProxiesListResource++    -- * Creating a Request+    , targetSSLProxiesList+    , TargetSSLProxiesList++    -- * Request Lenses+    , tsplOrderBy+    , tsplProject+    , tsplFilter+    , tsplPageToken+    , tsplMaxResults+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.list@ method which the+-- 'TargetSSLProxiesList' request conforms to.+type TargetSSLProxiesListResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetSSLProxyList++-- | Retrieves the list of TargetSslProxy resources available to the+-- specified project.+--+-- /See:/ 'targetSSLProxiesList' smart constructor.+data TargetSSLProxiesList = TargetSSLProxiesList'+    { _tsplOrderBy    :: !(Maybe Text)+    , _tsplProject    :: !Text+    , _tsplFilter     :: !(Maybe Text)+    , _tsplPageToken  :: !(Maybe Text)+    , _tsplMaxResults :: !(Textual Word32)+    } 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:+--+-- * 'tsplOrderBy'+--+-- * 'tsplProject'+--+-- * 'tsplFilter'+--+-- * 'tsplPageToken'+--+-- * 'tsplMaxResults'+targetSSLProxiesList+    :: Text -- ^ 'tsplProject'+    -> TargetSSLProxiesList+targetSSLProxiesList pTsplProject_ =+    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+-- 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.+tsplOrderBy :: Lens' TargetSSLProxiesList (Maybe Text)+tsplOrderBy+  = lens _tsplOrderBy (\ s a -> s{_tsplOrderBy = a})++-- | Project ID for this request.+tsplProject :: Lens' TargetSSLProxiesList Text+tsplProject+  = lens _tsplProject (\ s a -> s{_tsplProject = a})++-- | Sets a filter expression for filtering listed resources, in the form+-- filter={expression}. Your {expression} must be in the format: field_name+-- comparison_string literal_string. The field_name is the name of the+-- field you want to compare. Only atomic field types are supported+-- (string, number, boolean). The comparison_string must be either eq+-- (equals) or ne (not equals). The literal_string is the string value to+-- filter to. The literal value must be valid for the type of field you are+-- filtering by (string, number, boolean). For string fields, the literal+-- value is interpreted as a regular expression using RE2 syntax. The+-- literal value must match the entire field. For example, to filter for+-- instances that do not have a name of example-instance, you would use+-- filter=name ne example-instance. You can filter on nested fields. For+-- example, you could filter on instances that have set the+-- scheduling.automaticRestart field to true. Use filtering on nested+-- fields to take advantage of labels to organize and search for results+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters.+tsplFilter :: Lens' TargetSSLProxiesList (Maybe Text)+tsplFilter+  = lens _tsplFilter (\ s a -> s{_tsplFilter = 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.+tsplPageToken :: Lens' TargetSSLProxiesList (Maybe Text)+tsplPageToken+  = lens _tsplPageToken+      (\ s a -> s{_tsplPageToken = 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.+tsplMaxResults :: Lens' TargetSSLProxiesList Word32+tsplMaxResults+  = lens _tsplMaxResults+      (\ s a -> s{_tsplMaxResults = a})+      . _Coerce++instance GoogleRequest TargetSSLProxiesList where+        type Rs TargetSSLProxiesList = TargetSSLProxyList+        type Scopes TargetSSLProxiesList =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute",+               "https://www.googleapis.com/auth/compute.readonly"]+        requestClient TargetSSLProxiesList'{..}+          = go _tsplProject _tsplOrderBy _tsplFilter+              _tsplPageToken+              (Just _tsplMaxResults)+              (Just AltJSON)+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy TargetSSLProxiesListResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/SetBackendService.hs view
@@ -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.TargetSSLProxies.SetBackendService+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Changes the BackendService for TargetSslProxy.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.setBackendService@.+module Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService+    (+    -- * REST Resource+      TargetSSLProxiesSetBackendServiceResource++    -- * Creating a Request+    , targetSSLProxiesSetBackendService+    , TargetSSLProxiesSetBackendService++    -- * Request Lenses+    , tspsbsProject+    , tspsbsPayload+    , tspsbsTargetSSLProxy+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.setBackendService@ method which the+-- 'TargetSSLProxiesSetBackendService' request conforms to.+type TargetSSLProxiesSetBackendServiceResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 Capture "targetSslProxy" Text :>+                   "setBackendService" :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON]+                         TargetSSLProxiesSetBackendServiceRequest+                         :> Post '[JSON] Operation++-- | Changes the BackendService for TargetSslProxy.+--+-- /See:/ 'targetSSLProxiesSetBackendService' smart constructor.+data TargetSSLProxiesSetBackendService = TargetSSLProxiesSetBackendService'+    { _tspsbsProject        :: !Text+    , _tspsbsPayload        :: !TargetSSLProxiesSetBackendServiceRequest+    , _tspsbsTargetSSLProxy :: !Text+    } 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:+--+-- * 'tspsbsProject'+--+-- * 'tspsbsPayload'+--+-- * 'tspsbsTargetSSLProxy'+targetSSLProxiesSetBackendService+    :: Text -- ^ 'tspsbsProject'+    -> TargetSSLProxiesSetBackendServiceRequest -- ^ 'tspsbsPayload'+    -> Text -- ^ 'tspsbsTargetSSLProxy'+    -> TargetSSLProxiesSetBackendService+targetSSLProxiesSetBackendService pTspsbsProject_ pTspsbsPayload_ pTspsbsTargetSSLProxy_ =+    TargetSSLProxiesSetBackendService'+    { _tspsbsProject = pTspsbsProject_+    , _tspsbsPayload = pTspsbsPayload_+    , _tspsbsTargetSSLProxy = pTspsbsTargetSSLProxy_+    }++-- | Project ID for this request.+tspsbsProject :: Lens' TargetSSLProxiesSetBackendService Text+tspsbsProject+  = lens _tspsbsProject+      (\ s a -> s{_tspsbsProject = a})++-- | Multipart request metadata.+tspsbsPayload :: Lens' TargetSSLProxiesSetBackendService TargetSSLProxiesSetBackendServiceRequest+tspsbsPayload+  = lens _tspsbsPayload+      (\ s a -> s{_tspsbsPayload = a})++-- | Name of the TargetSslProxy resource whose BackendService resource is to+-- be set.+tspsbsTargetSSLProxy :: Lens' TargetSSLProxiesSetBackendService Text+tspsbsTargetSSLProxy+  = lens _tspsbsTargetSSLProxy+      (\ s a -> s{_tspsbsTargetSSLProxy = a})++instance GoogleRequest+         TargetSSLProxiesSetBackendService where+        type Rs TargetSSLProxiesSetBackendService = Operation+        type Scopes TargetSSLProxiesSetBackendService =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient TargetSSLProxiesSetBackendService'{..}+          = go _tspsbsProject _tspsbsTargetSSLProxy+              (Just AltJSON)+              _tspsbsPayload+              computeService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy TargetSSLProxiesSetBackendServiceResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/SetProxyHeader.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Changes the ProxyHeaderType for TargetSslProxy.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.setProxyHeader@.+module Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader+    (+    -- * REST Resource+      TargetSSLProxiesSetProxyHeaderResource++    -- * Creating a Request+    , targetSSLProxiesSetProxyHeader+    , TargetSSLProxiesSetProxyHeader++    -- * Request Lenses+    , tspsphProject+    , tspsphPayload+    , tspsphTargetSSLProxy+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.setProxyHeader@ method which the+-- 'TargetSSLProxiesSetProxyHeader' request conforms to.+type TargetSSLProxiesSetProxyHeaderResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 Capture "targetSslProxy" Text :>+                   "setProxyHeader" :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] TargetSSLProxiesSetProxyHeaderRequest+                         :> Post '[JSON] Operation++-- | Changes the ProxyHeaderType for TargetSslProxy.+--+-- /See:/ 'targetSSLProxiesSetProxyHeader' smart constructor.+data TargetSSLProxiesSetProxyHeader = TargetSSLProxiesSetProxyHeader'+    { _tspsphProject        :: !Text+    , _tspsphPayload        :: !TargetSSLProxiesSetProxyHeaderRequest+    , _tspsphTargetSSLProxy :: !Text+    } 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:+--+-- * 'tspsphProject'+--+-- * 'tspsphPayload'+--+-- * 'tspsphTargetSSLProxy'+targetSSLProxiesSetProxyHeader+    :: Text -- ^ 'tspsphProject'+    -> TargetSSLProxiesSetProxyHeaderRequest -- ^ 'tspsphPayload'+    -> Text -- ^ 'tspsphTargetSSLProxy'+    -> TargetSSLProxiesSetProxyHeader+targetSSLProxiesSetProxyHeader pTspsphProject_ pTspsphPayload_ pTspsphTargetSSLProxy_ =+    TargetSSLProxiesSetProxyHeader'+    { _tspsphProject = pTspsphProject_+    , _tspsphPayload = pTspsphPayload_+    , _tspsphTargetSSLProxy = pTspsphTargetSSLProxy_+    }++-- | Project ID for this request.+tspsphProject :: Lens' TargetSSLProxiesSetProxyHeader Text+tspsphProject+  = lens _tspsphProject+      (\ s a -> s{_tspsphProject = a})++-- | Multipart request metadata.+tspsphPayload :: Lens' TargetSSLProxiesSetProxyHeader TargetSSLProxiesSetProxyHeaderRequest+tspsphPayload+  = lens _tspsphPayload+      (\ s a -> s{_tspsphPayload = a})++-- | Name of the TargetSslProxy resource whose ProxyHeader is to be set.+tspsphTargetSSLProxy :: Lens' TargetSSLProxiesSetProxyHeader Text+tspsphTargetSSLProxy+  = lens _tspsphTargetSSLProxy+      (\ s a -> s{_tspsphTargetSSLProxy = a})++instance GoogleRequest TargetSSLProxiesSetProxyHeader+         where+        type Rs TargetSSLProxiesSetProxyHeader = Operation+        type Scopes TargetSSLProxiesSetProxyHeader =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient TargetSSLProxiesSetProxyHeader'{..}+          = go _tspsphProject _tspsphTargetSSLProxy+              (Just AltJSON)+              _tspsphPayload+              computeService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy TargetSSLProxiesSetProxyHeaderResource)+                      mempty
+ gen/Network/Google/Resource/Compute/TargetSSLProxies/SetSSLCertificates.hs view
@@ -0,0 +1,125 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Changes SslCertificates for TargetSslProxy.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetSslProxies.setSslCertificates@.+module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates+    (+    -- * REST Resource+      TargetSSLProxiesSetSSLCertificatesResource++    -- * Creating a Request+    , targetSSLProxiesSetSSLCertificates+    , TargetSSLProxiesSetSSLCertificates++    -- * Request Lenses+    , tspsscProject+    , tspsscPayload+    , tspsscTargetSSLProxy+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.targetSslProxies.setSslCertificates@ method which the+-- 'TargetSSLProxiesSetSSLCertificates' request conforms to.+type TargetSSLProxiesSetSSLCertificatesResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "targetSslProxies" :>+                 Capture "targetSslProxy" Text :>+                   "setSslCertificates" :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON]+                         TargetSSLProxiesSetSSLCertificatesRequest+                         :> Post '[JSON] Operation++-- | Changes SslCertificates for TargetSslProxy.+--+-- /See:/ 'targetSSLProxiesSetSSLCertificates' smart constructor.+data TargetSSLProxiesSetSSLCertificates = TargetSSLProxiesSetSSLCertificates'+    { _tspsscProject        :: !Text+    , _tspsscPayload        :: !TargetSSLProxiesSetSSLCertificatesRequest+    , _tspsscTargetSSLProxy :: !Text+    } 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:+--+-- * 'tspsscProject'+--+-- * 'tspsscPayload'+--+-- * 'tspsscTargetSSLProxy'+targetSSLProxiesSetSSLCertificates+    :: Text -- ^ 'tspsscProject'+    -> TargetSSLProxiesSetSSLCertificatesRequest -- ^ 'tspsscPayload'+    -> Text -- ^ 'tspsscTargetSSLProxy'+    -> TargetSSLProxiesSetSSLCertificates+targetSSLProxiesSetSSLCertificates pTspsscProject_ pTspsscPayload_ pTspsscTargetSSLProxy_ =+    TargetSSLProxiesSetSSLCertificates'+    { _tspsscProject = pTspsscProject_+    , _tspsscPayload = pTspsscPayload_+    , _tspsscTargetSSLProxy = pTspsscTargetSSLProxy_+    }++-- | Project ID for this request.+tspsscProject :: Lens' TargetSSLProxiesSetSSLCertificates Text+tspsscProject+  = lens _tspsscProject+      (\ s a -> s{_tspsscProject = a})++-- | Multipart request metadata.+tspsscPayload :: Lens' TargetSSLProxiesSetSSLCertificates TargetSSLProxiesSetSSLCertificatesRequest+tspsscPayload+  = lens _tspsscPayload+      (\ s a -> s{_tspsscPayload = a})++-- | Name of the TargetSslProxy resource whose SslCertificate resource is to+-- be set.+tspsscTargetSSLProxy :: Lens' TargetSSLProxiesSetSSLCertificates Text+tspsscTargetSSLProxy+  = lens _tspsscTargetSSLProxy+      (\ s a -> s{_tspsscTargetSSLProxy = a})++instance GoogleRequest+         TargetSSLProxiesSetSSLCertificates where+        type Rs TargetSSLProxiesSetSSLCertificates =+             Operation+        type Scopes TargetSSLProxiesSetSSLCertificates =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient TargetSSLProxiesSetSSLCertificates'{..}+          = go _tspsscProject _tspsscTargetSSLProxy+              (Just AltJSON)+              _tspsscPayload+              computeService+          where go+                  = buildClient+                      (Proxy ::+                         Proxy TargetSSLProxiesSetSSLCertificatesResource)+                      mempty
gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs view
@@ -33,6 +33,7 @@     , TargetVPNGatewaysAggregatedList      -- * Request Lenses+    , tvgalOrderBy     , tvgalProject     , tvgalFilter     , tvgalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "targetVpnGateways" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] TargetVPNGatewayAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] TargetVPNGatewayAggregatedList  -- | Retrieves an aggregated list of target VPN gateways. -- -- /See:/ 'targetVPNGatewaysAggregatedList' smart constructor. data TargetVPNGatewaysAggregatedList = TargetVPNGatewaysAggregatedList'-    { _tvgalProject    :: !Text+    { _tvgalOrderBy    :: !(Maybe Text)+    , _tvgalProject    :: !Text     , _tvgalFilter     :: !(Maybe Text)     , _tvgalPageToken  :: !(Maybe Text)     , _tvgalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tvgalOrderBy'+-- -- * 'tvgalProject' -- -- * 'tvgalFilter'@@ -83,12 +88,25 @@     -> TargetVPNGatewaysAggregatedList targetVPNGatewaysAggregatedList pTvgalProject_ =     TargetVPNGatewaysAggregatedList'-    { _tvgalProject = pTvgalProject_+    { _tvgalOrderBy = Nothing+    , _tvgalProject = pTvgalProject_     , _tvgalFilter = Nothing     , _tvgalPageToken = Nothing     , _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+-- 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.+tvgalOrderBy :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)+tvgalOrderBy+  = lens _tvgalOrderBy (\ s a -> s{_tvgalOrderBy = a})+ -- | Project ID for this request. tvgalProject :: Lens' TargetVPNGatewaysAggregatedList Text tvgalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tvgalFilter :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text) tvgalFilter   = lens _tvgalFilter (\ s a -> s{_tvgalFilter = a})@@ -145,7 +162,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetVPNGatewaysAggregatedList'{..}-          = go _tvgalProject _tvgalFilter _tvgalPageToken+          = go _tvgalProject _tvgalOrderBy _tvgalFilter+              _tvgalPageToken               (Just _tvgalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs view
@@ -34,6 +34,7 @@     , TargetVPNGatewaysList      -- * Request Lenses+    , tvglOrderBy     , tvglProject     , tvglFilter     , tvglRegion@@ -54,18 +55,20 @@              "regions" :>                Capture "region" Text :>                  "targetVpnGateways" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :>-                           Get '[JSON] TargetVPNGatewayList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :>+                             Get '[JSON] TargetVPNGatewayList  -- | Retrieves a list of target VPN gateways available to the specified -- project and region. -- -- /See:/ 'targetVPNGatewaysList' smart constructor. data TargetVPNGatewaysList = TargetVPNGatewaysList'-    { _tvglProject    :: !Text+    { _tvglOrderBy    :: !(Maybe Text)+    , _tvglProject    :: !Text     , _tvglFilter     :: !(Maybe Text)     , _tvglRegion     :: !Text     , _tvglPageToken  :: !(Maybe Text)@@ -76,6 +79,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'tvglOrderBy'+-- -- * 'tvglProject' -- -- * 'tvglFilter'@@ -91,13 +96,26 @@     -> TargetVPNGatewaysList targetVPNGatewaysList pTvglProject_ pTvglRegion_ =     TargetVPNGatewaysList'-    { _tvglProject = pTvglProject_+    { _tvglOrderBy = Nothing+    , _tvglProject = pTvglProject_     , _tvglFilter = Nothing     , _tvglRegion = pTvglRegion_     , _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+-- 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.+tvglOrderBy :: Lens' TargetVPNGatewaysList (Maybe Text)+tvglOrderBy+  = lens _tvglOrderBy (\ s a -> s{_tvglOrderBy = a})+ -- | Project ID for this request. tvglProject :: Lens' TargetVPNGatewaysList Text tvglProject@@ -114,16 +132,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. tvglFilter :: Lens' TargetVPNGatewaysList (Maybe Text) tvglFilter   = lens _tvglFilter (\ s a -> s{_tvglFilter = a})@@ -157,7 +174,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient TargetVPNGatewaysList'{..}-          = go _tvglProject _tvglRegion _tvglFilter+          = go _tvglProject _tvglRegion _tvglOrderBy+              _tvglFilter               _tvglPageToken               (Just _tvglMaxResults)               (Just AltJSON)
+ gen/Network/Google/Resource/Compute/URLMaps/InvalidateCache.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.Compute.URLMaps.InvalidateCache+-- 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)+--+-- Initiates a cache invalidation operation, invalidating the specified+-- path, scoped to the specified UrlMap.+--+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.invalidateCache@.+module Network.Google.Resource.Compute.URLMaps.InvalidateCache+    (+    -- * REST Resource+      URLMapsInvalidateCacheResource++    -- * Creating a Request+    , urlMapsInvalidateCache+    , URLMapsInvalidateCache++    -- * Request Lenses+    , umicURLMap+    , umicProject+    , umicPayload+    ) where++import           Network.Google.Compute.Types+import           Network.Google.Prelude++-- | A resource alias for @compute.urlMaps.invalidateCache@ method which the+-- 'URLMapsInvalidateCache' request conforms to.+type URLMapsInvalidateCacheResource =+     "compute" :>+       "v1" :>+         "projects" :>+           Capture "project" Text :>+             "global" :>+               "urlMaps" :>+                 Capture "urlMap" Text :>+                   "invalidateCache" :>+                     QueryParam "alt" AltJSON :>+                       ReqBody '[JSON] CacheInvalidationRule :>+                         Post '[JSON] Operation++-- | Initiates a cache invalidation operation, invalidating the specified+-- path, scoped to the specified UrlMap.+--+-- /See:/ 'urlMapsInvalidateCache' smart constructor.+data URLMapsInvalidateCache = URLMapsInvalidateCache'+    { _umicURLMap  :: !Text+    , _umicProject :: !Text+    , _umicPayload :: !CacheInvalidationRule+    } 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:+--+-- * 'umicURLMap'+--+-- * 'umicProject'+--+-- * 'umicPayload'+urlMapsInvalidateCache+    :: Text -- ^ 'umicURLMap'+    -> Text -- ^ 'umicProject'+    -> CacheInvalidationRule -- ^ 'umicPayload'+    -> URLMapsInvalidateCache+urlMapsInvalidateCache pUmicURLMap_ pUmicProject_ pUmicPayload_ =+    URLMapsInvalidateCache'+    { _umicURLMap = pUmicURLMap_+    , _umicProject = pUmicProject_+    , _umicPayload = pUmicPayload_+    }++-- | Name of the UrlMap scoping this request.+umicURLMap :: Lens' URLMapsInvalidateCache Text+umicURLMap+  = lens _umicURLMap (\ s a -> s{_umicURLMap = a})++-- | Project ID for this request.+umicProject :: Lens' URLMapsInvalidateCache Text+umicProject+  = lens _umicProject (\ s a -> s{_umicProject = a})++-- | Multipart request metadata.+umicPayload :: Lens' URLMapsInvalidateCache CacheInvalidationRule+umicPayload+  = lens _umicPayload (\ s a -> s{_umicPayload = a})++instance GoogleRequest URLMapsInvalidateCache where+        type Rs URLMapsInvalidateCache = Operation+        type Scopes URLMapsInvalidateCache =+             '["https://www.googleapis.com/auth/cloud-platform",+               "https://www.googleapis.com/auth/compute"]+        requestClient URLMapsInvalidateCache'{..}+          = go _umicProject _umicURLMap (Just AltJSON)+              _umicPayload+              computeService+          where go+                  = buildClient+                      (Proxy :: Proxy URLMapsInvalidateCacheResource)+                      mempty
gen/Network/Google/Resource/Compute/URLMaps/List.hs view
@@ -34,6 +34,7 @@     , URLMapsList      -- * Request Lenses+    , umlOrderBy     , umlProject     , umlFilter     , umlPageToken@@ -52,17 +53,19 @@            Capture "project" Text :>              "global" :>                "urlMaps" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :> Get '[JSON] URLMapList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :> Get '[JSON] URLMapList  -- | Retrieves the list of UrlMap resources available to the specified -- project. -- -- /See:/ 'urlMapsList' smart constructor. data URLMapsList = URLMapsList'-    { _umlProject    :: !Text+    { _umlOrderBy    :: !(Maybe Text)+    , _umlProject    :: !Text     , _umlFilter     :: !(Maybe Text)     , _umlPageToken  :: !(Maybe Text)     , _umlMaxResults :: !(Textual Word32)@@ -72,6 +75,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'umlOrderBy'+-- -- * 'umlProject' -- -- * 'umlFilter'@@ -84,12 +89,25 @@     -> URLMapsList urlMapsList pUmlProject_ =     URLMapsList'-    { _umlProject = pUmlProject_+    { _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+-- 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.+umlOrderBy :: Lens' URLMapsList (Maybe Text)+umlOrderBy+  = lens _umlOrderBy (\ s a -> s{_umlOrderBy = a})+ -- | Project ID for this request. umlProject :: Lens' URLMapsList Text umlProject@@ -106,16 +124,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. umlFilter :: Lens' URLMapsList (Maybe Text) umlFilter   = lens _umlFilter (\ s a -> s{_umlFilter = a})@@ -143,7 +160,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient URLMapsList'{..}-          = go _umlProject _umlFilter _umlPageToken+          = go _umlProject _umlOrderBy _umlFilter _umlPageToken               (Just _umlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/URLMaps/Patch.hs view
@@ -20,8 +20,8 @@ -- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Updates the entire content of the UrlMap resource. This method supports--- patch semantics.+-- Updates the specified UrlMap resource with the data included in the+-- request. This method supports patch semantics. -- -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.patch@. module Network.Google.Resource.Compute.URLMaps.Patch@@ -55,8 +55,8 @@                    QueryParam "alt" AltJSON :>                      ReqBody '[JSON] URLMap :> Patch '[JSON] Operation --- | Updates the entire content of the UrlMap resource. This method supports--- patch semantics.+-- | Updates the specified UrlMap resource with the data included in the+-- request. This method supports patch semantics. -- -- /See:/ 'urlMapsPatch' smart constructor. data URLMapsPatch = URLMapsPatch'
gen/Network/Google/Resource/Compute/URLMaps/Update.hs view
@@ -20,7 +20,8 @@ -- Stability   : auto-generated -- Portability : non-portable (GHC extensions) ----- Updates the entire content of the UrlMap resource.+-- Updates the specified UrlMap resource with the data included in the+-- request. -- -- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.update@. module Network.Google.Resource.Compute.URLMaps.Update@@ -54,7 +55,8 @@                    QueryParam "alt" AltJSON :>                      ReqBody '[JSON] URLMap :> Put '[JSON] Operation --- | Updates the entire content of the UrlMap resource.+-- | Updates the specified UrlMap resource with the data included in the+-- request. -- -- /See:/ 'urlMapsUpdate' smart constructor. data URLMapsUpdate = URLMapsUpdate'
gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs view
@@ -33,6 +33,7 @@     , VPNTunnelsAggregatedList      -- * Request Lenses+    , vtalOrderBy     , vtalProject     , vtalFilter     , vtalPageToken@@ -51,17 +52,19 @@            Capture "project" Text :>              "aggregated" :>                "vpnTunnels" :>-                 QueryParam "filter" Text :>-                   QueryParam "pageToken" Text :>-                     QueryParam "maxResults" (Textual Word32) :>-                       QueryParam "alt" AltJSON :>-                         Get '[JSON] VPNTunnelAggregatedList+                 QueryParam "orderBy" Text :>+                   QueryParam "filter" Text :>+                     QueryParam "pageToken" Text :>+                       QueryParam "maxResults" (Textual Word32) :>+                         QueryParam "alt" AltJSON :>+                           Get '[JSON] VPNTunnelAggregatedList  -- | Retrieves an aggregated list of VPN tunnels. -- -- /See:/ 'vpnTunnelsAggregatedList' smart constructor. data VPNTunnelsAggregatedList = VPNTunnelsAggregatedList'-    { _vtalProject    :: !Text+    { _vtalOrderBy    :: !(Maybe Text)+    , _vtalProject    :: !Text     , _vtalFilter     :: !(Maybe Text)     , _vtalPageToken  :: !(Maybe Text)     , _vtalMaxResults :: !(Textual Word32)@@ -71,6 +74,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'vtalOrderBy'+-- -- * 'vtalProject' -- -- * 'vtalFilter'@@ -83,12 +88,25 @@     -> VPNTunnelsAggregatedList vpnTunnelsAggregatedList pVtalProject_ =     VPNTunnelsAggregatedList'-    { _vtalProject = pVtalProject_+    { _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+-- 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.+vtalOrderBy :: Lens' VPNTunnelsAggregatedList (Maybe Text)+vtalOrderBy+  = lens _vtalOrderBy (\ s a -> s{_vtalOrderBy = a})+ -- | Project ID for this request. vtalProject :: Lens' VPNTunnelsAggregatedList Text vtalProject@@ -105,16 +123,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. vtalFilter :: Lens' VPNTunnelsAggregatedList (Maybe Text) vtalFilter   = lens _vtalFilter (\ s a -> s{_vtalFilter = a})@@ -144,7 +161,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient VPNTunnelsAggregatedList'{..}-          = go _vtalProject _vtalFilter _vtalPageToken+          = go _vtalProject _vtalOrderBy _vtalFilter+              _vtalPageToken               (Just _vtalMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/VPNTunnels/List.hs view
@@ -34,6 +34,7 @@     , VPNTunnelsList      -- * Request Lenses+    , vtlOrderBy     , vtlProject     , vtlFilter     , vtlRegion@@ -54,17 +55,19 @@              "regions" :>                Capture "region" Text :>                  "vpnTunnels" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList  -- | Retrieves a list of VpnTunnel resources contained in the specified -- project and region. -- -- /See:/ 'vpnTunnelsList' smart constructor. data VPNTunnelsList = VPNTunnelsList'-    { _vtlProject    :: !Text+    { _vtlOrderBy    :: !(Maybe Text)+    , _vtlProject    :: !Text     , _vtlFilter     :: !(Maybe Text)     , _vtlRegion     :: !Text     , _vtlPageToken  :: !(Maybe Text)@@ -75,6 +78,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'vtlOrderBy'+-- -- * 'vtlProject' -- -- * 'vtlFilter'@@ -90,13 +95,26 @@     -> VPNTunnelsList vpnTunnelsList pVtlProject_ pVtlRegion_ =     VPNTunnelsList'-    { _vtlProject = pVtlProject_+    { _vtlOrderBy = Nothing+    , _vtlProject = pVtlProject_     , _vtlFilter = Nothing     , _vtlRegion = pVtlRegion_     , _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+-- 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.+vtlOrderBy :: Lens' VPNTunnelsList (Maybe Text)+vtlOrderBy+  = lens _vtlOrderBy (\ s a -> s{_vtlOrderBy = a})+ -- | Project ID for this request. vtlProject :: Lens' VPNTunnelsList Text vtlProject@@ -113,16 +131,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. vtlFilter :: Lens' VPNTunnelsList (Maybe Text) vtlFilter   = lens _vtlFilter (\ s a -> s{_vtlFilter = a})@@ -155,7 +172,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient VPNTunnelsList'{..}-          = go _vtlProject _vtlRegion _vtlFilter _vtlPageToken+          = go _vtlProject _vtlRegion _vtlOrderBy _vtlFilter+              _vtlPageToken               (Just _vtlMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/ZoneOperations/List.hs view
@@ -34,6 +34,7 @@     , ZoneOperationsList      -- * Request Lenses+    , zolOrderBy     , zolProject     , zolZone     , zolFilter@@ -54,17 +55,19 @@              "zones" :>                Capture "zone" Text :>                  "operations" :>-                   QueryParam "filter" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "maxResults" (Textual Word32) :>-                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList+                   QueryParam "orderBy" Text :>+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "maxResults" (Textual Word32) :>+                           QueryParam "alt" AltJSON :> Get '[JSON] OperationList  -- | Retrieves a list of Operation resources contained within the specified -- zone. -- -- /See:/ 'zoneOperationsList' smart constructor. data ZoneOperationsList = ZoneOperationsList'-    { _zolProject    :: !Text+    { _zolOrderBy    :: !(Maybe Text)+    , _zolProject    :: !Text     , _zolZone       :: !Text     , _zolFilter     :: !(Maybe Text)     , _zolPageToken  :: !(Maybe Text)@@ -75,6 +78,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'zolOrderBy'+-- -- * 'zolProject' -- -- * 'zolZone'@@ -90,13 +95,26 @@     -> ZoneOperationsList zoneOperationsList pZolProject_ pZolZone_ =     ZoneOperationsList'-    { _zolProject = pZolProject_+    { _zolOrderBy = Nothing+    , _zolProject = pZolProject_     , _zolZone = pZolZone_     , _zolFilter = Nothing     , _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+-- 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.+zolOrderBy :: Lens' ZoneOperationsList (Maybe Text)+zolOrderBy+  = lens _zolOrderBy (\ s a -> s{_zolOrderBy = a})+ -- | Project ID for this request. zolProject :: Lens' ZoneOperationsList Text zolProject@@ -117,16 +135,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. zolFilter :: Lens' ZoneOperationsList (Maybe Text) zolFilter   = lens _zolFilter (\ s a -> s{_zolFilter = a})@@ -154,7 +171,8 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient ZoneOperationsList'{..}-          = go _zolProject _zolZone _zolFilter _zolPageToken+          = go _zolProject _zolZone _zolOrderBy _zolFilter+              _zolPageToken               (Just _zolMaxResults)               (Just AltJSON)               computeService
gen/Network/Google/Resource/Compute/Zones/List.hs view
@@ -33,6 +33,7 @@     , ZonesList      -- * Request Lenses+    , zlOrderBy     , zlProject     , zlFilter     , zlPageToken@@ -50,16 +51,18 @@          "projects" :>            Capture "project" Text :>              "zones" :>-               QueryParam "filter" Text :>-                 QueryParam "pageToken" Text :>-                   QueryParam "maxResults" (Textual Word32) :>-                     QueryParam "alt" AltJSON :> Get '[JSON] ZoneList+               QueryParam "orderBy" Text :>+                 QueryParam "filter" Text :>+                   QueryParam "pageToken" Text :>+                     QueryParam "maxResults" (Textual Word32) :>+                       QueryParam "alt" AltJSON :> Get '[JSON] ZoneList  -- | Retrieves the list of Zone resources available to the specified project. -- -- /See:/ 'zonesList' smart constructor. data ZonesList = ZonesList'-    { _zlProject    :: !Text+    { _zlOrderBy    :: !(Maybe Text)+    , _zlProject    :: !Text     , _zlFilter     :: !(Maybe Text)     , _zlPageToken  :: !(Maybe Text)     , _zlMaxResults :: !(Textual Word32)@@ -69,6 +72,8 @@ -- -- Use one of the following lenses to modify other fields as desired: --+-- * 'zlOrderBy'+-- -- * 'zlProject' -- -- * 'zlFilter'@@ -81,12 +86,25 @@     -> ZonesList zonesList pZlProject_ =     ZonesList'-    { _zlProject = pZlProject_+    { _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+-- 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.+zlOrderBy :: Lens' ZonesList (Maybe Text)+zlOrderBy+  = lens _zlOrderBy (\ s a -> s{_zlOrderBy = a})+ -- | Project ID for this request. zlProject :: Lens' ZonesList Text zlProject@@ -103,16 +121,15 @@ -- value is interpreted as a regular expression using RE2 syntax. The -- literal value must match the entire field. For example, to filter for -- instances that do not have a name of example-instance, you would use--- filter=name ne example-instance. Compute Engine Beta API Only: When--- filtering in the Beta API, you can also filter on nested fields. For+-- filter=name ne example-instance. You can filter on nested fields. For -- example, you could filter on instances that have set the -- scheduling.automaticRestart field to true. Use filtering on nested -- fields to take advantage of labels to organize and search for results--- based on label values. The Beta API also supports filtering on multiple--- expressions by providing each separate expression within parentheses.--- For example, (scheduling.automaticRestart eq true) (zone eq--- us-central1-f). Multiple expressions are treated as AND expressions,--- meaning that resources must match all expressions to pass the filters.+-- based on label values. To filter on multiple expressions, provide each+-- separate expression within parentheses. For example,+-- (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple+-- expressions are treated as AND expressions, meaning that resources must+-- match all expressions to pass the filters. zlFilter :: Lens' ZonesList (Maybe Text) zlFilter = lens _zlFilter (\ s a -> s{_zlFilter = a}) @@ -138,7 +155,7 @@                "https://www.googleapis.com/auth/compute",                "https://www.googleapis.com/auth/compute.readonly"]         requestClient ZonesList'{..}-          = go _zlProject _zlFilter _zlPageToken+          = go _zlProject _zlOrderBy _zlFilter _zlPageToken               (Just _zlMaxResults)               (Just AltJSON)               computeService
gogol-compute.cabal view
@@ -1,5 +1,5 @@ name:                  gogol-compute-version:               0.1.0+version:               0.1.1 synopsis:              Google Compute Engine SDK. homepage:              https://github.com/brendanhay/gogol bug-reports:           https://github.com/brendanhay/gogol/issues@@ -11,7 +11,7 @@ category:              Network, Google, Cloud build-type:            Simple cabal-version:         >= 1.10-extra-source-files:    README.md+extra-source-files:    README.md src/.gitkeep  description:     Creates and runs virtual machines on Google Cloud Platform.@@ -101,6 +101,12 @@         , Network.Google.Resource.Compute.HTTPSHealthChecks.List         , Network.Google.Resource.Compute.HTTPSHealthChecks.Patch         , Network.Google.Resource.Compute.HTTPSHealthChecks.Update+        , Network.Google.Resource.Compute.HealthChecks.Delete+        , Network.Google.Resource.Compute.HealthChecks.Get+        , Network.Google.Resource.Compute.HealthChecks.Insert+        , Network.Google.Resource.Compute.HealthChecks.List+        , Network.Google.Resource.Compute.HealthChecks.Patch+        , Network.Google.Resource.Compute.HealthChecks.Update         , Network.Google.Resource.Compute.Images.Delete         , Network.Google.Resource.Compute.Images.Deprecate         , Network.Google.Resource.Compute.Images.Get@@ -149,6 +155,7 @@         , Network.Google.Resource.Compute.Instances.SetScheduling         , Network.Google.Resource.Compute.Instances.SetTags         , Network.Google.Resource.Compute.Instances.Start+        , Network.Google.Resource.Compute.Instances.StartWithEncryptionKey         , Network.Google.Resource.Compute.Instances.Stop         , Network.Google.Resource.Compute.Licenses.Get         , Network.Google.Resource.Compute.MachineTypes.AggregatedList@@ -168,6 +175,15 @@         , Network.Google.Resource.Compute.RegionOperations.List         , Network.Google.Resource.Compute.Regions.Get         , Network.Google.Resource.Compute.Regions.List+        , Network.Google.Resource.Compute.Routers.AggregatedList+        , Network.Google.Resource.Compute.Routers.Delete+        , Network.Google.Resource.Compute.Routers.Get+        , Network.Google.Resource.Compute.Routers.GetRouterStatus+        , Network.Google.Resource.Compute.Routers.Insert+        , Network.Google.Resource.Compute.Routers.List+        , Network.Google.Resource.Compute.Routers.Patch+        , Network.Google.Resource.Compute.Routers.Preview+        , Network.Google.Resource.Compute.Routers.Update         , Network.Google.Resource.Compute.Routes.Delete         , Network.Google.Resource.Compute.Routes.Get         , Network.Google.Resource.Compute.Routes.Insert@@ -211,6 +227,13 @@         , Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck         , Network.Google.Resource.Compute.TargetPools.RemoveInstance         , Network.Google.Resource.Compute.TargetPools.SetBackup+        , Network.Google.Resource.Compute.TargetSSLProxies.Delete+        , Network.Google.Resource.Compute.TargetSSLProxies.Get+        , Network.Google.Resource.Compute.TargetSSLProxies.Insert+        , Network.Google.Resource.Compute.TargetSSLProxies.List+        , Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService+        , Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader+        , Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates         , Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList         , Network.Google.Resource.Compute.TargetVPNGateways.Delete         , Network.Google.Resource.Compute.TargetVPNGateways.Get@@ -219,6 +242,7 @@         , Network.Google.Resource.Compute.URLMaps.Delete         , Network.Google.Resource.Compute.URLMaps.Get         , Network.Google.Resource.Compute.URLMaps.Insert+        , Network.Google.Resource.Compute.URLMaps.InvalidateCache         , Network.Google.Resource.Compute.URLMaps.List         , Network.Google.Resource.Compute.URLMaps.Patch         , Network.Google.Resource.Compute.URLMaps.Update@@ -239,5 +263,5 @@         , Network.Google.Compute.Types.Sum      build-depends:-          gogol-core == 0.1.0.*+          gogol-core == 0.1.1.*         , base       >= 4.7 && < 5
+ src/.gitkeep view