diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
diff --git a/gen/Network/Google/AppEngine.hs b/gen/Network/Google/AppEngine.hs
--- a/gen/Network/Google/AppEngine.hs
+++ b/gen/Network/Google/AppEngine.hs
@@ -171,11 +171,6 @@
     , sCode
     , sMessage
 
-    -- ** OperationSchema
-    , OperationSchema
-    , operationSchema
-    , osAddtional
-
     -- ** LocationSchema
     , LocationSchema
     , locationSchema
@@ -273,6 +268,11 @@
     , acExpireTime
     , acVisibleDomainMAppings
 
+    -- ** VPCAccessConnector
+    , VPCAccessConnector
+    , vpcAccessConnector
+    , vacName
+
     -- ** APIConfigHandler
     , APIConfigHandler
     , apiConfigHandler
@@ -432,15 +432,6 @@
     , asMaxPendingLatency
     , asStandardSchedulerSettings
 
-    -- ** OperationMetadataV1Beta5
-    , OperationMetadataV1Beta5
-    , operationMetadataV1Beta5
-    , oInsertTime
-    , oUser
-    , oMethod
-    , oEndTime
-    , oTarget
-
     -- ** Volume
     , Volume
     , volume
@@ -467,6 +458,7 @@
     -- ** Network
     , Network
     , network
+    , nSessionAffinity
     , nSubnetworkName
     , nForwardedPorts
     , nInstanceTag
@@ -512,6 +504,7 @@
     -- ** FeatureSettings
     , FeatureSettings
     , featureSettings
+    , fsUseContainerOptimizedOS
     , fsSplitHealthChecks
 
     -- ** CertificateRawData
@@ -600,6 +593,7 @@
     , verInstanceClass
     , verRuntimeChannel
     , verRuntimeMainExecutablePath
+    , verVPCAccessConnector
     , verHealthCheck
     , verEndpointsAPIService
     , verEnv
@@ -695,12 +689,7 @@
     -- ** OperationMetadata
     , OperationMetadata
     , operationMetadata
-    , omInsertTime
-    , omUser
-    , omMethod
-    , omEndTime
-    , omOperationType
-    , omTarget
+    , omAddtional
 
     -- ** URLMapAuthFailAction
     , URLMapAuthFailAction (..)
diff --git a/gen/Network/Google/AppEngine/Types.hs b/gen/Network/Google/AppEngine/Types.hs
--- a/gen/Network/Google/AppEngine/Types.hs
+++ b/gen/Network/Google/AppEngine/Types.hs
@@ -48,11 +48,6 @@
     , sCode
     , sMessage
 
-    -- * OperationSchema
-    , OperationSchema
-    , operationSchema
-    , osAddtional
-
     -- * LocationSchema
     , LocationSchema
     , locationSchema
@@ -150,6 +145,11 @@
     , acExpireTime
     , acVisibleDomainMAppings
 
+    -- * VPCAccessConnector
+    , VPCAccessConnector
+    , vpcAccessConnector
+    , vacName
+
     -- * APIConfigHandler
     , APIConfigHandler
     , apiConfigHandler
@@ -309,15 +309,6 @@
     , asMaxPendingLatency
     , asStandardSchedulerSettings
 
-    -- * OperationMetadataV1Beta5
-    , OperationMetadataV1Beta5
-    , operationMetadataV1Beta5
-    , oInsertTime
-    , oUser
-    , oMethod
-    , oEndTime
-    , oTarget
-
     -- * Volume
     , Volume
     , volume
@@ -344,6 +335,7 @@
     -- * Network
     , Network
     , network
+    , nSessionAffinity
     , nSubnetworkName
     , nForwardedPorts
     , nInstanceTag
@@ -389,6 +381,7 @@
     -- * FeatureSettings
     , FeatureSettings
     , featureSettings
+    , fsUseContainerOptimizedOS
     , fsSplitHealthChecks
 
     -- * CertificateRawData
@@ -477,6 +470,7 @@
     , verInstanceClass
     , verRuntimeChannel
     , verRuntimeMainExecutablePath
+    , verVPCAccessConnector
     , verHealthCheck
     , verEndpointsAPIService
     , verEnv
@@ -572,12 +566,7 @@
     -- * OperationMetadata
     , OperationMetadata
     , operationMetadata
-    , omInsertTime
-    , omUser
-    , omMethod
-    , omEndTime
-    , omOperationType
-    , omTarget
+    , omAddtional
 
     -- * URLMapAuthFailAction
     , URLMapAuthFailAction (..)
@@ -710,12 +699,12 @@
 
 -- | View your data across Google Cloud Platform services
 cloudPlatformReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform.read-only"]
-cloudPlatformReadOnlyScope = Proxy;
+cloudPlatformReadOnlyScope = Proxy
 
 -- | View and manage your applications deployed on Google App Engine
 appEngineAdminScope :: Proxy '["https://www.googleapis.com/auth/appengine.admin"]
-appEngineAdminScope = Proxy;
+appEngineAdminScope = Proxy
 
 -- | View and manage your data across Google Cloud Platform services
 cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy;
+cloudPlatformScope = Proxy
diff --git a/gen/Network/Google/AppEngine/Types/Product.hs b/gen/Network/Google/AppEngine/Types/Product.hs
--- a/gen/Network/Google/AppEngine/Types/Product.hs
+++ b/gen/Network/Google/AppEngine/Types/Product.hs
@@ -24,5889 +24,5971 @@
 -- flexible environment.
 --
 -- /See:/ 'networkUtilization' smart constructor.
-data NetworkUtilization = NetworkUtilization'
-    { _nuTargetReceivedBytesPerSecond   :: !(Maybe (Textual Int32))
-    , _nuTargetSentPacketsPerSecond     :: !(Maybe (Textual Int32))
-    , _nuTargetReceivedPacketsPerSecond :: !(Maybe (Textual Int32))
-    , _nuTargetSentBytesPerSecond       :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NetworkUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nuTargetReceivedBytesPerSecond'
---
--- * 'nuTargetSentPacketsPerSecond'
---
--- * 'nuTargetReceivedPacketsPerSecond'
---
--- * 'nuTargetSentBytesPerSecond'
-networkUtilization
-    :: NetworkUtilization
-networkUtilization =
-    NetworkUtilization'
-    { _nuTargetReceivedBytesPerSecond = Nothing
-    , _nuTargetSentPacketsPerSecond = Nothing
-    , _nuTargetReceivedPacketsPerSecond = Nothing
-    , _nuTargetSentBytesPerSecond = Nothing
-    }
-
--- | Target bytes received per second.
-nuTargetReceivedBytesPerSecond :: Lens' NetworkUtilization (Maybe Int32)
-nuTargetReceivedBytesPerSecond
-  = lens _nuTargetReceivedBytesPerSecond
-      (\ s a -> s{_nuTargetReceivedBytesPerSecond = a})
-      . mapping _Coerce
-
--- | Target packets sent per second.
-nuTargetSentPacketsPerSecond :: Lens' NetworkUtilization (Maybe Int32)
-nuTargetSentPacketsPerSecond
-  = lens _nuTargetSentPacketsPerSecond
-      (\ s a -> s{_nuTargetSentPacketsPerSecond = a})
-      . mapping _Coerce
-
--- | Target packets received per second.
-nuTargetReceivedPacketsPerSecond :: Lens' NetworkUtilization (Maybe Int32)
-nuTargetReceivedPacketsPerSecond
-  = lens _nuTargetReceivedPacketsPerSecond
-      (\ s a -> s{_nuTargetReceivedPacketsPerSecond = a})
-      . mapping _Coerce
-
--- | Target bytes sent per second.
-nuTargetSentBytesPerSecond :: Lens' NetworkUtilization (Maybe Int32)
-nuTargetSentBytesPerSecond
-  = lens _nuTargetSentBytesPerSecond
-      (\ s a -> s{_nuTargetSentBytesPerSecond = a})
-      . mapping _Coerce
-
-instance FromJSON NetworkUtilization where
-        parseJSON
-          = withObject "NetworkUtilization"
-              (\ o ->
-                 NetworkUtilization' <$>
-                   (o .:? "targetReceivedBytesPerSecond") <*>
-                     (o .:? "targetSentPacketsPerSecond")
-                     <*> (o .:? "targetReceivedPacketsPerSecond")
-                     <*> (o .:? "targetSentBytesPerSecond"))
-
-instance ToJSON NetworkUtilization where
-        toJSON NetworkUtilization'{..}
-          = object
-              (catMaybes
-                 [("targetReceivedBytesPerSecond" .=) <$>
-                    _nuTargetReceivedBytesPerSecond,
-                  ("targetSentPacketsPerSecond" .=) <$>
-                    _nuTargetSentPacketsPerSecond,
-                  ("targetReceivedPacketsPerSecond" .=) <$>
-                    _nuTargetReceivedPacketsPerSecond,
-                  ("targetSentBytesPerSecond" .=) <$>
-                    _nuTargetSentBytesPerSecond])
-
--- | The Status type defines a logical error model that is suitable for
--- different programming environments, including REST APIs and RPC APIs. It
--- is used by gRPC (https:\/\/github.com\/grpc). The error model is
--- designed to be: Simple to use and understand for most users Flexible
--- enough to meet unexpected needsOverviewThe Status message contains three
--- pieces of data: error code, error message, and error details. The error
--- code should be an enum value of google.rpc.Code, but it may accept
--- additional error codes if needed. The error message should be a
--- developer-facing English message that helps developers understand and
--- resolve the error. If a localized user-facing error message is needed,
--- put the localized message in the error details or localize it in the
--- client. The optional error details may contain arbitrary information
--- about the error. There is a predefined set of error detail types in the
--- package google.rpc that can be used for common error conditions.Language
--- mappingThe Status message is the logical representation of the error
--- model, but it is not necessarily the actual wire format. When the Status
--- message is exposed in different client libraries and different wire
--- protocols, it can be mapped differently. For example, it will likely be
--- mapped to some exceptions in Java, but more likely mapped to some error
--- codes in C.Other usesThe error model and the Status message can be used
--- in a variety of environments, either with or without APIs, to provide a
--- consistent developer experience across different environments.Example
--- uses of this error model include: Partial errors. If a service needs to
--- return partial errors to the client, it may embed the Status in the
--- normal response to indicate the partial errors. Workflow errors. A
--- typical workflow has multiple steps. Each step may have a Status message
--- for error reporting. Batch operations. If a client uses batch request
--- and batch response, the Status message should be used directly inside
--- batch response, one for each error sub-response. Asynchronous
--- operations. If an API call embeds asynchronous operation results in its
--- response, the status of those operations should be represented directly
--- using the Status message. Logging. If some API errors are stored in
--- logs, the message Status could be used directly after any stripping
--- needed for security\/privacy reasons.
---
--- /See:/ 'status' smart constructor.
-data Status = Status'
-    { _sDetails :: !(Maybe [StatusDetailsItem])
-    , _sCode    :: !(Maybe (Textual Int32))
-    , _sMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Status' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sDetails'
---
--- * 'sCode'
---
--- * 'sMessage'
-status
-    :: Status
-status =
-    Status'
-    { _sDetails = Nothing
-    , _sCode = Nothing
-    , _sMessage = Nothing
-    }
-
--- | A list of messages that carry the error details. There is a common set
--- of message types for APIs to use.
-sDetails :: Lens' Status [StatusDetailsItem]
-sDetails
-  = lens _sDetails (\ s a -> s{_sDetails = a}) .
-      _Default
-      . _Coerce
-
--- | The status code, which should be an enum value of google.rpc.Code.
-sCode :: Lens' Status (Maybe Int32)
-sCode
-  = lens _sCode (\ s a -> s{_sCode = a}) .
-      mapping _Coerce
-
--- | A developer-facing error message, which should be in English. Any
--- user-facing error message should be localized and sent in the
--- google.rpc.Status.details field, or localized by the client.
-sMessage :: Lens' Status (Maybe Text)
-sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
-
-instance FromJSON Status where
-        parseJSON
-          = withObject "Status"
-              (\ o ->
-                 Status' <$>
-                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON Status where
-        toJSON Status'{..}
-          = object
-              (catMaybes
-                 [("details" .=) <$> _sDetails,
-                  ("code" .=) <$> _sCode,
-                  ("message" .=) <$> _sMessage])
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
---
--- /See:/ 'operationSchema' smart constructor.
-newtype OperationSchema = OperationSchema'
-    { _osAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'osAddtional'
-operationSchema
-    :: HashMap Text JSONValue -- ^ 'osAddtional'
-    -> OperationSchema
-operationSchema pOsAddtional_ =
-    OperationSchema'
-    { _osAddtional = _Coerce # pOsAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-osAddtional :: Lens' OperationSchema (HashMap Text JSONValue)
-osAddtional
-  = lens _osAddtional (\ s a -> s{_osAddtional = a}) .
-      _Coerce
-
-instance FromJSON OperationSchema where
-        parseJSON
-          = withObject "OperationSchema"
-              (\ o -> OperationSchema' <$> (parseJSONObject o))
-
-instance ToJSON OperationSchema where
-        toJSON = toJSON . _osAddtional
-
--- | Service-specific metadata. For example the available capacity at the
--- given location.
---
--- /See:/ 'locationSchema' smart constructor.
-newtype LocationSchema = LocationSchema'
-    { _lsAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocationSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsAddtional'
-locationSchema
-    :: HashMap Text JSONValue -- ^ 'lsAddtional'
-    -> LocationSchema
-locationSchema pLsAddtional_ =
-    LocationSchema'
-    { _lsAddtional = _Coerce # pLsAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-lsAddtional :: Lens' LocationSchema (HashMap Text JSONValue)
-lsAddtional
-  = lens _lsAddtional (\ s a -> s{_lsAddtional = a}) .
-      _Coerce
-
-instance FromJSON LocationSchema where
-        parseJSON
-          = withObject "LocationSchema"
-              (\ o -> LocationSchema' <$> (parseJSONObject o))
-
-instance ToJSON LocationSchema where
-        toJSON = toJSON . _lsAddtional
-
--- | A domain that a user has been authorized to administer. To authorize use
--- of a domain, verify ownership via Webmaster Central
--- (https:\/\/www.google.com\/webmasters\/verification\/home).
---
--- /See:/ 'authorizedDomain' smart constructor.
-data AuthorizedDomain = AuthorizedDomain'
-    { _adName :: !(Maybe Text)
-    , _adId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AuthorizedDomain' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adName'
---
--- * 'adId'
-authorizedDomain
-    :: AuthorizedDomain
-authorizedDomain =
-    AuthorizedDomain'
-    { _adName = Nothing
-    , _adId = Nothing
-    }
-
--- | Full path to the AuthorizedDomain resource in the API. Example:
--- apps\/myapp\/authorizedDomains\/example.com.\'OutputOnly
-adName :: Lens' AuthorizedDomain (Maybe Text)
-adName = lens _adName (\ s a -> s{_adName = a})
-
--- | Fully qualified domain name of the domain authorized for use. Example:
--- example.com.
-adId :: Lens' AuthorizedDomain (Maybe Text)
-adId = lens _adId (\ s a -> s{_adId = a})
-
-instance FromJSON AuthorizedDomain where
-        parseJSON
-          = withObject "AuthorizedDomain"
-              (\ o ->
-                 AuthorizedDomain' <$>
-                   (o .:? "name") <*> (o .:? "id"))
-
-instance ToJSON AuthorizedDomain where
-        toJSON AuthorizedDomain'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _adName, ("id" .=) <$> _adId])
-
--- | Traffic routing configuration for versions within a single service.
--- Traffic splits define how traffic directed to the service is assigned to
--- versions.
---
--- /See:/ 'trafficSplit' smart constructor.
-data TrafficSplit = TrafficSplit'
-    { _tsShardBy     :: !(Maybe TrafficSplitShardBy)
-    , _tsAllocations :: !(Maybe TrafficSplitAllocations)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TrafficSplit' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tsShardBy'
---
--- * 'tsAllocations'
-trafficSplit
-    :: TrafficSplit
-trafficSplit =
-    TrafficSplit'
-    { _tsShardBy = Nothing
-    , _tsAllocations = Nothing
-    }
-
--- | Mechanism used to determine which version a request is sent to. The
--- traffic selection algorithm will be stable for either type until
--- allocations are changed.
-tsShardBy :: Lens' TrafficSplit (Maybe TrafficSplitShardBy)
-tsShardBy
-  = lens _tsShardBy (\ s a -> s{_tsShardBy = a})
-
--- | Mapping from version IDs within the service to fractional (0.000, 1]
--- allocations of traffic for that version. Each version can be specified
--- only once, but some versions in the service may not have any traffic
--- allocation. Services that have traffic allocated cannot be deleted until
--- either the service is deleted or their traffic allocation is removed.
--- Allocations must sum to 1. Up to two decimal place precision is
--- supported for IP-based splits and up to three decimal places is
--- supported for cookie-based splits.
-tsAllocations :: Lens' TrafficSplit (Maybe TrafficSplitAllocations)
-tsAllocations
-  = lens _tsAllocations
-      (\ s a -> s{_tsAllocations = a})
-
-instance FromJSON TrafficSplit where
-        parseJSON
-          = withObject "TrafficSplit"
-              (\ o ->
-                 TrafficSplit' <$>
-                   (o .:? "shardBy") <*> (o .:? "allocations"))
-
-instance ToJSON TrafficSplit where
-        toJSON TrafficSplit'{..}
-          = object
-              (catMaybes
-                 [("shardBy" .=) <$> _tsShardBy,
-                  ("allocations" .=) <$> _tsAllocations])
-
--- | Executes a script to handle the request that matches the URL pattern.
---
--- /See:/ 'scriptHandler' smart constructor.
-newtype ScriptHandler = ScriptHandler'
-    { _shScriptPath :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScriptHandler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'shScriptPath'
-scriptHandler
-    :: ScriptHandler
-scriptHandler =
-    ScriptHandler'
-    { _shScriptPath = Nothing
-    }
-
--- | Path to the script from the application root directory.
-shScriptPath :: Lens' ScriptHandler (Maybe Text)
-shScriptPath
-  = lens _shScriptPath (\ s a -> s{_shScriptPath = a})
-
-instance FromJSON ScriptHandler where
-        parseJSON
-          = withObject "ScriptHandler"
-              (\ o -> ScriptHandler' <$> (o .:? "scriptPath"))
-
-instance ToJSON ScriptHandler where
-        toJSON ScriptHandler'{..}
-          = object
-              (catMaybes [("scriptPath" .=) <$> _shScriptPath])
-
--- | Response message for Services.ListServices.
---
--- /See:/ 'listServicesResponse' smart constructor.
-data ListServicesResponse = ListServicesResponse'
-    { _lsrNextPageToken :: !(Maybe Text)
-    , _lsrServices      :: !(Maybe [Service])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListServicesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsrNextPageToken'
---
--- * 'lsrServices'
-listServicesResponse
-    :: ListServicesResponse
-listServicesResponse =
-    ListServicesResponse'
-    { _lsrNextPageToken = Nothing
-    , _lsrServices = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-lsrNextPageToken :: Lens' ListServicesResponse (Maybe Text)
-lsrNextPageToken
-  = lens _lsrNextPageToken
-      (\ s a -> s{_lsrNextPageToken = a})
-
--- | The services belonging to the requested application.
-lsrServices :: Lens' ListServicesResponse [Service]
-lsrServices
-  = lens _lsrServices (\ s a -> s{_lsrServices = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListServicesResponse where
-        parseJSON
-          = withObject "ListServicesResponse"
-              (\ o ->
-                 ListServicesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "services" .!= mempty))
-
-instance ToJSON ListServicesResponse where
-        toJSON ListServicesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lsrNextPageToken,
-                  ("services" .=) <$> _lsrServices])
-
--- | URL pattern and description of how the URL should be handled. App Engine
--- can handle URLs by executing application code or by serving static files
--- uploaded with the version, such as images, CSS, or JavaScript.
---
--- /See:/ 'urlMap' smart constructor.
-data URLMap = URLMap'
-    { _umScript                   :: !(Maybe ScriptHandler)
-    , _umSecurityLevel            :: !(Maybe URLMapSecurityLevel)
-    , _umAPIEndpoint              :: !(Maybe APIEndpointHandler)
-    , _umURLRegex                 :: !(Maybe Text)
-    , _umRedirectHTTPResponseCode :: !(Maybe URLMapRedirectHTTPResponseCode)
-    , _umAuthFailAction           :: !(Maybe URLMapAuthFailAction)
-    , _umStaticFiles              :: !(Maybe StaticFilesHandler)
-    , _umLogin                    :: !(Maybe URLMapLogin)
-    } 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:
---
--- * 'umScript'
---
--- * 'umSecurityLevel'
---
--- * 'umAPIEndpoint'
---
--- * 'umURLRegex'
---
--- * 'umRedirectHTTPResponseCode'
---
--- * 'umAuthFailAction'
---
--- * 'umStaticFiles'
---
--- * 'umLogin'
-urlMap
-    :: URLMap
-urlMap =
-    URLMap'
-    { _umScript = Nothing
-    , _umSecurityLevel = Nothing
-    , _umAPIEndpoint = Nothing
-    , _umURLRegex = Nothing
-    , _umRedirectHTTPResponseCode = Nothing
-    , _umAuthFailAction = Nothing
-    , _umStaticFiles = Nothing
-    , _umLogin = Nothing
-    }
-
--- | Executes a script to handle the requests that match this URL pattern.
--- Only the auto value is supported for Node.js in the App Engine standard
--- environment, for example \"script\": \"auto\".
-umScript :: Lens' URLMap (Maybe ScriptHandler)
-umScript = lens _umScript (\ s a -> s{_umScript = a})
-
--- | Security (HTTPS) enforcement for this URL.
-umSecurityLevel :: Lens' URLMap (Maybe URLMapSecurityLevel)
-umSecurityLevel
-  = lens _umSecurityLevel
-      (\ s a -> s{_umSecurityLevel = a})
-
--- | Uses API Endpoints to handle requests.
-umAPIEndpoint :: Lens' URLMap (Maybe APIEndpointHandler)
-umAPIEndpoint
-  = lens _umAPIEndpoint
-      (\ s a -> s{_umAPIEndpoint = a})
-
--- | URL prefix. Uses regular expression syntax, which means regexp special
--- characters must be escaped, but should not contain groupings. All URLs
--- that begin with this prefix are handled by this handler, using the
--- portion of the URL after the prefix as part of the file path.
-umURLRegex :: Lens' URLMap (Maybe Text)
-umURLRegex
-  = lens _umURLRegex (\ s a -> s{_umURLRegex = a})
-
--- | 30x code to use when performing redirects for the secure field. Defaults
--- to 302.
-umRedirectHTTPResponseCode :: Lens' URLMap (Maybe URLMapRedirectHTTPResponseCode)
-umRedirectHTTPResponseCode
-  = lens _umRedirectHTTPResponseCode
-      (\ s a -> s{_umRedirectHTTPResponseCode = a})
-
--- | Action to take when users access resources that require authentication.
--- Defaults to redirect.
-umAuthFailAction :: Lens' URLMap (Maybe URLMapAuthFailAction)
-umAuthFailAction
-  = lens _umAuthFailAction
-      (\ s a -> s{_umAuthFailAction = a})
-
--- | Returns the contents of a file, such as an image, as the response.
-umStaticFiles :: Lens' URLMap (Maybe StaticFilesHandler)
-umStaticFiles
-  = lens _umStaticFiles
-      (\ s a -> s{_umStaticFiles = a})
-
--- | Level of login required to access this resource. Not supported for
--- Node.js in the App Engine standard environment.
-umLogin :: Lens' URLMap (Maybe URLMapLogin)
-umLogin = lens _umLogin (\ s a -> s{_umLogin = a})
-
-instance FromJSON URLMap where
-        parseJSON
-          = withObject "URLMap"
-              (\ o ->
-                 URLMap' <$>
-                   (o .:? "script") <*> (o .:? "securityLevel") <*>
-                     (o .:? "apiEndpoint")
-                     <*> (o .:? "urlRegex")
-                     <*> (o .:? "redirectHttpResponseCode")
-                     <*> (o .:? "authFailAction")
-                     <*> (o .:? "staticFiles")
-                     <*> (o .:? "login"))
-
-instance ToJSON URLMap where
-        toJSON URLMap'{..}
-          = object
-              (catMaybes
-                 [("script" .=) <$> _umScript,
-                  ("securityLevel" .=) <$> _umSecurityLevel,
-                  ("apiEndpoint" .=) <$> _umAPIEndpoint,
-                  ("urlRegex" .=) <$> _umURLRegex,
-                  ("redirectHttpResponseCode" .=) <$>
-                    _umRedirectHTTPResponseCode,
-                  ("authFailAction" .=) <$> _umAuthFailAction,
-                  ("staticFiles" .=) <$> _umStaticFiles,
-                  ("login" .=) <$> _umLogin])
-
--- | Third-party Python runtime library that is required by the application.
---
--- /See:/ 'library' smart constructor.
-data Library = Library'
-    { _lName    :: !(Maybe Text)
-    , _lVersion :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Library' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lName'
---
--- * 'lVersion'
-library
-    :: Library
-library =
-    Library'
-    { _lName = Nothing
-    , _lVersion = Nothing
-    }
-
--- | Name of the library. Example: \"django\".
-lName :: Lens' Library (Maybe Text)
-lName = lens _lName (\ s a -> s{_lName = a})
-
--- | Version of the library to select, or \"latest\".
-lVersion :: Lens' Library (Maybe Text)
-lVersion = lens _lVersion (\ s a -> s{_lVersion = a})
-
-instance FromJSON Library where
-        parseJSON
-          = withObject "Library"
-              (\ o ->
-                 Library' <$> (o .:? "name") <*> (o .:? "version"))
-
-instance ToJSON Library where
-        toJSON Library'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _lName,
-                  ("version" .=) <$> _lVersion])
-
--- | A DNS resource record.
---
--- /See:/ 'resourceRecord' smart constructor.
-data ResourceRecord = ResourceRecord'
-    { _rrRrData :: !(Maybe Text)
-    , _rrName   :: !(Maybe Text)
-    , _rrType   :: !(Maybe ResourceRecordType)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ResourceRecord' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrRrData'
---
--- * 'rrName'
---
--- * 'rrType'
-resourceRecord
-    :: ResourceRecord
-resourceRecord =
-    ResourceRecord'
-    { _rrRrData = Nothing
-    , _rrName = Nothing
-    , _rrType = Nothing
-    }
-
--- | Data for this record. Values vary by record type, as defined in RFC 1035
--- (section 5) and RFC 1034 (section 3.6.1).
-rrRrData :: Lens' ResourceRecord (Maybe Text)
-rrRrData = lens _rrRrData (\ s a -> s{_rrRrData = a})
-
--- | Relative name of the object affected by this record. Only applicable for
--- CNAME records. Example: \'www\'.
-rrName :: Lens' ResourceRecord (Maybe Text)
-rrName = lens _rrName (\ s a -> s{_rrName = a})
-
--- | Resource record type. Example: AAAA.
-rrType :: Lens' ResourceRecord (Maybe ResourceRecordType)
-rrType = lens _rrType (\ s a -> s{_rrType = a})
-
-instance FromJSON ResourceRecord where
-        parseJSON
-          = withObject "ResourceRecord"
-              (\ o ->
-                 ResourceRecord' <$>
-                   (o .:? "rrdata") <*> (o .:? "name") <*>
-                     (o .:? "type"))
-
-instance ToJSON ResourceRecord where
-        toJSON ResourceRecord'{..}
-          = object
-              (catMaybes
-                 [("rrdata" .=) <$> _rrRrData,
-                  ("name" .=) <$> _rrName, ("type" .=) <$> _rrType])
-
--- | The response message for Locations.ListLocations.
---
--- /See:/ 'listLocationsResponse' smart constructor.
-data ListLocationsResponse = ListLocationsResponse'
-    { _llrNextPageToken :: !(Maybe Text)
-    , _llrLocations     :: !(Maybe [Location])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llrNextPageToken'
---
--- * 'llrLocations'
-listLocationsResponse
-    :: ListLocationsResponse
-listLocationsResponse =
-    ListLocationsResponse'
-    { _llrNextPageToken = Nothing
-    , _llrLocations = Nothing
-    }
-
--- | The standard List next-page token.
-llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
-llrNextPageToken
-  = lens _llrNextPageToken
-      (\ s a -> s{_llrNextPageToken = a})
-
--- | A list of locations that matches the specified filter in the request.
-llrLocations :: Lens' ListLocationsResponse [Location]
-llrLocations
-  = lens _llrLocations (\ s a -> s{_llrLocations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListLocationsResponse where
-        parseJSON
-          = withObject "ListLocationsResponse"
-              (\ o ->
-                 ListLocationsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "locations" .!= mempty))
-
-instance ToJSON ListLocationsResponse where
-        toJSON ListLocationsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _llrNextPageToken,
-                  ("locations" .=) <$> _llrLocations])
-
--- | Target scaling by disk usage. Only applicable in the App Engine flexible
--- environment.
---
--- /See:/ 'diskUtilization' smart constructor.
-data DiskUtilization = DiskUtilization'
-    { _duTargetReadBytesPerSecond  :: !(Maybe (Textual Int32))
-    , _duTargetReadOpsPerSecond    :: !(Maybe (Textual Int32))
-    , _duTargetWriteOpsPerSecond   :: !(Maybe (Textual Int32))
-    , _duTargetWriteBytesPerSecond :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'duTargetReadBytesPerSecond'
---
--- * 'duTargetReadOpsPerSecond'
---
--- * 'duTargetWriteOpsPerSecond'
---
--- * 'duTargetWriteBytesPerSecond'
-diskUtilization
-    :: DiskUtilization
-diskUtilization =
-    DiskUtilization'
-    { _duTargetReadBytesPerSecond = Nothing
-    , _duTargetReadOpsPerSecond = Nothing
-    , _duTargetWriteOpsPerSecond = Nothing
-    , _duTargetWriteBytesPerSecond = Nothing
-    }
-
--- | Target bytes read per second.
-duTargetReadBytesPerSecond :: Lens' DiskUtilization (Maybe Int32)
-duTargetReadBytesPerSecond
-  = lens _duTargetReadBytesPerSecond
-      (\ s a -> s{_duTargetReadBytesPerSecond = a})
-      . mapping _Coerce
-
--- | Target ops read per seconds.
-duTargetReadOpsPerSecond :: Lens' DiskUtilization (Maybe Int32)
-duTargetReadOpsPerSecond
-  = lens _duTargetReadOpsPerSecond
-      (\ s a -> s{_duTargetReadOpsPerSecond = a})
-      . mapping _Coerce
-
--- | Target ops written per second.
-duTargetWriteOpsPerSecond :: Lens' DiskUtilization (Maybe Int32)
-duTargetWriteOpsPerSecond
-  = lens _duTargetWriteOpsPerSecond
-      (\ s a -> s{_duTargetWriteOpsPerSecond = a})
-      . mapping _Coerce
-
--- | Target bytes written per second.
-duTargetWriteBytesPerSecond :: Lens' DiskUtilization (Maybe Int32)
-duTargetWriteBytesPerSecond
-  = lens _duTargetWriteBytesPerSecond
-      (\ s a -> s{_duTargetWriteBytesPerSecond = a})
-      . mapping _Coerce
-
-instance FromJSON DiskUtilization where
-        parseJSON
-          = withObject "DiskUtilization"
-              (\ o ->
-                 DiskUtilization' <$>
-                   (o .:? "targetReadBytesPerSecond") <*>
-                     (o .:? "targetReadOpsPerSecond")
-                     <*> (o .:? "targetWriteOpsPerSecond")
-                     <*> (o .:? "targetWriteBytesPerSecond"))
-
-instance ToJSON DiskUtilization where
-        toJSON DiskUtilization'{..}
-          = object
-              (catMaybes
-                 [("targetReadBytesPerSecond" .=) <$>
-                    _duTargetReadBytesPerSecond,
-                  ("targetReadOpsPerSecond" .=) <$>
-                    _duTargetReadOpsPerSecond,
-                  ("targetWriteOpsPerSecond" .=) <$>
-                    _duTargetWriteOpsPerSecond,
-                  ("targetWriteBytesPerSecond" .=) <$>
-                    _duTargetWriteBytesPerSecond])
-
--- | The response message for Operations.ListOperations.
---
--- /See:/ 'listOperationsResponse' smart constructor.
-data ListOperationsResponse = ListOperationsResponse'
-    { _lorNextPageToken :: !(Maybe Text)
-    , _lorOperations    :: !(Maybe [Operation])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lorNextPageToken'
---
--- * 'lorOperations'
-listOperationsResponse
-    :: ListOperationsResponse
-listOperationsResponse =
-    ListOperationsResponse'
-    { _lorNextPageToken = Nothing
-    , _lorOperations = Nothing
-    }
-
--- | The standard List next-page token.
-lorNextPageToken :: Lens' ListOperationsResponse (Maybe Text)
-lorNextPageToken
-  = lens _lorNextPageToken
-      (\ s a -> s{_lorNextPageToken = a})
-
--- | A list of operations that matches the specified filter in the request.
-lorOperations :: Lens' ListOperationsResponse [Operation]
-lorOperations
-  = lens _lorOperations
-      (\ s a -> s{_lorOperations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListOperationsResponse where
-        parseJSON
-          = withObject "ListOperationsResponse"
-              (\ o ->
-                 ListOperationsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "operations" .!= mempty))
-
-instance ToJSON ListOperationsResponse where
-        toJSON ListOperationsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lorNextPageToken,
-                  ("operations" .=) <$> _lorOperations])
-
--- | Health checking configuration for VM instances. Unhealthy instances are
--- killed and replaced with new instances. Only applicable for instances in
--- App Engine flexible environment.
---
--- /See:/ 'healthCheck' smart constructor.
-data HealthCheck = HealthCheck'
-    { _hcHealthyThreshold   :: !(Maybe (Textual Word32))
-    , _hcDisableHealthCheck :: !(Maybe Bool)
-    , _hcCheckInterval      :: !(Maybe GDuration)
-    , _hcRestartThreshold   :: !(Maybe (Textual Word32))
-    , _hcHost               :: !(Maybe Text)
-    , _hcTimeout            :: !(Maybe GDuration)
-    , _hcUnhealthyThreshold :: !(Maybe (Textual Word32))
-    } 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'
---
--- * 'hcDisableHealthCheck'
---
--- * 'hcCheckInterval'
---
--- * 'hcRestartThreshold'
---
--- * 'hcHost'
---
--- * 'hcTimeout'
---
--- * 'hcUnhealthyThreshold'
-healthCheck
-    :: HealthCheck
-healthCheck =
-    HealthCheck'
-    { _hcHealthyThreshold = Nothing
-    , _hcDisableHealthCheck = Nothing
-    , _hcCheckInterval = Nothing
-    , _hcRestartThreshold = Nothing
-    , _hcHost = Nothing
-    , _hcTimeout = Nothing
-    , _hcUnhealthyThreshold = Nothing
-    }
-
--- | Number of consecutive successful health checks required before receiving
--- traffic.
-hcHealthyThreshold :: Lens' HealthCheck (Maybe Word32)
-hcHealthyThreshold
-  = lens _hcHealthyThreshold
-      (\ s a -> s{_hcHealthyThreshold = a})
-      . mapping _Coerce
-
--- | Whether to explicitly disable health checks for this instance.
-hcDisableHealthCheck :: Lens' HealthCheck (Maybe Bool)
-hcDisableHealthCheck
-  = lens _hcDisableHealthCheck
-      (\ s a -> s{_hcDisableHealthCheck = a})
-
--- | Interval between health checks.
-hcCheckInterval :: Lens' HealthCheck (Maybe Scientific)
-hcCheckInterval
-  = lens _hcCheckInterval
-      (\ s a -> s{_hcCheckInterval = a})
-      . mapping _GDuration
-
--- | Number of consecutive failed health checks required before an instance
--- is restarted.
-hcRestartThreshold :: Lens' HealthCheck (Maybe Word32)
-hcRestartThreshold
-  = lens _hcRestartThreshold
-      (\ s a -> s{_hcRestartThreshold = a})
-      . mapping _Coerce
-
--- | Host header to send when performing an HTTP health check. Example:
--- \"myapp.appspot.com\"
-hcHost :: Lens' HealthCheck (Maybe Text)
-hcHost = lens _hcHost (\ s a -> s{_hcHost = a})
-
--- | Time before the health check is considered failed.
-hcTimeout :: Lens' HealthCheck (Maybe Scientific)
-hcTimeout
-  = lens _hcTimeout (\ s a -> s{_hcTimeout = a}) .
-      mapping _GDuration
-
--- | Number of consecutive failed health checks required before removing
--- traffic.
-hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Word32)
-hcUnhealthyThreshold
-  = lens _hcUnhealthyThreshold
-      (\ s a -> s{_hcUnhealthyThreshold = a})
-      . mapping _Coerce
-
-instance FromJSON HealthCheck where
-        parseJSON
-          = withObject "HealthCheck"
-              (\ o ->
-                 HealthCheck' <$>
-                   (o .:? "healthyThreshold") <*>
-                     (o .:? "disableHealthCheck")
-                     <*> (o .:? "checkInterval")
-                     <*> (o .:? "restartThreshold")
-                     <*> (o .:? "host")
-                     <*> (o .:? "timeout")
-                     <*> (o .:? "unhealthyThreshold"))
-
-instance ToJSON HealthCheck where
-        toJSON HealthCheck'{..}
-          = object
-              (catMaybes
-                 [("healthyThreshold" .=) <$> _hcHealthyThreshold,
-                  ("disableHealthCheck" .=) <$> _hcDisableHealthCheck,
-                  ("checkInterval" .=) <$> _hcCheckInterval,
-                  ("restartThreshold" .=) <$> _hcRestartThreshold,
-                  ("host" .=) <$> _hcHost,
-                  ("timeout" .=) <$> _hcTimeout,
-                  ("unhealthyThreshold" .=) <$> _hcUnhealthyThreshold])
-
--- | An SSL certificate that a user has been authorized to administer. A user
--- is authorized to administer any certificate that applies to one of their
--- authorized domains.
---
--- /See:/ 'authorizedCertificate' smart constructor.
-data AuthorizedCertificate = AuthorizedCertificate'
-    { _acManagedCertificate    :: !(Maybe ManagedCertificate)
-    , _acCertificateRawData    :: !(Maybe CertificateRawData)
-    , _acDomainNames           :: !(Maybe [Text])
-    , _acDomainMAppingsCount   :: !(Maybe (Textual Int32))
-    , _acName                  :: !(Maybe Text)
-    , _acDisplayName           :: !(Maybe Text)
-    , _acId                    :: !(Maybe Text)
-    , _acExpireTime            :: !(Maybe DateTime')
-    , _acVisibleDomainMAppings :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AuthorizedCertificate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acManagedCertificate'
---
--- * 'acCertificateRawData'
---
--- * 'acDomainNames'
---
--- * 'acDomainMAppingsCount'
---
--- * 'acName'
---
--- * 'acDisplayName'
---
--- * 'acId'
---
--- * 'acExpireTime'
---
--- * 'acVisibleDomainMAppings'
-authorizedCertificate
-    :: AuthorizedCertificate
-authorizedCertificate =
-    AuthorizedCertificate'
-    { _acManagedCertificate = Nothing
-    , _acCertificateRawData = Nothing
-    , _acDomainNames = Nothing
-    , _acDomainMAppingsCount = Nothing
-    , _acName = Nothing
-    , _acDisplayName = Nothing
-    , _acId = Nothing
-    , _acExpireTime = Nothing
-    , _acVisibleDomainMAppings = Nothing
-    }
-
--- | Only applicable if this certificate is managed by App Engine. Managed
--- certificates are tied to the lifecycle of a DomainMapping and cannot be
--- updated or deleted via the AuthorizedCertificates API. If this
--- certificate is manually administered by the user, this field will be
--- empty.\'OutputOnly
-acManagedCertificate :: Lens' AuthorizedCertificate (Maybe ManagedCertificate)
-acManagedCertificate
-  = lens _acManagedCertificate
-      (\ s a -> s{_acManagedCertificate = a})
-
--- | The SSL certificate serving the AuthorizedCertificate resource. This
--- must be obtained independently from a certificate authority.
-acCertificateRawData :: Lens' AuthorizedCertificate (Maybe CertificateRawData)
-acCertificateRawData
-  = lens _acCertificateRawData
-      (\ s a -> s{_acCertificateRawData = a})
-
--- | Topmost applicable domains of this certificate. This certificate applies
--- to these domains and their subdomains. Example: example.com.\'OutputOnly
-acDomainNames :: Lens' AuthorizedCertificate [Text]
-acDomainNames
-  = lens _acDomainNames
-      (\ s a -> s{_acDomainNames = a})
-      . _Default
-      . _Coerce
-
--- | Aggregate count of the domain mappings with this certificate mapped.
--- This count includes domain mappings on applications for which the user
--- does not have VIEWER permissions.Only returned by GET or LIST requests
--- when specifically requested by the view=FULL_CERTIFICATE
--- option.\'OutputOnly
-acDomainMAppingsCount :: Lens' AuthorizedCertificate (Maybe Int32)
-acDomainMAppingsCount
-  = lens _acDomainMAppingsCount
-      (\ s a -> s{_acDomainMAppingsCount = a})
-      . mapping _Coerce
-
--- | Full path to the AuthorizedCertificate resource in the API. Example:
--- apps\/myapp\/authorizedCertificates\/12345.\'OutputOnly
-acName :: Lens' AuthorizedCertificate (Maybe Text)
-acName = lens _acName (\ s a -> s{_acName = a})
-
--- | The user-specified display name of the certificate. This is not
--- guaranteed to be unique. Example: My Certificate.
-acDisplayName :: Lens' AuthorizedCertificate (Maybe Text)
-acDisplayName
-  = lens _acDisplayName
-      (\ s a -> s{_acDisplayName = a})
-
--- | Relative name of the certificate. This is a unique value autogenerated
--- on AuthorizedCertificate resource creation. Example: 12345.\'OutputOnly
-acId :: Lens' AuthorizedCertificate (Maybe Text)
-acId = lens _acId (\ s a -> s{_acId = a})
-
--- | The time when this certificate expires. To update the renewal time on
--- this certificate, upload an SSL certificate with a different expiration
--- time using
--- AuthorizedCertificates.UpdateAuthorizedCertificate.\'OutputOnly
-acExpireTime :: Lens' AuthorizedCertificate (Maybe UTCTime)
-acExpireTime
-  = lens _acExpireTime (\ s a -> s{_acExpireTime = a})
-      . mapping _DateTime
-
--- | The full paths to user visible Domain Mapping resources that have this
--- certificate mapped. Example:
--- apps\/myapp\/domainMappings\/example.com.This may not represent the full
--- list of mapped domain mappings if the user does not have VIEWER
--- permissions on all of the applications that have this certificate
--- mapped. See domain_mappings_count for a complete count.Only returned by
--- GET or LIST requests when specifically requested by the
--- view=FULL_CERTIFICATE option.\'OutputOnly
-acVisibleDomainMAppings :: Lens' AuthorizedCertificate [Text]
-acVisibleDomainMAppings
-  = lens _acVisibleDomainMAppings
-      (\ s a -> s{_acVisibleDomainMAppings = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON AuthorizedCertificate where
-        parseJSON
-          = withObject "AuthorizedCertificate"
-              (\ o ->
-                 AuthorizedCertificate' <$>
-                   (o .:? "managedCertificate") <*>
-                     (o .:? "certificateRawData")
-                     <*> (o .:? "domainNames" .!= mempty)
-                     <*> (o .:? "domainMappingsCount")
-                     <*> (o .:? "name")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "id")
-                     <*> (o .:? "expireTime")
-                     <*> (o .:? "visibleDomainMappings" .!= mempty))
-
-instance ToJSON AuthorizedCertificate where
-        toJSON AuthorizedCertificate'{..}
-          = object
-              (catMaybes
-                 [("managedCertificate" .=) <$> _acManagedCertificate,
-                  ("certificateRawData" .=) <$> _acCertificateRawData,
-                  ("domainNames" .=) <$> _acDomainNames,
-                  ("domainMappingsCount" .=) <$>
-                    _acDomainMAppingsCount,
-                  ("name" .=) <$> _acName,
-                  ("displayName" .=) <$> _acDisplayName,
-                  ("id" .=) <$> _acId,
-                  ("expireTime" .=) <$> _acExpireTime,
-                  ("visibleDomainMappings" .=) <$>
-                    _acVisibleDomainMAppings])
-
--- | Google Cloud Endpoints
--- (https:\/\/cloud.google.com\/appengine\/docs\/python\/endpoints\/)
--- configuration for API handlers.
---
--- /See:/ 'apiConfigHandler' smart constructor.
-data APIConfigHandler = APIConfigHandler'
-    { _achScript         :: !(Maybe Text)
-    , _achSecurityLevel  :: !(Maybe APIConfigHandlerSecurityLevel)
-    , _achURL            :: !(Maybe Text)
-    , _achAuthFailAction :: !(Maybe APIConfigHandlerAuthFailAction)
-    , _achLogin          :: !(Maybe APIConfigHandlerLogin)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APIConfigHandler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'achScript'
---
--- * 'achSecurityLevel'
---
--- * 'achURL'
---
--- * 'achAuthFailAction'
---
--- * 'achLogin'
-apiConfigHandler
-    :: APIConfigHandler
-apiConfigHandler =
-    APIConfigHandler'
-    { _achScript = Nothing
-    , _achSecurityLevel = Nothing
-    , _achURL = Nothing
-    , _achAuthFailAction = Nothing
-    , _achLogin = Nothing
-    }
-
--- | Path to the script from the application root directory.
-achScript :: Lens' APIConfigHandler (Maybe Text)
-achScript
-  = lens _achScript (\ s a -> s{_achScript = a})
-
--- | Security (HTTPS) enforcement for this URL.
-achSecurityLevel :: Lens' APIConfigHandler (Maybe APIConfigHandlerSecurityLevel)
-achSecurityLevel
-  = lens _achSecurityLevel
-      (\ s a -> s{_achSecurityLevel = a})
-
--- | URL to serve the endpoint at.
-achURL :: Lens' APIConfigHandler (Maybe Text)
-achURL = lens _achURL (\ s a -> s{_achURL = a})
-
--- | Action to take when users access resources that require authentication.
--- Defaults to redirect.
-achAuthFailAction :: Lens' APIConfigHandler (Maybe APIConfigHandlerAuthFailAction)
-achAuthFailAction
-  = lens _achAuthFailAction
-      (\ s a -> s{_achAuthFailAction = a})
-
--- | Level of login required to access this resource. Defaults to optional.
-achLogin :: Lens' APIConfigHandler (Maybe APIConfigHandlerLogin)
-achLogin = lens _achLogin (\ s a -> s{_achLogin = a})
-
-instance FromJSON APIConfigHandler where
-        parseJSON
-          = withObject "APIConfigHandler"
-              (\ o ->
-                 APIConfigHandler' <$>
-                   (o .:? "script") <*> (o .:? "securityLevel") <*>
-                     (o .:? "url")
-                     <*> (o .:? "authFailAction")
-                     <*> (o .:? "login"))
-
-instance ToJSON APIConfigHandler where
-        toJSON APIConfigHandler'{..}
-          = object
-              (catMaybes
-                 [("script" .=) <$> _achScript,
-                  ("securityLevel" .=) <$> _achSecurityLevel,
-                  ("url" .=) <$> _achURL,
-                  ("authFailAction" .=) <$> _achAuthFailAction,
-                  ("login" .=) <$> _achLogin])
-
--- | Environment variables available to the application.Only returned in GET
--- requests if view=FULL is set.
---
--- /See:/ 'versionEnvVariables' smart constructor.
-newtype VersionEnvVariables = VersionEnvVariables'
-    { _vevAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VersionEnvVariables' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vevAddtional'
-versionEnvVariables
-    :: HashMap Text Text -- ^ 'vevAddtional'
-    -> VersionEnvVariables
-versionEnvVariables pVevAddtional_ =
-    VersionEnvVariables'
-    { _vevAddtional = _Coerce # pVevAddtional_
-    }
-
-vevAddtional :: Lens' VersionEnvVariables (HashMap Text Text)
-vevAddtional
-  = lens _vevAddtional (\ s a -> s{_vevAddtional = a})
-      . _Coerce
-
-instance FromJSON VersionEnvVariables where
-        parseJSON
-          = withObject "VersionEnvVariables"
-              (\ o -> VersionEnvVariables' <$> (parseJSONObject o))
-
-instance ToJSON VersionEnvVariables where
-        toJSON = toJSON . _vevAddtional
-
--- | An Application resource contains the top-level configuration of an App
--- Engine application.
---
--- /See:/ 'application' smart constructor.
-data Application = Application'
-    { _aDefaultHostname         :: !(Maybe Text)
-    , _aDefaultCookieExpiration :: !(Maybe GDuration)
-    , _aIap                     :: !(Maybe IdentityAwareProxy)
-    , _aAuthDomain              :: !(Maybe Text)
-    , _aCodeBucket              :: !(Maybe Text)
-    , _aGcrDomain               :: !(Maybe Text)
-    , _aFeatureSettings         :: !(Maybe FeatureSettings)
-    , _aName                    :: !(Maybe Text)
-    , _aDispatchRules           :: !(Maybe [URLDispatchRule])
-    , _aDefaultBucket           :: !(Maybe Text)
-    , _aId                      :: !(Maybe Text)
-    , _aLocationId              :: !(Maybe Text)
-    , _aServingStatus           :: !(Maybe ApplicationServingStatus)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Application' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aDefaultHostname'
---
--- * 'aDefaultCookieExpiration'
---
--- * 'aIap'
---
--- * 'aAuthDomain'
---
--- * 'aCodeBucket'
---
--- * 'aGcrDomain'
---
--- * 'aFeatureSettings'
---
--- * 'aName'
---
--- * 'aDispatchRules'
---
--- * 'aDefaultBucket'
---
--- * 'aId'
---
--- * 'aLocationId'
---
--- * 'aServingStatus'
-application
-    :: Application
-application =
-    Application'
-    { _aDefaultHostname = Nothing
-    , _aDefaultCookieExpiration = Nothing
-    , _aIap = Nothing
-    , _aAuthDomain = Nothing
-    , _aCodeBucket = Nothing
-    , _aGcrDomain = Nothing
-    , _aFeatureSettings = Nothing
-    , _aName = Nothing
-    , _aDispatchRules = Nothing
-    , _aDefaultBucket = Nothing
-    , _aId = Nothing
-    , _aLocationId = Nothing
-    , _aServingStatus = Nothing
-    }
-
--- | Hostname used to reach this application, as resolved by App
--- Engine.\'OutputOnly
-aDefaultHostname :: Lens' Application (Maybe Text)
-aDefaultHostname
-  = lens _aDefaultHostname
-      (\ s a -> s{_aDefaultHostname = a})
-
--- | Cookie expiration policy for this application.
-aDefaultCookieExpiration :: Lens' Application (Maybe Scientific)
-aDefaultCookieExpiration
-  = lens _aDefaultCookieExpiration
-      (\ s a -> s{_aDefaultCookieExpiration = a})
-      . mapping _GDuration
-
-aIap :: Lens' Application (Maybe IdentityAwareProxy)
-aIap = lens _aIap (\ s a -> s{_aIap = a})
-
--- | Google Apps authentication domain that controls which users can access
--- this application.Defaults to open access for any Google Account.
-aAuthDomain :: Lens' Application (Maybe Text)
-aAuthDomain
-  = lens _aAuthDomain (\ s a -> s{_aAuthDomain = a})
-
--- | Google Cloud Storage bucket that can be used for storing files
--- associated with this application. This bucket is associated with the
--- application and can be used by the gcloud deployment
--- commands.\'OutputOnly
-aCodeBucket :: Lens' Application (Maybe Text)
-aCodeBucket
-  = lens _aCodeBucket (\ s a -> s{_aCodeBucket = a})
-
--- | The Google Container Registry domain used for storing managed build
--- docker images for this application.
-aGcrDomain :: Lens' Application (Maybe Text)
-aGcrDomain
-  = lens _aGcrDomain (\ s a -> s{_aGcrDomain = a})
-
--- | The feature specific settings to be used in the application.
-aFeatureSettings :: Lens' Application (Maybe FeatureSettings)
-aFeatureSettings
-  = lens _aFeatureSettings
-      (\ s a -> s{_aFeatureSettings = a})
-
--- | Full path to the Application resource in the API. Example:
--- apps\/myapp.\'OutputOnly
-aName :: Lens' Application (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a})
-
--- | HTTP path dispatch rules for requests to the application that do not
--- explicitly target a service or version. Rules are order-dependent. Up to
--- 20 dispatch rules can be supported.
-aDispatchRules :: Lens' Application [URLDispatchRule]
-aDispatchRules
-  = lens _aDispatchRules
-      (\ s a -> s{_aDispatchRules = a})
-      . _Default
-      . _Coerce
-
--- | Google Cloud Storage bucket that can be used by this application to
--- store content.\'OutputOnly
-aDefaultBucket :: Lens' Application (Maybe Text)
-aDefaultBucket
-  = lens _aDefaultBucket
-      (\ s a -> s{_aDefaultBucket = a})
-
--- | Identifier of the Application resource. This identifier is equivalent to
--- the project ID of the Google Cloud Platform project where you want to
--- deploy your application. Example: myapp.
-aId :: Lens' Application (Maybe Text)
-aId = lens _aId (\ s a -> s{_aId = a})
-
--- | Location from which this application runs. Application instances run out
--- of the data centers in the specified location, which is also where all
--- of the application\'s end user content is stored.Defaults to
--- us-central.View the list of supported locations
--- (https:\/\/cloud.google.com\/appengine\/docs\/locations).
-aLocationId :: Lens' Application (Maybe Text)
-aLocationId
-  = lens _aLocationId (\ s a -> s{_aLocationId = a})
-
--- | Serving status of this application.
-aServingStatus :: Lens' Application (Maybe ApplicationServingStatus)
-aServingStatus
-  = lens _aServingStatus
-      (\ s a -> s{_aServingStatus = a})
-
-instance FromJSON Application where
-        parseJSON
-          = withObject "Application"
-              (\ o ->
-                 Application' <$>
-                   (o .:? "defaultHostname") <*>
-                     (o .:? "defaultCookieExpiration")
-                     <*> (o .:? "iap")
-                     <*> (o .:? "authDomain")
-                     <*> (o .:? "codeBucket")
-                     <*> (o .:? "gcrDomain")
-                     <*> (o .:? "featureSettings")
-                     <*> (o .:? "name")
-                     <*> (o .:? "dispatchRules" .!= mempty)
-                     <*> (o .:? "defaultBucket")
-                     <*> (o .:? "id")
-                     <*> (o .:? "locationId")
-                     <*> (o .:? "servingStatus"))
-
-instance ToJSON Application where
-        toJSON Application'{..}
-          = object
-              (catMaybes
-                 [("defaultHostname" .=) <$> _aDefaultHostname,
-                  ("defaultCookieExpiration" .=) <$>
-                    _aDefaultCookieExpiration,
-                  ("iap" .=) <$> _aIap,
-                  ("authDomain" .=) <$> _aAuthDomain,
-                  ("codeBucket" .=) <$> _aCodeBucket,
-                  ("gcrDomain" .=) <$> _aGcrDomain,
-                  ("featureSettings" .=) <$> _aFeatureSettings,
-                  ("name" .=) <$> _aName,
-                  ("dispatchRules" .=) <$> _aDispatchRules,
-                  ("defaultBucket" .=) <$> _aDefaultBucket,
-                  ("id" .=) <$> _aId,
-                  ("locationId" .=) <$> _aLocationId,
-                  ("servingStatus" .=) <$> _aServingStatus])
-
--- | Metadata settings that are supplied to this version to enable beta
--- runtime features.
---
--- /See:/ 'versionBetaSettings' smart constructor.
-newtype VersionBetaSettings = VersionBetaSettings'
-    { _vbsAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VersionBetaSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vbsAddtional'
-versionBetaSettings
-    :: HashMap Text Text -- ^ 'vbsAddtional'
-    -> VersionBetaSettings
-versionBetaSettings pVbsAddtional_ =
-    VersionBetaSettings'
-    { _vbsAddtional = _Coerce # pVbsAddtional_
-    }
-
-vbsAddtional :: Lens' VersionBetaSettings (HashMap Text Text)
-vbsAddtional
-  = lens _vbsAddtional (\ s a -> s{_vbsAddtional = a})
-      . _Coerce
-
-instance FromJSON VersionBetaSettings where
-        parseJSON
-          = withObject "VersionBetaSettings"
-              (\ o -> VersionBetaSettings' <$> (parseJSONObject o))
-
-instance ToJSON VersionBetaSettings where
-        toJSON = toJSON . _vbsAddtional
-
--- | A Service resource is a logical component of an application that can
--- share state and communicate in a secure fashion with other services. For
--- example, an application that handles customer requests might include
--- separate services to handle tasks such as backend data analysis or API
--- requests from mobile devices. Each service has a collection of versions
--- that define a specific set of code used to implement the functionality
--- of that service.
---
--- /See:/ 'service' smart constructor.
-data Service = Service'
-    { _sSplit :: !(Maybe TrafficSplit)
-    , _sName  :: !(Maybe Text)
-    , _sId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Service' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sSplit'
---
--- * 'sName'
---
--- * 'sId'
-service
-    :: Service
-service =
-    Service'
-    { _sSplit = Nothing
-    , _sName = Nothing
-    , _sId = Nothing
-    }
-
--- | Mapping that defines fractional HTTP traffic diversion to different
--- versions within the service.
-sSplit :: Lens' Service (Maybe TrafficSplit)
-sSplit = lens _sSplit (\ s a -> s{_sSplit = a})
-
--- | Full path to the Service resource in the API. Example:
--- apps\/myapp\/services\/default.\'OutputOnly
-sName :: Lens' Service (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a})
-
--- | Relative name of the service within the application. Example:
--- default.\'OutputOnly
-sId :: Lens' Service (Maybe Text)
-sId = lens _sId (\ s a -> s{_sId = a})
-
-instance FromJSON Service where
-        parseJSON
-          = withObject "Service"
-              (\ o ->
-                 Service' <$>
-                   (o .:? "split") <*> (o .:? "name") <*> (o .:? "id"))
-
-instance ToJSON Service where
-        toJSON Service'{..}
-          = object
-              (catMaybes
-                 [("split" .=) <$> _sSplit, ("name" .=) <$> _sName,
-                  ("id" .=) <$> _sId])
-
--- | Cloud Endpoints (https:\/\/cloud.google.com\/endpoints) configuration.
--- The Endpoints API Service provides tooling for serving Open API and gRPC
--- endpoints via an NGINX proxy. Only valid for App Engine Flexible
--- environment deployments.The fields here refer to the name and
--- configuration ID of a \"service\" resource in the Service Management API
--- (https:\/\/cloud.google.com\/service-management\/overview).
---
--- /See:/ 'endpointsAPIService' smart constructor.
-data EndpointsAPIService = EndpointsAPIService'
-    { _easDisableTraceSampling :: !(Maybe Bool)
-    , _easName                 :: !(Maybe Text)
-    , _easConfigId             :: !(Maybe Text)
-    , _easRolloutStrategy      :: !(Maybe EndpointsAPIServiceRolloutStrategy)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EndpointsAPIService' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'easDisableTraceSampling'
---
--- * 'easName'
---
--- * 'easConfigId'
---
--- * 'easRolloutStrategy'
-endpointsAPIService
-    :: EndpointsAPIService
-endpointsAPIService =
-    EndpointsAPIService'
-    { _easDisableTraceSampling = Nothing
-    , _easName = Nothing
-    , _easConfigId = Nothing
-    , _easRolloutStrategy = Nothing
-    }
-
--- | Enable or disable trace sampling. By default, this is set to false for
--- enabled.
-easDisableTraceSampling :: Lens' EndpointsAPIService (Maybe Bool)
-easDisableTraceSampling
-  = lens _easDisableTraceSampling
-      (\ s a -> s{_easDisableTraceSampling = a})
-
--- | Endpoints service name which is the name of the \"service\" resource in
--- the Service Management API. For example
--- \"myapi.endpoints.myproject.cloud.goog\"
-easName :: Lens' EndpointsAPIService (Maybe Text)
-easName = lens _easName (\ s a -> s{_easName = a})
-
--- | Endpoints service configuration ID as specified by the Service
--- Management API. For example \"2016-09-19r1\".By default, the rollout
--- strategy for Endpoints is RolloutStrategy.FIXED. This means that
--- Endpoints starts up with a particular configuration ID. When a new
--- configuration is rolled out, Endpoints must be given the new
--- configuration ID. The config_id field is used to give the configuration
--- ID and is required in this case.Endpoints also has a rollout strategy
--- called RolloutStrategy.MANAGED. When using this, Endpoints fetches the
--- latest configuration and does not need the configuration ID. In this
--- case, config_id must be omitted.
-easConfigId :: Lens' EndpointsAPIService (Maybe Text)
-easConfigId
-  = lens _easConfigId (\ s a -> s{_easConfigId = a})
-
--- | Endpoints rollout strategy. If FIXED, config_id must be specified. If
--- MANAGED, config_id must be omitted.
-easRolloutStrategy :: Lens' EndpointsAPIService (Maybe EndpointsAPIServiceRolloutStrategy)
-easRolloutStrategy
-  = lens _easRolloutStrategy
-      (\ s a -> s{_easRolloutStrategy = a})
-
-instance FromJSON EndpointsAPIService where
-        parseJSON
-          = withObject "EndpointsAPIService"
-              (\ o ->
-                 EndpointsAPIService' <$>
-                   (o .:? "disableTraceSampling") <*> (o .:? "name") <*>
-                     (o .:? "configId")
-                     <*> (o .:? "rolloutStrategy"))
-
-instance ToJSON EndpointsAPIService where
-        toJSON EndpointsAPIService'{..}
-          = object
-              (catMaybes
-                 [("disableTraceSampling" .=) <$>
-                    _easDisableTraceSampling,
-                  ("name" .=) <$> _easName,
-                  ("configId" .=) <$> _easConfigId,
-                  ("rolloutStrategy" .=) <$> _easRolloutStrategy])
-
--- | A resource that represents Google Cloud Platform location.
---
--- /See:/ 'location' smart constructor.
-data Location = Location'
-    { _locName        :: !(Maybe Text)
-    , _locMetadata    :: !(Maybe LocationSchema)
-    , _locDisplayName :: !(Maybe Text)
-    , _locLabels      :: !(Maybe LocationLabels)
-    , _locLocationId  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Location' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'locName'
---
--- * 'locMetadata'
---
--- * 'locDisplayName'
---
--- * 'locLabels'
---
--- * 'locLocationId'
-location
-    :: Location
-location =
-    Location'
-    { _locName = Nothing
-    , _locMetadata = Nothing
-    , _locDisplayName = Nothing
-    , _locLabels = Nothing
-    , _locLocationId = Nothing
-    }
-
--- | Resource name for the location, which may vary between implementations.
--- For example: \"projects\/example-project\/locations\/us-east1\"
-locName :: Lens' Location (Maybe Text)
-locName = lens _locName (\ s a -> s{_locName = a})
-
--- | Service-specific metadata. For example the available capacity at the
--- given location.
-locMetadata :: Lens' Location (Maybe LocationSchema)
-locMetadata
-  = lens _locMetadata (\ s a -> s{_locMetadata = a})
-
--- | The friendly name for this location, typically a nearby city name. For
--- example, \"Tokyo\".
-locDisplayName :: Lens' Location (Maybe Text)
-locDisplayName
-  = lens _locDisplayName
-      (\ s a -> s{_locDisplayName = a})
-
--- | Cross-service attributes for the location. For example
--- {\"cloud.googleapis.com\/region\": \"us-east1\"}
-locLabels :: Lens' Location (Maybe LocationLabels)
-locLabels
-  = lens _locLabels (\ s a -> s{_locLabels = a})
-
--- | The canonical id for this location. For example: \"us-east1\".
-locLocationId :: Lens' Location (Maybe Text)
-locLocationId
-  = lens _locLocationId
-      (\ s a -> s{_locLocationId = a})
-
-instance FromJSON Location where
-        parseJSON
-          = withObject "Location"
-              (\ o ->
-                 Location' <$>
-                   (o .:? "name") <*> (o .:? "metadata") <*>
-                     (o .:? "displayName")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "locationId"))
-
-instance ToJSON Location where
-        toJSON Location'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _locName,
-                  ("metadata" .=) <$> _locMetadata,
-                  ("displayName" .=) <$> _locDisplayName,
-                  ("labels" .=) <$> _locLabels,
-                  ("locationId" .=) <$> _locLocationId])
-
--- | This resource represents a long-running operation that is the result of
--- a network API call.
---
--- /See:/ 'operation' smart constructor.
-data Operation = Operation'
-    { _oDone     :: !(Maybe Bool)
-    , _oError    :: !(Maybe Status)
-    , _oResponse :: !(Maybe OperationResponse)
-    , _oName     :: !(Maybe Text)
-    , _oMetadata :: !(Maybe OperationSchema)
-    } 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:
---
--- * 'oDone'
---
--- * 'oError'
---
--- * 'oResponse'
---
--- * 'oName'
---
--- * 'oMetadata'
-operation
-    :: Operation
-operation =
-    Operation'
-    { _oDone = Nothing
-    , _oError = Nothing
-    , _oResponse = Nothing
-    , _oName = Nothing
-    , _oMetadata = Nothing
-    }
-
--- | If the value is false, it means the operation is still in progress. If
--- true, the operation is completed, and either error or response is
--- available.
-oDone :: Lens' Operation (Maybe Bool)
-oDone = lens _oDone (\ s a -> s{_oDone = a})
-
--- | The error result of the operation in case of failure or cancellation.
-oError :: Lens' Operation (Maybe Status)
-oError = lens _oError (\ s a -> s{_oError = a})
-
--- | The normal response of the operation in case of success. If the original
--- method returns no data on success, such as Delete, the response is
--- google.protobuf.Empty. If the original method is standard
--- Get\/Create\/Update, the response should be the resource. For other
--- methods, the response should have the type XxxResponse, where Xxx is the
--- original method name. For example, if the original method name is
--- TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
-oResponse :: Lens' Operation (Maybe OperationResponse)
-oResponse
-  = lens _oResponse (\ s a -> s{_oResponse = a})
-
--- | The server-assigned name, which is only unique within the same service
--- that originally returns it. If you use the default HTTP mapping, the
--- name should have the format of operations\/some\/unique\/name.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
-oMetadata :: Lens' Operation (Maybe OperationSchema)
-oMetadata
-  = lens _oMetadata (\ s a -> s{_oMetadata = a})
-
-instance FromJSON Operation where
-        parseJSON
-          = withObject "Operation"
-              (\ o ->
-                 Operation' <$>
-                   (o .:? "done") <*> (o .:? "error") <*>
-                     (o .:? "response")
-                     <*> (o .:? "name")
-                     <*> (o .:? "metadata"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("done" .=) <$> _oDone, ("error" .=) <$> _oError,
-                  ("response" .=) <$> _oResponse,
-                  ("name" .=) <$> _oName,
-                  ("metadata" .=) <$> _oMetadata])
-
--- | The zip file information for a zip deployment.
---
--- /See:/ 'zipInfo' smart constructor.
-data ZipInfo = ZipInfo'
-    { _ziFilesCount :: !(Maybe (Textual Int32))
-    , _ziSourceURL  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ZipInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ziFilesCount'
---
--- * 'ziSourceURL'
-zipInfo
-    :: ZipInfo
-zipInfo =
-    ZipInfo'
-    { _ziFilesCount = Nothing
-    , _ziSourceURL = Nothing
-    }
-
--- | An estimate of the number of files in a zip for a zip deployment. If
--- set, must be greater than or equal to the actual number of files. Used
--- for optimizing performance; if not provided, deployment may be slow.
-ziFilesCount :: Lens' ZipInfo (Maybe Int32)
-ziFilesCount
-  = lens _ziFilesCount (\ s a -> s{_ziFilesCount = a})
-      . mapping _Coerce
-
--- | URL of the zip file to deploy from. Must be a URL to a resource in
--- Google Cloud Storage in the form
--- \'http(s):\/\/storage.googleapis.com\/\/
--- \'.
-ziSourceURL :: Lens' ZipInfo (Maybe Text)
-ziSourceURL
-  = lens _ziSourceURL (\ s a -> s{_ziSourceURL = a})
-
-instance FromJSON ZipInfo where
-        parseJSON
-          = withObject "ZipInfo"
-              (\ o ->
-                 ZipInfo' <$>
-                   (o .:? "filesCount") <*> (o .:? "sourceUrl"))
-
-instance ToJSON ZipInfo where
-        toJSON ZipInfo'{..}
-          = object
-              (catMaybes
-                 [("filesCount" .=) <$> _ziFilesCount,
-                  ("sourceUrl" .=) <$> _ziSourceURL])
-
--- | A generic empty message that you can re-use to avoid defining duplicated
--- empty messages in your APIs. A typical example is to use it as the
--- request or the response type of an API method. For instance: service Foo
--- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
--- JSON representation for Empty is empty JSON object {}.
---
--- /See:/ 'empty' smart constructor.
-data Empty =
-    Empty'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Empty' with the minimum fields required to make a request.
---
-empty
-    :: Empty
-empty = Empty'
-
-instance FromJSON Empty where
-        parseJSON = withObject "Empty" (\ o -> pure Empty')
-
-instance ToJSON Empty where
-        toJSON = const emptyObject
-
--- | Rules to match an HTTP request and dispatch that request to a service.
---
--- /See:/ 'urlDispatchRule' smart constructor.
-data URLDispatchRule = URLDispatchRule'
-    { _udrPath    :: !(Maybe Text)
-    , _udrService :: !(Maybe Text)
-    , _udrDomain  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'URLDispatchRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udrPath'
---
--- * 'udrService'
---
--- * 'udrDomain'
-urlDispatchRule
-    :: URLDispatchRule
-urlDispatchRule =
-    URLDispatchRule'
-    { _udrPath = Nothing
-    , _udrService = Nothing
-    , _udrDomain = Nothing
-    }
-
--- | Pathname within the host. Must start with a \"\/\". A single \"*\" can
--- be included at the end of the path.The sum of the lengths of the domain
--- and path may not exceed 100 characters.
-udrPath :: Lens' URLDispatchRule (Maybe Text)
-udrPath = lens _udrPath (\ s a -> s{_udrPath = a})
-
--- | Resource ID of a service in this application that should serve the
--- matched request. The service must already exist. Example: default.
-udrService :: Lens' URLDispatchRule (Maybe Text)
-udrService
-  = lens _udrService (\ s a -> s{_udrService = a})
-
--- | Domain name to match against. The wildcard \"*\" is supported if
--- specified before a period: \"*.\".Defaults to matching all domains:
--- \"*\".
-udrDomain :: Lens' URLDispatchRule (Maybe Text)
-udrDomain
-  = lens _udrDomain (\ s a -> s{_udrDomain = a})
-
-instance FromJSON URLDispatchRule where
-        parseJSON
-          = withObject "URLDispatchRule"
-              (\ o ->
-                 URLDispatchRule' <$>
-                   (o .:? "path") <*> (o .:? "service") <*>
-                     (o .:? "domain"))
-
-instance ToJSON URLDispatchRule where
-        toJSON URLDispatchRule'{..}
-          = object
-              (catMaybes
-                 [("path" .=) <$> _udrPath,
-                  ("service" .=) <$> _udrService,
-                  ("domain" .=) <$> _udrDomain])
-
--- | Metadata for the given google.longrunning.Operation.
---
--- /See:/ 'operationMetadataV1Beta' smart constructor.
-data OperationMetadataV1Beta = OperationMetadataV1Beta'
-    { _omvbEphemeralMessage      :: !(Maybe Text)
-    , _omvbInsertTime            :: !(Maybe DateTime')
-    , _omvbUser                  :: !(Maybe Text)
-    , _omvbMethod                :: !(Maybe Text)
-    , _omvbEndTime               :: !(Maybe DateTime')
-    , _omvbWarning               :: !(Maybe [Text])
-    , _omvbCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1Beta)
-    , _omvbTarget                :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadataV1Beta' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omvbEphemeralMessage'
---
--- * 'omvbInsertTime'
---
--- * 'omvbUser'
---
--- * 'omvbMethod'
---
--- * 'omvbEndTime'
---
--- * 'omvbWarning'
---
--- * 'omvbCreateVersionMetadata'
---
--- * 'omvbTarget'
-operationMetadataV1Beta
-    :: OperationMetadataV1Beta
-operationMetadataV1Beta =
-    OperationMetadataV1Beta'
-    { _omvbEphemeralMessage = Nothing
-    , _omvbInsertTime = Nothing
-    , _omvbUser = Nothing
-    , _omvbMethod = Nothing
-    , _omvbEndTime = Nothing
-    , _omvbWarning = Nothing
-    , _omvbCreateVersionMetadata = Nothing
-    , _omvbTarget = Nothing
-    }
-
--- | Ephemeral message that may change every time the operation is polled.
--- \'OutputOnly
-omvbEphemeralMessage :: Lens' OperationMetadataV1Beta (Maybe Text)
-omvbEphemeralMessage
-  = lens _omvbEphemeralMessage
-      (\ s a -> s{_omvbEphemeralMessage = a})
-
--- | Time that this operation was created.\'OutputOnly
-omvbInsertTime :: Lens' OperationMetadataV1Beta (Maybe UTCTime)
-omvbInsertTime
-  = lens _omvbInsertTime
-      (\ s a -> s{_omvbInsertTime = a})
-      . mapping _DateTime
-
--- | User who requested this operation.\'OutputOnly
-omvbUser :: Lens' OperationMetadataV1Beta (Maybe Text)
-omvbUser = lens _omvbUser (\ s a -> s{_omvbUser = a})
-
--- | API method that initiated this operation. Example:
--- google.appengine.v1beta.Versions.CreateVersion.\'OutputOnly
-omvbMethod :: Lens' OperationMetadataV1Beta (Maybe Text)
-omvbMethod
-  = lens _omvbMethod (\ s a -> s{_omvbMethod = a})
-
--- | Time that this operation completed.\'OutputOnly
-omvbEndTime :: Lens' OperationMetadataV1Beta (Maybe UTCTime)
-omvbEndTime
-  = lens _omvbEndTime (\ s a -> s{_omvbEndTime = a}) .
-      mapping _DateTime
-
--- | Durable messages that persist on every operation poll. \'OutputOnly
-omvbWarning :: Lens' OperationMetadataV1Beta [Text]
-omvbWarning
-  = lens _omvbWarning (\ s a -> s{_omvbWarning = a}) .
-      _Default
-      . _Coerce
-
-omvbCreateVersionMetadata :: Lens' OperationMetadataV1Beta (Maybe CreateVersionMetadataV1Beta)
-omvbCreateVersionMetadata
-  = lens _omvbCreateVersionMetadata
-      (\ s a -> s{_omvbCreateVersionMetadata = a})
-
--- | Name of the resource that this operation is acting on. Example:
--- apps\/myapp\/services\/default.\'OutputOnly
-omvbTarget :: Lens' OperationMetadataV1Beta (Maybe Text)
-omvbTarget
-  = lens _omvbTarget (\ s a -> s{_omvbTarget = a})
-
-instance FromJSON OperationMetadataV1Beta where
-        parseJSON
-          = withObject "OperationMetadataV1Beta"
-              (\ o ->
-                 OperationMetadataV1Beta' <$>
-                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
-                     <*> (o .:? "user")
-                     <*> (o .:? "method")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "warning" .!= mempty)
-                     <*> (o .:? "createVersionMetadata")
-                     <*> (o .:? "target"))
-
-instance ToJSON OperationMetadataV1Beta where
-        toJSON OperationMetadataV1Beta'{..}
-          = object
-              (catMaybes
-                 [("ephemeralMessage" .=) <$> _omvbEphemeralMessage,
-                  ("insertTime" .=) <$> _omvbInsertTime,
-                  ("user" .=) <$> _omvbUser,
-                  ("method" .=) <$> _omvbMethod,
-                  ("endTime" .=) <$> _omvbEndTime,
-                  ("warning" .=) <$> _omvbWarning,
-                  ("createVersionMetadata" .=) <$>
-                    _omvbCreateVersionMetadata,
-                  ("target" .=) <$> _omvbTarget])
-
--- | Response message for AuthorizedDomains.ListAuthorizedDomains.
---
--- /See:/ 'listAuthorizedDomainsResponse' smart constructor.
-data ListAuthorizedDomainsResponse = ListAuthorizedDomainsResponse'
-    { _ladrNextPageToken :: !(Maybe Text)
-    , _ladrDomains       :: !(Maybe [AuthorizedDomain])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListAuthorizedDomainsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ladrNextPageToken'
---
--- * 'ladrDomains'
-listAuthorizedDomainsResponse
-    :: ListAuthorizedDomainsResponse
-listAuthorizedDomainsResponse =
-    ListAuthorizedDomainsResponse'
-    { _ladrNextPageToken = Nothing
-    , _ladrDomains = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-ladrNextPageToken :: Lens' ListAuthorizedDomainsResponse (Maybe Text)
-ladrNextPageToken
-  = lens _ladrNextPageToken
-      (\ s a -> s{_ladrNextPageToken = a})
-
--- | The authorized domains belonging to the user.
-ladrDomains :: Lens' ListAuthorizedDomainsResponse [AuthorizedDomain]
-ladrDomains
-  = lens _ladrDomains (\ s a -> s{_ladrDomains = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListAuthorizedDomainsResponse where
-        parseJSON
-          = withObject "ListAuthorizedDomainsResponse"
-              (\ o ->
-                 ListAuthorizedDomainsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "domains" .!= mempty))
-
-instance ToJSON ListAuthorizedDomainsResponse where
-        toJSON ListAuthorizedDomainsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ladrNextPageToken,
-                  ("domains" .=) <$> _ladrDomains])
-
--- | The entrypoint for the application.
---
--- /See:/ 'entrypoint' smart constructor.
-newtype Entrypoint = Entrypoint'
-    { _eShell :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Entrypoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eShell'
-entrypoint
-    :: Entrypoint
-entrypoint =
-    Entrypoint'
-    { _eShell = Nothing
-    }
-
--- | The format should be a shell command that can be fed to bash -c.
-eShell :: Lens' Entrypoint (Maybe Text)
-eShell = lens _eShell (\ s a -> s{_eShell = a})
-
-instance FromJSON Entrypoint where
-        parseJSON
-          = withObject "Entrypoint"
-              (\ o -> Entrypoint' <$> (o .:? "shell"))
-
-instance ToJSON Entrypoint where
-        toJSON Entrypoint'{..}
-          = object (catMaybes [("shell" .=) <$> _eShell])
-
--- | Response message for Versions.ListVersions.
---
--- /See:/ 'listVersionsResponse' smart constructor.
-data ListVersionsResponse = ListVersionsResponse'
-    { _lvrNextPageToken :: !(Maybe Text)
-    , _lvrVersions      :: !(Maybe [Version])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListVersionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lvrNextPageToken'
---
--- * 'lvrVersions'
-listVersionsResponse
-    :: ListVersionsResponse
-listVersionsResponse =
-    ListVersionsResponse'
-    { _lvrNextPageToken = Nothing
-    , _lvrVersions = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-lvrNextPageToken :: Lens' ListVersionsResponse (Maybe Text)
-lvrNextPageToken
-  = lens _lvrNextPageToken
-      (\ s a -> s{_lvrNextPageToken = a})
-
--- | The versions belonging to the requested service.
-lvrVersions :: Lens' ListVersionsResponse [Version]
-lvrVersions
-  = lens _lvrVersions (\ s a -> s{_lvrVersions = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListVersionsResponse where
-        parseJSON
-          = withObject "ListVersionsResponse"
-              (\ o ->
-                 ListVersionsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "versions" .!= mempty))
-
-instance ToJSON ListVersionsResponse where
-        toJSON ListVersionsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lvrNextPageToken,
-                  ("versions" .=) <$> _lvrVersions])
-
--- | A certificate managed by App Engine.
---
--- /See:/ 'managedCertificate' smart constructor.
-data ManagedCertificate = ManagedCertificate'
-    { _mcStatus          :: !(Maybe ManagedCertificateStatus)
-    , _mcLastRenewalTime :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedCertificate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcStatus'
---
--- * 'mcLastRenewalTime'
-managedCertificate
-    :: ManagedCertificate
-managedCertificate =
-    ManagedCertificate'
-    { _mcStatus = Nothing
-    , _mcLastRenewalTime = Nothing
-    }
-
--- | Status of certificate management. Refers to the most recent certificate
--- acquisition or renewal attempt.\'OutputOnly
-mcStatus :: Lens' ManagedCertificate (Maybe ManagedCertificateStatus)
-mcStatus = lens _mcStatus (\ s a -> s{_mcStatus = a})
-
--- | Time at which the certificate was last renewed. The renewal process is
--- fully managed. Certificate renewal will automatically occur before the
--- certificate expires. Renewal errors can be tracked via
--- ManagementStatus.\'OutputOnly
-mcLastRenewalTime :: Lens' ManagedCertificate (Maybe UTCTime)
-mcLastRenewalTime
-  = lens _mcLastRenewalTime
-      (\ s a -> s{_mcLastRenewalTime = a})
-      . mapping _DateTime
-
-instance FromJSON ManagedCertificate where
-        parseJSON
-          = withObject "ManagedCertificate"
-              (\ o ->
-                 ManagedCertificate' <$>
-                   (o .:? "status") <*> (o .:? "lastRenewalTime"))
-
-instance ToJSON ManagedCertificate where
-        toJSON ManagedCertificate'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _mcStatus,
-                  ("lastRenewalTime" .=) <$> _mcLastRenewalTime])
-
--- | Metadata for the given google.longrunning.Operation during a
--- google.appengine.v1alpha.CreateVersionRequest.
---
--- /See:/ 'createVersionMetadataV1Alpha' smart constructor.
-newtype CreateVersionMetadataV1Alpha = CreateVersionMetadataV1Alpha'
-    { _cvmvaCloudBuildId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateVersionMetadataV1Alpha' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvmvaCloudBuildId'
-createVersionMetadataV1Alpha
-    :: CreateVersionMetadataV1Alpha
-createVersionMetadataV1Alpha =
-    CreateVersionMetadataV1Alpha'
-    { _cvmvaCloudBuildId = Nothing
-    }
-
--- | The Cloud Build ID if one was created as part of the version create.
--- \'OutputOnly
-cvmvaCloudBuildId :: Lens' CreateVersionMetadataV1Alpha (Maybe Text)
-cvmvaCloudBuildId
-  = lens _cvmvaCloudBuildId
-      (\ s a -> s{_cvmvaCloudBuildId = a})
-
-instance FromJSON CreateVersionMetadataV1Alpha where
-        parseJSON
-          = withObject "CreateVersionMetadataV1Alpha"
-              (\ o ->
-                 CreateVersionMetadataV1Alpha' <$>
-                   (o .:? "cloudBuildId"))
-
-instance ToJSON CreateVersionMetadataV1Alpha where
-        toJSON CreateVersionMetadataV1Alpha'{..}
-          = object
-              (catMaybes
-                 [("cloudBuildId" .=) <$> _cvmvaCloudBuildId])
-
--- | Single source file that is part of the version to be deployed. Each
--- source file that is deployed must be specified separately.
---
--- /See:/ 'fileInfo' smart constructor.
-data FileInfo = FileInfo'
-    { _fiSha1Sum   :: !(Maybe Text)
-    , _fiMimeType  :: !(Maybe Text)
-    , _fiSourceURL :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fiSha1Sum'
---
--- * 'fiMimeType'
---
--- * 'fiSourceURL'
-fileInfo
-    :: FileInfo
-fileInfo =
-    FileInfo'
-    { _fiSha1Sum = Nothing
-    , _fiMimeType = Nothing
-    , _fiSourceURL = Nothing
-    }
-
--- | The SHA1 hash of the file, in hex.
-fiSha1Sum :: Lens' FileInfo (Maybe Text)
-fiSha1Sum
-  = lens _fiSha1Sum (\ s a -> s{_fiSha1Sum = a})
-
--- | The MIME type of the file.Defaults to the value from Google Cloud
--- Storage.
-fiMimeType :: Lens' FileInfo (Maybe Text)
-fiMimeType
-  = lens _fiMimeType (\ s a -> s{_fiMimeType = a})
-
--- | URL source to use to fetch this file. Must be a URL to a resource in
--- Google Cloud Storage in the form
--- \'http(s):\/\/storage.googleapis.com\/\/
--- \'.
-fiSourceURL :: Lens' FileInfo (Maybe Text)
-fiSourceURL
-  = lens _fiSourceURL (\ s a -> s{_fiSourceURL = a})
-
-instance FromJSON FileInfo where
-        parseJSON
-          = withObject "FileInfo"
-              (\ o ->
-                 FileInfo' <$>
-                   (o .:? "sha1Sum") <*> (o .:? "mimeType") <*>
-                     (o .:? "sourceUrl"))
-
-instance ToJSON FileInfo where
-        toJSON FileInfo'{..}
-          = object
-              (catMaybes
-                 [("sha1Sum" .=) <$> _fiSha1Sum,
-                  ("mimeType" .=) <$> _fiMimeType,
-                  ("sourceUrl" .=) <$> _fiSourceURL])
-
--- | Automatic scaling is based on request rate, response latencies, and
--- other application metrics.
---
--- /See:/ 'automaticScaling' smart constructor.
-data AutomaticScaling = AutomaticScaling'
-    { _asNetworkUtilization        :: !(Maybe NetworkUtilization)
-    , _asMaxTotalInstances         :: !(Maybe (Textual Int32))
-    , _asMinIdleInstances          :: !(Maybe (Textual Int32))
-    , _asDiskUtilization           :: !(Maybe DiskUtilization)
-    , _asMinPendingLatency         :: !(Maybe GDuration)
-    , _asCPUUtilization            :: !(Maybe CPUUtilization)
-    , _asMaxIdleInstances          :: !(Maybe (Textual Int32))
-    , _asMinTotalInstances         :: !(Maybe (Textual Int32))
-    , _asMaxConcurrentRequests     :: !(Maybe (Textual Int32))
-    , _asCoolDownPeriod            :: !(Maybe GDuration)
-    , _asRequestUtilization        :: !(Maybe RequestUtilization)
-    , _asMaxPendingLatency         :: !(Maybe GDuration)
-    , _asStandardSchedulerSettings :: !(Maybe StandardSchedulerSettings)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutomaticScaling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asNetworkUtilization'
---
--- * 'asMaxTotalInstances'
---
--- * 'asMinIdleInstances'
---
--- * 'asDiskUtilization'
---
--- * 'asMinPendingLatency'
---
--- * 'asCPUUtilization'
---
--- * 'asMaxIdleInstances'
---
--- * 'asMinTotalInstances'
---
--- * 'asMaxConcurrentRequests'
---
--- * 'asCoolDownPeriod'
---
--- * 'asRequestUtilization'
---
--- * 'asMaxPendingLatency'
---
--- * 'asStandardSchedulerSettings'
-automaticScaling
-    :: AutomaticScaling
-automaticScaling =
-    AutomaticScaling'
-    { _asNetworkUtilization = Nothing
-    , _asMaxTotalInstances = Nothing
-    , _asMinIdleInstances = Nothing
-    , _asDiskUtilization = Nothing
-    , _asMinPendingLatency = Nothing
-    , _asCPUUtilization = Nothing
-    , _asMaxIdleInstances = Nothing
-    , _asMinTotalInstances = Nothing
-    , _asMaxConcurrentRequests = Nothing
-    , _asCoolDownPeriod = Nothing
-    , _asRequestUtilization = Nothing
-    , _asMaxPendingLatency = Nothing
-    , _asStandardSchedulerSettings = Nothing
-    }
-
--- | Target scaling by network usage.
-asNetworkUtilization :: Lens' AutomaticScaling (Maybe NetworkUtilization)
-asNetworkUtilization
-  = lens _asNetworkUtilization
-      (\ s a -> s{_asNetworkUtilization = a})
-
--- | Maximum number of instances that should be started to handle requests
--- for this version.
-asMaxTotalInstances :: Lens' AutomaticScaling (Maybe Int32)
-asMaxTotalInstances
-  = lens _asMaxTotalInstances
-      (\ s a -> s{_asMaxTotalInstances = a})
-      . mapping _Coerce
-
--- | Minimum number of idle instances that should be maintained for this
--- version. Only applicable for the default version of a service.
-asMinIdleInstances :: Lens' AutomaticScaling (Maybe Int32)
-asMinIdleInstances
-  = lens _asMinIdleInstances
-      (\ s a -> s{_asMinIdleInstances = a})
-      . mapping _Coerce
-
--- | Target scaling by disk usage.
-asDiskUtilization :: Lens' AutomaticScaling (Maybe DiskUtilization)
-asDiskUtilization
-  = lens _asDiskUtilization
-      (\ s a -> s{_asDiskUtilization = a})
-
--- | Minimum amount of time a request should wait in the pending queue before
--- starting a new instance to handle it.
-asMinPendingLatency :: Lens' AutomaticScaling (Maybe Scientific)
-asMinPendingLatency
-  = lens _asMinPendingLatency
-      (\ s a -> s{_asMinPendingLatency = a})
-      . mapping _GDuration
-
--- | Target scaling by CPU usage.
-asCPUUtilization :: Lens' AutomaticScaling (Maybe CPUUtilization)
-asCPUUtilization
-  = lens _asCPUUtilization
-      (\ s a -> s{_asCPUUtilization = a})
-
--- | Maximum number of idle instances that should be maintained for this
--- version.
-asMaxIdleInstances :: Lens' AutomaticScaling (Maybe Int32)
-asMaxIdleInstances
-  = lens _asMaxIdleInstances
-      (\ s a -> s{_asMaxIdleInstances = a})
-      . mapping _Coerce
-
--- | Minimum number of running instances that should be maintained for this
--- version.
-asMinTotalInstances :: Lens' AutomaticScaling (Maybe Int32)
-asMinTotalInstances
-  = lens _asMinTotalInstances
-      (\ s a -> s{_asMinTotalInstances = a})
-      . mapping _Coerce
-
--- | Number of concurrent requests an automatic scaling instance can accept
--- before the scheduler spawns a new instance.Defaults to a
--- runtime-specific value.
-asMaxConcurrentRequests :: Lens' AutomaticScaling (Maybe Int32)
-asMaxConcurrentRequests
-  = lens _asMaxConcurrentRequests
-      (\ s a -> s{_asMaxConcurrentRequests = a})
-      . mapping _Coerce
-
--- | The time period that the Autoscaler
--- (https:\/\/cloud.google.com\/compute\/docs\/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.
--- Only applicable in the App Engine flexible environment.
-asCoolDownPeriod :: Lens' AutomaticScaling (Maybe Scientific)
-asCoolDownPeriod
-  = lens _asCoolDownPeriod
-      (\ s a -> s{_asCoolDownPeriod = a})
-      . mapping _GDuration
-
--- | Target scaling by request utilization.
-asRequestUtilization :: Lens' AutomaticScaling (Maybe RequestUtilization)
-asRequestUtilization
-  = lens _asRequestUtilization
-      (\ s a -> s{_asRequestUtilization = a})
-
--- | Maximum amount of time that a request should wait in the pending queue
--- before starting a new instance to handle it.
-asMaxPendingLatency :: Lens' AutomaticScaling (Maybe Scientific)
-asMaxPendingLatency
-  = lens _asMaxPendingLatency
-      (\ s a -> s{_asMaxPendingLatency = a})
-      . mapping _GDuration
-
--- | Scheduler settings for standard environment.
-asStandardSchedulerSettings :: Lens' AutomaticScaling (Maybe StandardSchedulerSettings)
-asStandardSchedulerSettings
-  = lens _asStandardSchedulerSettings
-      (\ s a -> s{_asStandardSchedulerSettings = a})
-
-instance FromJSON AutomaticScaling where
-        parseJSON
-          = withObject "AutomaticScaling"
-              (\ o ->
-                 AutomaticScaling' <$>
-                   (o .:? "networkUtilization") <*>
-                     (o .:? "maxTotalInstances")
-                     <*> (o .:? "minIdleInstances")
-                     <*> (o .:? "diskUtilization")
-                     <*> (o .:? "minPendingLatency")
-                     <*> (o .:? "cpuUtilization")
-                     <*> (o .:? "maxIdleInstances")
-                     <*> (o .:? "minTotalInstances")
-                     <*> (o .:? "maxConcurrentRequests")
-                     <*> (o .:? "coolDownPeriod")
-                     <*> (o .:? "requestUtilization")
-                     <*> (o .:? "maxPendingLatency")
-                     <*> (o .:? "standardSchedulerSettings"))
-
-instance ToJSON AutomaticScaling where
-        toJSON AutomaticScaling'{..}
-          = object
-              (catMaybes
-                 [("networkUtilization" .=) <$> _asNetworkUtilization,
-                  ("maxTotalInstances" .=) <$> _asMaxTotalInstances,
-                  ("minIdleInstances" .=) <$> _asMinIdleInstances,
-                  ("diskUtilization" .=) <$> _asDiskUtilization,
-                  ("minPendingLatency" .=) <$> _asMinPendingLatency,
-                  ("cpuUtilization" .=) <$> _asCPUUtilization,
-                  ("maxIdleInstances" .=) <$> _asMaxIdleInstances,
-                  ("minTotalInstances" .=) <$> _asMinTotalInstances,
-                  ("maxConcurrentRequests" .=) <$>
-                    _asMaxConcurrentRequests,
-                  ("coolDownPeriod" .=) <$> _asCoolDownPeriod,
-                  ("requestUtilization" .=) <$> _asRequestUtilization,
-                  ("maxPendingLatency" .=) <$> _asMaxPendingLatency,
-                  ("standardSchedulerSettings" .=) <$>
-                    _asStandardSchedulerSettings])
-
--- | Metadata for the given google.longrunning.Operation.
---
--- /See:/ 'operationMetadataV1Beta5' smart constructor.
-data OperationMetadataV1Beta5 = OperationMetadataV1Beta5'
-    { _oInsertTime :: !(Maybe DateTime')
-    , _oUser       :: !(Maybe Text)
-    , _oMethod     :: !(Maybe Text)
-    , _oEndTime    :: !(Maybe DateTime')
-    , _oTarget     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadataV1Beta5' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oInsertTime'
---
--- * 'oUser'
---
--- * 'oMethod'
---
--- * 'oEndTime'
---
--- * 'oTarget'
-operationMetadataV1Beta5
-    :: OperationMetadataV1Beta5
-operationMetadataV1Beta5 =
-    OperationMetadataV1Beta5'
-    { _oInsertTime = Nothing
-    , _oUser = Nothing
-    , _oMethod = Nothing
-    , _oEndTime = Nothing
-    , _oTarget = Nothing
-    }
-
--- | Timestamp that this operation was created.\'OutputOnly
-oInsertTime :: Lens' OperationMetadataV1Beta5 (Maybe UTCTime)
-oInsertTime
-  = lens _oInsertTime (\ s a -> s{_oInsertTime = a}) .
-      mapping _DateTime
-
--- | User who requested this operation.\'OutputOnly
-oUser :: Lens' OperationMetadataV1Beta5 (Maybe Text)
-oUser = lens _oUser (\ s a -> s{_oUser = a})
-
--- | API method name that initiated this operation. Example:
--- google.appengine.v1beta5.Version.CreateVersion.\'OutputOnly
-oMethod :: Lens' OperationMetadataV1Beta5 (Maybe Text)
-oMethod = lens _oMethod (\ s a -> s{_oMethod = a})
-
--- | Timestamp that this operation completed.\'OutputOnly
-oEndTime :: Lens' OperationMetadataV1Beta5 (Maybe UTCTime)
-oEndTime
-  = lens _oEndTime (\ s a -> s{_oEndTime = a}) .
-      mapping _DateTime
-
--- | Name of the resource that this operation is acting on. Example:
--- apps\/myapp\/services\/default.\'OutputOnly
-oTarget :: Lens' OperationMetadataV1Beta5 (Maybe Text)
-oTarget = lens _oTarget (\ s a -> s{_oTarget = a})
-
-instance FromJSON OperationMetadataV1Beta5 where
-        parseJSON
-          = withObject "OperationMetadataV1Beta5"
-              (\ o ->
-                 OperationMetadataV1Beta5' <$>
-                   (o .:? "insertTime") <*> (o .:? "user") <*>
-                     (o .:? "method")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "target"))
-
-instance ToJSON OperationMetadataV1Beta5 where
-        toJSON OperationMetadataV1Beta5'{..}
-          = object
-              (catMaybes
-                 [("insertTime" .=) <$> _oInsertTime,
-                  ("user" .=) <$> _oUser, ("method" .=) <$> _oMethod,
-                  ("endTime" .=) <$> _oEndTime,
-                  ("target" .=) <$> _oTarget])
-
--- | Volumes mounted within the app container. Only applicable in the App
--- Engine flexible environment.
---
--- /See:/ 'volume' smart constructor.
-data Volume = Volume'
-    { _vSizeGb     :: !(Maybe (Textual Double))
-    , _vName       :: !(Maybe Text)
-    , _vVolumeType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Volume' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vSizeGb'
---
--- * 'vName'
---
--- * 'vVolumeType'
-volume
-    :: Volume
-volume =
-    Volume'
-    { _vSizeGb = Nothing
-    , _vName = Nothing
-    , _vVolumeType = Nothing
-    }
-
--- | Volume size in gigabytes.
-vSizeGb :: Lens' Volume (Maybe Double)
-vSizeGb
-  = lens _vSizeGb (\ s a -> s{_vSizeGb = a}) .
-      mapping _Coerce
-
--- | Unique name for the volume.
-vName :: Lens' Volume (Maybe Text)
-vName = lens _vName (\ s a -> s{_vName = a})
-
--- | Underlying volume type, e.g. \'tmpfs\'.
-vVolumeType :: Lens' Volume (Maybe Text)
-vVolumeType
-  = lens _vVolumeType (\ s a -> s{_vVolumeType = a})
-
-instance FromJSON Volume where
-        parseJSON
-          = withObject "Volume"
-              (\ o ->
-                 Volume' <$>
-                   (o .:? "sizeGb") <*> (o .:? "name") <*>
-                     (o .:? "volumeType"))
-
-instance ToJSON Volume where
-        toJSON Volume'{..}
-          = object
-              (catMaybes
-                 [("sizeGb" .=) <$> _vSizeGb, ("name" .=) <$> _vName,
-                  ("volumeType" .=) <$> _vVolumeType])
-
--- | Uses Google Cloud Endpoints to handle requests.
---
--- /See:/ 'apiEndpointHandler' smart constructor.
-newtype APIEndpointHandler = APIEndpointHandler'
-    { _aehScriptPath :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'APIEndpointHandler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aehScriptPath'
-apiEndpointHandler
-    :: APIEndpointHandler
-apiEndpointHandler =
-    APIEndpointHandler'
-    { _aehScriptPath = Nothing
-    }
-
--- | Path to the script from the application root directory.
-aehScriptPath :: Lens' APIEndpointHandler (Maybe Text)
-aehScriptPath
-  = lens _aehScriptPath
-      (\ s a -> s{_aehScriptPath = a})
-
-instance FromJSON APIEndpointHandler where
-        parseJSON
-          = withObject "APIEndpointHandler"
-              (\ o -> APIEndpointHandler' <$> (o .:? "scriptPath"))
-
-instance ToJSON APIEndpointHandler where
-        toJSON APIEndpointHandler'{..}
-          = object
-              (catMaybes [("scriptPath" .=) <$> _aehScriptPath])
-
---
--- /See:/ 'statusDetailsItem' smart constructor.
-newtype StatusDetailsItem = StatusDetailsItem'
-    { _sdiAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdiAddtional'
-statusDetailsItem
-    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
-    -> StatusDetailsItem
-statusDetailsItem pSdiAddtional_ =
-    StatusDetailsItem'
-    { _sdiAddtional = _Coerce # pSdiAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
-sdiAddtional
-  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
-      . _Coerce
-
-instance FromJSON StatusDetailsItem where
-        parseJSON
-          = withObject "StatusDetailsItem"
-              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
-
-instance ToJSON StatusDetailsItem where
-        toJSON = toJSON . _sdiAddtional
-
--- | Response message for Firewall.ListIngressRules.
---
--- /See:/ 'listIngressRulesResponse' smart constructor.
-data ListIngressRulesResponse = ListIngressRulesResponse'
-    { _lirrNextPageToken :: !(Maybe Text)
-    , _lirrIngressRules  :: !(Maybe [FirewallRule])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListIngressRulesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lirrNextPageToken'
---
--- * 'lirrIngressRules'
-listIngressRulesResponse
-    :: ListIngressRulesResponse
-listIngressRulesResponse =
-    ListIngressRulesResponse'
-    { _lirrNextPageToken = Nothing
-    , _lirrIngressRules = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-lirrNextPageToken :: Lens' ListIngressRulesResponse (Maybe Text)
-lirrNextPageToken
-  = lens _lirrNextPageToken
-      (\ s a -> s{_lirrNextPageToken = a})
-
--- | The ingress FirewallRules for this application.
-lirrIngressRules :: Lens' ListIngressRulesResponse [FirewallRule]
-lirrIngressRules
-  = lens _lirrIngressRules
-      (\ s a -> s{_lirrIngressRules = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListIngressRulesResponse where
-        parseJSON
-          = withObject "ListIngressRulesResponse"
-              (\ o ->
-                 ListIngressRulesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "ingressRules" .!= mempty))
-
-instance ToJSON ListIngressRulesResponse where
-        toJSON ListIngressRulesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lirrNextPageToken,
-                  ("ingressRules" .=) <$> _lirrIngressRules])
-
--- | Extra network settings. Only applicable in the App Engine flexible
--- environment.
---
--- /See:/ 'network' smart constructor.
-data Network = Network'
-    { _nSubnetworkName :: !(Maybe Text)
-    , _nForwardedPorts :: !(Maybe [Text])
-    , _nInstanceTag    :: !(Maybe Text)
-    , _nName           :: !(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:
---
--- * 'nSubnetworkName'
---
--- * 'nForwardedPorts'
---
--- * 'nInstanceTag'
---
--- * 'nName'
-network
-    :: Network
-network =
-    Network'
-    { _nSubnetworkName = Nothing
-    , _nForwardedPorts = Nothing
-    , _nInstanceTag = Nothing
-    , _nName = Nothing
-    }
-
--- | Google Cloud Platform sub-network where the virtual machines are
--- created. Specify the short name, not the resource path.If a subnetwork
--- name is specified, a network name will also be required unless it is for
--- the default network. If the network that the instance is being created
--- in is a Legacy network, then the IP address is allocated from the
--- IPv4Range. If the network that the instance is being created in is an
--- auto Subnet Mode Network, then only network name should be specified
--- (not the subnetwork_name) and the IP address is created from the
--- IPCidrRange of the subnetwork that exists in that zone for that network.
--- If the network that the instance is being created in is a custom Subnet
--- Mode Network, then the subnetwork_name must be specified and the IP
--- address is created from the IPCidrRange of the subnetwork.If specified,
--- the subnetwork must exist in the same region as the App Engine flexible
--- environment application.
-nSubnetworkName :: Lens' Network (Maybe Text)
-nSubnetworkName
-  = lens _nSubnetworkName
-      (\ s a -> s{_nSubnetworkName = a})
-
--- | List of ports, or port pairs, to forward from the virtual machine to the
--- application container. Only applicable in the App Engine flexible
--- environment.
-nForwardedPorts :: Lens' Network [Text]
-nForwardedPorts
-  = lens _nForwardedPorts
-      (\ s a -> s{_nForwardedPorts = a})
-      . _Default
-      . _Coerce
-
--- | Tag to apply to the instance during creation. Only applicable in the App
--- Engine flexible environment.
-nInstanceTag :: Lens' Network (Maybe Text)
-nInstanceTag
-  = lens _nInstanceTag (\ s a -> s{_nInstanceTag = a})
-
--- | Google Compute Engine network where the virtual machines are created.
--- Specify the short name, not the resource path.Defaults to default.
-nName :: Lens' Network (Maybe Text)
-nName = lens _nName (\ s a -> s{_nName = a})
-
-instance FromJSON Network where
-        parseJSON
-          = withObject "Network"
-              (\ o ->
-                 Network' <$>
-                   (o .:? "subnetworkName") <*>
-                     (o .:? "forwardedPorts" .!= mempty)
-                     <*> (o .:? "instanceTag")
-                     <*> (o .:? "name"))
-
-instance ToJSON Network where
-        toJSON Network'{..}
-          = object
-              (catMaybes
-                 [("subnetworkName" .=) <$> _nSubnetworkName,
-                  ("forwardedPorts" .=) <$> _nForwardedPorts,
-                  ("instanceTag" .=) <$> _nInstanceTag,
-                  ("name" .=) <$> _nName])
-
--- | Readiness checking configuration for VM instances. Unhealthy instances
--- are removed from traffic rotation.
---
--- /See:/ 'readinessCheck' smart constructor.
-data ReadinessCheck = ReadinessCheck'
-    { _rcSuccessThreshold :: !(Maybe (Textual Word32))
-    , _rcFailureThreshold :: !(Maybe (Textual Word32))
-    , _rcPath             :: !(Maybe Text)
-    , _rcCheckInterval    :: !(Maybe GDuration)
-    , _rcAppStartTimeout  :: !(Maybe GDuration)
-    , _rcHost             :: !(Maybe Text)
-    , _rcTimeout          :: !(Maybe GDuration)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReadinessCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcSuccessThreshold'
---
--- * 'rcFailureThreshold'
---
--- * 'rcPath'
---
--- * 'rcCheckInterval'
---
--- * 'rcAppStartTimeout'
---
--- * 'rcHost'
---
--- * 'rcTimeout'
-readinessCheck
-    :: ReadinessCheck
-readinessCheck =
-    ReadinessCheck'
-    { _rcSuccessThreshold = Nothing
-    , _rcFailureThreshold = Nothing
-    , _rcPath = Nothing
-    , _rcCheckInterval = Nothing
-    , _rcAppStartTimeout = Nothing
-    , _rcHost = Nothing
-    , _rcTimeout = Nothing
-    }
-
--- | Number of consecutive successful checks required before receiving
--- traffic.
-rcSuccessThreshold :: Lens' ReadinessCheck (Maybe Word32)
-rcSuccessThreshold
-  = lens _rcSuccessThreshold
-      (\ s a -> s{_rcSuccessThreshold = a})
-      . mapping _Coerce
-
--- | Number of consecutive failed checks required before removing traffic.
-rcFailureThreshold :: Lens' ReadinessCheck (Maybe Word32)
-rcFailureThreshold
-  = lens _rcFailureThreshold
-      (\ s a -> s{_rcFailureThreshold = a})
-      . mapping _Coerce
-
--- | The request path.
-rcPath :: Lens' ReadinessCheck (Maybe Text)
-rcPath = lens _rcPath (\ s a -> s{_rcPath = a})
-
--- | Interval between health checks.
-rcCheckInterval :: Lens' ReadinessCheck (Maybe Scientific)
-rcCheckInterval
-  = lens _rcCheckInterval
-      (\ s a -> s{_rcCheckInterval = a})
-      . mapping _GDuration
-
--- | A maximum time limit on application initialization, measured from moment
--- the application successfully replies to a healthcheck until it is ready
--- to serve traffic.
-rcAppStartTimeout :: Lens' ReadinessCheck (Maybe Scientific)
-rcAppStartTimeout
-  = lens _rcAppStartTimeout
-      (\ s a -> s{_rcAppStartTimeout = a})
-      . mapping _GDuration
-
--- | Host header to send when performing a HTTP Readiness check. Example:
--- \"myapp.appspot.com\"
-rcHost :: Lens' ReadinessCheck (Maybe Text)
-rcHost = lens _rcHost (\ s a -> s{_rcHost = a})
-
--- | Time before the check is considered failed.
-rcTimeout :: Lens' ReadinessCheck (Maybe Scientific)
-rcTimeout
-  = lens _rcTimeout (\ s a -> s{_rcTimeout = a}) .
-      mapping _GDuration
-
-instance FromJSON ReadinessCheck where
-        parseJSON
-          = withObject "ReadinessCheck"
-              (\ o ->
-                 ReadinessCheck' <$>
-                   (o .:? "successThreshold") <*>
-                     (o .:? "failureThreshold")
-                     <*> (o .:? "path")
-                     <*> (o .:? "checkInterval")
-                     <*> (o .:? "appStartTimeout")
-                     <*> (o .:? "host")
-                     <*> (o .:? "timeout"))
-
-instance ToJSON ReadinessCheck where
-        toJSON ReadinessCheck'{..}
-          = object
-              (catMaybes
-                 [("successThreshold" .=) <$> _rcSuccessThreshold,
-                  ("failureThreshold" .=) <$> _rcFailureThreshold,
-                  ("path" .=) <$> _rcPath,
-                  ("checkInterval" .=) <$> _rcCheckInterval,
-                  ("appStartTimeout" .=) <$> _rcAppStartTimeout,
-                  ("host" .=) <$> _rcHost,
-                  ("timeout" .=) <$> _rcTimeout])
-
--- | Request message for Firewall.BatchUpdateIngressRules.
---
--- /See:/ 'batchUpdateIngressRulesRequest' smart constructor.
-newtype BatchUpdateIngressRulesRequest = BatchUpdateIngressRulesRequest'
-    { _buirrIngressRules :: Maybe [FirewallRule]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BatchUpdateIngressRulesRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buirrIngressRules'
-batchUpdateIngressRulesRequest
-    :: BatchUpdateIngressRulesRequest
-batchUpdateIngressRulesRequest =
-    BatchUpdateIngressRulesRequest'
-    { _buirrIngressRules = Nothing
-    }
-
--- | A list of FirewallRules to replace the existing set.
-buirrIngressRules :: Lens' BatchUpdateIngressRulesRequest [FirewallRule]
-buirrIngressRules
-  = lens _buirrIngressRules
-      (\ s a -> s{_buirrIngressRules = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BatchUpdateIngressRulesRequest
-         where
-        parseJSON
-          = withObject "BatchUpdateIngressRulesRequest"
-              (\ o ->
-                 BatchUpdateIngressRulesRequest' <$>
-                   (o .:? "ingressRules" .!= mempty))
-
-instance ToJSON BatchUpdateIngressRulesRequest where
-        toJSON BatchUpdateIngressRulesRequest'{..}
-          = object
-              (catMaybes
-                 [("ingressRules" .=) <$> _buirrIngressRules])
-
--- | Request message for Instances.DebugInstance.
---
--- /See:/ 'debugInstanceRequest' smart constructor.
-newtype DebugInstanceRequest = DebugInstanceRequest'
-    { _dirSSHKey :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DebugInstanceRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dirSSHKey'
-debugInstanceRequest
-    :: DebugInstanceRequest
-debugInstanceRequest =
-    DebugInstanceRequest'
-    { _dirSSHKey = Nothing
-    }
-
--- | Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa
--- [KEY_VALUE] [USERNAME] [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh
--- {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more
--- information, see Adding and Removing SSH Keys
--- (https:\/\/cloud.google.com\/compute\/docs\/instances\/adding-removing-ssh-keys).
-dirSSHKey :: Lens' DebugInstanceRequest (Maybe Text)
-dirSSHKey
-  = lens _dirSSHKey (\ s a -> s{_dirSSHKey = a})
-
-instance FromJSON DebugInstanceRequest where
-        parseJSON
-          = withObject "DebugInstanceRequest"
-              (\ o -> DebugInstanceRequest' <$> (o .:? "sshKey"))
-
-instance ToJSON DebugInstanceRequest where
-        toJSON DebugInstanceRequest'{..}
-          = object (catMaybes [("sshKey" .=) <$> _dirSSHKey])
-
--- | HTTP headers to use for all responses from these URLs.
---
--- /See:/ 'staticFilesHandlerHTTPHeaders' smart constructor.
-newtype StaticFilesHandlerHTTPHeaders = StaticFilesHandlerHTTPHeaders'
-    { _sfhhttphAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StaticFilesHandlerHTTPHeaders' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfhhttphAddtional'
-staticFilesHandlerHTTPHeaders
-    :: HashMap Text Text -- ^ 'sfhhttphAddtional'
-    -> StaticFilesHandlerHTTPHeaders
-staticFilesHandlerHTTPHeaders pSfhhttphAddtional_ =
-    StaticFilesHandlerHTTPHeaders'
-    { _sfhhttphAddtional = _Coerce # pSfhhttphAddtional_
-    }
-
-sfhhttphAddtional :: Lens' StaticFilesHandlerHTTPHeaders (HashMap Text Text)
-sfhhttphAddtional
-  = lens _sfhhttphAddtional
-      (\ s a -> s{_sfhhttphAddtional = a})
-      . _Coerce
-
-instance FromJSON StaticFilesHandlerHTTPHeaders where
-        parseJSON
-          = withObject "StaticFilesHandlerHTTPHeaders"
-              (\ o ->
-                 StaticFilesHandlerHTTPHeaders' <$>
-                   (parseJSONObject o))
-
-instance ToJSON StaticFilesHandlerHTTPHeaders where
-        toJSON = toJSON . _sfhhttphAddtional
-
--- | Machine resources for a version.
---
--- /See:/ 'resources' smart constructor.
-data Resources = Resources'
-    { _rMemoryGb :: !(Maybe (Textual Double))
-    , _rDiskGb   :: !(Maybe (Textual Double))
-    , _rVolumes  :: !(Maybe [Volume])
-    , _rCPU      :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Resources' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rMemoryGb'
---
--- * 'rDiskGb'
---
--- * 'rVolumes'
---
--- * 'rCPU'
-resources
-    :: Resources
-resources =
-    Resources'
-    { _rMemoryGb = Nothing
-    , _rDiskGb = Nothing
-    , _rVolumes = Nothing
-    , _rCPU = Nothing
-    }
-
--- | Memory (GB) needed.
-rMemoryGb :: Lens' Resources (Maybe Double)
-rMemoryGb
-  = lens _rMemoryGb (\ s a -> s{_rMemoryGb = a}) .
-      mapping _Coerce
-
--- | Disk size (GB) needed.
-rDiskGb :: Lens' Resources (Maybe Double)
-rDiskGb
-  = lens _rDiskGb (\ s a -> s{_rDiskGb = a}) .
-      mapping _Coerce
-
--- | User specified volumes.
-rVolumes :: Lens' Resources [Volume]
-rVolumes
-  = lens _rVolumes (\ s a -> s{_rVolumes = a}) .
-      _Default
-      . _Coerce
-
--- | Number of CPU cores needed.
-rCPU :: Lens' Resources (Maybe Double)
-rCPU
-  = lens _rCPU (\ s a -> s{_rCPU = a}) .
-      mapping _Coerce
-
-instance FromJSON Resources where
-        parseJSON
-          = withObject "Resources"
-              (\ o ->
-                 Resources' <$>
-                   (o .:? "memoryGb") <*> (o .:? "diskGb") <*>
-                     (o .:? "volumes" .!= mempty)
-                     <*> (o .:? "cpu"))
-
-instance ToJSON Resources where
-        toJSON Resources'{..}
-          = object
-              (catMaybes
-                 [("memoryGb" .=) <$> _rMemoryGb,
-                  ("diskGb" .=) <$> _rDiskGb,
-                  ("volumes" .=) <$> _rVolumes, ("cpu" .=) <$> _rCPU])
-
--- | The feature specific settings to be used in the application. These
--- define behaviors that are user configurable.
---
--- /See:/ 'featureSettings' smart constructor.
-newtype FeatureSettings = FeatureSettings'
-    { _fsSplitHealthChecks :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FeatureSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fsSplitHealthChecks'
-featureSettings
-    :: FeatureSettings
-featureSettings =
-    FeatureSettings'
-    { _fsSplitHealthChecks = Nothing
-    }
-
--- | Boolean value indicating if split health checks should be used instead
--- of the legacy health checks. At an app.yaml level, this means defaulting
--- to \'readiness_check\' and \'liveness_check\' values instead of
--- \'health_check\' ones. Once the legacy \'health_check\' behavior is
--- deprecated, and this value is always true, this setting can be removed.
-fsSplitHealthChecks :: Lens' FeatureSettings (Maybe Bool)
-fsSplitHealthChecks
-  = lens _fsSplitHealthChecks
-      (\ s a -> s{_fsSplitHealthChecks = a})
-
-instance FromJSON FeatureSettings where
-        parseJSON
-          = withObject "FeatureSettings"
-              (\ o ->
-                 FeatureSettings' <$> (o .:? "splitHealthChecks"))
-
-instance ToJSON FeatureSettings where
-        toJSON FeatureSettings'{..}
-          = object
-              (catMaybes
-                 [("splitHealthChecks" .=) <$> _fsSplitHealthChecks])
-
--- | An SSL certificate obtained from a certificate authority.
---
--- /See:/ 'certificateRawData' smart constructor.
-data CertificateRawData = CertificateRawData'
-    { _crdPrivateKey        :: !(Maybe Text)
-    , _crdPublicCertificate :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CertificateRawData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crdPrivateKey'
---
--- * 'crdPublicCertificate'
-certificateRawData
-    :: CertificateRawData
-certificateRawData =
-    CertificateRawData'
-    { _crdPrivateKey = Nothing
-    , _crdPublicCertificate = Nothing
-    }
-
--- | Unencrypted PEM encoded RSA private key. This field is set once on
--- certificate creation and then encrypted. The key size must be 2048 bits
--- or fewer. Must include the header and footer. Example:
---
--- >  -----BEGIN RSA PRIVATE KEY-----  -----END RSA PRIVATE KEY-----
---
--- \'InputOnly
-crdPrivateKey :: Lens' CertificateRawData (Maybe Text)
-crdPrivateKey
-  = lens _crdPrivateKey
-      (\ s a -> s{_crdPrivateKey = a})
-
--- | PEM encoded x.509 public key certificate. This field is set once on
--- certificate creation. Must include the header and footer. Example:
---
--- >  -----BEGIN CERTIFICATE-----  -----END CERTIFICATE-----
-crdPublicCertificate :: Lens' CertificateRawData (Maybe Text)
-crdPublicCertificate
-  = lens _crdPublicCertificate
-      (\ s a -> s{_crdPublicCertificate = a})
-
-instance FromJSON CertificateRawData where
-        parseJSON
-          = withObject "CertificateRawData"
-              (\ o ->
-                 CertificateRawData' <$>
-                   (o .:? "privateKey") <*> (o .:? "publicCertificate"))
-
-instance ToJSON CertificateRawData where
-        toJSON CertificateRawData'{..}
-          = object
-              (catMaybes
-                 [("privateKey" .=) <$> _crdPrivateKey,
-                  ("publicCertificate" .=) <$> _crdPublicCertificate])
-
--- | A domain serving an App Engine application.
---
--- /See:/ 'domainMApping' smart constructor.
-data DomainMApping = DomainMApping'
-    { _dmaResourceRecords :: !(Maybe [ResourceRecord])
-    , _dmaName            :: !(Maybe Text)
-    , _dmaId              :: !(Maybe Text)
-    , _dmaSSLSettings     :: !(Maybe SSLSettings)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DomainMApping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmaResourceRecords'
---
--- * 'dmaName'
---
--- * 'dmaId'
---
--- * 'dmaSSLSettings'
-domainMApping
-    :: DomainMApping
-domainMApping =
-    DomainMApping'
-    { _dmaResourceRecords = Nothing
-    , _dmaName = Nothing
-    , _dmaId = Nothing
-    , _dmaSSLSettings = Nothing
-    }
-
--- | The resource records required to configure this domain mapping. These
--- records must be added to the domain\'s DNS configuration in order to
--- serve the application via this domain mapping.\'OutputOnly
-dmaResourceRecords :: Lens' DomainMApping [ResourceRecord]
-dmaResourceRecords
-  = lens _dmaResourceRecords
-      (\ s a -> s{_dmaResourceRecords = a})
-      . _Default
-      . _Coerce
-
--- | Full path to the DomainMapping resource in the API. Example:
--- apps\/myapp\/domainMapping\/example.com.\'OutputOnly
-dmaName :: Lens' DomainMApping (Maybe Text)
-dmaName = lens _dmaName (\ s a -> s{_dmaName = a})
-
--- | Relative name of the domain serving the application. Example:
--- example.com.
-dmaId :: Lens' DomainMApping (Maybe Text)
-dmaId = lens _dmaId (\ s a -> s{_dmaId = a})
-
--- | SSL configuration for this domain. If unconfigured, this domain will not
--- serve with SSL.
-dmaSSLSettings :: Lens' DomainMApping (Maybe SSLSettings)
-dmaSSLSettings
-  = lens _dmaSSLSettings
-      (\ s a -> s{_dmaSSLSettings = a})
-
-instance FromJSON DomainMApping where
-        parseJSON
-          = withObject "DomainMApping"
-              (\ o ->
-                 DomainMApping' <$>
-                   (o .:? "resourceRecords" .!= mempty) <*>
-                     (o .:? "name")
-                     <*> (o .:? "id")
-                     <*> (o .:? "sslSettings"))
-
-instance ToJSON DomainMApping where
-        toJSON DomainMApping'{..}
-          = object
-              (catMaybes
-                 [("resourceRecords" .=) <$> _dmaResourceRecords,
-                  ("name" .=) <$> _dmaName, ("id" .=) <$> _dmaId,
-                  ("sslSettings" .=) <$> _dmaSSLSettings])
-
--- | Manifest of the files stored in Google Cloud Storage that are included
--- as part of this version. All files must be readable using the
--- credentials supplied with this call.
---
--- /See:/ 'deploymentFiles' smart constructor.
-newtype DeploymentFiles = DeploymentFiles'
-    { _dfAddtional :: HashMap Text FileInfo
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeploymentFiles' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfAddtional'
-deploymentFiles
-    :: HashMap Text FileInfo -- ^ 'dfAddtional'
-    -> DeploymentFiles
-deploymentFiles pDfAddtional_ =
-    DeploymentFiles'
-    { _dfAddtional = _Coerce # pDfAddtional_
-    }
-
-dfAddtional :: Lens' DeploymentFiles (HashMap Text FileInfo)
-dfAddtional
-  = lens _dfAddtional (\ s a -> s{_dfAddtional = a}) .
-      _Coerce
-
-instance FromJSON DeploymentFiles where
-        parseJSON
-          = withObject "DeploymentFiles"
-              (\ o -> DeploymentFiles' <$> (parseJSONObject o))
-
-instance ToJSON DeploymentFiles where
-        toJSON = toJSON . _dfAddtional
-
--- | Response message for Firewall.UpdateAllIngressRules.
---
--- /See:/ 'batchUpdateIngressRulesResponse' smart constructor.
-newtype BatchUpdateIngressRulesResponse = BatchUpdateIngressRulesResponse'
-    { _bIngressRules :: Maybe [FirewallRule]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BatchUpdateIngressRulesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bIngressRules'
-batchUpdateIngressRulesResponse
-    :: BatchUpdateIngressRulesResponse
-batchUpdateIngressRulesResponse =
-    BatchUpdateIngressRulesResponse'
-    { _bIngressRules = Nothing
-    }
-
--- | The full list of ingress FirewallRules for this application.
-bIngressRules :: Lens' BatchUpdateIngressRulesResponse [FirewallRule]
-bIngressRules
-  = lens _bIngressRules
-      (\ s a -> s{_bIngressRules = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON BatchUpdateIngressRulesResponse
-         where
-        parseJSON
-          = withObject "BatchUpdateIngressRulesResponse"
-              (\ o ->
-                 BatchUpdateIngressRulesResponse' <$>
-                   (o .:? "ingressRules" .!= mempty))
-
-instance ToJSON BatchUpdateIngressRulesResponse where
-        toJSON BatchUpdateIngressRulesResponse'{..}
-          = object
-              (catMaybes [("ingressRules" .=) <$> _bIngressRules])
-
--- | Target scaling by CPU usage.
---
--- /See:/ 'cpuUtilization' smart constructor.
-data CPUUtilization = CPUUtilization'
-    { _cuAggregationWindowLength :: !(Maybe GDuration)
-    , _cuTargetUtilization       :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CPUUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cuAggregationWindowLength'
---
--- * 'cuTargetUtilization'
-cpuUtilization
-    :: CPUUtilization
-cpuUtilization =
-    CPUUtilization'
-    { _cuAggregationWindowLength = Nothing
-    , _cuTargetUtilization = Nothing
-    }
-
--- | Period of time over which CPU utilization is calculated.
-cuAggregationWindowLength :: Lens' CPUUtilization (Maybe Scientific)
-cuAggregationWindowLength
-  = lens _cuAggregationWindowLength
-      (\ s a -> s{_cuAggregationWindowLength = a})
-      . mapping _GDuration
-
--- | Target CPU utilization ratio to maintain when scaling. Must be between 0
--- and 1.
-cuTargetUtilization :: Lens' CPUUtilization (Maybe Double)
-cuTargetUtilization
-  = lens _cuTargetUtilization
-      (\ s a -> s{_cuTargetUtilization = a})
-      . mapping _Coerce
-
-instance FromJSON CPUUtilization where
-        parseJSON
-          = withObject "CPUUtilization"
-              (\ o ->
-                 CPUUtilization' <$>
-                   (o .:? "aggregationWindowLength") <*>
-                     (o .:? "targetUtilization"))
-
-instance ToJSON CPUUtilization where
-        toJSON CPUUtilization'{..}
-          = object
-              (catMaybes
-                 [("aggregationWindowLength" .=) <$>
-                    _cuAggregationWindowLength,
-                  ("targetUtilization" .=) <$> _cuTargetUtilization])
-
--- | Metadata for the given google.longrunning.Operation during a
--- google.appengine.v1.CreateVersionRequest.
---
--- /See:/ 'createVersionMetadataV1' smart constructor.
-newtype CreateVersionMetadataV1 = CreateVersionMetadataV1'
-    { _cvmvCloudBuildId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateVersionMetadataV1' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvmvCloudBuildId'
-createVersionMetadataV1
-    :: CreateVersionMetadataV1
-createVersionMetadataV1 =
-    CreateVersionMetadataV1'
-    { _cvmvCloudBuildId = Nothing
-    }
-
--- | The Cloud Build ID if one was created as part of the version create.
--- \'OutputOnly
-cvmvCloudBuildId :: Lens' CreateVersionMetadataV1 (Maybe Text)
-cvmvCloudBuildId
-  = lens _cvmvCloudBuildId
-      (\ s a -> s{_cvmvCloudBuildId = a})
-
-instance FromJSON CreateVersionMetadataV1 where
-        parseJSON
-          = withObject "CreateVersionMetadataV1"
-              (\ o ->
-                 CreateVersionMetadataV1' <$> (o .:? "cloudBuildId"))
-
-instance ToJSON CreateVersionMetadataV1 where
-        toJSON CreateVersionMetadataV1'{..}
-          = object
-              (catMaybes
-                 [("cloudBuildId" .=) <$> _cvmvCloudBuildId])
-
--- | Mapping from version IDs within the service to fractional (0.000, 1]
--- allocations of traffic for that version. Each version can be specified
--- only once, but some versions in the service may not have any traffic
--- allocation. Services that have traffic allocated cannot be deleted until
--- either the service is deleted or their traffic allocation is removed.
--- Allocations must sum to 1. Up to two decimal place precision is
--- supported for IP-based splits and up to three decimal places is
--- supported for cookie-based splits.
---
--- /See:/ 'trafficSplitAllocations' smart constructor.
-newtype TrafficSplitAllocations = TrafficSplitAllocations'
-    { _tsaAddtional :: HashMap Text (Textual Double)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TrafficSplitAllocations' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tsaAddtional'
-trafficSplitAllocations
-    :: HashMap Text Double -- ^ 'tsaAddtional'
-    -> TrafficSplitAllocations
-trafficSplitAllocations pTsaAddtional_ =
-    TrafficSplitAllocations'
-    { _tsaAddtional = _Coerce # pTsaAddtional_
-    }
-
-tsaAddtional :: Lens' TrafficSplitAllocations (HashMap Text Double)
-tsaAddtional
-  = lens _tsaAddtional (\ s a -> s{_tsaAddtional = a})
-      . _Coerce
-
-instance FromJSON TrafficSplitAllocations where
-        parseJSON
-          = withObject "TrafficSplitAllocations"
-              (\ o ->
-                 TrafficSplitAllocations' <$> (parseJSONObject o))
-
-instance ToJSON TrafficSplitAllocations where
-        toJSON = toJSON . _tsaAddtional
-
--- | Options for the build operations performed as a part of the version
--- deployment. Only applicable for App Engine flexible environment when
--- creating a version using source code directly.
---
--- /See:/ 'cloudBuildOptions' smart constructor.
-data CloudBuildOptions = CloudBuildOptions'
-    { _cboCloudBuildTimeout :: !(Maybe GDuration)
-    , _cboAppYamlPath       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CloudBuildOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cboCloudBuildTimeout'
---
--- * 'cboAppYamlPath'
-cloudBuildOptions
-    :: CloudBuildOptions
-cloudBuildOptions =
-    CloudBuildOptions'
-    { _cboCloudBuildTimeout = Nothing
-    , _cboAppYamlPath = Nothing
-    }
-
--- | The Cloud Build timeout used as part of any dependent builds performed
--- by version creation. Defaults to 10 minutes.
-cboCloudBuildTimeout :: Lens' CloudBuildOptions (Maybe Scientific)
-cboCloudBuildTimeout
-  = lens _cboCloudBuildTimeout
-      (\ s a -> s{_cboCloudBuildTimeout = a})
-      . mapping _GDuration
-
--- | Path to the yaml file used in deployment, used to determine runtime
--- configuration details.Required for flexible environment builds.See
--- https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/appref
--- for more details.
-cboAppYamlPath :: Lens' CloudBuildOptions (Maybe Text)
-cboAppYamlPath
-  = lens _cboAppYamlPath
-      (\ s a -> s{_cboAppYamlPath = a})
-
-instance FromJSON CloudBuildOptions where
-        parseJSON
-          = withObject "CloudBuildOptions"
-              (\ o ->
-                 CloudBuildOptions' <$>
-                   (o .:? "cloudBuildTimeout") <*>
-                     (o .:? "appYamlPath"))
-
-instance ToJSON CloudBuildOptions where
-        toJSON CloudBuildOptions'{..}
-          = object
-              (catMaybes
-                 [("cloudBuildTimeout" .=) <$> _cboCloudBuildTimeout,
-                  ("appYamlPath" .=) <$> _cboAppYamlPath])
-
--- | A service with manual scaling runs continuously, allowing you to perform
--- complex initialization and rely on the state of its memory over time.
---
--- /See:/ 'manualScaling' smart constructor.
-newtype ManualScaling = ManualScaling'
-    { _msInstances :: Maybe (Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManualScaling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'msInstances'
-manualScaling
-    :: ManualScaling
-manualScaling =
-    ManualScaling'
-    { _msInstances = Nothing
-    }
-
--- | Number of instances to assign to the service at the start. This number
--- can later be altered by using the Modules API
--- (https:\/\/cloud.google.com\/appengine\/docs\/python\/modules\/functions)
--- set_num_instances() function.
-msInstances :: Lens' ManualScaling (Maybe Int32)
-msInstances
-  = lens _msInstances (\ s a -> s{_msInstances = a}) .
-      mapping _Coerce
-
-instance FromJSON ManualScaling where
-        parseJSON
-          = withObject "ManualScaling"
-              (\ o -> ManualScaling' <$> (o .:? "instances"))
-
-instance ToJSON ManualScaling where
-        toJSON ManualScaling'{..}
-          = object
-              (catMaybes [("instances" .=) <$> _msInstances])
-
--- | A service with basic scaling will create an instance when the
--- application receives a request. The instance will be turned down when
--- the app becomes idle. Basic scaling is ideal for work that is
--- intermittent or driven by user activity.
---
--- /See:/ 'basicScaling' smart constructor.
-data BasicScaling = BasicScaling'
-    { _bsMaxInstances :: !(Maybe (Textual Int32))
-    , _bsIdleTimeout  :: !(Maybe GDuration)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BasicScaling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bsMaxInstances'
---
--- * 'bsIdleTimeout'
-basicScaling
-    :: BasicScaling
-basicScaling =
-    BasicScaling'
-    { _bsMaxInstances = Nothing
-    , _bsIdleTimeout = Nothing
-    }
-
--- | Maximum number of instances to create for this version.
-bsMaxInstances :: Lens' BasicScaling (Maybe Int32)
-bsMaxInstances
-  = lens _bsMaxInstances
-      (\ s a -> s{_bsMaxInstances = a})
-      . mapping _Coerce
-
--- | Duration of time after the last request that an instance must wait
--- before the instance is shut down.
-bsIdleTimeout :: Lens' BasicScaling (Maybe Scientific)
-bsIdleTimeout
-  = lens _bsIdleTimeout
-      (\ s a -> s{_bsIdleTimeout = a})
-      . mapping _GDuration
-
-instance FromJSON BasicScaling where
-        parseJSON
-          = withObject "BasicScaling"
-              (\ o ->
-                 BasicScaling' <$>
-                   (o .:? "maxInstances") <*> (o .:? "idleTimeout"))
-
-instance ToJSON BasicScaling where
-        toJSON BasicScaling'{..}
-          = object
-              (catMaybes
-                 [("maxInstances" .=) <$> _bsMaxInstances,
-                  ("idleTimeout" .=) <$> _bsIdleTimeout])
-
--- | Metadata for the given google.longrunning.Operation.
---
--- /See:/ 'operationMetadataV1' smart constructor.
-data OperationMetadataV1 = OperationMetadataV1'
-    { _omvEphemeralMessage      :: !(Maybe Text)
-    , _omvInsertTime            :: !(Maybe DateTime')
-    , _omvUser                  :: !(Maybe Text)
-    , _omvMethod                :: !(Maybe Text)
-    , _omvEndTime               :: !(Maybe DateTime')
-    , _omvWarning               :: !(Maybe [Text])
-    , _omvCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1)
-    , _omvTarget                :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadataV1' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omvEphemeralMessage'
---
--- * 'omvInsertTime'
---
--- * 'omvUser'
---
--- * 'omvMethod'
---
--- * 'omvEndTime'
---
--- * 'omvWarning'
---
--- * 'omvCreateVersionMetadata'
---
--- * 'omvTarget'
-operationMetadataV1
-    :: OperationMetadataV1
-operationMetadataV1 =
-    OperationMetadataV1'
-    { _omvEphemeralMessage = Nothing
-    , _omvInsertTime = Nothing
-    , _omvUser = Nothing
-    , _omvMethod = Nothing
-    , _omvEndTime = Nothing
-    , _omvWarning = Nothing
-    , _omvCreateVersionMetadata = Nothing
-    , _omvTarget = Nothing
-    }
-
--- | Ephemeral message that may change every time the operation is polled.
--- \'OutputOnly
-omvEphemeralMessage :: Lens' OperationMetadataV1 (Maybe Text)
-omvEphemeralMessage
-  = lens _omvEphemeralMessage
-      (\ s a -> s{_omvEphemeralMessage = a})
-
--- | Time that this operation was created.\'OutputOnly
-omvInsertTime :: Lens' OperationMetadataV1 (Maybe UTCTime)
-omvInsertTime
-  = lens _omvInsertTime
-      (\ s a -> s{_omvInsertTime = a})
-      . mapping _DateTime
-
--- | User who requested this operation.\'OutputOnly
-omvUser :: Lens' OperationMetadataV1 (Maybe Text)
-omvUser = lens _omvUser (\ s a -> s{_omvUser = a})
-
--- | API method that initiated this operation. Example:
--- google.appengine.v1.Versions.CreateVersion.\'OutputOnly
-omvMethod :: Lens' OperationMetadataV1 (Maybe Text)
-omvMethod
-  = lens _omvMethod (\ s a -> s{_omvMethod = a})
-
--- | Time that this operation completed.\'OutputOnly
-omvEndTime :: Lens' OperationMetadataV1 (Maybe UTCTime)
-omvEndTime
-  = lens _omvEndTime (\ s a -> s{_omvEndTime = a}) .
-      mapping _DateTime
-
--- | Durable messages that persist on every operation poll. \'OutputOnly
-omvWarning :: Lens' OperationMetadataV1 [Text]
-omvWarning
-  = lens _omvWarning (\ s a -> s{_omvWarning = a}) .
-      _Default
-      . _Coerce
-
-omvCreateVersionMetadata :: Lens' OperationMetadataV1 (Maybe CreateVersionMetadataV1)
-omvCreateVersionMetadata
-  = lens _omvCreateVersionMetadata
-      (\ s a -> s{_omvCreateVersionMetadata = a})
-
--- | Name of the resource that this operation is acting on. Example:
--- apps\/myapp\/services\/default.\'OutputOnly
-omvTarget :: Lens' OperationMetadataV1 (Maybe Text)
-omvTarget
-  = lens _omvTarget (\ s a -> s{_omvTarget = a})
-
-instance FromJSON OperationMetadataV1 where
-        parseJSON
-          = withObject "OperationMetadataV1"
-              (\ o ->
-                 OperationMetadataV1' <$>
-                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
-                     <*> (o .:? "user")
-                     <*> (o .:? "method")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "warning" .!= mempty)
-                     <*> (o .:? "createVersionMetadata")
-                     <*> (o .:? "target"))
-
-instance ToJSON OperationMetadataV1 where
-        toJSON OperationMetadataV1'{..}
-          = object
-              (catMaybes
-                 [("ephemeralMessage" .=) <$> _omvEphemeralMessage,
-                  ("insertTime" .=) <$> _omvInsertTime,
-                  ("user" .=) <$> _omvUser,
-                  ("method" .=) <$> _omvMethod,
-                  ("endTime" .=) <$> _omvEndTime,
-                  ("warning" .=) <$> _omvWarning,
-                  ("createVersionMetadata" .=) <$>
-                    _omvCreateVersionMetadata,
-                  ("target" .=) <$> _omvTarget])
-
--- | A Version resource is a specific set of source code and configuration
--- files that are deployed into a service.
---
--- /See:/ 'version' smart constructor.
-data Version = Version'
-    { _verRuntime                   :: !(Maybe Text)
-    , _verNobuildFilesRegex         :: !(Maybe Text)
-    , _verInstanceClass             :: !(Maybe Text)
-    , _verRuntimeChannel            :: !(Maybe Text)
-    , _verRuntimeMainExecutablePath :: !(Maybe Text)
-    , _verHealthCheck               :: !(Maybe HealthCheck)
-    , _verEndpointsAPIService       :: !(Maybe EndpointsAPIService)
-    , _verEnv                       :: !(Maybe Text)
-    , _verZones                     :: !(Maybe [Text])
-    , _verEntrypoint                :: !(Maybe Entrypoint)
-    , _verDefaultExpiration         :: !(Maybe GDuration)
-    , _verAutomaticScaling          :: !(Maybe AutomaticScaling)
-    , _verErrorHandlers             :: !(Maybe [ErrorHandler])
-    , _verCreatedBy                 :: !(Maybe Text)
-    , _verVM                        :: !(Maybe Bool)
-    , _verHandlers                  :: !(Maybe [URLMap])
-    , _verInboundServices           :: !(Maybe [Text])
-    , _verReadinessCheck            :: !(Maybe ReadinessCheck)
-    , _verNetwork                   :: !(Maybe Network)
-    , _verResources                 :: !(Maybe Resources)
-    , _verName                      :: !(Maybe Text)
-    , _verThreadsafe                :: !(Maybe Bool)
-    , _verBetaSettings              :: !(Maybe VersionBetaSettings)
-    , _verBasicScaling              :: !(Maybe BasicScaling)
-    , _verManualScaling             :: !(Maybe ManualScaling)
-    , _verAPIConfig                 :: !(Maybe APIConfigHandler)
-    , _verId                        :: !(Maybe Text)
-    , _verEnvVariables              :: !(Maybe VersionEnvVariables)
-    , _verLivenessCheck             :: !(Maybe LivenessCheck)
-    , _verRuntimeAPIVersion         :: !(Maybe Text)
-    , _verServingStatus             :: !(Maybe VersionServingStatus)
-    , _verDiskUsageBytes            :: !(Maybe (Textual Int64))
-    , _verCreateTime                :: !(Maybe DateTime')
-    , _verLibraries                 :: !(Maybe [Library])
-    , _verVersionURL                :: !(Maybe Text)
-    , _verDeployment                :: !(Maybe Deployment)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Version' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'verRuntime'
---
--- * 'verNobuildFilesRegex'
---
--- * 'verInstanceClass'
---
--- * 'verRuntimeChannel'
---
--- * 'verRuntimeMainExecutablePath'
---
--- * 'verHealthCheck'
---
--- * 'verEndpointsAPIService'
---
--- * 'verEnv'
---
--- * 'verZones'
---
--- * 'verEntrypoint'
---
--- * 'verDefaultExpiration'
---
--- * 'verAutomaticScaling'
---
--- * 'verErrorHandlers'
---
--- * 'verCreatedBy'
---
--- * 'verVM'
---
--- * 'verHandlers'
---
--- * 'verInboundServices'
---
--- * 'verReadinessCheck'
---
--- * 'verNetwork'
---
--- * 'verResources'
---
--- * 'verName'
---
--- * 'verThreadsafe'
---
--- * 'verBetaSettings'
---
--- * 'verBasicScaling'
---
--- * 'verManualScaling'
---
--- * 'verAPIConfig'
---
--- * 'verId'
---
--- * 'verEnvVariables'
---
--- * 'verLivenessCheck'
---
--- * 'verRuntimeAPIVersion'
---
--- * 'verServingStatus'
---
--- * 'verDiskUsageBytes'
---
--- * 'verCreateTime'
---
--- * 'verLibraries'
---
--- * 'verVersionURL'
---
--- * 'verDeployment'
-version
-    :: Version
-version =
-    Version'
-    { _verRuntime = Nothing
-    , _verNobuildFilesRegex = Nothing
-    , _verInstanceClass = Nothing
-    , _verRuntimeChannel = Nothing
-    , _verRuntimeMainExecutablePath = Nothing
-    , _verHealthCheck = Nothing
-    , _verEndpointsAPIService = Nothing
-    , _verEnv = Nothing
-    , _verZones = Nothing
-    , _verEntrypoint = Nothing
-    , _verDefaultExpiration = Nothing
-    , _verAutomaticScaling = Nothing
-    , _verErrorHandlers = Nothing
-    , _verCreatedBy = Nothing
-    , _verVM = Nothing
-    , _verHandlers = Nothing
-    , _verInboundServices = Nothing
-    , _verReadinessCheck = Nothing
-    , _verNetwork = Nothing
-    , _verResources = Nothing
-    , _verName = Nothing
-    , _verThreadsafe = Nothing
-    , _verBetaSettings = Nothing
-    , _verBasicScaling = Nothing
-    , _verManualScaling = Nothing
-    , _verAPIConfig = Nothing
-    , _verId = Nothing
-    , _verEnvVariables = Nothing
-    , _verLivenessCheck = Nothing
-    , _verRuntimeAPIVersion = Nothing
-    , _verServingStatus = Nothing
-    , _verDiskUsageBytes = Nothing
-    , _verCreateTime = Nothing
-    , _verLibraries = Nothing
-    , _verVersionURL = Nothing
-    , _verDeployment = Nothing
-    }
-
--- | Desired runtime. Example: python27.
-verRuntime :: Lens' Version (Maybe Text)
-verRuntime
-  = lens _verRuntime (\ s a -> s{_verRuntime = a})
-
--- | Files that match this pattern will not be built into this version. Only
--- applicable for Go runtimes.Only returned in GET requests if view=FULL is
--- set.
-verNobuildFilesRegex :: Lens' Version (Maybe Text)
-verNobuildFilesRegex
-  = lens _verNobuildFilesRegex
-      (\ s a -> s{_verNobuildFilesRegex = a})
-
--- | Instance class that is used to run this version. Valid values are:
--- AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1,
--- B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for
--- ManualScaling or BasicScaling.
-verInstanceClass :: Lens' Version (Maybe Text)
-verInstanceClass
-  = lens _verInstanceClass
-      (\ s a -> s{_verInstanceClass = a})
-
--- | The channel of the runtime to use. Only available for some runtimes.
--- Defaults to the default channel.
-verRuntimeChannel :: Lens' Version (Maybe Text)
-verRuntimeChannel
-  = lens _verRuntimeChannel
-      (\ s a -> s{_verRuntimeChannel = a})
-
--- | The path or name of the app\'s main executable.
-verRuntimeMainExecutablePath :: Lens' Version (Maybe Text)
-verRuntimeMainExecutablePath
-  = lens _verRuntimeMainExecutablePath
-      (\ s a -> s{_verRuntimeMainExecutablePath = a})
-
--- | Configures health checking for instances. Unhealthy instances are
--- stopped and replaced with new instances. Only applicable in the App
--- Engine flexible environment.Only returned in GET requests if view=FULL
--- is set.
-verHealthCheck :: Lens' Version (Maybe HealthCheck)
-verHealthCheck
-  = lens _verHealthCheck
-      (\ s a -> s{_verHealthCheck = a})
-
--- | Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud
--- Endpoints Extensible Service Proxy will be provided to serve the API
--- implemented by the app.
-verEndpointsAPIService :: Lens' Version (Maybe EndpointsAPIService)
-verEndpointsAPIService
-  = lens _verEndpointsAPIService
-      (\ s a -> s{_verEndpointsAPIService = a})
-
--- | App Engine execution environment for this version.Defaults to standard.
-verEnv :: Lens' Version (Maybe Text)
-verEnv = lens _verEnv (\ s a -> s{_verEnv = a})
-
--- | The Google Compute Engine zones that are supported by this version in
--- the App Engine flexible environment.
-verZones :: Lens' Version [Text]
-verZones
-  = lens _verZones (\ s a -> s{_verZones = a}) .
-      _Default
-      . _Coerce
-
--- | The entrypoint for the application.
-verEntrypoint :: Lens' Version (Maybe Entrypoint)
-verEntrypoint
-  = lens _verEntrypoint
-      (\ s a -> s{_verEntrypoint = a})
-
--- | Duration that static files should be cached by web proxies and browsers.
--- Only applicable if the corresponding StaticFilesHandler
--- (https:\/\/cloud.google.com\/appengine\/docs\/admin-api\/reference\/rest\/v1\/apps.services.versions#StaticFilesHandler)
--- does not specify its own expiration time.Only returned in GET requests
--- if view=FULL is set.
-verDefaultExpiration :: Lens' Version (Maybe Scientific)
-verDefaultExpiration
-  = lens _verDefaultExpiration
-      (\ s a -> s{_verDefaultExpiration = a})
-      . mapping _GDuration
-
--- | Automatic scaling is based on request rate, response latencies, and
--- other application metrics.
-verAutomaticScaling :: Lens' Version (Maybe AutomaticScaling)
-verAutomaticScaling
-  = lens _verAutomaticScaling
-      (\ s a -> s{_verAutomaticScaling = a})
-
--- | Custom static error pages. Limited to 10KB per page.Only returned in GET
--- requests if view=FULL is set.
-verErrorHandlers :: Lens' Version [ErrorHandler]
-verErrorHandlers
-  = lens _verErrorHandlers
-      (\ s a -> s{_verErrorHandlers = a})
-      . _Default
-      . _Coerce
-
--- | Email address of the user who created this version.\'OutputOnly
-verCreatedBy :: Lens' Version (Maybe Text)
-verCreatedBy
-  = lens _verCreatedBy (\ s a -> s{_verCreatedBy = a})
-
--- | Whether to deploy this version in a container on a virtual machine.
-verVM :: Lens' Version (Maybe Bool)
-verVM = lens _verVM (\ s a -> s{_verVM = a})
-
--- | An ordered list of URL-matching patterns that should be applied to
--- incoming requests. The first matching URL handles the request and other
--- request handlers are not attempted.Only returned in GET requests if
--- view=FULL is set.
-verHandlers :: Lens' Version [URLMap]
-verHandlers
-  = lens _verHandlers (\ s a -> s{_verHandlers = a}) .
-      _Default
-      . _Coerce
-
--- | Before an application can receive email or XMPP messages, the
--- application must be configured to enable the service.
-verInboundServices :: Lens' Version [Text]
-verInboundServices
-  = lens _verInboundServices
-      (\ s a -> s{_verInboundServices = a})
-      . _Default
-      . _Coerce
-
--- | Configures readiness health checking for instances. Unhealthy instances
--- are not put into the backend traffic rotation.Only returned in GET
--- requests if view=FULL is set.
-verReadinessCheck :: Lens' Version (Maybe ReadinessCheck)
-verReadinessCheck
-  = lens _verReadinessCheck
-      (\ s a -> s{_verReadinessCheck = a})
-
--- | Extra network settings. Only applicable in the App Engine flexible
--- environment.
-verNetwork :: Lens' Version (Maybe Network)
-verNetwork
-  = lens _verNetwork (\ s a -> s{_verNetwork = a})
-
--- | Machine resources for this version. Only applicable in the App Engine
--- flexible environment.
-verResources :: Lens' Version (Maybe Resources)
-verResources
-  = lens _verResources (\ s a -> s{_verResources = a})
-
--- | Full path to the Version resource in the API. Example:
--- apps\/myapp\/services\/default\/versions\/v1.\'OutputOnly
-verName :: Lens' Version (Maybe Text)
-verName = lens _verName (\ s a -> s{_verName = a})
-
--- | Whether multiple requests can be dispatched to this version at once.
-verThreadsafe :: Lens' Version (Maybe Bool)
-verThreadsafe
-  = lens _verThreadsafe
-      (\ s a -> s{_verThreadsafe = a})
-
--- | Metadata settings that are supplied to this version to enable beta
--- runtime features.
-verBetaSettings :: Lens' Version (Maybe VersionBetaSettings)
-verBetaSettings
-  = lens _verBetaSettings
-      (\ s a -> s{_verBetaSettings = a})
-
--- | A service with basic scaling will create an instance when the
--- application receives a request. The instance will be turned down when
--- the app becomes idle. Basic scaling is ideal for work that is
--- intermittent or driven by user activity.
-verBasicScaling :: Lens' Version (Maybe BasicScaling)
-verBasicScaling
-  = lens _verBasicScaling
-      (\ s a -> s{_verBasicScaling = a})
-
--- | A service with manual scaling runs continuously, allowing you to perform
--- complex initialization and rely on the state of its memory over time.
-verManualScaling :: Lens' Version (Maybe ManualScaling)
-verManualScaling
-  = lens _verManualScaling
-      (\ s a -> s{_verManualScaling = a})
-
--- | Serving configuration for Google Cloud Endpoints
--- (https:\/\/cloud.google.com\/appengine\/docs\/python\/endpoints\/).Only
--- returned in GET requests if view=FULL is set.
-verAPIConfig :: Lens' Version (Maybe APIConfigHandler)
-verAPIConfig
-  = lens _verAPIConfig (\ s a -> s{_verAPIConfig = a})
-
--- | Relative name of the version within the service. Example: v1. Version
--- names can contain only lowercase letters, numbers, or hyphens. Reserved
--- names: \"default\", \"latest\", and any name with the prefix \"ah-\".
-verId :: Lens' Version (Maybe Text)
-verId = lens _verId (\ s a -> s{_verId = a})
-
--- | Environment variables available to the application.Only returned in GET
--- requests if view=FULL is set.
-verEnvVariables :: Lens' Version (Maybe VersionEnvVariables)
-verEnvVariables
-  = lens _verEnvVariables
-      (\ s a -> s{_verEnvVariables = a})
-
--- | Configures liveness health checking for instances. Unhealthy instances
--- are stopped and replaced with new instancesOnly returned in GET requests
--- if view=FULL is set.
-verLivenessCheck :: Lens' Version (Maybe LivenessCheck)
-verLivenessCheck
-  = lens _verLivenessCheck
-      (\ s a -> s{_verLivenessCheck = a})
-
--- | The version of the API in the given runtime environment. Please see the
--- app.yaml reference for valid values at
--- https:\/\/cloud.google.com\/appengine\/docs\/standard\/\/config\/appref
-verRuntimeAPIVersion :: Lens' Version (Maybe Text)
-verRuntimeAPIVersion
-  = lens _verRuntimeAPIVersion
-      (\ s a -> s{_verRuntimeAPIVersion = a})
-
--- | Current serving status of this version. Only the versions with a SERVING
--- status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is
--- an invalid value. Defaults to SERVING.
-verServingStatus :: Lens' Version (Maybe VersionServingStatus)
-verServingStatus
-  = lens _verServingStatus
-      (\ s a -> s{_verServingStatus = a})
-
--- | Total size in bytes of all the files that are included in this version
--- and currently hosted on the App Engine disk.\'OutputOnly
-verDiskUsageBytes :: Lens' Version (Maybe Int64)
-verDiskUsageBytes
-  = lens _verDiskUsageBytes
-      (\ s a -> s{_verDiskUsageBytes = a})
-      . mapping _Coerce
-
--- | Time that this version was created.\'OutputOnly
-verCreateTime :: Lens' Version (Maybe UTCTime)
-verCreateTime
-  = lens _verCreateTime
-      (\ s a -> s{_verCreateTime = a})
-      . mapping _DateTime
-
--- | Configuration for third-party Python runtime libraries that are required
--- by the application.Only returned in GET requests if view=FULL is set.
-verLibraries :: Lens' Version [Library]
-verLibraries
-  = lens _verLibraries (\ s a -> s{_verLibraries = a})
-      . _Default
-      . _Coerce
-
--- | Serving URL for this version. Example:
--- \"https:\/\/myversion-dot-myservice-dot-myapp.appspot.com\"\'OutputOnly
-verVersionURL :: Lens' Version (Maybe Text)
-verVersionURL
-  = lens _verVersionURL
-      (\ s a -> s{_verVersionURL = a})
-
--- | Code and application artifacts that make up this version.Only returned
--- in GET requests if view=FULL is set.
-verDeployment :: Lens' Version (Maybe Deployment)
-verDeployment
-  = lens _verDeployment
-      (\ s a -> s{_verDeployment = a})
-
-instance FromJSON Version where
-        parseJSON
-          = withObject "Version"
-              (\ o ->
-                 Version' <$>
-                   (o .:? "runtime") <*> (o .:? "nobuildFilesRegex") <*>
-                     (o .:? "instanceClass")
-                     <*> (o .:? "runtimeChannel")
-                     <*> (o .:? "runtimeMainExecutablePath")
-                     <*> (o .:? "healthCheck")
-                     <*> (o .:? "endpointsApiService")
-                     <*> (o .:? "env")
-                     <*> (o .:? "zones" .!= mempty)
-                     <*> (o .:? "entrypoint")
-                     <*> (o .:? "defaultExpiration")
-                     <*> (o .:? "automaticScaling")
-                     <*> (o .:? "errorHandlers" .!= mempty)
-                     <*> (o .:? "createdBy")
-                     <*> (o .:? "vm")
-                     <*> (o .:? "handlers" .!= mempty)
-                     <*> (o .:? "inboundServices" .!= mempty)
-                     <*> (o .:? "readinessCheck")
-                     <*> (o .:? "network")
-                     <*> (o .:? "resources")
-                     <*> (o .:? "name")
-                     <*> (o .:? "threadsafe")
-                     <*> (o .:? "betaSettings")
-                     <*> (o .:? "basicScaling")
-                     <*> (o .:? "manualScaling")
-                     <*> (o .:? "apiConfig")
-                     <*> (o .:? "id")
-                     <*> (o .:? "envVariables")
-                     <*> (o .:? "livenessCheck")
-                     <*> (o .:? "runtimeApiVersion")
-                     <*> (o .:? "servingStatus")
-                     <*> (o .:? "diskUsageBytes")
-                     <*> (o .:? "createTime")
-                     <*> (o .:? "libraries" .!= mempty)
-                     <*> (o .:? "versionUrl")
-                     <*> (o .:? "deployment"))
-
-instance ToJSON Version where
-        toJSON Version'{..}
-          = object
-              (catMaybes
-                 [("runtime" .=) <$> _verRuntime,
-                  ("nobuildFilesRegex" .=) <$> _verNobuildFilesRegex,
-                  ("instanceClass" .=) <$> _verInstanceClass,
-                  ("runtimeChannel" .=) <$> _verRuntimeChannel,
-                  ("runtimeMainExecutablePath" .=) <$>
-                    _verRuntimeMainExecutablePath,
-                  ("healthCheck" .=) <$> _verHealthCheck,
-                  ("endpointsApiService" .=) <$>
-                    _verEndpointsAPIService,
-                  ("env" .=) <$> _verEnv, ("zones" .=) <$> _verZones,
-                  ("entrypoint" .=) <$> _verEntrypoint,
-                  ("defaultExpiration" .=) <$> _verDefaultExpiration,
-                  ("automaticScaling" .=) <$> _verAutomaticScaling,
-                  ("errorHandlers" .=) <$> _verErrorHandlers,
-                  ("createdBy" .=) <$> _verCreatedBy,
-                  ("vm" .=) <$> _verVM,
-                  ("handlers" .=) <$> _verHandlers,
-                  ("inboundServices" .=) <$> _verInboundServices,
-                  ("readinessCheck" .=) <$> _verReadinessCheck,
-                  ("network" .=) <$> _verNetwork,
-                  ("resources" .=) <$> _verResources,
-                  ("name" .=) <$> _verName,
-                  ("threadsafe" .=) <$> _verThreadsafe,
-                  ("betaSettings" .=) <$> _verBetaSettings,
-                  ("basicScaling" .=) <$> _verBasicScaling,
-                  ("manualScaling" .=) <$> _verManualScaling,
-                  ("apiConfig" .=) <$> _verAPIConfig,
-                  ("id" .=) <$> _verId,
-                  ("envVariables" .=) <$> _verEnvVariables,
-                  ("livenessCheck" .=) <$> _verLivenessCheck,
-                  ("runtimeApiVersion" .=) <$> _verRuntimeAPIVersion,
-                  ("servingStatus" .=) <$> _verServingStatus,
-                  ("diskUsageBytes" .=) <$> _verDiskUsageBytes,
-                  ("createTime" .=) <$> _verCreateTime,
-                  ("libraries" .=) <$> _verLibraries,
-                  ("versionUrl" .=) <$> _verVersionURL,
-                  ("deployment" .=) <$> _verDeployment])
-
--- | Identity-Aware Proxy
---
--- /See:/ 'identityAwareProxy' smart constructor.
-data IdentityAwareProxy = IdentityAwareProxy'
-    { _iapEnabled                  :: !(Maybe Bool)
-    , _iapOAuth2ClientSecretSha256 :: !(Maybe Text)
-    , _iapOAuth2ClientSecret       :: !(Maybe Text)
-    , _iapOAuth2ClientId           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IdentityAwareProxy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iapEnabled'
---
--- * 'iapOAuth2ClientSecretSha256'
---
--- * 'iapOAuth2ClientSecret'
---
--- * 'iapOAuth2ClientId'
-identityAwareProxy
-    :: IdentityAwareProxy
-identityAwareProxy =
-    IdentityAwareProxy'
-    { _iapEnabled = Nothing
-    , _iapOAuth2ClientSecretSha256 = Nothing
-    , _iapOAuth2ClientSecret = Nothing
-    , _iapOAuth2ClientId = Nothing
-    }
-
--- | Whether the serving infrastructure will authenticate and authorize all
--- incoming requests.If true, the oauth2_client_id and oauth2_client_secret
--- fields must be non-empty.
-iapEnabled :: Lens' IdentityAwareProxy (Maybe Bool)
-iapEnabled
-  = lens _iapEnabled (\ s a -> s{_iapEnabled = a})
-
--- | Hex-encoded SHA-256 hash of the client secret.\'OutputOnly
-iapOAuth2ClientSecretSha256 :: Lens' IdentityAwareProxy (Maybe Text)
-iapOAuth2ClientSecretSha256
-  = lens _iapOAuth2ClientSecretSha256
-      (\ s a -> s{_iapOAuth2ClientSecretSha256 = a})
-
--- | OAuth2 client secret to use for the authentication flow.For security
--- reasons, this value cannot be retrieved via the API. Instead, the
--- SHA-256 hash of the value is returned in the oauth2_client_secret_sha256
--- field.\'InputOnly
-iapOAuth2ClientSecret :: Lens' IdentityAwareProxy (Maybe Text)
-iapOAuth2ClientSecret
-  = lens _iapOAuth2ClientSecret
-      (\ s a -> s{_iapOAuth2ClientSecret = a})
-
--- | OAuth2 client ID to use for the authentication flow.
-iapOAuth2ClientId :: Lens' IdentityAwareProxy (Maybe Text)
-iapOAuth2ClientId
-  = lens _iapOAuth2ClientId
-      (\ s a -> s{_iapOAuth2ClientId = a})
-
-instance FromJSON IdentityAwareProxy where
-        parseJSON
-          = withObject "IdentityAwareProxy"
-              (\ o ->
-                 IdentityAwareProxy' <$>
-                   (o .:? "enabled") <*>
-                     (o .:? "oauth2ClientSecretSha256")
-                     <*> (o .:? "oauth2ClientSecret")
-                     <*> (o .:? "oauth2ClientId"))
-
-instance ToJSON IdentityAwareProxy where
-        toJSON IdentityAwareProxy'{..}
-          = object
-              (catMaybes
-                 [("enabled" .=) <$> _iapEnabled,
-                  ("oauth2ClientSecretSha256" .=) <$>
-                    _iapOAuth2ClientSecretSha256,
-                  ("oauth2ClientSecret" .=) <$> _iapOAuth2ClientSecret,
-                  ("oauth2ClientId" .=) <$> _iapOAuth2ClientId])
-
--- | Files served directly to the user for a given URL, such as images, CSS
--- stylesheets, or JavaScript source files. Static file handlers describe
--- which files in the application directory are static files, and which
--- URLs serve them.
---
--- /See:/ 'staticFilesHandler' smart constructor.
-data StaticFilesHandler = StaticFilesHandler'
-    { _sfhHTTPHeaders         :: !(Maybe StaticFilesHandlerHTTPHeaders)
-    , _sfhPath                :: !(Maybe Text)
-    , _sfhRequireMatchingFile :: !(Maybe Bool)
-    , _sfhExpiration          :: !(Maybe GDuration)
-    , _sfhMimeType            :: !(Maybe Text)
-    , _sfhApplicationReadable :: !(Maybe Bool)
-    , _sfhUploadPathRegex     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StaticFilesHandler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfhHTTPHeaders'
---
--- * 'sfhPath'
---
--- * 'sfhRequireMatchingFile'
---
--- * 'sfhExpiration'
---
--- * 'sfhMimeType'
---
--- * 'sfhApplicationReadable'
---
--- * 'sfhUploadPathRegex'
-staticFilesHandler
-    :: StaticFilesHandler
-staticFilesHandler =
-    StaticFilesHandler'
-    { _sfhHTTPHeaders = Nothing
-    , _sfhPath = Nothing
-    , _sfhRequireMatchingFile = Nothing
-    , _sfhExpiration = Nothing
-    , _sfhMimeType = Nothing
-    , _sfhApplicationReadable = Nothing
-    , _sfhUploadPathRegex = Nothing
-    }
-
--- | HTTP headers to use for all responses from these URLs.
-sfhHTTPHeaders :: Lens' StaticFilesHandler (Maybe StaticFilesHandlerHTTPHeaders)
-sfhHTTPHeaders
-  = lens _sfhHTTPHeaders
-      (\ s a -> s{_sfhHTTPHeaders = a})
-
--- | Path to the static files matched by the URL pattern, from the
--- application root directory. The path can refer to text matched in
--- groupings in the URL pattern.
-sfhPath :: Lens' StaticFilesHandler (Maybe Text)
-sfhPath = lens _sfhPath (\ s a -> s{_sfhPath = a})
-
--- | Whether this handler should match the request if the file referenced by
--- the handler does not exist.
-sfhRequireMatchingFile :: Lens' StaticFilesHandler (Maybe Bool)
-sfhRequireMatchingFile
-  = lens _sfhRequireMatchingFile
-      (\ s a -> s{_sfhRequireMatchingFile = a})
-
--- | Time a static file served by this handler should be cached by web
--- proxies and browsers.
-sfhExpiration :: Lens' StaticFilesHandler (Maybe Scientific)
-sfhExpiration
-  = lens _sfhExpiration
-      (\ s a -> s{_sfhExpiration = a})
-      . mapping _GDuration
-
--- | MIME type used to serve all files served by this handler.Defaults to
--- file-specific MIME types, which are derived from each file\'s filename
--- extension.
-sfhMimeType :: Lens' StaticFilesHandler (Maybe Text)
-sfhMimeType
-  = lens _sfhMimeType (\ s a -> s{_sfhMimeType = a})
-
--- | Whether files should also be uploaded as code data. By default, files
--- declared in static file handlers are uploaded as static data and are
--- only served to end users; they cannot be read by the application. If
--- enabled, uploads are charged against both your code and static data
--- storage resource quotas.
-sfhApplicationReadable :: Lens' StaticFilesHandler (Maybe Bool)
-sfhApplicationReadable
-  = lens _sfhApplicationReadable
-      (\ s a -> s{_sfhApplicationReadable = a})
-
--- | Regular expression that matches the file paths for all files that should
--- be referenced by this handler.
-sfhUploadPathRegex :: Lens' StaticFilesHandler (Maybe Text)
-sfhUploadPathRegex
-  = lens _sfhUploadPathRegex
-      (\ s a -> s{_sfhUploadPathRegex = a})
-
-instance FromJSON StaticFilesHandler where
-        parseJSON
-          = withObject "StaticFilesHandler"
-              (\ o ->
-                 StaticFilesHandler' <$>
-                   (o .:? "httpHeaders") <*> (o .:? "path") <*>
-                     (o .:? "requireMatchingFile")
-                     <*> (o .:? "expiration")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "applicationReadable")
-                     <*> (o .:? "uploadPathRegex"))
-
-instance ToJSON StaticFilesHandler where
-        toJSON StaticFilesHandler'{..}
-          = object
-              (catMaybes
-                 [("httpHeaders" .=) <$> _sfhHTTPHeaders,
-                  ("path" .=) <$> _sfhPath,
-                  ("requireMatchingFile" .=) <$>
-                    _sfhRequireMatchingFile,
-                  ("expiration" .=) <$> _sfhExpiration,
-                  ("mimeType" .=) <$> _sfhMimeType,
-                  ("applicationReadable" .=) <$>
-                    _sfhApplicationReadable,
-                  ("uploadPathRegex" .=) <$> _sfhUploadPathRegex])
-
--- | Custom static error page to be served when an error occurs.
---
--- /See:/ 'errorHandler' smart constructor.
-data ErrorHandler = ErrorHandler'
-    { _ehMimeType   :: !(Maybe Text)
-    , _ehErrorCode  :: !(Maybe ErrorHandlerErrorCode)
-    , _ehStaticFile :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ErrorHandler' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ehMimeType'
---
--- * 'ehErrorCode'
---
--- * 'ehStaticFile'
-errorHandler
-    :: ErrorHandler
-errorHandler =
-    ErrorHandler'
-    { _ehMimeType = Nothing
-    , _ehErrorCode = Nothing
-    , _ehStaticFile = Nothing
-    }
-
--- | MIME type of file. Defaults to text\/html.
-ehMimeType :: Lens' ErrorHandler (Maybe Text)
-ehMimeType
-  = lens _ehMimeType (\ s a -> s{_ehMimeType = a})
-
--- | Error condition this handler applies to.
-ehErrorCode :: Lens' ErrorHandler (Maybe ErrorHandlerErrorCode)
-ehErrorCode
-  = lens _ehErrorCode (\ s a -> s{_ehErrorCode = a})
-
--- | Static file content to be served for this error.
-ehStaticFile :: Lens' ErrorHandler (Maybe Text)
-ehStaticFile
-  = lens _ehStaticFile (\ s a -> s{_ehStaticFile = a})
-
-instance FromJSON ErrorHandler where
-        parseJSON
-          = withObject "ErrorHandler"
-              (\ o ->
-                 ErrorHandler' <$>
-                   (o .:? "mimeType") <*> (o .:? "errorCode") <*>
-                     (o .:? "staticFile"))
-
-instance ToJSON ErrorHandler where
-        toJSON ErrorHandler'{..}
-          = object
-              (catMaybes
-                 [("mimeType" .=) <$> _ehMimeType,
-                  ("errorCode" .=) <$> _ehErrorCode,
-                  ("staticFile" .=) <$> _ehStaticFile])
-
--- | Cross-service attributes for the location. For example
--- {\"cloud.googleapis.com\/region\": \"us-east1\"}
---
--- /See:/ 'locationLabels' smart constructor.
-newtype LocationLabels = LocationLabels'
-    { _llAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llAddtional'
-locationLabels
-    :: HashMap Text Text -- ^ 'llAddtional'
-    -> LocationLabels
-locationLabels pLlAddtional_ =
-    LocationLabels'
-    { _llAddtional = _Coerce # pLlAddtional_
-    }
-
-llAddtional :: Lens' LocationLabels (HashMap Text Text)
-llAddtional
-  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
-      _Coerce
-
-instance FromJSON LocationLabels where
-        parseJSON
-          = withObject "LocationLabels"
-              (\ o -> LocationLabels' <$> (parseJSONObject o))
-
-instance ToJSON LocationLabels where
-        toJSON = toJSON . _llAddtional
-
--- | Response message for AuthorizedCertificates.ListAuthorizedCertificates.
---
--- /See:/ 'listAuthorizedCertificatesResponse' smart constructor.
-data ListAuthorizedCertificatesResponse = ListAuthorizedCertificatesResponse'
-    { _lacrNextPageToken :: !(Maybe Text)
-    , _lacrCertificates  :: !(Maybe [AuthorizedCertificate])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListAuthorizedCertificatesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lacrNextPageToken'
---
--- * 'lacrCertificates'
-listAuthorizedCertificatesResponse
-    :: ListAuthorizedCertificatesResponse
-listAuthorizedCertificatesResponse =
-    ListAuthorizedCertificatesResponse'
-    { _lacrNextPageToken = Nothing
-    , _lacrCertificates = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-lacrNextPageToken :: Lens' ListAuthorizedCertificatesResponse (Maybe Text)
-lacrNextPageToken
-  = lens _lacrNextPageToken
-      (\ s a -> s{_lacrNextPageToken = a})
-
--- | The SSL certificates the user is authorized to administer.
-lacrCertificates :: Lens' ListAuthorizedCertificatesResponse [AuthorizedCertificate]
-lacrCertificates
-  = lens _lacrCertificates
-      (\ s a -> s{_lacrCertificates = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListAuthorizedCertificatesResponse
-         where
-        parseJSON
-          = withObject "ListAuthorizedCertificatesResponse"
-              (\ o ->
-                 ListAuthorizedCertificatesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "certificates" .!= mempty))
-
-instance ToJSON ListAuthorizedCertificatesResponse
-         where
-        toJSON ListAuthorizedCertificatesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lacrNextPageToken,
-                  ("certificates" .=) <$> _lacrCertificates])
-
--- | A single firewall rule that is evaluated against incoming traffic and
--- provides an action to take on matched requests.
---
--- /See:/ 'firewallRule' smart constructor.
-data FirewallRule = FirewallRule'
-    { _frPriority    :: !(Maybe (Textual Int32))
-    , _frAction      :: !(Maybe FirewallRuleAction)
-    , _frSourceRange :: !(Maybe Text)
-    , _frDescription :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FirewallRule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frPriority'
---
--- * 'frAction'
---
--- * 'frSourceRange'
---
--- * 'frDescription'
-firewallRule
-    :: FirewallRule
-firewallRule =
-    FirewallRule'
-    { _frPriority = Nothing
-    , _frAction = Nothing
-    , _frSourceRange = Nothing
-    , _frDescription = Nothing
-    }
-
--- | A positive integer between 1, Int32.MaxValue-1 that defines the order of
--- rule evaluation. Rules with the lowest priority are evaluated first.A
--- default rule at priority Int32.MaxValue matches all IPv4 and IPv6
--- traffic when no previous rule matches. Only the action of this rule can
--- be modified by the user.
-frPriority :: Lens' FirewallRule (Maybe Int32)
-frPriority
-  = lens _frPriority (\ s a -> s{_frPriority = a}) .
-      mapping _Coerce
-
--- | The action to take on matched requests.
-frAction :: Lens' FirewallRule (Maybe FirewallRuleAction)
-frAction = lens _frAction (\ s a -> s{_frAction = a})
-
--- | IP address or range, defined using CIDR notation, of requests that this
--- rule applies to. You can use the wildcard character \"*\" to match all
--- IPs equivalent to \"0\/0\" and \"::\/0\" together. Examples: 192.168.1.1
--- or 192.168.0.0\/16 or 2001:db8::\/32 or
--- 2001:0db8:0000:0042:0000:8a2e:0370:7334.
---
--- Truncation will be silently performed on addresses which are not
--- properly truncated. For example, 1.2.3.4\/24 is accepted as the same
--- address as 1.2.3.0\/24. Similarly, for IPv6, 2001:db8::1\/32 is accepted
--- as the same address as 2001:db8::\/32.
-frSourceRange :: Lens' FirewallRule (Maybe Text)
-frSourceRange
-  = lens _frSourceRange
-      (\ s a -> s{_frSourceRange = a})
-
--- | An optional string description of this rule. This field has a maximum
--- length of 100 characters.
-frDescription :: Lens' FirewallRule (Maybe Text)
-frDescription
-  = lens _frDescription
-      (\ s a -> s{_frDescription = a})
-
-instance FromJSON FirewallRule where
-        parseJSON
-          = withObject "FirewallRule"
-              (\ o ->
-                 FirewallRule' <$>
-                   (o .:? "priority") <*> (o .:? "action") <*>
-                     (o .:? "sourceRange")
-                     <*> (o .:? "description"))
-
-instance ToJSON FirewallRule where
-        toJSON FirewallRule'{..}
-          = object
-              (catMaybes
-                 [("priority" .=) <$> _frPriority,
-                  ("action" .=) <$> _frAction,
-                  ("sourceRange" .=) <$> _frSourceRange,
-                  ("description" .=) <$> _frDescription])
-
--- | Metadata for the given google.cloud.location.Location.
---
--- /See:/ 'locationMetadata' smart constructor.
-data LocationMetadata = LocationMetadata'
-    { _lmStandardEnvironmentAvailable :: !(Maybe Bool)
-    , _lmFlexibleEnvironmentAvailable :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmStandardEnvironmentAvailable'
---
--- * 'lmFlexibleEnvironmentAvailable'
-locationMetadata
-    :: LocationMetadata
-locationMetadata =
-    LocationMetadata'
-    { _lmStandardEnvironmentAvailable = Nothing
-    , _lmFlexibleEnvironmentAvailable = Nothing
-    }
-
--- | App Engine standard environment is available in the given
--- location.\'OutputOnly
-lmStandardEnvironmentAvailable :: Lens' LocationMetadata (Maybe Bool)
-lmStandardEnvironmentAvailable
-  = lens _lmStandardEnvironmentAvailable
-      (\ s a -> s{_lmStandardEnvironmentAvailable = a})
-
--- | App Engine flexible environment is available in the given
--- location.\'OutputOnly
-lmFlexibleEnvironmentAvailable :: Lens' LocationMetadata (Maybe Bool)
-lmFlexibleEnvironmentAvailable
-  = lens _lmFlexibleEnvironmentAvailable
-      (\ s a -> s{_lmFlexibleEnvironmentAvailable = a})
-
-instance FromJSON LocationMetadata where
-        parseJSON
-          = withObject "LocationMetadata"
-              (\ o ->
-                 LocationMetadata' <$>
-                   (o .:? "standardEnvironmentAvailable") <*>
-                     (o .:? "flexibleEnvironmentAvailable"))
-
-instance ToJSON LocationMetadata where
-        toJSON LocationMetadata'{..}
-          = object
-              (catMaybes
-                 [("standardEnvironmentAvailable" .=) <$>
-                    _lmStandardEnvironmentAvailable,
-                  ("flexibleEnvironmentAvailable" .=) <$>
-                    _lmFlexibleEnvironmentAvailable])
-
--- | Metadata for the given google.longrunning.Operation.
---
--- /See:/ 'operationMetadata' smart constructor.
-data OperationMetadata = OperationMetadata'
-    { _omInsertTime    :: !(Maybe DateTime')
-    , _omUser          :: !(Maybe Text)
-    , _omMethod        :: !(Maybe Text)
-    , _omEndTime       :: !(Maybe DateTime')
-    , _omOperationType :: !(Maybe Text)
-    , _omTarget        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omInsertTime'
---
--- * 'omUser'
---
--- * 'omMethod'
---
--- * 'omEndTime'
---
--- * 'omOperationType'
---
--- * 'omTarget'
-operationMetadata
-    :: OperationMetadata
-operationMetadata =
-    OperationMetadata'
-    { _omInsertTime = Nothing
-    , _omUser = Nothing
-    , _omMethod = Nothing
-    , _omEndTime = Nothing
-    , _omOperationType = Nothing
-    , _omTarget = Nothing
-    }
-
--- | Timestamp that this operation was created.\'OutputOnly
-omInsertTime :: Lens' OperationMetadata (Maybe UTCTime)
-omInsertTime
-  = lens _omInsertTime (\ s a -> s{_omInsertTime = a})
-      . mapping _DateTime
-
--- | User who requested this operation.\'OutputOnly
-omUser :: Lens' OperationMetadata (Maybe Text)
-omUser = lens _omUser (\ s a -> s{_omUser = a})
-
--- | API method that initiated this operation. Example:
--- google.appengine.v1beta4.Version.CreateVersion.\'OutputOnly
-omMethod :: Lens' OperationMetadata (Maybe Text)
-omMethod = lens _omMethod (\ s a -> s{_omMethod = a})
-
--- | Timestamp that this operation completed.\'OutputOnly
-omEndTime :: Lens' OperationMetadata (Maybe UTCTime)
-omEndTime
-  = lens _omEndTime (\ s a -> s{_omEndTime = a}) .
-      mapping _DateTime
-
--- | Type of this operation. Deprecated, use method field instead. Example:
--- \"create_version\".\'OutputOnly
-omOperationType :: Lens' OperationMetadata (Maybe Text)
-omOperationType
-  = lens _omOperationType
-      (\ s a -> s{_omOperationType = a})
-
--- | Name of the resource that this operation is acting on. Example:
--- apps\/myapp\/modules\/default.\'OutputOnly
-omTarget :: Lens' OperationMetadata (Maybe Text)
-omTarget = lens _omTarget (\ s a -> s{_omTarget = a})
-
-instance FromJSON OperationMetadata where
-        parseJSON
-          = withObject "OperationMetadata"
-              (\ o ->
-                 OperationMetadata' <$>
-                   (o .:? "insertTime") <*> (o .:? "user") <*>
-                     (o .:? "method")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "target"))
-
-instance ToJSON OperationMetadata where
-        toJSON OperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("insertTime" .=) <$> _omInsertTime,
-                  ("user" .=) <$> _omUser, ("method" .=) <$> _omMethod,
-                  ("endTime" .=) <$> _omEndTime,
-                  ("operationType" .=) <$> _omOperationType,
-                  ("target" .=) <$> _omTarget])
-
--- | Response message for Instances.ListInstances.
---
--- /See:/ 'listInstancesResponse' smart constructor.
-data ListInstancesResponse = ListInstancesResponse'
-    { _lirNextPageToken :: !(Maybe Text)
-    , _lirInstances     :: !(Maybe [Instance])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListInstancesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lirNextPageToken'
---
--- * 'lirInstances'
-listInstancesResponse
-    :: ListInstancesResponse
-listInstancesResponse =
-    ListInstancesResponse'
-    { _lirNextPageToken = Nothing
-    , _lirInstances = Nothing
-    }
-
--- | Continuation token for fetching the next page of results.
-lirNextPageToken :: Lens' ListInstancesResponse (Maybe Text)
-lirNextPageToken
-  = lens _lirNextPageToken
-      (\ s a -> s{_lirNextPageToken = a})
-
--- | The instances belonging to the requested version.
-lirInstances :: Lens' ListInstancesResponse [Instance]
-lirInstances
-  = lens _lirInstances (\ s a -> s{_lirInstances = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListInstancesResponse where
-        parseJSON
-          = withObject "ListInstancesResponse"
-              (\ o ->
-                 ListInstancesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "instances" .!= mempty))
-
-instance ToJSON ListInstancesResponse where
-        toJSON ListInstancesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lirNextPageToken,
-                  ("instances" .=) <$> _lirInstances])
-
--- | Metadata for the given google.longrunning.Operation.
---
--- /See:/ 'operationMetadataV1Alpha' smart constructor.
-data OperationMetadataV1Alpha = OperationMetadataV1Alpha'
-    { _omvaEphemeralMessage      :: !(Maybe Text)
-    , _omvaInsertTime            :: !(Maybe DateTime')
-    , _omvaUser                  :: !(Maybe Text)
-    , _omvaMethod                :: !(Maybe Text)
-    , _omvaEndTime               :: !(Maybe DateTime')
-    , _omvaWarning               :: !(Maybe [Text])
-    , _omvaCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1Alpha)
-    , _omvaTarget                :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadataV1Alpha' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omvaEphemeralMessage'
---
--- * 'omvaInsertTime'
---
--- * 'omvaUser'
---
--- * 'omvaMethod'
---
--- * 'omvaEndTime'
---
--- * 'omvaWarning'
---
--- * 'omvaCreateVersionMetadata'
---
--- * 'omvaTarget'
-operationMetadataV1Alpha
-    :: OperationMetadataV1Alpha
-operationMetadataV1Alpha =
-    OperationMetadataV1Alpha'
-    { _omvaEphemeralMessage = Nothing
-    , _omvaInsertTime = Nothing
-    , _omvaUser = Nothing
-    , _omvaMethod = Nothing
-    , _omvaEndTime = Nothing
-    , _omvaWarning = Nothing
-    , _omvaCreateVersionMetadata = Nothing
-    , _omvaTarget = Nothing
-    }
-
--- | Ephemeral message that may change every time the operation is polled.
--- \'OutputOnly
-omvaEphemeralMessage :: Lens' OperationMetadataV1Alpha (Maybe Text)
-omvaEphemeralMessage
-  = lens _omvaEphemeralMessage
-      (\ s a -> s{_omvaEphemeralMessage = a})
-
--- | Time that this operation was created.\'OutputOnly
-omvaInsertTime :: Lens' OperationMetadataV1Alpha (Maybe UTCTime)
-omvaInsertTime
-  = lens _omvaInsertTime
-      (\ s a -> s{_omvaInsertTime = a})
-      . mapping _DateTime
-
--- | User who requested this operation.\'OutputOnly
-omvaUser :: Lens' OperationMetadataV1Alpha (Maybe Text)
-omvaUser = lens _omvaUser (\ s a -> s{_omvaUser = a})
-
--- | API method that initiated this operation. Example:
--- google.appengine.v1alpha.Versions.CreateVersion.\'OutputOnly
-omvaMethod :: Lens' OperationMetadataV1Alpha (Maybe Text)
-omvaMethod
-  = lens _omvaMethod (\ s a -> s{_omvaMethod = a})
-
--- | Time that this operation completed.\'OutputOnly
-omvaEndTime :: Lens' OperationMetadataV1Alpha (Maybe UTCTime)
-omvaEndTime
-  = lens _omvaEndTime (\ s a -> s{_omvaEndTime = a}) .
-      mapping _DateTime
-
--- | Durable messages that persist on every operation poll. \'OutputOnly
-omvaWarning :: Lens' OperationMetadataV1Alpha [Text]
-omvaWarning
-  = lens _omvaWarning (\ s a -> s{_omvaWarning = a}) .
-      _Default
-      . _Coerce
-
-omvaCreateVersionMetadata :: Lens' OperationMetadataV1Alpha (Maybe CreateVersionMetadataV1Alpha)
-omvaCreateVersionMetadata
-  = lens _omvaCreateVersionMetadata
-      (\ s a -> s{_omvaCreateVersionMetadata = a})
-
--- | Name of the resource that this operation is acting on. Example:
--- apps\/myapp\/services\/default.\'OutputOnly
-omvaTarget :: Lens' OperationMetadataV1Alpha (Maybe Text)
-omvaTarget
-  = lens _omvaTarget (\ s a -> s{_omvaTarget = a})
-
-instance FromJSON OperationMetadataV1Alpha where
-        parseJSON
-          = withObject "OperationMetadataV1Alpha"
-              (\ o ->
-                 OperationMetadataV1Alpha' <$>
-                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
-                     <*> (o .:? "user")
-                     <*> (o .:? "method")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "warning" .!= mempty)
-                     <*> (o .:? "createVersionMetadata")
-                     <*> (o .:? "target"))
-
-instance ToJSON OperationMetadataV1Alpha where
-        toJSON OperationMetadataV1Alpha'{..}
-          = object
-              (catMaybes
-                 [("ephemeralMessage" .=) <$> _omvaEphemeralMessage,
-                  ("insertTime" .=) <$> _omvaInsertTime,
-                  ("user" .=) <$> _omvaUser,
-                  ("method" .=) <$> _omvaMethod,
-                  ("endTime" .=) <$> _omvaEndTime,
-                  ("warning" .=) <$> _omvaWarning,
-                  ("createVersionMetadata" .=) <$>
-                    _omvaCreateVersionMetadata,
-                  ("target" .=) <$> _omvaTarget])
-
--- | Health checking configuration for VM instances. Unhealthy instances are
--- killed and replaced with new instances.
---
--- /See:/ 'livenessCheck' smart constructor.
-data LivenessCheck = LivenessCheck'
-    { _lcSuccessThreshold :: !(Maybe (Textual Word32))
-    , _lcFailureThreshold :: !(Maybe (Textual Word32))
-    , _lcPath             :: !(Maybe Text)
-    , _lcCheckInterval    :: !(Maybe GDuration)
-    , _lcHost             :: !(Maybe Text)
-    , _lcInitialDelay     :: !(Maybe GDuration)
-    , _lcTimeout          :: !(Maybe GDuration)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LivenessCheck' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcSuccessThreshold'
---
--- * 'lcFailureThreshold'
---
--- * 'lcPath'
---
--- * 'lcCheckInterval'
---
--- * 'lcHost'
---
--- * 'lcInitialDelay'
---
--- * 'lcTimeout'
-livenessCheck
-    :: LivenessCheck
-livenessCheck =
-    LivenessCheck'
-    { _lcSuccessThreshold = Nothing
-    , _lcFailureThreshold = Nothing
-    , _lcPath = Nothing
-    , _lcCheckInterval = Nothing
-    , _lcHost = Nothing
-    , _lcInitialDelay = Nothing
-    , _lcTimeout = Nothing
-    }
-
--- | Number of consecutive successful checks required before considering the
--- VM healthy.
-lcSuccessThreshold :: Lens' LivenessCheck (Maybe Word32)
-lcSuccessThreshold
-  = lens _lcSuccessThreshold
-      (\ s a -> s{_lcSuccessThreshold = a})
-      . mapping _Coerce
-
--- | Number of consecutive failed checks required before considering the VM
--- unhealthy.
-lcFailureThreshold :: Lens' LivenessCheck (Maybe Word32)
-lcFailureThreshold
-  = lens _lcFailureThreshold
-      (\ s a -> s{_lcFailureThreshold = a})
-      . mapping _Coerce
-
--- | The request path.
-lcPath :: Lens' LivenessCheck (Maybe Text)
-lcPath = lens _lcPath (\ s a -> s{_lcPath = a})
-
--- | Interval between health checks.
-lcCheckInterval :: Lens' LivenessCheck (Maybe Scientific)
-lcCheckInterval
-  = lens _lcCheckInterval
-      (\ s a -> s{_lcCheckInterval = a})
-      . mapping _GDuration
-
--- | Host header to send when performing a HTTP Liveness check. Example:
--- \"myapp.appspot.com\"
-lcHost :: Lens' LivenessCheck (Maybe Text)
-lcHost = lens _lcHost (\ s a -> s{_lcHost = a})
-
--- | The initial delay before starting to execute the checks.
-lcInitialDelay :: Lens' LivenessCheck (Maybe Scientific)
-lcInitialDelay
-  = lens _lcInitialDelay
-      (\ s a -> s{_lcInitialDelay = a})
-      . mapping _GDuration
-
--- | Time before the check is considered failed.
-lcTimeout :: Lens' LivenessCheck (Maybe Scientific)
-lcTimeout
-  = lens _lcTimeout (\ s a -> s{_lcTimeout = a}) .
-      mapping _GDuration
-
-instance FromJSON LivenessCheck where
-        parseJSON
-          = withObject "LivenessCheck"
-              (\ o ->
-                 LivenessCheck' <$>
-                   (o .:? "successThreshold") <*>
-                     (o .:? "failureThreshold")
-                     <*> (o .:? "path")
-                     <*> (o .:? "checkInterval")
-                     <*> (o .:? "host")
-                     <*> (o .:? "initialDelay")
-                     <*> (o .:? "timeout"))
-
-instance ToJSON LivenessCheck where
-        toJSON LivenessCheck'{..}
-          = object
-              (catMaybes
-                 [("successThreshold" .=) <$> _lcSuccessThreshold,
-                  ("failureThreshold" .=) <$> _lcFailureThreshold,
-                  ("path" .=) <$> _lcPath,
-                  ("checkInterval" .=) <$> _lcCheckInterval,
-                  ("host" .=) <$> _lcHost,
-                  ("initialDelay" .=) <$> _lcInitialDelay,
-                  ("timeout" .=) <$> _lcTimeout])
-
--- | Target scaling by request utilization. Only applicable in the App Engine
--- flexible environment.
---
--- /See:/ 'requestUtilization' smart constructor.
-data RequestUtilization = RequestUtilization'
-    { _ruTargetConcurrentRequests    :: !(Maybe (Textual Int32))
-    , _ruTargetRequestCountPerSecond :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RequestUtilization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ruTargetConcurrentRequests'
---
--- * 'ruTargetRequestCountPerSecond'
-requestUtilization
-    :: RequestUtilization
-requestUtilization =
-    RequestUtilization'
-    { _ruTargetConcurrentRequests = Nothing
-    , _ruTargetRequestCountPerSecond = Nothing
-    }
-
--- | Target number of concurrent requests.
-ruTargetConcurrentRequests :: Lens' RequestUtilization (Maybe Int32)
-ruTargetConcurrentRequests
-  = lens _ruTargetConcurrentRequests
-      (\ s a -> s{_ruTargetConcurrentRequests = a})
-      . mapping _Coerce
-
--- | Target requests per second.
-ruTargetRequestCountPerSecond :: Lens' RequestUtilization (Maybe Int32)
-ruTargetRequestCountPerSecond
-  = lens _ruTargetRequestCountPerSecond
-      (\ s a -> s{_ruTargetRequestCountPerSecond = a})
-      . mapping _Coerce
-
-instance FromJSON RequestUtilization where
-        parseJSON
-          = withObject "RequestUtilization"
-              (\ o ->
-                 RequestUtilization' <$>
-                   (o .:? "targetConcurrentRequests") <*>
-                     (o .:? "targetRequestCountPerSecond"))
-
-instance ToJSON RequestUtilization where
-        toJSON RequestUtilization'{..}
-          = object
-              (catMaybes
-                 [("targetConcurrentRequests" .=) <$>
-                    _ruTargetConcurrentRequests,
-                  ("targetRequestCountPerSecond" .=) <$>
-                    _ruTargetRequestCountPerSecond])
-
--- | Request message for \'Applications.RepairApplication\'.
---
--- /See:/ 'repairApplicationRequest' smart constructor.
-data RepairApplicationRequest =
-    RepairApplicationRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RepairApplicationRequest' with the minimum fields required to make a request.
---
-repairApplicationRequest
-    :: RepairApplicationRequest
-repairApplicationRequest = RepairApplicationRequest'
-
-instance FromJSON RepairApplicationRequest where
-        parseJSON
-          = withObject "RepairApplicationRequest"
-              (\ o -> pure RepairApplicationRequest')
-
-instance ToJSON RepairApplicationRequest where
-        toJSON = const emptyObject
-
--- | The normal response of the operation in case of success. If the original
--- method returns no data on success, such as Delete, the response is
--- google.protobuf.Empty. If the original method is standard
--- Get\/Create\/Update, the response should be the resource. For other
--- methods, the response should have the type XxxResponse, where Xxx is the
--- original method name. For example, if the original method name is
--- TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
---
--- /See:/ 'operationResponse' smart constructor.
-newtype OperationResponse = OperationResponse'
-    { _orAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'orAddtional'
-operationResponse
-    :: HashMap Text JSONValue -- ^ 'orAddtional'
-    -> OperationResponse
-operationResponse pOrAddtional_ =
-    OperationResponse'
-    { _orAddtional = _Coerce # pOrAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)
-orAddtional
-  = lens _orAddtional (\ s a -> s{_orAddtional = a}) .
-      _Coerce
-
-instance FromJSON OperationResponse where
-        parseJSON
-          = withObject "OperationResponse"
-              (\ o -> OperationResponse' <$> (parseJSONObject o))
-
-instance ToJSON OperationResponse where
-        toJSON = toJSON . _orAddtional
-
--- | Metadata for the given google.longrunning.Operation during a
--- google.appengine.v1beta.CreateVersionRequest.
---
--- /See:/ 'createVersionMetadataV1Beta' smart constructor.
-newtype CreateVersionMetadataV1Beta = CreateVersionMetadataV1Beta'
-    { _cvmvbCloudBuildId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateVersionMetadataV1Beta' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvmvbCloudBuildId'
-createVersionMetadataV1Beta
-    :: CreateVersionMetadataV1Beta
-createVersionMetadataV1Beta =
-    CreateVersionMetadataV1Beta'
-    { _cvmvbCloudBuildId = Nothing
-    }
-
--- | The Cloud Build ID if one was created as part of the version create.
--- \'OutputOnly
-cvmvbCloudBuildId :: Lens' CreateVersionMetadataV1Beta (Maybe Text)
-cvmvbCloudBuildId
-  = lens _cvmvbCloudBuildId
-      (\ s a -> s{_cvmvbCloudBuildId = a})
-
-instance FromJSON CreateVersionMetadataV1Beta where
-        parseJSON
-          = withObject "CreateVersionMetadataV1Beta"
-              (\ o ->
-                 CreateVersionMetadataV1Beta' <$>
-                   (o .:? "cloudBuildId"))
-
-instance ToJSON CreateVersionMetadataV1Beta where
-        toJSON CreateVersionMetadataV1Beta'{..}
-          = object
-              (catMaybes
-                 [("cloudBuildId" .=) <$> _cvmvbCloudBuildId])
-
--- | Response message for DomainMappings.ListDomainMappings.
---
--- /See:/ 'listDomainMAppingsResponse' smart constructor.
-data ListDomainMAppingsResponse = ListDomainMAppingsResponse'
-    { _ldmarDomainMAppings :: !(Maybe [DomainMApping])
-    , _ldmarNextPageToken  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListDomainMAppingsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldmarDomainMAppings'
---
--- * 'ldmarNextPageToken'
-listDomainMAppingsResponse
-    :: ListDomainMAppingsResponse
-listDomainMAppingsResponse =
-    ListDomainMAppingsResponse'
-    { _ldmarDomainMAppings = Nothing
-    , _ldmarNextPageToken = Nothing
-    }
-
--- | The domain mappings for the application.
-ldmarDomainMAppings :: Lens' ListDomainMAppingsResponse [DomainMApping]
-ldmarDomainMAppings
-  = lens _ldmarDomainMAppings
-      (\ s a -> s{_ldmarDomainMAppings = a})
-      . _Default
-      . _Coerce
-
--- | Continuation token for fetching the next page of results.
-ldmarNextPageToken :: Lens' ListDomainMAppingsResponse (Maybe Text)
-ldmarNextPageToken
-  = lens _ldmarNextPageToken
-      (\ s a -> s{_ldmarNextPageToken = a})
-
-instance FromJSON ListDomainMAppingsResponse where
-        parseJSON
-          = withObject "ListDomainMAppingsResponse"
-              (\ o ->
-                 ListDomainMAppingsResponse' <$>
-                   (o .:? "domainMappings" .!= mempty) <*>
-                     (o .:? "nextPageToken"))
-
-instance ToJSON ListDomainMAppingsResponse where
-        toJSON ListDomainMAppingsResponse'{..}
-          = object
-              (catMaybes
-                 [("domainMappings" .=) <$> _ldmarDomainMAppings,
-                  ("nextPageToken" .=) <$> _ldmarNextPageToken])
-
--- | Scheduler settings for standard environment.
---
--- /See:/ 'standardSchedulerSettings' smart constructor.
-data StandardSchedulerSettings = StandardSchedulerSettings'
-    { _sssTargetCPUUtilization        :: !(Maybe (Textual Double))
-    , _sssMinInstances                :: !(Maybe (Textual Int32))
-    , _sssMaxInstances                :: !(Maybe (Textual Int32))
-    , _sssTargetThroughputUtilization :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StandardSchedulerSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sssTargetCPUUtilization'
---
--- * 'sssMinInstances'
---
--- * 'sssMaxInstances'
---
--- * 'sssTargetThroughputUtilization'
-standardSchedulerSettings
-    :: StandardSchedulerSettings
-standardSchedulerSettings =
-    StandardSchedulerSettings'
-    { _sssTargetCPUUtilization = Nothing
-    , _sssMinInstances = Nothing
-    , _sssMaxInstances = Nothing
-    , _sssTargetThroughputUtilization = Nothing
-    }
-
--- | Target CPU utilization ratio to maintain when scaling.
-sssTargetCPUUtilization :: Lens' StandardSchedulerSettings (Maybe Double)
-sssTargetCPUUtilization
-  = lens _sssTargetCPUUtilization
-      (\ s a -> s{_sssTargetCPUUtilization = a})
-      . mapping _Coerce
-
--- | Minimum number of instances to run for this version. Set to zero to
--- disable min_instances configuration.
-sssMinInstances :: Lens' StandardSchedulerSettings (Maybe Int32)
-sssMinInstances
-  = lens _sssMinInstances
-      (\ s a -> s{_sssMinInstances = a})
-      . mapping _Coerce
-
--- | Maximum number of instances to run for this version. Set to zero to
--- disable max_instances configuration.
-sssMaxInstances :: Lens' StandardSchedulerSettings (Maybe Int32)
-sssMaxInstances
-  = lens _sssMaxInstances
-      (\ s a -> s{_sssMaxInstances = a})
-      . mapping _Coerce
-
--- | Target throughput utilization ratio to maintain when scaling
-sssTargetThroughputUtilization :: Lens' StandardSchedulerSettings (Maybe Double)
-sssTargetThroughputUtilization
-  = lens _sssTargetThroughputUtilization
-      (\ s a -> s{_sssTargetThroughputUtilization = a})
-      . mapping _Coerce
-
-instance FromJSON StandardSchedulerSettings where
-        parseJSON
-          = withObject "StandardSchedulerSettings"
-              (\ o ->
-                 StandardSchedulerSettings' <$>
-                   (o .:? "targetCpuUtilization") <*>
-                     (o .:? "minInstances")
-                     <*> (o .:? "maxInstances")
-                     <*> (o .:? "targetThroughputUtilization"))
-
-instance ToJSON StandardSchedulerSettings where
-        toJSON StandardSchedulerSettings'{..}
-          = object
-              (catMaybes
-                 [("targetCpuUtilization" .=) <$>
-                    _sssTargetCPUUtilization,
-                  ("minInstances" .=) <$> _sssMinInstances,
-                  ("maxInstances" .=) <$> _sssMaxInstances,
-                  ("targetThroughputUtilization" .=) <$>
-                    _sssTargetThroughputUtilization])
-
--- | Docker image that is used to create a container and start a VM instance
--- for the version that you deploy. Only applicable for instances running
--- in the App Engine flexible environment.
---
--- /See:/ 'containerInfo' smart constructor.
-newtype ContainerInfo = ContainerInfo'
-    { _ciImage :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ContainerInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ciImage'
-containerInfo
-    :: ContainerInfo
-containerInfo =
-    ContainerInfo'
-    { _ciImage = Nothing
-    }
-
--- | URI to the hosted container image in Google Container Registry. The URI
--- must be fully qualified and include a tag or digest. Examples:
--- \"gcr.io\/my-project\/image:tag\" or
--- \"gcr.io\/my-project\/image\'digest\"
-ciImage :: Lens' ContainerInfo (Maybe Text)
-ciImage = lens _ciImage (\ s a -> s{_ciImage = a})
-
-instance FromJSON ContainerInfo where
-        parseJSON
-          = withObject "ContainerInfo"
-              (\ o -> ContainerInfo' <$> (o .:? "image"))
-
-instance ToJSON ContainerInfo where
-        toJSON ContainerInfo'{..}
-          = object (catMaybes [("image" .=) <$> _ciImage])
-
--- | An Instance resource is the computing unit that App Engine uses to
--- automatically scale an application.
---
--- /See:/ 'instance'' smart constructor.
-data Instance = Instance'
-    { _iMemoryUsage      :: !(Maybe (Textual Int64))
-    , _iVMStatus         :: !(Maybe Text)
-    , _iVMZoneName       :: !(Maybe Text)
-    , _iVMIP             :: !(Maybe Text)
-    , _iStartTime        :: !(Maybe DateTime')
-    , _iVMId             :: !(Maybe Text)
-    , _iAvailability     :: !(Maybe InstanceAvailability)
-    , _iVMName           :: !(Maybe Text)
-    , _iName             :: !(Maybe Text)
-    , _iVMDebugEnabled   :: !(Maybe Bool)
-    , _iRequests         :: !(Maybe (Textual Int32))
-    , _iQps              :: !(Maybe (Textual Double))
-    , _iId               :: !(Maybe Text)
-    , _iErrors           :: !(Maybe (Textual Int32))
-    , _iAverageLatency   :: !(Maybe (Textual Int32))
-    , _iAppEngineRelease :: !(Maybe Text)
-    } 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:
---
--- * 'iMemoryUsage'
---
--- * 'iVMStatus'
---
--- * 'iVMZoneName'
---
--- * 'iVMIP'
---
--- * 'iStartTime'
---
--- * 'iVMId'
---
--- * 'iAvailability'
---
--- * 'iVMName'
---
--- * 'iName'
---
--- * 'iVMDebugEnabled'
---
--- * 'iRequests'
---
--- * 'iQps'
---
--- * 'iId'
---
--- * 'iErrors'
---
--- * 'iAverageLatency'
---
--- * 'iAppEngineRelease'
-instance'
-    :: Instance
-instance' =
-    Instance'
-    { _iMemoryUsage = Nothing
-    , _iVMStatus = Nothing
-    , _iVMZoneName = Nothing
-    , _iVMIP = Nothing
-    , _iStartTime = Nothing
-    , _iVMId = Nothing
-    , _iAvailability = Nothing
-    , _iVMName = Nothing
-    , _iName = Nothing
-    , _iVMDebugEnabled = Nothing
-    , _iRequests = Nothing
-    , _iQps = Nothing
-    , _iId = Nothing
-    , _iErrors = Nothing
-    , _iAverageLatency = Nothing
-    , _iAppEngineRelease = Nothing
-    }
-
--- | Total memory in use (bytes).\'OutputOnly
-iMemoryUsage :: Lens' Instance (Maybe Int64)
-iMemoryUsage
-  = lens _iMemoryUsage (\ s a -> s{_iMemoryUsage = a})
-      . mapping _Coerce
-
--- | Status of the virtual machine where this instance lives. Only applicable
--- for instances in App Engine flexible environment.\'OutputOnly
-iVMStatus :: Lens' Instance (Maybe Text)
-iVMStatus
-  = lens _iVMStatus (\ s a -> s{_iVMStatus = a})
-
--- | Zone where the virtual machine is located. Only applicable for instances
--- in App Engine flexible environment.\'OutputOnly
-iVMZoneName :: Lens' Instance (Maybe Text)
-iVMZoneName
-  = lens _iVMZoneName (\ s a -> s{_iVMZoneName = a})
-
--- | The IP address of this instance. Only applicable for instances in App
--- Engine flexible environment.\'OutputOnly
-iVMIP :: Lens' Instance (Maybe Text)
-iVMIP = lens _iVMIP (\ s a -> s{_iVMIP = a})
-
--- | Time that this instance was started.\'OutputOnly
-iStartTime :: Lens' Instance (Maybe UTCTime)
-iStartTime
-  = lens _iStartTime (\ s a -> s{_iStartTime = a}) .
-      mapping _DateTime
-
--- | Virtual machine ID of this instance. Only applicable for instances in
--- App Engine flexible environment.\'OutputOnly
-iVMId :: Lens' Instance (Maybe Text)
-iVMId = lens _iVMId (\ s a -> s{_iVMId = a})
-
--- | Availability of the instance.\'OutputOnly
-iAvailability :: Lens' Instance (Maybe InstanceAvailability)
-iAvailability
-  = lens _iAvailability
-      (\ s a -> s{_iAvailability = a})
-
--- | Name of the virtual machine where this instance lives. Only applicable
--- for instances in App Engine flexible environment.\'OutputOnly
-iVMName :: Lens' Instance (Maybe Text)
-iVMName = lens _iVMName (\ s a -> s{_iVMName = a})
-
--- | Full path to the Instance resource in the API. Example:
--- apps\/myapp\/services\/default\/versions\/v1\/instances\/instance-1.\'OutputOnly
-iName :: Lens' Instance (Maybe Text)
-iName = lens _iName (\ s a -> s{_iName = a})
-
--- | Whether this instance is in debug mode. Only applicable for instances in
--- App Engine flexible environment.\'OutputOnly
-iVMDebugEnabled :: Lens' Instance (Maybe Bool)
-iVMDebugEnabled
-  = lens _iVMDebugEnabled
-      (\ s a -> s{_iVMDebugEnabled = a})
-
--- | Number of requests since this instance was started.\'OutputOnly
-iRequests :: Lens' Instance (Maybe Int32)
-iRequests
-  = lens _iRequests (\ s a -> s{_iRequests = a}) .
-      mapping _Coerce
-
--- | Average queries per second (QPS) over the last minute.\'OutputOnly
-iQps :: Lens' Instance (Maybe Double)
-iQps
-  = lens _iQps (\ s a -> s{_iQps = a}) .
-      mapping _Coerce
-
--- | Relative name of the instance within the version. Example:
--- instance-1.\'OutputOnly
-iId :: Lens' Instance (Maybe Text)
-iId = lens _iId (\ s a -> s{_iId = a})
-
--- | Number of errors since this instance was started.\'OutputOnly
-iErrors :: Lens' Instance (Maybe Int32)
-iErrors
-  = lens _iErrors (\ s a -> s{_iErrors = a}) .
-      mapping _Coerce
-
--- | Average latency (ms) over the last minute.\'OutputOnly
-iAverageLatency :: Lens' Instance (Maybe Int32)
-iAverageLatency
-  = lens _iAverageLatency
-      (\ s a -> s{_iAverageLatency = a})
-      . mapping _Coerce
-
--- | App Engine release this instance is running on.\'OutputOnly
-iAppEngineRelease :: Lens' Instance (Maybe Text)
-iAppEngineRelease
-  = lens _iAppEngineRelease
-      (\ s a -> s{_iAppEngineRelease = a})
-
-instance FromJSON Instance where
-        parseJSON
-          = withObject "Instance"
-              (\ o ->
-                 Instance' <$>
-                   (o .:? "memoryUsage") <*> (o .:? "vmStatus") <*>
-                     (o .:? "vmZoneName")
-                     <*> (o .:? "vmIp")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "vmId")
-                     <*> (o .:? "availability")
-                     <*> (o .:? "vmName")
-                     <*> (o .:? "name")
-                     <*> (o .:? "vmDebugEnabled")
-                     <*> (o .:? "requests")
-                     <*> (o .:? "qps")
-                     <*> (o .:? "id")
-                     <*> (o .:? "errors")
-                     <*> (o .:? "averageLatency")
-                     <*> (o .:? "appEngineRelease"))
-
-instance ToJSON Instance where
-        toJSON Instance'{..}
-          = object
-              (catMaybes
-                 [("memoryUsage" .=) <$> _iMemoryUsage,
-                  ("vmStatus" .=) <$> _iVMStatus,
-                  ("vmZoneName" .=) <$> _iVMZoneName,
-                  ("vmIp" .=) <$> _iVMIP,
-                  ("startTime" .=) <$> _iStartTime,
-                  ("vmId" .=) <$> _iVMId,
-                  ("availability" .=) <$> _iAvailability,
-                  ("vmName" .=) <$> _iVMName, ("name" .=) <$> _iName,
-                  ("vmDebugEnabled" .=) <$> _iVMDebugEnabled,
-                  ("requests" .=) <$> _iRequests, ("qps" .=) <$> _iQps,
-                  ("id" .=) <$> _iId, ("errors" .=) <$> _iErrors,
-                  ("averageLatency" .=) <$> _iAverageLatency,
-                  ("appEngineRelease" .=) <$> _iAppEngineRelease])
-
--- | SSL configuration for a DomainMapping resource.
---
--- /See:/ 'sslSettings' smart constructor.
-data SSLSettings = SSLSettings'
-    { _ssSSLManagementType           :: !(Maybe SSLSettingsSSLManagementType)
-    , _ssCertificateId               :: !(Maybe Text)
-    , _ssPendingManagedCertificateId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SSLSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssSSLManagementType'
---
--- * 'ssCertificateId'
---
--- * 'ssPendingManagedCertificateId'
-sslSettings
-    :: SSLSettings
-sslSettings =
-    SSLSettings'
-    { _ssSSLManagementType = Nothing
-    , _ssCertificateId = Nothing
-    , _ssPendingManagedCertificateId = Nothing
-    }
-
--- | SSL management type for this domain. If AUTOMATIC, a managed certificate
--- is automatically provisioned. If MANUAL, certificate_id must be manually
--- specified in order to configure SSL for this domain.
-ssSSLManagementType :: Lens' SSLSettings (Maybe SSLSettingsSSLManagementType)
-ssSSLManagementType
-  = lens _ssSSLManagementType
-      (\ s a -> s{_ssSSLManagementType = a})
-
--- | ID of the AuthorizedCertificate resource configuring SSL for the
--- application. Clearing this field will remove SSL support.By default, a
--- managed certificate is automatically created for every domain mapping.
--- To omit SSL support or to configure SSL manually, specify
--- SslManagementType.MANUAL on a CREATE or UPDATE request. You must be
--- authorized to administer the AuthorizedCertificate resource to manually
--- map it to a DomainMapping resource. Example: 12345.
-ssCertificateId :: Lens' SSLSettings (Maybe Text)
-ssCertificateId
-  = lens _ssCertificateId
-      (\ s a -> s{_ssCertificateId = a})
-
--- | ID of the managed AuthorizedCertificate resource currently being
--- provisioned, if applicable. Until the new managed certificate has been
--- successfully provisioned, the previous SSL state will be preserved. Once
--- the provisioning process completes, the certificate_id field will
--- reflect the new managed certificate and this field will be left empty.
--- To remove SSL support while there is still a pending managed
--- certificate, clear the certificate_id field with an
--- UpdateDomainMappingRequest.\'OutputOnly
-ssPendingManagedCertificateId :: Lens' SSLSettings (Maybe Text)
-ssPendingManagedCertificateId
-  = lens _ssPendingManagedCertificateId
-      (\ s a -> s{_ssPendingManagedCertificateId = a})
-
-instance FromJSON SSLSettings where
-        parseJSON
-          = withObject "SSLSettings"
-              (\ o ->
-                 SSLSettings' <$>
-                   (o .:? "sslManagementType") <*>
-                     (o .:? "certificateId")
-                     <*> (o .:? "pendingManagedCertificateId"))
-
-instance ToJSON SSLSettings where
-        toJSON SSLSettings'{..}
-          = object
-              (catMaybes
-                 [("sslManagementType" .=) <$> _ssSSLManagementType,
-                  ("certificateId" .=) <$> _ssCertificateId,
-                  ("pendingManagedCertificateId" .=) <$>
-                    _ssPendingManagedCertificateId])
-
--- | Code and application artifacts used to deploy a version to App Engine.
---
--- /See:/ 'deployment' smart constructor.
-data Deployment = Deployment'
-    { _dZip               :: !(Maybe ZipInfo)
-    , _dCloudBuildOptions :: !(Maybe CloudBuildOptions)
-    , _dContainer         :: !(Maybe ContainerInfo)
-    , _dFiles             :: !(Maybe DeploymentFiles)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Deployment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dZip'
---
--- * 'dCloudBuildOptions'
---
--- * 'dContainer'
---
--- * 'dFiles'
-deployment
-    :: Deployment
-deployment =
-    Deployment'
-    { _dZip = Nothing
-    , _dCloudBuildOptions = Nothing
-    , _dContainer = Nothing
-    , _dFiles = Nothing
-    }
+data NetworkUtilization =
+  NetworkUtilization'
+    { _nuTargetReceivedBytesPerSecond   :: !(Maybe (Textual Int32))
+    , _nuTargetSentPacketsPerSecond     :: !(Maybe (Textual Int32))
+    , _nuTargetReceivedPacketsPerSecond :: !(Maybe (Textual Int32))
+    , _nuTargetSentBytesPerSecond       :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nuTargetReceivedBytesPerSecond'
+--
+-- * 'nuTargetSentPacketsPerSecond'
+--
+-- * 'nuTargetReceivedPacketsPerSecond'
+--
+-- * 'nuTargetSentBytesPerSecond'
+networkUtilization
+    :: NetworkUtilization
+networkUtilization =
+  NetworkUtilization'
+    { _nuTargetReceivedBytesPerSecond = Nothing
+    , _nuTargetSentPacketsPerSecond = Nothing
+    , _nuTargetReceivedPacketsPerSecond = Nothing
+    , _nuTargetSentBytesPerSecond = Nothing
+    }
+
+
+-- | Target bytes received per second.
+nuTargetReceivedBytesPerSecond :: Lens' NetworkUtilization (Maybe Int32)
+nuTargetReceivedBytesPerSecond
+  = lens _nuTargetReceivedBytesPerSecond
+      (\ s a -> s{_nuTargetReceivedBytesPerSecond = a})
+      . mapping _Coerce
+
+-- | Target packets sent per second.
+nuTargetSentPacketsPerSecond :: Lens' NetworkUtilization (Maybe Int32)
+nuTargetSentPacketsPerSecond
+  = lens _nuTargetSentPacketsPerSecond
+      (\ s a -> s{_nuTargetSentPacketsPerSecond = a})
+      . mapping _Coerce
+
+-- | Target packets received per second.
+nuTargetReceivedPacketsPerSecond :: Lens' NetworkUtilization (Maybe Int32)
+nuTargetReceivedPacketsPerSecond
+  = lens _nuTargetReceivedPacketsPerSecond
+      (\ s a -> s{_nuTargetReceivedPacketsPerSecond = a})
+      . mapping _Coerce
+
+-- | Target bytes sent per second.
+nuTargetSentBytesPerSecond :: Lens' NetworkUtilization (Maybe Int32)
+nuTargetSentBytesPerSecond
+  = lens _nuTargetSentBytesPerSecond
+      (\ s a -> s{_nuTargetSentBytesPerSecond = a})
+      . mapping _Coerce
+
+instance FromJSON NetworkUtilization where
+        parseJSON
+          = withObject "NetworkUtilization"
+              (\ o ->
+                 NetworkUtilization' <$>
+                   (o .:? "targetReceivedBytesPerSecond") <*>
+                     (o .:? "targetSentPacketsPerSecond")
+                     <*> (o .:? "targetReceivedPacketsPerSecond")
+                     <*> (o .:? "targetSentBytesPerSecond"))
+
+instance ToJSON NetworkUtilization where
+        toJSON NetworkUtilization'{..}
+          = object
+              (catMaybes
+                 [("targetReceivedBytesPerSecond" .=) <$>
+                    _nuTargetReceivedBytesPerSecond,
+                  ("targetSentPacketsPerSecond" .=) <$>
+                    _nuTargetSentPacketsPerSecond,
+                  ("targetReceivedPacketsPerSecond" .=) <$>
+                    _nuTargetReceivedPacketsPerSecond,
+                  ("targetSentBytesPerSecond" .=) <$>
+                    _nuTargetSentBytesPerSecond])
+
+-- | The Status type defines a logical error model that is suitable for
+-- different programming environments, including REST APIs and RPC APIs. It
+-- is used by gRPC (https:\/\/github.com\/grpc). The error model is
+-- designed to be: Simple to use and understand for most users Flexible
+-- enough to meet unexpected needsOverviewThe Status message contains three
+-- pieces of data: error code, error message, and error details. The error
+-- code should be an enum value of google.rpc.Code, but it may accept
+-- additional error codes if needed. The error message should be a
+-- developer-facing English message that helps developers understand and
+-- resolve the error. If a localized user-facing error message is needed,
+-- put the localized message in the error details or localize it in the
+-- client. The optional error details may contain arbitrary information
+-- about the error. There is a predefined set of error detail types in the
+-- package google.rpc that can be used for common error conditions.Language
+-- mappingThe Status message is the logical representation of the error
+-- model, but it is not necessarily the actual wire format. When the Status
+-- message is exposed in different client libraries and different wire
+-- protocols, it can be mapped differently. For example, it will likely be
+-- mapped to some exceptions in Java, but more likely mapped to some error
+-- codes in C.Other usesThe error model and the Status message can be used
+-- in a variety of environments, either with or without APIs, to provide a
+-- consistent developer experience across different environments.Example
+-- uses of this error model include: Partial errors. If a service needs to
+-- return partial errors to the client, it may embed the Status in the
+-- normal response to indicate the partial errors. Workflow errors. A
+-- typical workflow has multiple steps. Each step may have a Status message
+-- for error reporting. Batch operations. If a client uses batch request
+-- and batch response, the Status message should be used directly inside
+-- batch response, one for each error sub-response. Asynchronous
+-- operations. If an API call embeds asynchronous operation results in its
+-- response, the status of those operations should be represented directly
+-- using the Status message. Logging. If some API errors are stored in
+-- logs, the message Status could be used directly after any stripping
+-- needed for security\/privacy reasons.
+--
+-- /See:/ 'status' smart constructor.
+data Status =
+  Status'
+    { _sDetails :: !(Maybe [StatusDetailsItem])
+    , _sCode    :: !(Maybe (Textual Int32))
+    , _sMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Status' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDetails'
+--
+-- * 'sCode'
+--
+-- * 'sMessage'
+status
+    :: Status
+status = Status' {_sDetails = Nothing, _sCode = Nothing, _sMessage = Nothing}
+
+
+-- | A list of messages that carry the error details. There is a common set
+-- of message types for APIs to use.
+sDetails :: Lens' Status [StatusDetailsItem]
+sDetails
+  = lens _sDetails (\ s a -> s{_sDetails = a}) .
+      _Default
+      . _Coerce
+
+-- | The status code, which should be an enum value of google.rpc.Code.
+sCode :: Lens' Status (Maybe Int32)
+sCode
+  = lens _sCode (\ s a -> s{_sCode = a}) .
+      mapping _Coerce
+
+-- | A developer-facing error message, which should be in English. Any
+-- user-facing error message should be localized and sent in the
+-- google.rpc.Status.details field, or localized by the client.
+sMessage :: Lens' Status (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
+
+instance FromJSON Status where
+        parseJSON
+          = withObject "Status"
+              (\ o ->
+                 Status' <$>
+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON Status where
+        toJSON Status'{..}
+          = object
+              (catMaybes
+                 [("details" .=) <$> _sDetails,
+                  ("code" .=) <$> _sCode,
+                  ("message" .=) <$> _sMessage])
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+--
+-- /See:/ 'locationSchema' smart constructor.
+newtype LocationSchema =
+  LocationSchema'
+    { _lsAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationSchema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsAddtional'
+locationSchema
+    :: HashMap Text JSONValue -- ^ 'lsAddtional'
+    -> LocationSchema
+locationSchema pLsAddtional_ =
+  LocationSchema' {_lsAddtional = _Coerce # pLsAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+lsAddtional :: Lens' LocationSchema (HashMap Text JSONValue)
+lsAddtional
+  = lens _lsAddtional (\ s a -> s{_lsAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationSchema where
+        parseJSON
+          = withObject "LocationSchema"
+              (\ o -> LocationSchema' <$> (parseJSONObject o))
+
+instance ToJSON LocationSchema where
+        toJSON = toJSON . _lsAddtional
+
+-- | A domain that a user has been authorized to administer. To authorize use
+-- of a domain, verify ownership via Webmaster Central
+-- (https:\/\/www.google.com\/webmasters\/verification\/home).
+--
+-- /See:/ 'authorizedDomain' smart constructor.
+data AuthorizedDomain =
+  AuthorizedDomain'
+    { _adName :: !(Maybe Text)
+    , _adId   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AuthorizedDomain' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adName'
+--
+-- * 'adId'
+authorizedDomain
+    :: AuthorizedDomain
+authorizedDomain = AuthorizedDomain' {_adName = Nothing, _adId = Nothing}
+
+
+-- | Full path to the AuthorizedDomain resource in the API. Example:
+-- apps\/myapp\/authorizedDomains\/example.com.\'OutputOnly
+adName :: Lens' AuthorizedDomain (Maybe Text)
+adName = lens _adName (\ s a -> s{_adName = a})
+
+-- | Fully qualified domain name of the domain authorized for use. Example:
+-- example.com.
+adId :: Lens' AuthorizedDomain (Maybe Text)
+adId = lens _adId (\ s a -> s{_adId = a})
+
+instance FromJSON AuthorizedDomain where
+        parseJSON
+          = withObject "AuthorizedDomain"
+              (\ o ->
+                 AuthorizedDomain' <$>
+                   (o .:? "name") <*> (o .:? "id"))
+
+instance ToJSON AuthorizedDomain where
+        toJSON AuthorizedDomain'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _adName, ("id" .=) <$> _adId])
+
+-- | Traffic routing configuration for versions within a single service.
+-- Traffic splits define how traffic directed to the service is assigned to
+-- versions.
+--
+-- /See:/ 'trafficSplit' smart constructor.
+data TrafficSplit =
+  TrafficSplit'
+    { _tsShardBy     :: !(Maybe TrafficSplitShardBy)
+    , _tsAllocations :: !(Maybe TrafficSplitAllocations)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TrafficSplit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsShardBy'
+--
+-- * 'tsAllocations'
+trafficSplit
+    :: TrafficSplit
+trafficSplit = TrafficSplit' {_tsShardBy = Nothing, _tsAllocations = Nothing}
+
+
+-- | Mechanism used to determine which version a request is sent to. The
+-- traffic selection algorithm will be stable for either type until
+-- allocations are changed.
+tsShardBy :: Lens' TrafficSplit (Maybe TrafficSplitShardBy)
+tsShardBy
+  = lens _tsShardBy (\ s a -> s{_tsShardBy = a})
+
+-- | Mapping from version IDs within the service to fractional (0.000, 1]
+-- allocations of traffic for that version. Each version can be specified
+-- only once, but some versions in the service may not have any traffic
+-- allocation. Services that have traffic allocated cannot be deleted until
+-- either the service is deleted or their traffic allocation is removed.
+-- Allocations must sum to 1. Up to two decimal place precision is
+-- supported for IP-based splits and up to three decimal places is
+-- supported for cookie-based splits.
+tsAllocations :: Lens' TrafficSplit (Maybe TrafficSplitAllocations)
+tsAllocations
+  = lens _tsAllocations
+      (\ s a -> s{_tsAllocations = a})
+
+instance FromJSON TrafficSplit where
+        parseJSON
+          = withObject "TrafficSplit"
+              (\ o ->
+                 TrafficSplit' <$>
+                   (o .:? "shardBy") <*> (o .:? "allocations"))
+
+instance ToJSON TrafficSplit where
+        toJSON TrafficSplit'{..}
+          = object
+              (catMaybes
+                 [("shardBy" .=) <$> _tsShardBy,
+                  ("allocations" .=) <$> _tsAllocations])
+
+-- | Executes a script to handle the request that matches the URL pattern.
+--
+-- /See:/ 'scriptHandler' smart constructor.
+newtype ScriptHandler =
+  ScriptHandler'
+    { _shScriptPath :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ScriptHandler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'shScriptPath'
+scriptHandler
+    :: ScriptHandler
+scriptHandler = ScriptHandler' {_shScriptPath = Nothing}
+
+
+-- | Path to the script from the application root directory.
+shScriptPath :: Lens' ScriptHandler (Maybe Text)
+shScriptPath
+  = lens _shScriptPath (\ s a -> s{_shScriptPath = a})
+
+instance FromJSON ScriptHandler where
+        parseJSON
+          = withObject "ScriptHandler"
+              (\ o -> ScriptHandler' <$> (o .:? "scriptPath"))
+
+instance ToJSON ScriptHandler where
+        toJSON ScriptHandler'{..}
+          = object
+              (catMaybes [("scriptPath" .=) <$> _shScriptPath])
+
+-- | Response message for Services.ListServices.
+--
+-- /See:/ 'listServicesResponse' smart constructor.
+data ListServicesResponse =
+  ListServicesResponse'
+    { _lsrNextPageToken :: !(Maybe Text)
+    , _lsrServices      :: !(Maybe [Service])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListServicesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lsrNextPageToken'
+--
+-- * 'lsrServices'
+listServicesResponse
+    :: ListServicesResponse
+listServicesResponse =
+  ListServicesResponse' {_lsrNextPageToken = Nothing, _lsrServices = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+lsrNextPageToken :: Lens' ListServicesResponse (Maybe Text)
+lsrNextPageToken
+  = lens _lsrNextPageToken
+      (\ s a -> s{_lsrNextPageToken = a})
+
+-- | The services belonging to the requested application.
+lsrServices :: Lens' ListServicesResponse [Service]
+lsrServices
+  = lens _lsrServices (\ s a -> s{_lsrServices = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListServicesResponse where
+        parseJSON
+          = withObject "ListServicesResponse"
+              (\ o ->
+                 ListServicesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "services" .!= mempty))
+
+instance ToJSON ListServicesResponse where
+        toJSON ListServicesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lsrNextPageToken,
+                  ("services" .=) <$> _lsrServices])
+
+-- | URL pattern and description of how the URL should be handled. App Engine
+-- can handle URLs by executing application code or by serving static files
+-- uploaded with the version, such as images, CSS, or JavaScript.
+--
+-- /See:/ 'urlMap' smart constructor.
+data URLMap =
+  URLMap'
+    { _umScript                   :: !(Maybe ScriptHandler)
+    , _umSecurityLevel            :: !(Maybe URLMapSecurityLevel)
+    , _umAPIEndpoint              :: !(Maybe APIEndpointHandler)
+    , _umURLRegex                 :: !(Maybe Text)
+    , _umRedirectHTTPResponseCode :: !(Maybe URLMapRedirectHTTPResponseCode)
+    , _umAuthFailAction           :: !(Maybe URLMapAuthFailAction)
+    , _umStaticFiles              :: !(Maybe StaticFilesHandler)
+    , _umLogin                    :: !(Maybe URLMapLogin)
+    }
+  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:
+--
+-- * 'umScript'
+--
+-- * 'umSecurityLevel'
+--
+-- * 'umAPIEndpoint'
+--
+-- * 'umURLRegex'
+--
+-- * 'umRedirectHTTPResponseCode'
+--
+-- * 'umAuthFailAction'
+--
+-- * 'umStaticFiles'
+--
+-- * 'umLogin'
+urlMap
+    :: URLMap
+urlMap =
+  URLMap'
+    { _umScript = Nothing
+    , _umSecurityLevel = Nothing
+    , _umAPIEndpoint = Nothing
+    , _umURLRegex = Nothing
+    , _umRedirectHTTPResponseCode = Nothing
+    , _umAuthFailAction = Nothing
+    , _umStaticFiles = Nothing
+    , _umLogin = Nothing
+    }
+
+
+-- | Executes a script to handle the requests that match this URL pattern.
+-- Only the auto value is supported for Node.js in the App Engine standard
+-- environment, for example \"script\": \"auto\".
+umScript :: Lens' URLMap (Maybe ScriptHandler)
+umScript = lens _umScript (\ s a -> s{_umScript = a})
+
+-- | Security (HTTPS) enforcement for this URL.
+umSecurityLevel :: Lens' URLMap (Maybe URLMapSecurityLevel)
+umSecurityLevel
+  = lens _umSecurityLevel
+      (\ s a -> s{_umSecurityLevel = a})
+
+-- | Uses API Endpoints to handle requests.
+umAPIEndpoint :: Lens' URLMap (Maybe APIEndpointHandler)
+umAPIEndpoint
+  = lens _umAPIEndpoint
+      (\ s a -> s{_umAPIEndpoint = a})
+
+-- | URL prefix. Uses regular expression syntax, which means regexp special
+-- characters must be escaped, but should not contain groupings. All URLs
+-- that begin with this prefix are handled by this handler, using the
+-- portion of the URL after the prefix as part of the file path.
+umURLRegex :: Lens' URLMap (Maybe Text)
+umURLRegex
+  = lens _umURLRegex (\ s a -> s{_umURLRegex = a})
+
+-- | 30x code to use when performing redirects for the secure field. Defaults
+-- to 302.
+umRedirectHTTPResponseCode :: Lens' URLMap (Maybe URLMapRedirectHTTPResponseCode)
+umRedirectHTTPResponseCode
+  = lens _umRedirectHTTPResponseCode
+      (\ s a -> s{_umRedirectHTTPResponseCode = a})
+
+-- | Action to take when users access resources that require authentication.
+-- Defaults to redirect.
+umAuthFailAction :: Lens' URLMap (Maybe URLMapAuthFailAction)
+umAuthFailAction
+  = lens _umAuthFailAction
+      (\ s a -> s{_umAuthFailAction = a})
+
+-- | Returns the contents of a file, such as an image, as the response.
+umStaticFiles :: Lens' URLMap (Maybe StaticFilesHandler)
+umStaticFiles
+  = lens _umStaticFiles
+      (\ s a -> s{_umStaticFiles = a})
+
+-- | Level of login required to access this resource. Not supported for
+-- Node.js in the App Engine standard environment.
+umLogin :: Lens' URLMap (Maybe URLMapLogin)
+umLogin = lens _umLogin (\ s a -> s{_umLogin = a})
+
+instance FromJSON URLMap where
+        parseJSON
+          = withObject "URLMap"
+              (\ o ->
+                 URLMap' <$>
+                   (o .:? "script") <*> (o .:? "securityLevel") <*>
+                     (o .:? "apiEndpoint")
+                     <*> (o .:? "urlRegex")
+                     <*> (o .:? "redirectHttpResponseCode")
+                     <*> (o .:? "authFailAction")
+                     <*> (o .:? "staticFiles")
+                     <*> (o .:? "login"))
+
+instance ToJSON URLMap where
+        toJSON URLMap'{..}
+          = object
+              (catMaybes
+                 [("script" .=) <$> _umScript,
+                  ("securityLevel" .=) <$> _umSecurityLevel,
+                  ("apiEndpoint" .=) <$> _umAPIEndpoint,
+                  ("urlRegex" .=) <$> _umURLRegex,
+                  ("redirectHttpResponseCode" .=) <$>
+                    _umRedirectHTTPResponseCode,
+                  ("authFailAction" .=) <$> _umAuthFailAction,
+                  ("staticFiles" .=) <$> _umStaticFiles,
+                  ("login" .=) <$> _umLogin])
+
+-- | Third-party Python runtime library that is required by the application.
+--
+-- /See:/ 'library' smart constructor.
+data Library =
+  Library'
+    { _lName    :: !(Maybe Text)
+    , _lVersion :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Library' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lName'
+--
+-- * 'lVersion'
+library
+    :: Library
+library = Library' {_lName = Nothing, _lVersion = Nothing}
+
+
+-- | Name of the library. Example: \"django\".
+lName :: Lens' Library (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | Version of the library to select, or \"latest\".
+lVersion :: Lens' Library (Maybe Text)
+lVersion = lens _lVersion (\ s a -> s{_lVersion = a})
+
+instance FromJSON Library where
+        parseJSON
+          = withObject "Library"
+              (\ o ->
+                 Library' <$> (o .:? "name") <*> (o .:? "version"))
+
+instance ToJSON Library where
+        toJSON Library'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _lName,
+                  ("version" .=) <$> _lVersion])
+
+-- | A DNS resource record.
+--
+-- /See:/ 'resourceRecord' smart constructor.
+data ResourceRecord =
+  ResourceRecord'
+    { _rrRrData :: !(Maybe Text)
+    , _rrName   :: !(Maybe Text)
+    , _rrType   :: !(Maybe ResourceRecordType)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResourceRecord' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrRrData'
+--
+-- * 'rrName'
+--
+-- * 'rrType'
+resourceRecord
+    :: ResourceRecord
+resourceRecord =
+  ResourceRecord' {_rrRrData = Nothing, _rrName = Nothing, _rrType = Nothing}
+
+
+-- | Data for this record. Values vary by record type, as defined in RFC 1035
+-- (section 5) and RFC 1034 (section 3.6.1).
+rrRrData :: Lens' ResourceRecord (Maybe Text)
+rrRrData = lens _rrRrData (\ s a -> s{_rrRrData = a})
+
+-- | Relative name of the object affected by this record. Only applicable for
+-- CNAME records. Example: \'www\'.
+rrName :: Lens' ResourceRecord (Maybe Text)
+rrName = lens _rrName (\ s a -> s{_rrName = a})
+
+-- | Resource record type. Example: AAAA.
+rrType :: Lens' ResourceRecord (Maybe ResourceRecordType)
+rrType = lens _rrType (\ s a -> s{_rrType = a})
+
+instance FromJSON ResourceRecord where
+        parseJSON
+          = withObject "ResourceRecord"
+              (\ o ->
+                 ResourceRecord' <$>
+                   (o .:? "rrdata") <*> (o .:? "name") <*>
+                     (o .:? "type"))
+
+instance ToJSON ResourceRecord where
+        toJSON ResourceRecord'{..}
+          = object
+              (catMaybes
+                 [("rrdata" .=) <$> _rrRrData,
+                  ("name" .=) <$> _rrName, ("type" .=) <$> _rrType])
+
+-- | The response message for Locations.ListLocations.
+--
+-- /See:/ 'listLocationsResponse' smart constructor.
+data ListLocationsResponse =
+  ListLocationsResponse'
+    { _llrNextPageToken :: !(Maybe Text)
+    , _llrLocations     :: !(Maybe [Location])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrLocations'
+listLocationsResponse
+    :: ListLocationsResponse
+listLocationsResponse =
+  ListLocationsResponse' {_llrNextPageToken = Nothing, _llrLocations = Nothing}
+
+
+-- | The standard List next-page token.
+llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+
+-- | A list of locations that matches the specified filter in the request.
+llrLocations :: Lens' ListLocationsResponse [Location]
+llrLocations
+  = lens _llrLocations (\ s a -> s{_llrLocations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListLocationsResponse where
+        parseJSON
+          = withObject "ListLocationsResponse"
+              (\ o ->
+                 ListLocationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "locations" .!= mempty))
+
+instance ToJSON ListLocationsResponse where
+        toJSON ListLocationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("locations" .=) <$> _llrLocations])
+
+-- | Target scaling by disk usage. Only applicable in the App Engine flexible
+-- environment.
+--
+-- /See:/ 'diskUtilization' smart constructor.
+data DiskUtilization =
+  DiskUtilization'
+    { _duTargetReadBytesPerSecond  :: !(Maybe (Textual Int32))
+    , _duTargetReadOpsPerSecond    :: !(Maybe (Textual Int32))
+    , _duTargetWriteOpsPerSecond   :: !(Maybe (Textual Int32))
+    , _duTargetWriteBytesPerSecond :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DiskUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'duTargetReadBytesPerSecond'
+--
+-- * 'duTargetReadOpsPerSecond'
+--
+-- * 'duTargetWriteOpsPerSecond'
+--
+-- * 'duTargetWriteBytesPerSecond'
+diskUtilization
+    :: DiskUtilization
+diskUtilization =
+  DiskUtilization'
+    { _duTargetReadBytesPerSecond = Nothing
+    , _duTargetReadOpsPerSecond = Nothing
+    , _duTargetWriteOpsPerSecond = Nothing
+    , _duTargetWriteBytesPerSecond = Nothing
+    }
+
+
+-- | Target bytes read per second.
+duTargetReadBytesPerSecond :: Lens' DiskUtilization (Maybe Int32)
+duTargetReadBytesPerSecond
+  = lens _duTargetReadBytesPerSecond
+      (\ s a -> s{_duTargetReadBytesPerSecond = a})
+      . mapping _Coerce
+
+-- | Target ops read per seconds.
+duTargetReadOpsPerSecond :: Lens' DiskUtilization (Maybe Int32)
+duTargetReadOpsPerSecond
+  = lens _duTargetReadOpsPerSecond
+      (\ s a -> s{_duTargetReadOpsPerSecond = a})
+      . mapping _Coerce
+
+-- | Target ops written per second.
+duTargetWriteOpsPerSecond :: Lens' DiskUtilization (Maybe Int32)
+duTargetWriteOpsPerSecond
+  = lens _duTargetWriteOpsPerSecond
+      (\ s a -> s{_duTargetWriteOpsPerSecond = a})
+      . mapping _Coerce
+
+-- | Target bytes written per second.
+duTargetWriteBytesPerSecond :: Lens' DiskUtilization (Maybe Int32)
+duTargetWriteBytesPerSecond
+  = lens _duTargetWriteBytesPerSecond
+      (\ s a -> s{_duTargetWriteBytesPerSecond = a})
+      . mapping _Coerce
+
+instance FromJSON DiskUtilization where
+        parseJSON
+          = withObject "DiskUtilization"
+              (\ o ->
+                 DiskUtilization' <$>
+                   (o .:? "targetReadBytesPerSecond") <*>
+                     (o .:? "targetReadOpsPerSecond")
+                     <*> (o .:? "targetWriteOpsPerSecond")
+                     <*> (o .:? "targetWriteBytesPerSecond"))
+
+instance ToJSON DiskUtilization where
+        toJSON DiskUtilization'{..}
+          = object
+              (catMaybes
+                 [("targetReadBytesPerSecond" .=) <$>
+                    _duTargetReadBytesPerSecond,
+                  ("targetReadOpsPerSecond" .=) <$>
+                    _duTargetReadOpsPerSecond,
+                  ("targetWriteOpsPerSecond" .=) <$>
+                    _duTargetWriteOpsPerSecond,
+                  ("targetWriteBytesPerSecond" .=) <$>
+                    _duTargetWriteBytesPerSecond])
+
+-- | The response message for Operations.ListOperations.
+--
+-- /See:/ 'listOperationsResponse' smart constructor.
+data ListOperationsResponse =
+  ListOperationsResponse'
+    { _lorNextPageToken :: !(Maybe Text)
+    , _lorOperations    :: !(Maybe [Operation])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorNextPageToken'
+--
+-- * 'lorOperations'
+listOperationsResponse
+    :: ListOperationsResponse
+listOperationsResponse =
+  ListOperationsResponse'
+    {_lorNextPageToken = Nothing, _lorOperations = Nothing}
+
+
+-- | The standard List next-page token.
+lorNextPageToken :: Lens' ListOperationsResponse (Maybe Text)
+lorNextPageToken
+  = lens _lorNextPageToken
+      (\ s a -> s{_lorNextPageToken = a})
+
+-- | A list of operations that matches the specified filter in the request.
+lorOperations :: Lens' ListOperationsResponse [Operation]
+lorOperations
+  = lens _lorOperations
+      (\ s a -> s{_lorOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListOperationsResponse where
+        parseJSON
+          = withObject "ListOperationsResponse"
+              (\ o ->
+                 ListOperationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "operations" .!= mempty))
+
+instance ToJSON ListOperationsResponse where
+        toJSON ListOperationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lorNextPageToken,
+                  ("operations" .=) <$> _lorOperations])
+
+-- | Health checking configuration for VM instances. Unhealthy instances are
+-- killed and replaced with new instances. Only applicable for instances in
+-- App Engine flexible environment.
+--
+-- /See:/ 'healthCheck' smart constructor.
+data HealthCheck =
+  HealthCheck'
+    { _hcHealthyThreshold   :: !(Maybe (Textual Word32))
+    , _hcDisableHealthCheck :: !(Maybe Bool)
+    , _hcCheckInterval      :: !(Maybe GDuration)
+    , _hcRestartThreshold   :: !(Maybe (Textual Word32))
+    , _hcHost               :: !(Maybe Text)
+    , _hcTimeout            :: !(Maybe GDuration)
+    , _hcUnhealthyThreshold :: !(Maybe (Textual Word32))
+    }
+  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'
+--
+-- * 'hcDisableHealthCheck'
+--
+-- * 'hcCheckInterval'
+--
+-- * 'hcRestartThreshold'
+--
+-- * 'hcHost'
+--
+-- * 'hcTimeout'
+--
+-- * 'hcUnhealthyThreshold'
+healthCheck
+    :: HealthCheck
+healthCheck =
+  HealthCheck'
+    { _hcHealthyThreshold = Nothing
+    , _hcDisableHealthCheck = Nothing
+    , _hcCheckInterval = Nothing
+    , _hcRestartThreshold = Nothing
+    , _hcHost = Nothing
+    , _hcTimeout = Nothing
+    , _hcUnhealthyThreshold = Nothing
+    }
+
+
+-- | Number of consecutive successful health checks required before receiving
+-- traffic.
+hcHealthyThreshold :: Lens' HealthCheck (Maybe Word32)
+hcHealthyThreshold
+  = lens _hcHealthyThreshold
+      (\ s a -> s{_hcHealthyThreshold = a})
+      . mapping _Coerce
+
+-- | Whether to explicitly disable health checks for this instance.
+hcDisableHealthCheck :: Lens' HealthCheck (Maybe Bool)
+hcDisableHealthCheck
+  = lens _hcDisableHealthCheck
+      (\ s a -> s{_hcDisableHealthCheck = a})
+
+-- | Interval between health checks.
+hcCheckInterval :: Lens' HealthCheck (Maybe Scientific)
+hcCheckInterval
+  = lens _hcCheckInterval
+      (\ s a -> s{_hcCheckInterval = a})
+      . mapping _GDuration
+
+-- | Number of consecutive failed health checks required before an instance
+-- is restarted.
+hcRestartThreshold :: Lens' HealthCheck (Maybe Word32)
+hcRestartThreshold
+  = lens _hcRestartThreshold
+      (\ s a -> s{_hcRestartThreshold = a})
+      . mapping _Coerce
+
+-- | Host header to send when performing an HTTP health check. Example:
+-- \"myapp.appspot.com\"
+hcHost :: Lens' HealthCheck (Maybe Text)
+hcHost = lens _hcHost (\ s a -> s{_hcHost = a})
+
+-- | Time before the health check is considered failed.
+hcTimeout :: Lens' HealthCheck (Maybe Scientific)
+hcTimeout
+  = lens _hcTimeout (\ s a -> s{_hcTimeout = a}) .
+      mapping _GDuration
+
+-- | Number of consecutive failed health checks required before removing
+-- traffic.
+hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Word32)
+hcUnhealthyThreshold
+  = lens _hcUnhealthyThreshold
+      (\ s a -> s{_hcUnhealthyThreshold = a})
+      . mapping _Coerce
+
+instance FromJSON HealthCheck where
+        parseJSON
+          = withObject "HealthCheck"
+              (\ o ->
+                 HealthCheck' <$>
+                   (o .:? "healthyThreshold") <*>
+                     (o .:? "disableHealthCheck")
+                     <*> (o .:? "checkInterval")
+                     <*> (o .:? "restartThreshold")
+                     <*> (o .:? "host")
+                     <*> (o .:? "timeout")
+                     <*> (o .:? "unhealthyThreshold"))
+
+instance ToJSON HealthCheck where
+        toJSON HealthCheck'{..}
+          = object
+              (catMaybes
+                 [("healthyThreshold" .=) <$> _hcHealthyThreshold,
+                  ("disableHealthCheck" .=) <$> _hcDisableHealthCheck,
+                  ("checkInterval" .=) <$> _hcCheckInterval,
+                  ("restartThreshold" .=) <$> _hcRestartThreshold,
+                  ("host" .=) <$> _hcHost,
+                  ("timeout" .=) <$> _hcTimeout,
+                  ("unhealthyThreshold" .=) <$> _hcUnhealthyThreshold])
+
+-- | An SSL certificate that a user has been authorized to administer. A user
+-- is authorized to administer any certificate that applies to one of their
+-- authorized domains.
+--
+-- /See:/ 'authorizedCertificate' smart constructor.
+data AuthorizedCertificate =
+  AuthorizedCertificate'
+    { _acManagedCertificate    :: !(Maybe ManagedCertificate)
+    , _acCertificateRawData    :: !(Maybe CertificateRawData)
+    , _acDomainNames           :: !(Maybe [Text])
+    , _acDomainMAppingsCount   :: !(Maybe (Textual Int32))
+    , _acName                  :: !(Maybe Text)
+    , _acDisplayName           :: !(Maybe Text)
+    , _acId                    :: !(Maybe Text)
+    , _acExpireTime            :: !(Maybe DateTime')
+    , _acVisibleDomainMAppings :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AuthorizedCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acManagedCertificate'
+--
+-- * 'acCertificateRawData'
+--
+-- * 'acDomainNames'
+--
+-- * 'acDomainMAppingsCount'
+--
+-- * 'acName'
+--
+-- * 'acDisplayName'
+--
+-- * 'acId'
+--
+-- * 'acExpireTime'
+--
+-- * 'acVisibleDomainMAppings'
+authorizedCertificate
+    :: AuthorizedCertificate
+authorizedCertificate =
+  AuthorizedCertificate'
+    { _acManagedCertificate = Nothing
+    , _acCertificateRawData = Nothing
+    , _acDomainNames = Nothing
+    , _acDomainMAppingsCount = Nothing
+    , _acName = Nothing
+    , _acDisplayName = Nothing
+    , _acId = Nothing
+    , _acExpireTime = Nothing
+    , _acVisibleDomainMAppings = Nothing
+    }
+
+
+-- | Only applicable if this certificate is managed by App Engine. Managed
+-- certificates are tied to the lifecycle of a DomainMapping and cannot be
+-- updated or deleted via the AuthorizedCertificates API. If this
+-- certificate is manually administered by the user, this field will be
+-- empty.\'OutputOnly
+acManagedCertificate :: Lens' AuthorizedCertificate (Maybe ManagedCertificate)
+acManagedCertificate
+  = lens _acManagedCertificate
+      (\ s a -> s{_acManagedCertificate = a})
+
+-- | The SSL certificate serving the AuthorizedCertificate resource. This
+-- must be obtained independently from a certificate authority.
+acCertificateRawData :: Lens' AuthorizedCertificate (Maybe CertificateRawData)
+acCertificateRawData
+  = lens _acCertificateRawData
+      (\ s a -> s{_acCertificateRawData = a})
+
+-- | Topmost applicable domains of this certificate. This certificate applies
+-- to these domains and their subdomains. Example: example.com.\'OutputOnly
+acDomainNames :: Lens' AuthorizedCertificate [Text]
+acDomainNames
+  = lens _acDomainNames
+      (\ s a -> s{_acDomainNames = a})
+      . _Default
+      . _Coerce
+
+-- | Aggregate count of the domain mappings with this certificate mapped.
+-- This count includes domain mappings on applications for which the user
+-- does not have VIEWER permissions.Only returned by GET or LIST requests
+-- when specifically requested by the view=FULL_CERTIFICATE
+-- option.\'OutputOnly
+acDomainMAppingsCount :: Lens' AuthorizedCertificate (Maybe Int32)
+acDomainMAppingsCount
+  = lens _acDomainMAppingsCount
+      (\ s a -> s{_acDomainMAppingsCount = a})
+      . mapping _Coerce
+
+-- | Full path to the AuthorizedCertificate resource in the API. Example:
+-- apps\/myapp\/authorizedCertificates\/12345.\'OutputOnly
+acName :: Lens' AuthorizedCertificate (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a})
+
+-- | The user-specified display name of the certificate. This is not
+-- guaranteed to be unique. Example: My Certificate.
+acDisplayName :: Lens' AuthorizedCertificate (Maybe Text)
+acDisplayName
+  = lens _acDisplayName
+      (\ s a -> s{_acDisplayName = a})
+
+-- | Relative name of the certificate. This is a unique value autogenerated
+-- on AuthorizedCertificate resource creation. Example: 12345.\'OutputOnly
+acId :: Lens' AuthorizedCertificate (Maybe Text)
+acId = lens _acId (\ s a -> s{_acId = a})
+
+-- | The time when this certificate expires. To update the renewal time on
+-- this certificate, upload an SSL certificate with a different expiration
+-- time using
+-- AuthorizedCertificates.UpdateAuthorizedCertificate.\'OutputOnly
+acExpireTime :: Lens' AuthorizedCertificate (Maybe UTCTime)
+acExpireTime
+  = lens _acExpireTime (\ s a -> s{_acExpireTime = a})
+      . mapping _DateTime
+
+-- | The full paths to user visible Domain Mapping resources that have this
+-- certificate mapped. Example:
+-- apps\/myapp\/domainMappings\/example.com.This may not represent the full
+-- list of mapped domain mappings if the user does not have VIEWER
+-- permissions on all of the applications that have this certificate
+-- mapped. See domain_mappings_count for a complete count.Only returned by
+-- GET or LIST requests when specifically requested by the
+-- view=FULL_CERTIFICATE option.\'OutputOnly
+acVisibleDomainMAppings :: Lens' AuthorizedCertificate [Text]
+acVisibleDomainMAppings
+  = lens _acVisibleDomainMAppings
+      (\ s a -> s{_acVisibleDomainMAppings = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuthorizedCertificate where
+        parseJSON
+          = withObject "AuthorizedCertificate"
+              (\ o ->
+                 AuthorizedCertificate' <$>
+                   (o .:? "managedCertificate") <*>
+                     (o .:? "certificateRawData")
+                     <*> (o .:? "domainNames" .!= mempty)
+                     <*> (o .:? "domainMappingsCount")
+                     <*> (o .:? "name")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "id")
+                     <*> (o .:? "expireTime")
+                     <*> (o .:? "visibleDomainMappings" .!= mempty))
+
+instance ToJSON AuthorizedCertificate where
+        toJSON AuthorizedCertificate'{..}
+          = object
+              (catMaybes
+                 [("managedCertificate" .=) <$> _acManagedCertificate,
+                  ("certificateRawData" .=) <$> _acCertificateRawData,
+                  ("domainNames" .=) <$> _acDomainNames,
+                  ("domainMappingsCount" .=) <$>
+                    _acDomainMAppingsCount,
+                  ("name" .=) <$> _acName,
+                  ("displayName" .=) <$> _acDisplayName,
+                  ("id" .=) <$> _acId,
+                  ("expireTime" .=) <$> _acExpireTime,
+                  ("visibleDomainMappings" .=) <$>
+                    _acVisibleDomainMAppings])
+
+-- | VPC access connector specification.
+--
+-- /See:/ 'vpcAccessConnector' smart constructor.
+newtype VPCAccessConnector =
+  VPCAccessConnector'
+    { _vacName :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VPCAccessConnector' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vacName'
+vpcAccessConnector
+    :: VPCAccessConnector
+vpcAccessConnector = VPCAccessConnector' {_vacName = Nothing}
+
+
+-- | Full Serverless VPC Access Connector name e.g.
+-- \/projects\/my-project\/locations\/us-central1\/connectors\/c1.
+vacName :: Lens' VPCAccessConnector (Maybe Text)
+vacName = lens _vacName (\ s a -> s{_vacName = a})
+
+instance FromJSON VPCAccessConnector where
+        parseJSON
+          = withObject "VPCAccessConnector"
+              (\ o -> VPCAccessConnector' <$> (o .:? "name"))
+
+instance ToJSON VPCAccessConnector where
+        toJSON VPCAccessConnector'{..}
+          = object (catMaybes [("name" .=) <$> _vacName])
+
+-- | Google Cloud Endpoints
+-- (https:\/\/cloud.google.com\/appengine\/docs\/python\/endpoints\/)
+-- configuration for API handlers.
+--
+-- /See:/ 'apiConfigHandler' smart constructor.
+data APIConfigHandler =
+  APIConfigHandler'
+    { _achScript         :: !(Maybe Text)
+    , _achSecurityLevel  :: !(Maybe APIConfigHandlerSecurityLevel)
+    , _achURL            :: !(Maybe Text)
+    , _achAuthFailAction :: !(Maybe APIConfigHandlerAuthFailAction)
+    , _achLogin          :: !(Maybe APIConfigHandlerLogin)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'APIConfigHandler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'achScript'
+--
+-- * 'achSecurityLevel'
+--
+-- * 'achURL'
+--
+-- * 'achAuthFailAction'
+--
+-- * 'achLogin'
+apiConfigHandler
+    :: APIConfigHandler
+apiConfigHandler =
+  APIConfigHandler'
+    { _achScript = Nothing
+    , _achSecurityLevel = Nothing
+    , _achURL = Nothing
+    , _achAuthFailAction = Nothing
+    , _achLogin = Nothing
+    }
+
+
+-- | Path to the script from the application root directory.
+achScript :: Lens' APIConfigHandler (Maybe Text)
+achScript
+  = lens _achScript (\ s a -> s{_achScript = a})
+
+-- | Security (HTTPS) enforcement for this URL.
+achSecurityLevel :: Lens' APIConfigHandler (Maybe APIConfigHandlerSecurityLevel)
+achSecurityLevel
+  = lens _achSecurityLevel
+      (\ s a -> s{_achSecurityLevel = a})
+
+-- | URL to serve the endpoint at.
+achURL :: Lens' APIConfigHandler (Maybe Text)
+achURL = lens _achURL (\ s a -> s{_achURL = a})
+
+-- | Action to take when users access resources that require authentication.
+-- Defaults to redirect.
+achAuthFailAction :: Lens' APIConfigHandler (Maybe APIConfigHandlerAuthFailAction)
+achAuthFailAction
+  = lens _achAuthFailAction
+      (\ s a -> s{_achAuthFailAction = a})
+
+-- | Level of login required to access this resource. Defaults to optional.
+achLogin :: Lens' APIConfigHandler (Maybe APIConfigHandlerLogin)
+achLogin = lens _achLogin (\ s a -> s{_achLogin = a})
+
+instance FromJSON APIConfigHandler where
+        parseJSON
+          = withObject "APIConfigHandler"
+              (\ o ->
+                 APIConfigHandler' <$>
+                   (o .:? "script") <*> (o .:? "securityLevel") <*>
+                     (o .:? "url")
+                     <*> (o .:? "authFailAction")
+                     <*> (o .:? "login"))
+
+instance ToJSON APIConfigHandler where
+        toJSON APIConfigHandler'{..}
+          = object
+              (catMaybes
+                 [("script" .=) <$> _achScript,
+                  ("securityLevel" .=) <$> _achSecurityLevel,
+                  ("url" .=) <$> _achURL,
+                  ("authFailAction" .=) <$> _achAuthFailAction,
+                  ("login" .=) <$> _achLogin])
+
+-- | Environment variables available to the application.Only returned in GET
+-- requests if view=FULL is set.
+--
+-- /See:/ 'versionEnvVariables' smart constructor.
+newtype VersionEnvVariables =
+  VersionEnvVariables'
+    { _vevAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VersionEnvVariables' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vevAddtional'
+versionEnvVariables
+    :: HashMap Text Text -- ^ 'vevAddtional'
+    -> VersionEnvVariables
+versionEnvVariables pVevAddtional_ =
+  VersionEnvVariables' {_vevAddtional = _Coerce # pVevAddtional_}
+
+
+vevAddtional :: Lens' VersionEnvVariables (HashMap Text Text)
+vevAddtional
+  = lens _vevAddtional (\ s a -> s{_vevAddtional = a})
+      . _Coerce
+
+instance FromJSON VersionEnvVariables where
+        parseJSON
+          = withObject "VersionEnvVariables"
+              (\ o -> VersionEnvVariables' <$> (parseJSONObject o))
+
+instance ToJSON VersionEnvVariables where
+        toJSON = toJSON . _vevAddtional
+
+-- | An Application resource contains the top-level configuration of an App
+-- Engine application.
+--
+-- /See:/ 'application' smart constructor.
+data Application =
+  Application'
+    { _aDefaultHostname         :: !(Maybe Text)
+    , _aDefaultCookieExpiration :: !(Maybe GDuration)
+    , _aIap                     :: !(Maybe IdentityAwareProxy)
+    , _aAuthDomain              :: !(Maybe Text)
+    , _aCodeBucket              :: !(Maybe Text)
+    , _aGcrDomain               :: !(Maybe Text)
+    , _aFeatureSettings         :: !(Maybe FeatureSettings)
+    , _aName                    :: !(Maybe Text)
+    , _aDispatchRules           :: !(Maybe [URLDispatchRule])
+    , _aDefaultBucket           :: !(Maybe Text)
+    , _aId                      :: !(Maybe Text)
+    , _aLocationId              :: !(Maybe Text)
+    , _aServingStatus           :: !(Maybe ApplicationServingStatus)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Application' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aDefaultHostname'
+--
+-- * 'aDefaultCookieExpiration'
+--
+-- * 'aIap'
+--
+-- * 'aAuthDomain'
+--
+-- * 'aCodeBucket'
+--
+-- * 'aGcrDomain'
+--
+-- * 'aFeatureSettings'
+--
+-- * 'aName'
+--
+-- * 'aDispatchRules'
+--
+-- * 'aDefaultBucket'
+--
+-- * 'aId'
+--
+-- * 'aLocationId'
+--
+-- * 'aServingStatus'
+application
+    :: Application
+application =
+  Application'
+    { _aDefaultHostname = Nothing
+    , _aDefaultCookieExpiration = Nothing
+    , _aIap = Nothing
+    , _aAuthDomain = Nothing
+    , _aCodeBucket = Nothing
+    , _aGcrDomain = Nothing
+    , _aFeatureSettings = Nothing
+    , _aName = Nothing
+    , _aDispatchRules = Nothing
+    , _aDefaultBucket = Nothing
+    , _aId = Nothing
+    , _aLocationId = Nothing
+    , _aServingStatus = Nothing
+    }
+
+
+-- | Hostname used to reach this application, as resolved by App
+-- Engine.\'OutputOnly
+aDefaultHostname :: Lens' Application (Maybe Text)
+aDefaultHostname
+  = lens _aDefaultHostname
+      (\ s a -> s{_aDefaultHostname = a})
+
+-- | Cookie expiration policy for this application.
+aDefaultCookieExpiration :: Lens' Application (Maybe Scientific)
+aDefaultCookieExpiration
+  = lens _aDefaultCookieExpiration
+      (\ s a -> s{_aDefaultCookieExpiration = a})
+      . mapping _GDuration
+
+aIap :: Lens' Application (Maybe IdentityAwareProxy)
+aIap = lens _aIap (\ s a -> s{_aIap = a})
+
+-- | Google Apps authentication domain that controls which users can access
+-- this application.Defaults to open access for any Google Account.
+aAuthDomain :: Lens' Application (Maybe Text)
+aAuthDomain
+  = lens _aAuthDomain (\ s a -> s{_aAuthDomain = a})
+
+-- | Google Cloud Storage bucket that can be used for storing files
+-- associated with this application. This bucket is associated with the
+-- application and can be used by the gcloud deployment
+-- commands.\'OutputOnly
+aCodeBucket :: Lens' Application (Maybe Text)
+aCodeBucket
+  = lens _aCodeBucket (\ s a -> s{_aCodeBucket = a})
+
+-- | The Google Container Registry domain used for storing managed build
+-- docker images for this application.
+aGcrDomain :: Lens' Application (Maybe Text)
+aGcrDomain
+  = lens _aGcrDomain (\ s a -> s{_aGcrDomain = a})
+
+-- | The feature specific settings to be used in the application.
+aFeatureSettings :: Lens' Application (Maybe FeatureSettings)
+aFeatureSettings
+  = lens _aFeatureSettings
+      (\ s a -> s{_aFeatureSettings = a})
+
+-- | Full path to the Application resource in the API. Example:
+-- apps\/myapp.\'OutputOnly
+aName :: Lens' Application (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | HTTP path dispatch rules for requests to the application that do not
+-- explicitly target a service or version. Rules are order-dependent. Up to
+-- 20 dispatch rules can be supported.
+aDispatchRules :: Lens' Application [URLDispatchRule]
+aDispatchRules
+  = lens _aDispatchRules
+      (\ s a -> s{_aDispatchRules = a})
+      . _Default
+      . _Coerce
+
+-- | Google Cloud Storage bucket that can be used by this application to
+-- store content.\'OutputOnly
+aDefaultBucket :: Lens' Application (Maybe Text)
+aDefaultBucket
+  = lens _aDefaultBucket
+      (\ s a -> s{_aDefaultBucket = a})
+
+-- | Identifier of the Application resource. This identifier is equivalent to
+-- the project ID of the Google Cloud Platform project where you want to
+-- deploy your application. Example: myapp.
+aId :: Lens' Application (Maybe Text)
+aId = lens _aId (\ s a -> s{_aId = a})
+
+-- | Location from which this application runs. Application instances run out
+-- of the data centers in the specified location, which is also where all
+-- of the application\'s end user content is stored.Defaults to
+-- us-central.View the list of supported locations
+-- (https:\/\/cloud.google.com\/appengine\/docs\/locations).
+aLocationId :: Lens' Application (Maybe Text)
+aLocationId
+  = lens _aLocationId (\ s a -> s{_aLocationId = a})
+
+-- | Serving status of this application.
+aServingStatus :: Lens' Application (Maybe ApplicationServingStatus)
+aServingStatus
+  = lens _aServingStatus
+      (\ s a -> s{_aServingStatus = a})
+
+instance FromJSON Application where
+        parseJSON
+          = withObject "Application"
+              (\ o ->
+                 Application' <$>
+                   (o .:? "defaultHostname") <*>
+                     (o .:? "defaultCookieExpiration")
+                     <*> (o .:? "iap")
+                     <*> (o .:? "authDomain")
+                     <*> (o .:? "codeBucket")
+                     <*> (o .:? "gcrDomain")
+                     <*> (o .:? "featureSettings")
+                     <*> (o .:? "name")
+                     <*> (o .:? "dispatchRules" .!= mempty)
+                     <*> (o .:? "defaultBucket")
+                     <*> (o .:? "id")
+                     <*> (o .:? "locationId")
+                     <*> (o .:? "servingStatus"))
+
+instance ToJSON Application where
+        toJSON Application'{..}
+          = object
+              (catMaybes
+                 [("defaultHostname" .=) <$> _aDefaultHostname,
+                  ("defaultCookieExpiration" .=) <$>
+                    _aDefaultCookieExpiration,
+                  ("iap" .=) <$> _aIap,
+                  ("authDomain" .=) <$> _aAuthDomain,
+                  ("codeBucket" .=) <$> _aCodeBucket,
+                  ("gcrDomain" .=) <$> _aGcrDomain,
+                  ("featureSettings" .=) <$> _aFeatureSettings,
+                  ("name" .=) <$> _aName,
+                  ("dispatchRules" .=) <$> _aDispatchRules,
+                  ("defaultBucket" .=) <$> _aDefaultBucket,
+                  ("id" .=) <$> _aId,
+                  ("locationId" .=) <$> _aLocationId,
+                  ("servingStatus" .=) <$> _aServingStatus])
+
+-- | Metadata settings that are supplied to this version to enable beta
+-- runtime features.
+--
+-- /See:/ 'versionBetaSettings' smart constructor.
+newtype VersionBetaSettings =
+  VersionBetaSettings'
+    { _vbsAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VersionBetaSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vbsAddtional'
+versionBetaSettings
+    :: HashMap Text Text -- ^ 'vbsAddtional'
+    -> VersionBetaSettings
+versionBetaSettings pVbsAddtional_ =
+  VersionBetaSettings' {_vbsAddtional = _Coerce # pVbsAddtional_}
+
+
+vbsAddtional :: Lens' VersionBetaSettings (HashMap Text Text)
+vbsAddtional
+  = lens _vbsAddtional (\ s a -> s{_vbsAddtional = a})
+      . _Coerce
+
+instance FromJSON VersionBetaSettings where
+        parseJSON
+          = withObject "VersionBetaSettings"
+              (\ o -> VersionBetaSettings' <$> (parseJSONObject o))
+
+instance ToJSON VersionBetaSettings where
+        toJSON = toJSON . _vbsAddtional
+
+-- | A Service resource is a logical component of an application that can
+-- share state and communicate in a secure fashion with other services. For
+-- example, an application that handles customer requests might include
+-- separate services to handle tasks such as backend data analysis or API
+-- requests from mobile devices. Each service has a collection of versions
+-- that define a specific set of code used to implement the functionality
+-- of that service.
+--
+-- /See:/ 'service' smart constructor.
+data Service =
+  Service'
+    { _sSplit :: !(Maybe TrafficSplit)
+    , _sName  :: !(Maybe Text)
+    , _sId    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Service' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sSplit'
+--
+-- * 'sName'
+--
+-- * 'sId'
+service
+    :: Service
+service = Service' {_sSplit = Nothing, _sName = Nothing, _sId = Nothing}
+
+
+-- | Mapping that defines fractional HTTP traffic diversion to different
+-- versions within the service.
+sSplit :: Lens' Service (Maybe TrafficSplit)
+sSplit = lens _sSplit (\ s a -> s{_sSplit = a})
+
+-- | Full path to the Service resource in the API. Example:
+-- apps\/myapp\/services\/default.\'OutputOnly
+sName :: Lens' Service (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | Relative name of the service within the application. Example:
+-- default.\'OutputOnly
+sId :: Lens' Service (Maybe Text)
+sId = lens _sId (\ s a -> s{_sId = a})
+
+instance FromJSON Service where
+        parseJSON
+          = withObject "Service"
+              (\ o ->
+                 Service' <$>
+                   (o .:? "split") <*> (o .:? "name") <*> (o .:? "id"))
+
+instance ToJSON Service where
+        toJSON Service'{..}
+          = object
+              (catMaybes
+                 [("split" .=) <$> _sSplit, ("name" .=) <$> _sName,
+                  ("id" .=) <$> _sId])
+
+-- | Cloud Endpoints (https:\/\/cloud.google.com\/endpoints) configuration.
+-- The Endpoints API Service provides tooling for serving Open API and gRPC
+-- endpoints via an NGINX proxy. Only valid for App Engine Flexible
+-- environment deployments.The fields here refer to the name and
+-- configuration ID of a \"service\" resource in the Service Management API
+-- (https:\/\/cloud.google.com\/service-management\/overview).
+--
+-- /See:/ 'endpointsAPIService' smart constructor.
+data EndpointsAPIService =
+  EndpointsAPIService'
+    { _easDisableTraceSampling :: !(Maybe Bool)
+    , _easName                 :: !(Maybe Text)
+    , _easConfigId             :: !(Maybe Text)
+    , _easRolloutStrategy      :: !(Maybe EndpointsAPIServiceRolloutStrategy)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EndpointsAPIService' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'easDisableTraceSampling'
+--
+-- * 'easName'
+--
+-- * 'easConfigId'
+--
+-- * 'easRolloutStrategy'
+endpointsAPIService
+    :: EndpointsAPIService
+endpointsAPIService =
+  EndpointsAPIService'
+    { _easDisableTraceSampling = Nothing
+    , _easName = Nothing
+    , _easConfigId = Nothing
+    , _easRolloutStrategy = Nothing
+    }
+
+
+-- | Enable or disable trace sampling. By default, this is set to false for
+-- enabled.
+easDisableTraceSampling :: Lens' EndpointsAPIService (Maybe Bool)
+easDisableTraceSampling
+  = lens _easDisableTraceSampling
+      (\ s a -> s{_easDisableTraceSampling = a})
+
+-- | Endpoints service name which is the name of the \"service\" resource in
+-- the Service Management API. For example
+-- \"myapi.endpoints.myproject.cloud.goog\"
+easName :: Lens' EndpointsAPIService (Maybe Text)
+easName = lens _easName (\ s a -> s{_easName = a})
+
+-- | Endpoints service configuration ID as specified by the Service
+-- Management API. For example \"2016-09-19r1\".By default, the rollout
+-- strategy for Endpoints is RolloutStrategy.FIXED. This means that
+-- Endpoints starts up with a particular configuration ID. When a new
+-- configuration is rolled out, Endpoints must be given the new
+-- configuration ID. The config_id field is used to give the configuration
+-- ID and is required in this case.Endpoints also has a rollout strategy
+-- called RolloutStrategy.MANAGED. When using this, Endpoints fetches the
+-- latest configuration and does not need the configuration ID. In this
+-- case, config_id must be omitted.
+easConfigId :: Lens' EndpointsAPIService (Maybe Text)
+easConfigId
+  = lens _easConfigId (\ s a -> s{_easConfigId = a})
+
+-- | Endpoints rollout strategy. If FIXED, config_id must be specified. If
+-- MANAGED, config_id must be omitted.
+easRolloutStrategy :: Lens' EndpointsAPIService (Maybe EndpointsAPIServiceRolloutStrategy)
+easRolloutStrategy
+  = lens _easRolloutStrategy
+      (\ s a -> s{_easRolloutStrategy = a})
+
+instance FromJSON EndpointsAPIService where
+        parseJSON
+          = withObject "EndpointsAPIService"
+              (\ o ->
+                 EndpointsAPIService' <$>
+                   (o .:? "disableTraceSampling") <*> (o .:? "name") <*>
+                     (o .:? "configId")
+                     <*> (o .:? "rolloutStrategy"))
+
+instance ToJSON EndpointsAPIService where
+        toJSON EndpointsAPIService'{..}
+          = object
+              (catMaybes
+                 [("disableTraceSampling" .=) <$>
+                    _easDisableTraceSampling,
+                  ("name" .=) <$> _easName,
+                  ("configId" .=) <$> _easConfigId,
+                  ("rolloutStrategy" .=) <$> _easRolloutStrategy])
+
+-- | A resource that represents Google Cloud Platform location.
+--
+-- /See:/ 'location' smart constructor.
+data Location =
+  Location'
+    { _locName        :: !(Maybe Text)
+    , _locMetadata    :: !(Maybe LocationSchema)
+    , _locDisplayName :: !(Maybe Text)
+    , _locLabels      :: !(Maybe LocationLabels)
+    , _locLocationId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'locName'
+--
+-- * 'locMetadata'
+--
+-- * 'locDisplayName'
+--
+-- * 'locLabels'
+--
+-- * 'locLocationId'
+location
+    :: Location
+location =
+  Location'
+    { _locName = Nothing
+    , _locMetadata = Nothing
+    , _locDisplayName = Nothing
+    , _locLabels = Nothing
+    , _locLocationId = Nothing
+    }
+
+
+-- | Resource name for the location, which may vary between implementations.
+-- For example: \"projects\/example-project\/locations\/us-east1\"
+locName :: Lens' Location (Maybe Text)
+locName = lens _locName (\ s a -> s{_locName = a})
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+locMetadata :: Lens' Location (Maybe LocationSchema)
+locMetadata
+  = lens _locMetadata (\ s a -> s{_locMetadata = a})
+
+-- | The friendly name for this location, typically a nearby city name. For
+-- example, \"Tokyo\".
+locDisplayName :: Lens' Location (Maybe Text)
+locDisplayName
+  = lens _locDisplayName
+      (\ s a -> s{_locDisplayName = a})
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+locLabels :: Lens' Location (Maybe LocationLabels)
+locLabels
+  = lens _locLabels (\ s a -> s{_locLabels = a})
+
+-- | The canonical id for this location. For example: \"us-east1\".
+locLocationId :: Lens' Location (Maybe Text)
+locLocationId
+  = lens _locLocationId
+      (\ s a -> s{_locLocationId = a})
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ o ->
+                 Location' <$>
+                   (o .:? "name") <*> (o .:? "metadata") <*>
+                     (o .:? "displayName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "locationId"))
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _locName,
+                  ("metadata" .=) <$> _locMetadata,
+                  ("displayName" .=) <$> _locDisplayName,
+                  ("labels" .=) <$> _locLabels,
+                  ("locationId" .=) <$> _locLocationId])
+
+-- | This resource represents a long-running operation that is the result of
+-- a network API call.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation =
+  Operation'
+    { _oDone     :: !(Maybe Bool)
+    , _oError    :: !(Maybe Status)
+    , _oResponse :: !(Maybe OperationResponse)
+    , _oName     :: !(Maybe Text)
+    , _oMetadata :: !(Maybe OperationMetadata)
+    }
+  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:
+--
+-- * 'oDone'
+--
+-- * 'oError'
+--
+-- * 'oResponse'
+--
+-- * 'oName'
+--
+-- * 'oMetadata'
+operation
+    :: Operation
+operation =
+  Operation'
+    { _oDone = Nothing
+    , _oError = Nothing
+    , _oResponse = Nothing
+    , _oName = Nothing
+    , _oMetadata = Nothing
+    }
+
+
+-- | If the value is false, it means the operation is still in progress. If
+-- true, the operation is completed, and either error or response is
+-- available.
+oDone :: Lens' Operation (Maybe Bool)
+oDone = lens _oDone (\ s a -> s{_oDone = a})
+
+-- | The error result of the operation in case of failure or cancellation.
+oError :: Lens' Operation (Maybe Status)
+oError = lens _oError (\ s a -> s{_oError = a})
+
+-- | The normal response of the operation in case of success. If the original
+-- method returns no data on success, such as Delete, the response is
+-- google.protobuf.Empty. If the original method is standard
+-- Get\/Create\/Update, the response should be the resource. For other
+-- methods, the response should have the type XxxResponse, where Xxx is the
+-- original method name. For example, if the original method name is
+-- TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
+oResponse :: Lens' Operation (Maybe OperationResponse)
+oResponse
+  = lens _oResponse (\ s a -> s{_oResponse = a})
+
+-- | The server-assigned name, which is only unique within the same service
+-- that originally returns it. If you use the default HTTP mapping, the
+-- name should have the format of operations\/some\/unique\/name.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | Service-specific metadata associated with the operation. It typically
+-- contains progress information and common metadata such as create time.
+-- Some services might not provide such metadata. Any method that returns a
+-- long-running operation should document the metadata type, if any.
+oMetadata :: Lens' Operation (Maybe OperationMetadata)
+oMetadata
+  = lens _oMetadata (\ s a -> s{_oMetadata = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation' <$>
+                   (o .:? "done") <*> (o .:? "error") <*>
+                     (o .:? "response")
+                     <*> (o .:? "name")
+                     <*> (o .:? "metadata"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("done" .=) <$> _oDone, ("error" .=) <$> _oError,
+                  ("response" .=) <$> _oResponse,
+                  ("name" .=) <$> _oName,
+                  ("metadata" .=) <$> _oMetadata])
+
+-- | The zip file information for a zip deployment.
+--
+-- /See:/ 'zipInfo' smart constructor.
+data ZipInfo =
+  ZipInfo'
+    { _ziFilesCount :: !(Maybe (Textual Int32))
+    , _ziSourceURL  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ZipInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ziFilesCount'
+--
+-- * 'ziSourceURL'
+zipInfo
+    :: ZipInfo
+zipInfo = ZipInfo' {_ziFilesCount = Nothing, _ziSourceURL = Nothing}
+
+
+-- | An estimate of the number of files in a zip for a zip deployment. If
+-- set, must be greater than or equal to the actual number of files. Used
+-- for optimizing performance; if not provided, deployment may be slow.
+ziFilesCount :: Lens' ZipInfo (Maybe Int32)
+ziFilesCount
+  = lens _ziFilesCount (\ s a -> s{_ziFilesCount = a})
+      . mapping _Coerce
+
+-- | URL of the zip file to deploy from. Must be a URL to a resource in
+-- Google Cloud Storage in the form
+-- \'http(s):\/\/storage.googleapis.com\/\/
+-- \'.
+ziSourceURL :: Lens' ZipInfo (Maybe Text)
+ziSourceURL
+  = lens _ziSourceURL (\ s a -> s{_ziSourceURL = a})
+
+instance FromJSON ZipInfo where
+        parseJSON
+          = withObject "ZipInfo"
+              (\ o ->
+                 ZipInfo' <$>
+                   (o .:? "filesCount") <*> (o .:? "sourceUrl"))
+
+instance ToJSON ZipInfo where
+        toJSON ZipInfo'{..}
+          = object
+              (catMaybes
+                 [("filesCount" .=) <$> _ziFilesCount,
+                  ("sourceUrl" .=) <$> _ziSourceURL])
+
+-- | A generic empty message that you can re-use to avoid defining duplicated
+-- empty messages in your APIs. A typical example is to use it as the
+-- request or the response type of an API method. For instance: service Foo
+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
+-- JSON representation for Empty is empty JSON object {}.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+  Empty'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | Rules to match an HTTP request and dispatch that request to a service.
+--
+-- /See:/ 'urlDispatchRule' smart constructor.
+data URLDispatchRule =
+  URLDispatchRule'
+    { _udrPath    :: !(Maybe Text)
+    , _udrService :: !(Maybe Text)
+    , _udrDomain  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'URLDispatchRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udrPath'
+--
+-- * 'udrService'
+--
+-- * 'udrDomain'
+urlDispatchRule
+    :: URLDispatchRule
+urlDispatchRule =
+  URLDispatchRule'
+    {_udrPath = Nothing, _udrService = Nothing, _udrDomain = Nothing}
+
+
+-- | Pathname within the host. Must start with a \"\/\". A single \"*\" can
+-- be included at the end of the path.The sum of the lengths of the domain
+-- and path may not exceed 100 characters.
+udrPath :: Lens' URLDispatchRule (Maybe Text)
+udrPath = lens _udrPath (\ s a -> s{_udrPath = a})
+
+-- | Resource ID of a service in this application that should serve the
+-- matched request. The service must already exist. Example: default.
+udrService :: Lens' URLDispatchRule (Maybe Text)
+udrService
+  = lens _udrService (\ s a -> s{_udrService = a})
+
+-- | Domain name to match against. The wildcard \"*\" is supported if
+-- specified before a period: \"*.\".Defaults to matching all domains:
+-- \"*\".
+udrDomain :: Lens' URLDispatchRule (Maybe Text)
+udrDomain
+  = lens _udrDomain (\ s a -> s{_udrDomain = a})
+
+instance FromJSON URLDispatchRule where
+        parseJSON
+          = withObject "URLDispatchRule"
+              (\ o ->
+                 URLDispatchRule' <$>
+                   (o .:? "path") <*> (o .:? "service") <*>
+                     (o .:? "domain"))
+
+instance ToJSON URLDispatchRule where
+        toJSON URLDispatchRule'{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _udrPath,
+                  ("service" .=) <$> _udrService,
+                  ("domain" .=) <$> _udrDomain])
+
+-- | Metadata for the given google.longrunning.Operation.
+--
+-- /See:/ 'operationMetadataV1Beta' smart constructor.
+data OperationMetadataV1Beta =
+  OperationMetadataV1Beta'
+    { _omvbEphemeralMessage      :: !(Maybe Text)
+    , _omvbInsertTime            :: !(Maybe DateTime')
+    , _omvbUser                  :: !(Maybe Text)
+    , _omvbMethod                :: !(Maybe Text)
+    , _omvbEndTime               :: !(Maybe DateTime')
+    , _omvbWarning               :: !(Maybe [Text])
+    , _omvbCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1Beta)
+    , _omvbTarget                :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationMetadataV1Beta' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omvbEphemeralMessage'
+--
+-- * 'omvbInsertTime'
+--
+-- * 'omvbUser'
+--
+-- * 'omvbMethod'
+--
+-- * 'omvbEndTime'
+--
+-- * 'omvbWarning'
+--
+-- * 'omvbCreateVersionMetadata'
+--
+-- * 'omvbTarget'
+operationMetadataV1Beta
+    :: OperationMetadataV1Beta
+operationMetadataV1Beta =
+  OperationMetadataV1Beta'
+    { _omvbEphemeralMessage = Nothing
+    , _omvbInsertTime = Nothing
+    , _omvbUser = Nothing
+    , _omvbMethod = Nothing
+    , _omvbEndTime = Nothing
+    , _omvbWarning = Nothing
+    , _omvbCreateVersionMetadata = Nothing
+    , _omvbTarget = Nothing
+    }
+
+
+-- | Ephemeral message that may change every time the operation is polled.
+-- \'OutputOnly
+omvbEphemeralMessage :: Lens' OperationMetadataV1Beta (Maybe Text)
+omvbEphemeralMessage
+  = lens _omvbEphemeralMessage
+      (\ s a -> s{_omvbEphemeralMessage = a})
+
+-- | Time that this operation was created.\'OutputOnly
+omvbInsertTime :: Lens' OperationMetadataV1Beta (Maybe UTCTime)
+omvbInsertTime
+  = lens _omvbInsertTime
+      (\ s a -> s{_omvbInsertTime = a})
+      . mapping _DateTime
+
+-- | User who requested this operation.\'OutputOnly
+omvbUser :: Lens' OperationMetadataV1Beta (Maybe Text)
+omvbUser = lens _omvbUser (\ s a -> s{_omvbUser = a})
+
+-- | API method that initiated this operation. Example:
+-- google.appengine.v1beta.Versions.CreateVersion.\'OutputOnly
+omvbMethod :: Lens' OperationMetadataV1Beta (Maybe Text)
+omvbMethod
+  = lens _omvbMethod (\ s a -> s{_omvbMethod = a})
+
+-- | Time that this operation completed.\'OutputOnly
+omvbEndTime :: Lens' OperationMetadataV1Beta (Maybe UTCTime)
+omvbEndTime
+  = lens _omvbEndTime (\ s a -> s{_omvbEndTime = a}) .
+      mapping _DateTime
+
+-- | Durable messages that persist on every operation poll. \'OutputOnly
+omvbWarning :: Lens' OperationMetadataV1Beta [Text]
+omvbWarning
+  = lens _omvbWarning (\ s a -> s{_omvbWarning = a}) .
+      _Default
+      . _Coerce
+
+omvbCreateVersionMetadata :: Lens' OperationMetadataV1Beta (Maybe CreateVersionMetadataV1Beta)
+omvbCreateVersionMetadata
+  = lens _omvbCreateVersionMetadata
+      (\ s a -> s{_omvbCreateVersionMetadata = a})
+
+-- | Name of the resource that this operation is acting on. Example:
+-- apps\/myapp\/services\/default.\'OutputOnly
+omvbTarget :: Lens' OperationMetadataV1Beta (Maybe Text)
+omvbTarget
+  = lens _omvbTarget (\ s a -> s{_omvbTarget = a})
+
+instance FromJSON OperationMetadataV1Beta where
+        parseJSON
+          = withObject "OperationMetadataV1Beta"
+              (\ o ->
+                 OperationMetadataV1Beta' <$>
+                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
+                     <*> (o .:? "user")
+                     <*> (o .:? "method")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "warning" .!= mempty)
+                     <*> (o .:? "createVersionMetadata")
+                     <*> (o .:? "target"))
+
+instance ToJSON OperationMetadataV1Beta where
+        toJSON OperationMetadataV1Beta'{..}
+          = object
+              (catMaybes
+                 [("ephemeralMessage" .=) <$> _omvbEphemeralMessage,
+                  ("insertTime" .=) <$> _omvbInsertTime,
+                  ("user" .=) <$> _omvbUser,
+                  ("method" .=) <$> _omvbMethod,
+                  ("endTime" .=) <$> _omvbEndTime,
+                  ("warning" .=) <$> _omvbWarning,
+                  ("createVersionMetadata" .=) <$>
+                    _omvbCreateVersionMetadata,
+                  ("target" .=) <$> _omvbTarget])
+
+-- | Response message for AuthorizedDomains.ListAuthorizedDomains.
+--
+-- /See:/ 'listAuthorizedDomainsResponse' smart constructor.
+data ListAuthorizedDomainsResponse =
+  ListAuthorizedDomainsResponse'
+    { _ladrNextPageToken :: !(Maybe Text)
+    , _ladrDomains       :: !(Maybe [AuthorizedDomain])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListAuthorizedDomainsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ladrNextPageToken'
+--
+-- * 'ladrDomains'
+listAuthorizedDomainsResponse
+    :: ListAuthorizedDomainsResponse
+listAuthorizedDomainsResponse =
+  ListAuthorizedDomainsResponse'
+    {_ladrNextPageToken = Nothing, _ladrDomains = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+ladrNextPageToken :: Lens' ListAuthorizedDomainsResponse (Maybe Text)
+ladrNextPageToken
+  = lens _ladrNextPageToken
+      (\ s a -> s{_ladrNextPageToken = a})
+
+-- | The authorized domains belonging to the user.
+ladrDomains :: Lens' ListAuthorizedDomainsResponse [AuthorizedDomain]
+ladrDomains
+  = lens _ladrDomains (\ s a -> s{_ladrDomains = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListAuthorizedDomainsResponse where
+        parseJSON
+          = withObject "ListAuthorizedDomainsResponse"
+              (\ o ->
+                 ListAuthorizedDomainsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "domains" .!= mempty))
+
+instance ToJSON ListAuthorizedDomainsResponse where
+        toJSON ListAuthorizedDomainsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ladrNextPageToken,
+                  ("domains" .=) <$> _ladrDomains])
+
+-- | The entrypoint for the application.
+--
+-- /See:/ 'entrypoint' smart constructor.
+newtype Entrypoint =
+  Entrypoint'
+    { _eShell :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Entrypoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eShell'
+entrypoint
+    :: Entrypoint
+entrypoint = Entrypoint' {_eShell = Nothing}
+
+
+-- | The format should be a shell command that can be fed to bash -c.
+eShell :: Lens' Entrypoint (Maybe Text)
+eShell = lens _eShell (\ s a -> s{_eShell = a})
+
+instance FromJSON Entrypoint where
+        parseJSON
+          = withObject "Entrypoint"
+              (\ o -> Entrypoint' <$> (o .:? "shell"))
+
+instance ToJSON Entrypoint where
+        toJSON Entrypoint'{..}
+          = object (catMaybes [("shell" .=) <$> _eShell])
+
+-- | Response message for Versions.ListVersions.
+--
+-- /See:/ 'listVersionsResponse' smart constructor.
+data ListVersionsResponse =
+  ListVersionsResponse'
+    { _lvrNextPageToken :: !(Maybe Text)
+    , _lvrVersions      :: !(Maybe [Version])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListVersionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lvrNextPageToken'
+--
+-- * 'lvrVersions'
+listVersionsResponse
+    :: ListVersionsResponse
+listVersionsResponse =
+  ListVersionsResponse' {_lvrNextPageToken = Nothing, _lvrVersions = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+lvrNextPageToken :: Lens' ListVersionsResponse (Maybe Text)
+lvrNextPageToken
+  = lens _lvrNextPageToken
+      (\ s a -> s{_lvrNextPageToken = a})
+
+-- | The versions belonging to the requested service.
+lvrVersions :: Lens' ListVersionsResponse [Version]
+lvrVersions
+  = lens _lvrVersions (\ s a -> s{_lvrVersions = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListVersionsResponse where
+        parseJSON
+          = withObject "ListVersionsResponse"
+              (\ o ->
+                 ListVersionsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "versions" .!= mempty))
+
+instance ToJSON ListVersionsResponse where
+        toJSON ListVersionsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lvrNextPageToken,
+                  ("versions" .=) <$> _lvrVersions])
+
+-- | A certificate managed by App Engine.
+--
+-- /See:/ 'managedCertificate' smart constructor.
+data ManagedCertificate =
+  ManagedCertificate'
+    { _mcStatus          :: !(Maybe ManagedCertificateStatus)
+    , _mcLastRenewalTime :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcStatus'
+--
+-- * 'mcLastRenewalTime'
+managedCertificate
+    :: ManagedCertificate
+managedCertificate =
+  ManagedCertificate' {_mcStatus = Nothing, _mcLastRenewalTime = Nothing}
+
+
+-- | Status of certificate management. Refers to the most recent certificate
+-- acquisition or renewal attempt.\'OutputOnly
+mcStatus :: Lens' ManagedCertificate (Maybe ManagedCertificateStatus)
+mcStatus = lens _mcStatus (\ s a -> s{_mcStatus = a})
+
+-- | Time at which the certificate was last renewed. The renewal process is
+-- fully managed. Certificate renewal will automatically occur before the
+-- certificate expires. Renewal errors can be tracked via
+-- ManagementStatus.\'OutputOnly
+mcLastRenewalTime :: Lens' ManagedCertificate (Maybe UTCTime)
+mcLastRenewalTime
+  = lens _mcLastRenewalTime
+      (\ s a -> s{_mcLastRenewalTime = a})
+      . mapping _DateTime
+
+instance FromJSON ManagedCertificate where
+        parseJSON
+          = withObject "ManagedCertificate"
+              (\ o ->
+                 ManagedCertificate' <$>
+                   (o .:? "status") <*> (o .:? "lastRenewalTime"))
+
+instance ToJSON ManagedCertificate where
+        toJSON ManagedCertificate'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _mcStatus,
+                  ("lastRenewalTime" .=) <$> _mcLastRenewalTime])
+
+-- | Metadata for the given google.longrunning.Operation during a
+-- google.appengine.v1alpha.CreateVersionRequest.
+--
+-- /See:/ 'createVersionMetadataV1Alpha' smart constructor.
+newtype CreateVersionMetadataV1Alpha =
+  CreateVersionMetadataV1Alpha'
+    { _cvmvaCloudBuildId :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateVersionMetadataV1Alpha' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvmvaCloudBuildId'
+createVersionMetadataV1Alpha
+    :: CreateVersionMetadataV1Alpha
+createVersionMetadataV1Alpha =
+  CreateVersionMetadataV1Alpha' {_cvmvaCloudBuildId = Nothing}
+
+
+-- | The Cloud Build ID if one was created as part of the version create.
+-- \'OutputOnly
+cvmvaCloudBuildId :: Lens' CreateVersionMetadataV1Alpha (Maybe Text)
+cvmvaCloudBuildId
+  = lens _cvmvaCloudBuildId
+      (\ s a -> s{_cvmvaCloudBuildId = a})
+
+instance FromJSON CreateVersionMetadataV1Alpha where
+        parseJSON
+          = withObject "CreateVersionMetadataV1Alpha"
+              (\ o ->
+                 CreateVersionMetadataV1Alpha' <$>
+                   (o .:? "cloudBuildId"))
+
+instance ToJSON CreateVersionMetadataV1Alpha where
+        toJSON CreateVersionMetadataV1Alpha'{..}
+          = object
+              (catMaybes
+                 [("cloudBuildId" .=) <$> _cvmvaCloudBuildId])
+
+-- | Single source file that is part of the version to be deployed. Each
+-- source file that is deployed must be specified separately.
+--
+-- /See:/ 'fileInfo' smart constructor.
+data FileInfo =
+  FileInfo'
+    { _fiSha1Sum   :: !(Maybe Text)
+    , _fiMimeType  :: !(Maybe Text)
+    , _fiSourceURL :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fiSha1Sum'
+--
+-- * 'fiMimeType'
+--
+-- * 'fiSourceURL'
+fileInfo
+    :: FileInfo
+fileInfo =
+  FileInfo'
+    {_fiSha1Sum = Nothing, _fiMimeType = Nothing, _fiSourceURL = Nothing}
+
+
+-- | The SHA1 hash of the file, in hex.
+fiSha1Sum :: Lens' FileInfo (Maybe Text)
+fiSha1Sum
+  = lens _fiSha1Sum (\ s a -> s{_fiSha1Sum = a})
+
+-- | The MIME type of the file.Defaults to the value from Google Cloud
+-- Storage.
+fiMimeType :: Lens' FileInfo (Maybe Text)
+fiMimeType
+  = lens _fiMimeType (\ s a -> s{_fiMimeType = a})
+
+-- | URL source to use to fetch this file. Must be a URL to a resource in
+-- Google Cloud Storage in the form
+-- \'http(s):\/\/storage.googleapis.com\/\/
+-- \'.
+fiSourceURL :: Lens' FileInfo (Maybe Text)
+fiSourceURL
+  = lens _fiSourceURL (\ s a -> s{_fiSourceURL = a})
+
+instance FromJSON FileInfo where
+        parseJSON
+          = withObject "FileInfo"
+              (\ o ->
+                 FileInfo' <$>
+                   (o .:? "sha1Sum") <*> (o .:? "mimeType") <*>
+                     (o .:? "sourceUrl"))
+
+instance ToJSON FileInfo where
+        toJSON FileInfo'{..}
+          = object
+              (catMaybes
+                 [("sha1Sum" .=) <$> _fiSha1Sum,
+                  ("mimeType" .=) <$> _fiMimeType,
+                  ("sourceUrl" .=) <$> _fiSourceURL])
+
+-- | Automatic scaling is based on request rate, response latencies, and
+-- other application metrics.
+--
+-- /See:/ 'automaticScaling' smart constructor.
+data AutomaticScaling =
+  AutomaticScaling'
+    { _asNetworkUtilization        :: !(Maybe NetworkUtilization)
+    , _asMaxTotalInstances         :: !(Maybe (Textual Int32))
+    , _asMinIdleInstances          :: !(Maybe (Textual Int32))
+    , _asDiskUtilization           :: !(Maybe DiskUtilization)
+    , _asMinPendingLatency         :: !(Maybe GDuration)
+    , _asCPUUtilization            :: !(Maybe CPUUtilization)
+    , _asMaxIdleInstances          :: !(Maybe (Textual Int32))
+    , _asMinTotalInstances         :: !(Maybe (Textual Int32))
+    , _asMaxConcurrentRequests     :: !(Maybe (Textual Int32))
+    , _asCoolDownPeriod            :: !(Maybe GDuration)
+    , _asRequestUtilization        :: !(Maybe RequestUtilization)
+    , _asMaxPendingLatency         :: !(Maybe GDuration)
+    , _asStandardSchedulerSettings :: !(Maybe StandardSchedulerSettings)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutomaticScaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asNetworkUtilization'
+--
+-- * 'asMaxTotalInstances'
+--
+-- * 'asMinIdleInstances'
+--
+-- * 'asDiskUtilization'
+--
+-- * 'asMinPendingLatency'
+--
+-- * 'asCPUUtilization'
+--
+-- * 'asMaxIdleInstances'
+--
+-- * 'asMinTotalInstances'
+--
+-- * 'asMaxConcurrentRequests'
+--
+-- * 'asCoolDownPeriod'
+--
+-- * 'asRequestUtilization'
+--
+-- * 'asMaxPendingLatency'
+--
+-- * 'asStandardSchedulerSettings'
+automaticScaling
+    :: AutomaticScaling
+automaticScaling =
+  AutomaticScaling'
+    { _asNetworkUtilization = Nothing
+    , _asMaxTotalInstances = Nothing
+    , _asMinIdleInstances = Nothing
+    , _asDiskUtilization = Nothing
+    , _asMinPendingLatency = Nothing
+    , _asCPUUtilization = Nothing
+    , _asMaxIdleInstances = Nothing
+    , _asMinTotalInstances = Nothing
+    , _asMaxConcurrentRequests = Nothing
+    , _asCoolDownPeriod = Nothing
+    , _asRequestUtilization = Nothing
+    , _asMaxPendingLatency = Nothing
+    , _asStandardSchedulerSettings = Nothing
+    }
+
+
+-- | Target scaling by network usage.
+asNetworkUtilization :: Lens' AutomaticScaling (Maybe NetworkUtilization)
+asNetworkUtilization
+  = lens _asNetworkUtilization
+      (\ s a -> s{_asNetworkUtilization = a})
+
+-- | Maximum number of instances that should be started to handle requests
+-- for this version.
+asMaxTotalInstances :: Lens' AutomaticScaling (Maybe Int32)
+asMaxTotalInstances
+  = lens _asMaxTotalInstances
+      (\ s a -> s{_asMaxTotalInstances = a})
+      . mapping _Coerce
+
+-- | Minimum number of idle instances that should be maintained for this
+-- version. Only applicable for the default version of a service.
+asMinIdleInstances :: Lens' AutomaticScaling (Maybe Int32)
+asMinIdleInstances
+  = lens _asMinIdleInstances
+      (\ s a -> s{_asMinIdleInstances = a})
+      . mapping _Coerce
+
+-- | Target scaling by disk usage.
+asDiskUtilization :: Lens' AutomaticScaling (Maybe DiskUtilization)
+asDiskUtilization
+  = lens _asDiskUtilization
+      (\ s a -> s{_asDiskUtilization = a})
+
+-- | Minimum amount of time a request should wait in the pending queue before
+-- starting a new instance to handle it.
+asMinPendingLatency :: Lens' AutomaticScaling (Maybe Scientific)
+asMinPendingLatency
+  = lens _asMinPendingLatency
+      (\ s a -> s{_asMinPendingLatency = a})
+      . mapping _GDuration
+
+-- | Target scaling by CPU usage.
+asCPUUtilization :: Lens' AutomaticScaling (Maybe CPUUtilization)
+asCPUUtilization
+  = lens _asCPUUtilization
+      (\ s a -> s{_asCPUUtilization = a})
+
+-- | Maximum number of idle instances that should be maintained for this
+-- version.
+asMaxIdleInstances :: Lens' AutomaticScaling (Maybe Int32)
+asMaxIdleInstances
+  = lens _asMaxIdleInstances
+      (\ s a -> s{_asMaxIdleInstances = a})
+      . mapping _Coerce
+
+-- | Minimum number of running instances that should be maintained for this
+-- version.
+asMinTotalInstances :: Lens' AutomaticScaling (Maybe Int32)
+asMinTotalInstances
+  = lens _asMinTotalInstances
+      (\ s a -> s{_asMinTotalInstances = a})
+      . mapping _Coerce
+
+-- | Number of concurrent requests an automatic scaling instance can accept
+-- before the scheduler spawns a new instance.Defaults to a
+-- runtime-specific value.
+asMaxConcurrentRequests :: Lens' AutomaticScaling (Maybe Int32)
+asMaxConcurrentRequests
+  = lens _asMaxConcurrentRequests
+      (\ s a -> s{_asMaxConcurrentRequests = a})
+      . mapping _Coerce
+
+-- | The time period that the Autoscaler
+-- (https:\/\/cloud.google.com\/compute\/docs\/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.
+-- Only applicable in the App Engine flexible environment.
+asCoolDownPeriod :: Lens' AutomaticScaling (Maybe Scientific)
+asCoolDownPeriod
+  = lens _asCoolDownPeriod
+      (\ s a -> s{_asCoolDownPeriod = a})
+      . mapping _GDuration
+
+-- | Target scaling by request utilization.
+asRequestUtilization :: Lens' AutomaticScaling (Maybe RequestUtilization)
+asRequestUtilization
+  = lens _asRequestUtilization
+      (\ s a -> s{_asRequestUtilization = a})
+
+-- | Maximum amount of time that a request should wait in the pending queue
+-- before starting a new instance to handle it.
+asMaxPendingLatency :: Lens' AutomaticScaling (Maybe Scientific)
+asMaxPendingLatency
+  = lens _asMaxPendingLatency
+      (\ s a -> s{_asMaxPendingLatency = a})
+      . mapping _GDuration
+
+-- | Scheduler settings for standard environment.
+asStandardSchedulerSettings :: Lens' AutomaticScaling (Maybe StandardSchedulerSettings)
+asStandardSchedulerSettings
+  = lens _asStandardSchedulerSettings
+      (\ s a -> s{_asStandardSchedulerSettings = a})
+
+instance FromJSON AutomaticScaling where
+        parseJSON
+          = withObject "AutomaticScaling"
+              (\ o ->
+                 AutomaticScaling' <$>
+                   (o .:? "networkUtilization") <*>
+                     (o .:? "maxTotalInstances")
+                     <*> (o .:? "minIdleInstances")
+                     <*> (o .:? "diskUtilization")
+                     <*> (o .:? "minPendingLatency")
+                     <*> (o .:? "cpuUtilization")
+                     <*> (o .:? "maxIdleInstances")
+                     <*> (o .:? "minTotalInstances")
+                     <*> (o .:? "maxConcurrentRequests")
+                     <*> (o .:? "coolDownPeriod")
+                     <*> (o .:? "requestUtilization")
+                     <*> (o .:? "maxPendingLatency")
+                     <*> (o .:? "standardSchedulerSettings"))
+
+instance ToJSON AutomaticScaling where
+        toJSON AutomaticScaling'{..}
+          = object
+              (catMaybes
+                 [("networkUtilization" .=) <$> _asNetworkUtilization,
+                  ("maxTotalInstances" .=) <$> _asMaxTotalInstances,
+                  ("minIdleInstances" .=) <$> _asMinIdleInstances,
+                  ("diskUtilization" .=) <$> _asDiskUtilization,
+                  ("minPendingLatency" .=) <$> _asMinPendingLatency,
+                  ("cpuUtilization" .=) <$> _asCPUUtilization,
+                  ("maxIdleInstances" .=) <$> _asMaxIdleInstances,
+                  ("minTotalInstances" .=) <$> _asMinTotalInstances,
+                  ("maxConcurrentRequests" .=) <$>
+                    _asMaxConcurrentRequests,
+                  ("coolDownPeriod" .=) <$> _asCoolDownPeriod,
+                  ("requestUtilization" .=) <$> _asRequestUtilization,
+                  ("maxPendingLatency" .=) <$> _asMaxPendingLatency,
+                  ("standardSchedulerSettings" .=) <$>
+                    _asStandardSchedulerSettings])
+
+-- | Volumes mounted within the app container. Only applicable in the App
+-- Engine flexible environment.
+--
+-- /See:/ 'volume' smart constructor.
+data Volume =
+  Volume'
+    { _vSizeGb     :: !(Maybe (Textual Double))
+    , _vName       :: !(Maybe Text)
+    , _vVolumeType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Volume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vSizeGb'
+--
+-- * 'vName'
+--
+-- * 'vVolumeType'
+volume
+    :: Volume
+volume = Volume' {_vSizeGb = Nothing, _vName = Nothing, _vVolumeType = Nothing}
+
+
+-- | Volume size in gigabytes.
+vSizeGb :: Lens' Volume (Maybe Double)
+vSizeGb
+  = lens _vSizeGb (\ s a -> s{_vSizeGb = a}) .
+      mapping _Coerce
+
+-- | Unique name for the volume.
+vName :: Lens' Volume (Maybe Text)
+vName = lens _vName (\ s a -> s{_vName = a})
+
+-- | Underlying volume type, e.g. \'tmpfs\'.
+vVolumeType :: Lens' Volume (Maybe Text)
+vVolumeType
+  = lens _vVolumeType (\ s a -> s{_vVolumeType = a})
+
+instance FromJSON Volume where
+        parseJSON
+          = withObject "Volume"
+              (\ o ->
+                 Volume' <$>
+                   (o .:? "sizeGb") <*> (o .:? "name") <*>
+                     (o .:? "volumeType"))
+
+instance ToJSON Volume where
+        toJSON Volume'{..}
+          = object
+              (catMaybes
+                 [("sizeGb" .=) <$> _vSizeGb, ("name" .=) <$> _vName,
+                  ("volumeType" .=) <$> _vVolumeType])
+
+-- | Uses Google Cloud Endpoints to handle requests.
+--
+-- /See:/ 'apiEndpointHandler' smart constructor.
+newtype APIEndpointHandler =
+  APIEndpointHandler'
+    { _aehScriptPath :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'APIEndpointHandler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aehScriptPath'
+apiEndpointHandler
+    :: APIEndpointHandler
+apiEndpointHandler = APIEndpointHandler' {_aehScriptPath = Nothing}
+
+
+-- | Path to the script from the application root directory.
+aehScriptPath :: Lens' APIEndpointHandler (Maybe Text)
+aehScriptPath
+  = lens _aehScriptPath
+      (\ s a -> s{_aehScriptPath = a})
+
+instance FromJSON APIEndpointHandler where
+        parseJSON
+          = withObject "APIEndpointHandler"
+              (\ o -> APIEndpointHandler' <$> (o .:? "scriptPath"))
+
+instance ToJSON APIEndpointHandler where
+        toJSON APIEndpointHandler'{..}
+          = object
+              (catMaybes [("scriptPath" .=) <$> _aehScriptPath])
+
+--
+-- /See:/ 'statusDetailsItem' smart constructor.
+newtype StatusDetailsItem =
+  StatusDetailsItem'
+    { _sdiAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiAddtional'
+statusDetailsItem
+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
+    -> StatusDetailsItem
+statusDetailsItem pSdiAddtional_ =
+  StatusDetailsItem' {_sdiAddtional = _Coerce # pSdiAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
+sdiAddtional
+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
+      . _Coerce
+
+instance FromJSON StatusDetailsItem where
+        parseJSON
+          = withObject "StatusDetailsItem"
+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
+
+instance ToJSON StatusDetailsItem where
+        toJSON = toJSON . _sdiAddtional
+
+-- | Response message for Firewall.ListIngressRules.
+--
+-- /See:/ 'listIngressRulesResponse' smart constructor.
+data ListIngressRulesResponse =
+  ListIngressRulesResponse'
+    { _lirrNextPageToken :: !(Maybe Text)
+    , _lirrIngressRules  :: !(Maybe [FirewallRule])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListIngressRulesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lirrNextPageToken'
+--
+-- * 'lirrIngressRules'
+listIngressRulesResponse
+    :: ListIngressRulesResponse
+listIngressRulesResponse =
+  ListIngressRulesResponse'
+    {_lirrNextPageToken = Nothing, _lirrIngressRules = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+lirrNextPageToken :: Lens' ListIngressRulesResponse (Maybe Text)
+lirrNextPageToken
+  = lens _lirrNextPageToken
+      (\ s a -> s{_lirrNextPageToken = a})
+
+-- | The ingress FirewallRules for this application.
+lirrIngressRules :: Lens' ListIngressRulesResponse [FirewallRule]
+lirrIngressRules
+  = lens _lirrIngressRules
+      (\ s a -> s{_lirrIngressRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListIngressRulesResponse where
+        parseJSON
+          = withObject "ListIngressRulesResponse"
+              (\ o ->
+                 ListIngressRulesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "ingressRules" .!= mempty))
+
+instance ToJSON ListIngressRulesResponse where
+        toJSON ListIngressRulesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lirrNextPageToken,
+                  ("ingressRules" .=) <$> _lirrIngressRules])
+
+-- | Extra network settings. Only applicable in the App Engine flexible
+-- environment.
+--
+-- /See:/ 'network' smart constructor.
+data Network =
+  Network'
+    { _nSessionAffinity :: !(Maybe Bool)
+    , _nSubnetworkName  :: !(Maybe Text)
+    , _nForwardedPorts  :: !(Maybe [Text])
+    , _nInstanceTag     :: !(Maybe Text)
+    , _nName            :: !(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:
+--
+-- * 'nSessionAffinity'
+--
+-- * 'nSubnetworkName'
+--
+-- * 'nForwardedPorts'
+--
+-- * 'nInstanceTag'
+--
+-- * 'nName'
+network
+    :: Network
+network =
+  Network'
+    { _nSessionAffinity = Nothing
+    , _nSubnetworkName = Nothing
+    , _nForwardedPorts = Nothing
+    , _nInstanceTag = Nothing
+    , _nName = Nothing
+    }
+
+
+-- | Enable session affinity. Only applicable in the App Engine flexible
+-- environment.
+nSessionAffinity :: Lens' Network (Maybe Bool)
+nSessionAffinity
+  = lens _nSessionAffinity
+      (\ s a -> s{_nSessionAffinity = a})
+
+-- | Google Cloud Platform sub-network where the virtual machines are
+-- created. Specify the short name, not the resource path.If a subnetwork
+-- name is specified, a network name will also be required unless it is for
+-- the default network. If the network that the instance is being created
+-- in is a Legacy network, then the IP address is allocated from the
+-- IPv4Range. If the network that the instance is being created in is an
+-- auto Subnet Mode Network, then only network name should be specified
+-- (not the subnetwork_name) and the IP address is created from the
+-- IPCidrRange of the subnetwork that exists in that zone for that network.
+-- If the network that the instance is being created in is a custom Subnet
+-- Mode Network, then the subnetwork_name must be specified and the IP
+-- address is created from the IPCidrRange of the subnetwork.If specified,
+-- the subnetwork must exist in the same region as the App Engine flexible
+-- environment application.
+nSubnetworkName :: Lens' Network (Maybe Text)
+nSubnetworkName
+  = lens _nSubnetworkName
+      (\ s a -> s{_nSubnetworkName = a})
+
+-- | List of ports, or port pairs, to forward from the virtual machine to the
+-- application container. Only applicable in the App Engine flexible
+-- environment.
+nForwardedPorts :: Lens' Network [Text]
+nForwardedPorts
+  = lens _nForwardedPorts
+      (\ s a -> s{_nForwardedPorts = a})
+      . _Default
+      . _Coerce
+
+-- | Tag to apply to the instance during creation. Only applicable in the App
+-- Engine flexible environment.
+nInstanceTag :: Lens' Network (Maybe Text)
+nInstanceTag
+  = lens _nInstanceTag (\ s a -> s{_nInstanceTag = a})
+
+-- | Google Compute Engine network where the virtual machines are created.
+-- Specify the short name, not the resource path.Defaults to default.
+nName :: Lens' Network (Maybe Text)
+nName = lens _nName (\ s a -> s{_nName = a})
+
+instance FromJSON Network where
+        parseJSON
+          = withObject "Network"
+              (\ o ->
+                 Network' <$>
+                   (o .:? "sessionAffinity") <*>
+                     (o .:? "subnetworkName")
+                     <*> (o .:? "forwardedPorts" .!= mempty)
+                     <*> (o .:? "instanceTag")
+                     <*> (o .:? "name"))
+
+instance ToJSON Network where
+        toJSON Network'{..}
+          = object
+              (catMaybes
+                 [("sessionAffinity" .=) <$> _nSessionAffinity,
+                  ("subnetworkName" .=) <$> _nSubnetworkName,
+                  ("forwardedPorts" .=) <$> _nForwardedPorts,
+                  ("instanceTag" .=) <$> _nInstanceTag,
+                  ("name" .=) <$> _nName])
+
+-- | Readiness checking configuration for VM instances. Unhealthy instances
+-- are removed from traffic rotation.
+--
+-- /See:/ 'readinessCheck' smart constructor.
+data ReadinessCheck =
+  ReadinessCheck'
+    { _rcSuccessThreshold :: !(Maybe (Textual Word32))
+    , _rcFailureThreshold :: !(Maybe (Textual Word32))
+    , _rcPath             :: !(Maybe Text)
+    , _rcCheckInterval    :: !(Maybe GDuration)
+    , _rcAppStartTimeout  :: !(Maybe GDuration)
+    , _rcHost             :: !(Maybe Text)
+    , _rcTimeout          :: !(Maybe GDuration)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ReadinessCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcSuccessThreshold'
+--
+-- * 'rcFailureThreshold'
+--
+-- * 'rcPath'
+--
+-- * 'rcCheckInterval'
+--
+-- * 'rcAppStartTimeout'
+--
+-- * 'rcHost'
+--
+-- * 'rcTimeout'
+readinessCheck
+    :: ReadinessCheck
+readinessCheck =
+  ReadinessCheck'
+    { _rcSuccessThreshold = Nothing
+    , _rcFailureThreshold = Nothing
+    , _rcPath = Nothing
+    , _rcCheckInterval = Nothing
+    , _rcAppStartTimeout = Nothing
+    , _rcHost = Nothing
+    , _rcTimeout = Nothing
+    }
+
+
+-- | Number of consecutive successful checks required before receiving
+-- traffic.
+rcSuccessThreshold :: Lens' ReadinessCheck (Maybe Word32)
+rcSuccessThreshold
+  = lens _rcSuccessThreshold
+      (\ s a -> s{_rcSuccessThreshold = a})
+      . mapping _Coerce
+
+-- | Number of consecutive failed checks required before removing traffic.
+rcFailureThreshold :: Lens' ReadinessCheck (Maybe Word32)
+rcFailureThreshold
+  = lens _rcFailureThreshold
+      (\ s a -> s{_rcFailureThreshold = a})
+      . mapping _Coerce
+
+-- | The request path.
+rcPath :: Lens' ReadinessCheck (Maybe Text)
+rcPath = lens _rcPath (\ s a -> s{_rcPath = a})
+
+-- | Interval between health checks.
+rcCheckInterval :: Lens' ReadinessCheck (Maybe Scientific)
+rcCheckInterval
+  = lens _rcCheckInterval
+      (\ s a -> s{_rcCheckInterval = a})
+      . mapping _GDuration
+
+-- | A maximum time limit on application initialization, measured from moment
+-- the application successfully replies to a healthcheck until it is ready
+-- to serve traffic.
+rcAppStartTimeout :: Lens' ReadinessCheck (Maybe Scientific)
+rcAppStartTimeout
+  = lens _rcAppStartTimeout
+      (\ s a -> s{_rcAppStartTimeout = a})
+      . mapping _GDuration
+
+-- | Host header to send when performing a HTTP Readiness check. Example:
+-- \"myapp.appspot.com\"
+rcHost :: Lens' ReadinessCheck (Maybe Text)
+rcHost = lens _rcHost (\ s a -> s{_rcHost = a})
+
+-- | Time before the check is considered failed.
+rcTimeout :: Lens' ReadinessCheck (Maybe Scientific)
+rcTimeout
+  = lens _rcTimeout (\ s a -> s{_rcTimeout = a}) .
+      mapping _GDuration
+
+instance FromJSON ReadinessCheck where
+        parseJSON
+          = withObject "ReadinessCheck"
+              (\ o ->
+                 ReadinessCheck' <$>
+                   (o .:? "successThreshold") <*>
+                     (o .:? "failureThreshold")
+                     <*> (o .:? "path")
+                     <*> (o .:? "checkInterval")
+                     <*> (o .:? "appStartTimeout")
+                     <*> (o .:? "host")
+                     <*> (o .:? "timeout"))
+
+instance ToJSON ReadinessCheck where
+        toJSON ReadinessCheck'{..}
+          = object
+              (catMaybes
+                 [("successThreshold" .=) <$> _rcSuccessThreshold,
+                  ("failureThreshold" .=) <$> _rcFailureThreshold,
+                  ("path" .=) <$> _rcPath,
+                  ("checkInterval" .=) <$> _rcCheckInterval,
+                  ("appStartTimeout" .=) <$> _rcAppStartTimeout,
+                  ("host" .=) <$> _rcHost,
+                  ("timeout" .=) <$> _rcTimeout])
+
+-- | Request message for Firewall.BatchUpdateIngressRules.
+--
+-- /See:/ 'batchUpdateIngressRulesRequest' smart constructor.
+newtype BatchUpdateIngressRulesRequest =
+  BatchUpdateIngressRulesRequest'
+    { _buirrIngressRules :: Maybe [FirewallRule]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BatchUpdateIngressRulesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'buirrIngressRules'
+batchUpdateIngressRulesRequest
+    :: BatchUpdateIngressRulesRequest
+batchUpdateIngressRulesRequest =
+  BatchUpdateIngressRulesRequest' {_buirrIngressRules = Nothing}
+
+
+-- | A list of FirewallRules to replace the existing set.
+buirrIngressRules :: Lens' BatchUpdateIngressRulesRequest [FirewallRule]
+buirrIngressRules
+  = lens _buirrIngressRules
+      (\ s a -> s{_buirrIngressRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BatchUpdateIngressRulesRequest
+         where
+        parseJSON
+          = withObject "BatchUpdateIngressRulesRequest"
+              (\ o ->
+                 BatchUpdateIngressRulesRequest' <$>
+                   (o .:? "ingressRules" .!= mempty))
+
+instance ToJSON BatchUpdateIngressRulesRequest where
+        toJSON BatchUpdateIngressRulesRequest'{..}
+          = object
+              (catMaybes
+                 [("ingressRules" .=) <$> _buirrIngressRules])
+
+-- | Request message for Instances.DebugInstance.
+--
+-- /See:/ 'debugInstanceRequest' smart constructor.
+newtype DebugInstanceRequest =
+  DebugInstanceRequest'
+    { _dirSSHKey :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DebugInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirSSHKey'
+debugInstanceRequest
+    :: DebugInstanceRequest
+debugInstanceRequest = DebugInstanceRequest' {_dirSSHKey = Nothing}
+
+
+-- | Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa
+-- [KEY_VALUE] [USERNAME] [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh
+-- {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more
+-- information, see Adding and Removing SSH Keys
+-- (https:\/\/cloud.google.com\/compute\/docs\/instances\/adding-removing-ssh-keys).
+dirSSHKey :: Lens' DebugInstanceRequest (Maybe Text)
+dirSSHKey
+  = lens _dirSSHKey (\ s a -> s{_dirSSHKey = a})
+
+instance FromJSON DebugInstanceRequest where
+        parseJSON
+          = withObject "DebugInstanceRequest"
+              (\ o -> DebugInstanceRequest' <$> (o .:? "sshKey"))
+
+instance ToJSON DebugInstanceRequest where
+        toJSON DebugInstanceRequest'{..}
+          = object (catMaybes [("sshKey" .=) <$> _dirSSHKey])
+
+-- | HTTP headers to use for all responses from these URLs.
+--
+-- /See:/ 'staticFilesHandlerHTTPHeaders' smart constructor.
+newtype StaticFilesHandlerHTTPHeaders =
+  StaticFilesHandlerHTTPHeaders'
+    { _sfhhttphAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StaticFilesHandlerHTTPHeaders' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfhhttphAddtional'
+staticFilesHandlerHTTPHeaders
+    :: HashMap Text Text -- ^ 'sfhhttphAddtional'
+    -> StaticFilesHandlerHTTPHeaders
+staticFilesHandlerHTTPHeaders pSfhhttphAddtional_ =
+  StaticFilesHandlerHTTPHeaders'
+    {_sfhhttphAddtional = _Coerce # pSfhhttphAddtional_}
+
+
+sfhhttphAddtional :: Lens' StaticFilesHandlerHTTPHeaders (HashMap Text Text)
+sfhhttphAddtional
+  = lens _sfhhttphAddtional
+      (\ s a -> s{_sfhhttphAddtional = a})
+      . _Coerce
+
+instance FromJSON StaticFilesHandlerHTTPHeaders where
+        parseJSON
+          = withObject "StaticFilesHandlerHTTPHeaders"
+              (\ o ->
+                 StaticFilesHandlerHTTPHeaders' <$>
+                   (parseJSONObject o))
+
+instance ToJSON StaticFilesHandlerHTTPHeaders where
+        toJSON = toJSON . _sfhhttphAddtional
+
+-- | Machine resources for a version.
+--
+-- /See:/ 'resources' smart constructor.
+data Resources =
+  Resources'
+    { _rMemoryGb :: !(Maybe (Textual Double))
+    , _rDiskGb   :: !(Maybe (Textual Double))
+    , _rVolumes  :: !(Maybe [Volume])
+    , _rCPU      :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Resources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rMemoryGb'
+--
+-- * 'rDiskGb'
+--
+-- * 'rVolumes'
+--
+-- * 'rCPU'
+resources
+    :: Resources
+resources =
+  Resources'
+    { _rMemoryGb = Nothing
+    , _rDiskGb = Nothing
+    , _rVolumes = Nothing
+    , _rCPU = Nothing
+    }
+
+
+-- | Memory (GB) needed.
+rMemoryGb :: Lens' Resources (Maybe Double)
+rMemoryGb
+  = lens _rMemoryGb (\ s a -> s{_rMemoryGb = a}) .
+      mapping _Coerce
+
+-- | Disk size (GB) needed.
+rDiskGb :: Lens' Resources (Maybe Double)
+rDiskGb
+  = lens _rDiskGb (\ s a -> s{_rDiskGb = a}) .
+      mapping _Coerce
+
+-- | User specified volumes.
+rVolumes :: Lens' Resources [Volume]
+rVolumes
+  = lens _rVolumes (\ s a -> s{_rVolumes = a}) .
+      _Default
+      . _Coerce
+
+-- | Number of CPU cores needed.
+rCPU :: Lens' Resources (Maybe Double)
+rCPU
+  = lens _rCPU (\ s a -> s{_rCPU = a}) .
+      mapping _Coerce
+
+instance FromJSON Resources where
+        parseJSON
+          = withObject "Resources"
+              (\ o ->
+                 Resources' <$>
+                   (o .:? "memoryGb") <*> (o .:? "diskGb") <*>
+                     (o .:? "volumes" .!= mempty)
+                     <*> (o .:? "cpu"))
+
+instance ToJSON Resources where
+        toJSON Resources'{..}
+          = object
+              (catMaybes
+                 [("memoryGb" .=) <$> _rMemoryGb,
+                  ("diskGb" .=) <$> _rDiskGb,
+                  ("volumes" .=) <$> _rVolumes, ("cpu" .=) <$> _rCPU])
+
+-- | The feature specific settings to be used in the application. These
+-- define behaviors that are user configurable.
+--
+-- /See:/ 'featureSettings' smart constructor.
+data FeatureSettings =
+  FeatureSettings'
+    { _fsUseContainerOptimizedOS :: !(Maybe Bool)
+    , _fsSplitHealthChecks       :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FeatureSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fsUseContainerOptimizedOS'
+--
+-- * 'fsSplitHealthChecks'
+featureSettings
+    :: FeatureSettings
+featureSettings =
+  FeatureSettings'
+    {_fsUseContainerOptimizedOS = Nothing, _fsSplitHealthChecks = Nothing}
+
+
+-- | If true, use Container-Optimized OS
+-- (https:\/\/cloud.google.com\/container-optimized-os\/) base image for
+-- VMs, rather than a base Debian image.
+fsUseContainerOptimizedOS :: Lens' FeatureSettings (Maybe Bool)
+fsUseContainerOptimizedOS
+  = lens _fsUseContainerOptimizedOS
+      (\ s a -> s{_fsUseContainerOptimizedOS = a})
+
+-- | Boolean value indicating if split health checks should be used instead
+-- of the legacy health checks. At an app.yaml level, this means defaulting
+-- to \'readiness_check\' and \'liveness_check\' values instead of
+-- \'health_check\' ones. Once the legacy \'health_check\' behavior is
+-- deprecated, and this value is always true, this setting can be removed.
+fsSplitHealthChecks :: Lens' FeatureSettings (Maybe Bool)
+fsSplitHealthChecks
+  = lens _fsSplitHealthChecks
+      (\ s a -> s{_fsSplitHealthChecks = a})
+
+instance FromJSON FeatureSettings where
+        parseJSON
+          = withObject "FeatureSettings"
+              (\ o ->
+                 FeatureSettings' <$>
+                   (o .:? "useContainerOptimizedOs") <*>
+                     (o .:? "splitHealthChecks"))
+
+instance ToJSON FeatureSettings where
+        toJSON FeatureSettings'{..}
+          = object
+              (catMaybes
+                 [("useContainerOptimizedOs" .=) <$>
+                    _fsUseContainerOptimizedOS,
+                  ("splitHealthChecks" .=) <$> _fsSplitHealthChecks])
+
+-- | An SSL certificate obtained from a certificate authority.
+--
+-- /See:/ 'certificateRawData' smart constructor.
+data CertificateRawData =
+  CertificateRawData'
+    { _crdPrivateKey        :: !(Maybe Text)
+    , _crdPublicCertificate :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CertificateRawData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crdPrivateKey'
+--
+-- * 'crdPublicCertificate'
+certificateRawData
+    :: CertificateRawData
+certificateRawData =
+  CertificateRawData'
+    {_crdPrivateKey = Nothing, _crdPublicCertificate = Nothing}
+
+
+-- | Unencrypted PEM encoded RSA private key. This field is set once on
+-- certificate creation and then encrypted. The key size must be 2048 bits
+-- or fewer. Must include the header and footer. Example:
+--
+-- >  -----BEGIN RSA PRIVATE KEY-----  -----END RSA PRIVATE KEY-----
+--
+-- \'InputOnly
+crdPrivateKey :: Lens' CertificateRawData (Maybe Text)
+crdPrivateKey
+  = lens _crdPrivateKey
+      (\ s a -> s{_crdPrivateKey = a})
+
+-- | PEM encoded x.509 public key certificate. This field is set once on
+-- certificate creation. Must include the header and footer. Example:
+--
+-- >  -----BEGIN CERTIFICATE-----  -----END CERTIFICATE-----
+crdPublicCertificate :: Lens' CertificateRawData (Maybe Text)
+crdPublicCertificate
+  = lens _crdPublicCertificate
+      (\ s a -> s{_crdPublicCertificate = a})
+
+instance FromJSON CertificateRawData where
+        parseJSON
+          = withObject "CertificateRawData"
+              (\ o ->
+                 CertificateRawData' <$>
+                   (o .:? "privateKey") <*> (o .:? "publicCertificate"))
+
+instance ToJSON CertificateRawData where
+        toJSON CertificateRawData'{..}
+          = object
+              (catMaybes
+                 [("privateKey" .=) <$> _crdPrivateKey,
+                  ("publicCertificate" .=) <$> _crdPublicCertificate])
+
+-- | A domain serving an App Engine application.
+--
+-- /See:/ 'domainMApping' smart constructor.
+data DomainMApping =
+  DomainMApping'
+    { _dmaResourceRecords :: !(Maybe [ResourceRecord])
+    , _dmaName            :: !(Maybe Text)
+    , _dmaId              :: !(Maybe Text)
+    , _dmaSSLSettings     :: !(Maybe SSLSettings)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DomainMApping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmaResourceRecords'
+--
+-- * 'dmaName'
+--
+-- * 'dmaId'
+--
+-- * 'dmaSSLSettings'
+domainMApping
+    :: DomainMApping
+domainMApping =
+  DomainMApping'
+    { _dmaResourceRecords = Nothing
+    , _dmaName = Nothing
+    , _dmaId = Nothing
+    , _dmaSSLSettings = Nothing
+    }
+
+
+-- | The resource records required to configure this domain mapping. These
+-- records must be added to the domain\'s DNS configuration in order to
+-- serve the application via this domain mapping.\'OutputOnly
+dmaResourceRecords :: Lens' DomainMApping [ResourceRecord]
+dmaResourceRecords
+  = lens _dmaResourceRecords
+      (\ s a -> s{_dmaResourceRecords = a})
+      . _Default
+      . _Coerce
+
+-- | Full path to the DomainMapping resource in the API. Example:
+-- apps\/myapp\/domainMapping\/example.com.\'OutputOnly
+dmaName :: Lens' DomainMApping (Maybe Text)
+dmaName = lens _dmaName (\ s a -> s{_dmaName = a})
+
+-- | Relative name of the domain serving the application. Example:
+-- example.com.
+dmaId :: Lens' DomainMApping (Maybe Text)
+dmaId = lens _dmaId (\ s a -> s{_dmaId = a})
+
+-- | SSL configuration for this domain. If unconfigured, this domain will not
+-- serve with SSL.
+dmaSSLSettings :: Lens' DomainMApping (Maybe SSLSettings)
+dmaSSLSettings
+  = lens _dmaSSLSettings
+      (\ s a -> s{_dmaSSLSettings = a})
+
+instance FromJSON DomainMApping where
+        parseJSON
+          = withObject "DomainMApping"
+              (\ o ->
+                 DomainMApping' <$>
+                   (o .:? "resourceRecords" .!= mempty) <*>
+                     (o .:? "name")
+                     <*> (o .:? "id")
+                     <*> (o .:? "sslSettings"))
+
+instance ToJSON DomainMApping where
+        toJSON DomainMApping'{..}
+          = object
+              (catMaybes
+                 [("resourceRecords" .=) <$> _dmaResourceRecords,
+                  ("name" .=) <$> _dmaName, ("id" .=) <$> _dmaId,
+                  ("sslSettings" .=) <$> _dmaSSLSettings])
+
+-- | Manifest of the files stored in Google Cloud Storage that are included
+-- as part of this version. All files must be readable using the
+-- credentials supplied with this call.
+--
+-- /See:/ 'deploymentFiles' smart constructor.
+newtype DeploymentFiles =
+  DeploymentFiles'
+    { _dfAddtional :: HashMap Text FileInfo
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeploymentFiles' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfAddtional'
+deploymentFiles
+    :: HashMap Text FileInfo -- ^ 'dfAddtional'
+    -> DeploymentFiles
+deploymentFiles pDfAddtional_ =
+  DeploymentFiles' {_dfAddtional = _Coerce # pDfAddtional_}
+
+
+dfAddtional :: Lens' DeploymentFiles (HashMap Text FileInfo)
+dfAddtional
+  = lens _dfAddtional (\ s a -> s{_dfAddtional = a}) .
+      _Coerce
+
+instance FromJSON DeploymentFiles where
+        parseJSON
+          = withObject "DeploymentFiles"
+              (\ o -> DeploymentFiles' <$> (parseJSONObject o))
+
+instance ToJSON DeploymentFiles where
+        toJSON = toJSON . _dfAddtional
+
+-- | Response message for Firewall.UpdateAllIngressRules.
+--
+-- /See:/ 'batchUpdateIngressRulesResponse' smart constructor.
+newtype BatchUpdateIngressRulesResponse =
+  BatchUpdateIngressRulesResponse'
+    { _bIngressRules :: Maybe [FirewallRule]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BatchUpdateIngressRulesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bIngressRules'
+batchUpdateIngressRulesResponse
+    :: BatchUpdateIngressRulesResponse
+batchUpdateIngressRulesResponse =
+  BatchUpdateIngressRulesResponse' {_bIngressRules = Nothing}
+
+
+-- | The full list of ingress FirewallRules for this application.
+bIngressRules :: Lens' BatchUpdateIngressRulesResponse [FirewallRule]
+bIngressRules
+  = lens _bIngressRules
+      (\ s a -> s{_bIngressRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BatchUpdateIngressRulesResponse
+         where
+        parseJSON
+          = withObject "BatchUpdateIngressRulesResponse"
+              (\ o ->
+                 BatchUpdateIngressRulesResponse' <$>
+                   (o .:? "ingressRules" .!= mempty))
+
+instance ToJSON BatchUpdateIngressRulesResponse where
+        toJSON BatchUpdateIngressRulesResponse'{..}
+          = object
+              (catMaybes [("ingressRules" .=) <$> _bIngressRules])
+
+-- | Target scaling by CPU usage.
+--
+-- /See:/ 'cpuUtilization' smart constructor.
+data CPUUtilization =
+  CPUUtilization'
+    { _cuAggregationWindowLength :: !(Maybe GDuration)
+    , _cuTargetUtilization       :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CPUUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuAggregationWindowLength'
+--
+-- * 'cuTargetUtilization'
+cpuUtilization
+    :: CPUUtilization
+cpuUtilization =
+  CPUUtilization'
+    {_cuAggregationWindowLength = Nothing, _cuTargetUtilization = Nothing}
+
+
+-- | Period of time over which CPU utilization is calculated.
+cuAggregationWindowLength :: Lens' CPUUtilization (Maybe Scientific)
+cuAggregationWindowLength
+  = lens _cuAggregationWindowLength
+      (\ s a -> s{_cuAggregationWindowLength = a})
+      . mapping _GDuration
+
+-- | Target CPU utilization ratio to maintain when scaling. Must be between 0
+-- and 1.
+cuTargetUtilization :: Lens' CPUUtilization (Maybe Double)
+cuTargetUtilization
+  = lens _cuTargetUtilization
+      (\ s a -> s{_cuTargetUtilization = a})
+      . mapping _Coerce
+
+instance FromJSON CPUUtilization where
+        parseJSON
+          = withObject "CPUUtilization"
+              (\ o ->
+                 CPUUtilization' <$>
+                   (o .:? "aggregationWindowLength") <*>
+                     (o .:? "targetUtilization"))
+
+instance ToJSON CPUUtilization where
+        toJSON CPUUtilization'{..}
+          = object
+              (catMaybes
+                 [("aggregationWindowLength" .=) <$>
+                    _cuAggregationWindowLength,
+                  ("targetUtilization" .=) <$> _cuTargetUtilization])
+
+-- | Metadata for the given google.longrunning.Operation during a
+-- google.appengine.v1.CreateVersionRequest.
+--
+-- /See:/ 'createVersionMetadataV1' smart constructor.
+newtype CreateVersionMetadataV1 =
+  CreateVersionMetadataV1'
+    { _cvmvCloudBuildId :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateVersionMetadataV1' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvmvCloudBuildId'
+createVersionMetadataV1
+    :: CreateVersionMetadataV1
+createVersionMetadataV1 = CreateVersionMetadataV1' {_cvmvCloudBuildId = Nothing}
+
+
+-- | The Cloud Build ID if one was created as part of the version create.
+-- \'OutputOnly
+cvmvCloudBuildId :: Lens' CreateVersionMetadataV1 (Maybe Text)
+cvmvCloudBuildId
+  = lens _cvmvCloudBuildId
+      (\ s a -> s{_cvmvCloudBuildId = a})
+
+instance FromJSON CreateVersionMetadataV1 where
+        parseJSON
+          = withObject "CreateVersionMetadataV1"
+              (\ o ->
+                 CreateVersionMetadataV1' <$> (o .:? "cloudBuildId"))
+
+instance ToJSON CreateVersionMetadataV1 where
+        toJSON CreateVersionMetadataV1'{..}
+          = object
+              (catMaybes
+                 [("cloudBuildId" .=) <$> _cvmvCloudBuildId])
+
+-- | Mapping from version IDs within the service to fractional (0.000, 1]
+-- allocations of traffic for that version. Each version can be specified
+-- only once, but some versions in the service may not have any traffic
+-- allocation. Services that have traffic allocated cannot be deleted until
+-- either the service is deleted or their traffic allocation is removed.
+-- Allocations must sum to 1. Up to two decimal place precision is
+-- supported for IP-based splits and up to three decimal places is
+-- supported for cookie-based splits.
+--
+-- /See:/ 'trafficSplitAllocations' smart constructor.
+newtype TrafficSplitAllocations =
+  TrafficSplitAllocations'
+    { _tsaAddtional :: HashMap Text (Textual Double)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TrafficSplitAllocations' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsaAddtional'
+trafficSplitAllocations
+    :: HashMap Text Double -- ^ 'tsaAddtional'
+    -> TrafficSplitAllocations
+trafficSplitAllocations pTsaAddtional_ =
+  TrafficSplitAllocations' {_tsaAddtional = _Coerce # pTsaAddtional_}
+
+
+tsaAddtional :: Lens' TrafficSplitAllocations (HashMap Text Double)
+tsaAddtional
+  = lens _tsaAddtional (\ s a -> s{_tsaAddtional = a})
+      . _Coerce
+
+instance FromJSON TrafficSplitAllocations where
+        parseJSON
+          = withObject "TrafficSplitAllocations"
+              (\ o ->
+                 TrafficSplitAllocations' <$> (parseJSONObject o))
+
+instance ToJSON TrafficSplitAllocations where
+        toJSON = toJSON . _tsaAddtional
+
+-- | Options for the build operations performed as a part of the version
+-- deployment. Only applicable for App Engine flexible environment when
+-- creating a version using source code directly.
+--
+-- /See:/ 'cloudBuildOptions' smart constructor.
+data CloudBuildOptions =
+  CloudBuildOptions'
+    { _cboCloudBuildTimeout :: !(Maybe GDuration)
+    , _cboAppYamlPath       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CloudBuildOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cboCloudBuildTimeout'
+--
+-- * 'cboAppYamlPath'
+cloudBuildOptions
+    :: CloudBuildOptions
+cloudBuildOptions =
+  CloudBuildOptions'
+    {_cboCloudBuildTimeout = Nothing, _cboAppYamlPath = Nothing}
+
+
+-- | The Cloud Build timeout used as part of any dependent builds performed
+-- by version creation. Defaults to 10 minutes.
+cboCloudBuildTimeout :: Lens' CloudBuildOptions (Maybe Scientific)
+cboCloudBuildTimeout
+  = lens _cboCloudBuildTimeout
+      (\ s a -> s{_cboCloudBuildTimeout = a})
+      . mapping _GDuration
+
+-- | Path to the yaml file used in deployment, used to determine runtime
+-- configuration details.Required for flexible environment builds.See
+-- https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/config\/appref
+-- for more details.
+cboAppYamlPath :: Lens' CloudBuildOptions (Maybe Text)
+cboAppYamlPath
+  = lens _cboAppYamlPath
+      (\ s a -> s{_cboAppYamlPath = a})
+
+instance FromJSON CloudBuildOptions where
+        parseJSON
+          = withObject "CloudBuildOptions"
+              (\ o ->
+                 CloudBuildOptions' <$>
+                   (o .:? "cloudBuildTimeout") <*>
+                     (o .:? "appYamlPath"))
+
+instance ToJSON CloudBuildOptions where
+        toJSON CloudBuildOptions'{..}
+          = object
+              (catMaybes
+                 [("cloudBuildTimeout" .=) <$> _cboCloudBuildTimeout,
+                  ("appYamlPath" .=) <$> _cboAppYamlPath])
+
+-- | A service with manual scaling runs continuously, allowing you to perform
+-- complex initialization and rely on the state of its memory over time.
+--
+-- /See:/ 'manualScaling' smart constructor.
+newtype ManualScaling =
+  ManualScaling'
+    { _msInstances :: Maybe (Textual Int32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManualScaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'msInstances'
+manualScaling
+    :: ManualScaling
+manualScaling = ManualScaling' {_msInstances = Nothing}
+
+
+-- | Number of instances to assign to the service at the start. This number
+-- can later be altered by using the Modules API
+-- (https:\/\/cloud.google.com\/appengine\/docs\/python\/modules\/functions)
+-- set_num_instances() function.
+msInstances :: Lens' ManualScaling (Maybe Int32)
+msInstances
+  = lens _msInstances (\ s a -> s{_msInstances = a}) .
+      mapping _Coerce
+
+instance FromJSON ManualScaling where
+        parseJSON
+          = withObject "ManualScaling"
+              (\ o -> ManualScaling' <$> (o .:? "instances"))
+
+instance ToJSON ManualScaling where
+        toJSON ManualScaling'{..}
+          = object
+              (catMaybes [("instances" .=) <$> _msInstances])
+
+-- | A service with basic scaling will create an instance when the
+-- application receives a request. The instance will be turned down when
+-- the app becomes idle. Basic scaling is ideal for work that is
+-- intermittent or driven by user activity.
+--
+-- /See:/ 'basicScaling' smart constructor.
+data BasicScaling =
+  BasicScaling'
+    { _bsMaxInstances :: !(Maybe (Textual Int32))
+    , _bsIdleTimeout  :: !(Maybe GDuration)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BasicScaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsMaxInstances'
+--
+-- * 'bsIdleTimeout'
+basicScaling
+    :: BasicScaling
+basicScaling =
+  BasicScaling' {_bsMaxInstances = Nothing, _bsIdleTimeout = Nothing}
+
+
+-- | Maximum number of instances to create for this version.
+bsMaxInstances :: Lens' BasicScaling (Maybe Int32)
+bsMaxInstances
+  = lens _bsMaxInstances
+      (\ s a -> s{_bsMaxInstances = a})
+      . mapping _Coerce
+
+-- | Duration of time after the last request that an instance must wait
+-- before the instance is shut down.
+bsIdleTimeout :: Lens' BasicScaling (Maybe Scientific)
+bsIdleTimeout
+  = lens _bsIdleTimeout
+      (\ s a -> s{_bsIdleTimeout = a})
+      . mapping _GDuration
+
+instance FromJSON BasicScaling where
+        parseJSON
+          = withObject "BasicScaling"
+              (\ o ->
+                 BasicScaling' <$>
+                   (o .:? "maxInstances") <*> (o .:? "idleTimeout"))
+
+instance ToJSON BasicScaling where
+        toJSON BasicScaling'{..}
+          = object
+              (catMaybes
+                 [("maxInstances" .=) <$> _bsMaxInstances,
+                  ("idleTimeout" .=) <$> _bsIdleTimeout])
+
+-- | Metadata for the given google.longrunning.Operation.
+--
+-- /See:/ 'operationMetadataV1' smart constructor.
+data OperationMetadataV1 =
+  OperationMetadataV1'
+    { _omvEphemeralMessage      :: !(Maybe Text)
+    , _omvInsertTime            :: !(Maybe DateTime')
+    , _omvUser                  :: !(Maybe Text)
+    , _omvMethod                :: !(Maybe Text)
+    , _omvEndTime               :: !(Maybe DateTime')
+    , _omvWarning               :: !(Maybe [Text])
+    , _omvCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1)
+    , _omvTarget                :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationMetadataV1' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omvEphemeralMessage'
+--
+-- * 'omvInsertTime'
+--
+-- * 'omvUser'
+--
+-- * 'omvMethod'
+--
+-- * 'omvEndTime'
+--
+-- * 'omvWarning'
+--
+-- * 'omvCreateVersionMetadata'
+--
+-- * 'omvTarget'
+operationMetadataV1
+    :: OperationMetadataV1
+operationMetadataV1 =
+  OperationMetadataV1'
+    { _omvEphemeralMessage = Nothing
+    , _omvInsertTime = Nothing
+    , _omvUser = Nothing
+    , _omvMethod = Nothing
+    , _omvEndTime = Nothing
+    , _omvWarning = Nothing
+    , _omvCreateVersionMetadata = Nothing
+    , _omvTarget = Nothing
+    }
+
+
+-- | Ephemeral message that may change every time the operation is polled.
+-- \'OutputOnly
+omvEphemeralMessage :: Lens' OperationMetadataV1 (Maybe Text)
+omvEphemeralMessage
+  = lens _omvEphemeralMessage
+      (\ s a -> s{_omvEphemeralMessage = a})
+
+-- | Time that this operation was created.\'OutputOnly
+omvInsertTime :: Lens' OperationMetadataV1 (Maybe UTCTime)
+omvInsertTime
+  = lens _omvInsertTime
+      (\ s a -> s{_omvInsertTime = a})
+      . mapping _DateTime
+
+-- | User who requested this operation.\'OutputOnly
+omvUser :: Lens' OperationMetadataV1 (Maybe Text)
+omvUser = lens _omvUser (\ s a -> s{_omvUser = a})
+
+-- | API method that initiated this operation. Example:
+-- google.appengine.v1.Versions.CreateVersion.\'OutputOnly
+omvMethod :: Lens' OperationMetadataV1 (Maybe Text)
+omvMethod
+  = lens _omvMethod (\ s a -> s{_omvMethod = a})
+
+-- | Time that this operation completed.\'OutputOnly
+omvEndTime :: Lens' OperationMetadataV1 (Maybe UTCTime)
+omvEndTime
+  = lens _omvEndTime (\ s a -> s{_omvEndTime = a}) .
+      mapping _DateTime
+
+-- | Durable messages that persist on every operation poll. \'OutputOnly
+omvWarning :: Lens' OperationMetadataV1 [Text]
+omvWarning
+  = lens _omvWarning (\ s a -> s{_omvWarning = a}) .
+      _Default
+      . _Coerce
+
+omvCreateVersionMetadata :: Lens' OperationMetadataV1 (Maybe CreateVersionMetadataV1)
+omvCreateVersionMetadata
+  = lens _omvCreateVersionMetadata
+      (\ s a -> s{_omvCreateVersionMetadata = a})
+
+-- | Name of the resource that this operation is acting on. Example:
+-- apps\/myapp\/services\/default.\'OutputOnly
+omvTarget :: Lens' OperationMetadataV1 (Maybe Text)
+omvTarget
+  = lens _omvTarget (\ s a -> s{_omvTarget = a})
+
+instance FromJSON OperationMetadataV1 where
+        parseJSON
+          = withObject "OperationMetadataV1"
+              (\ o ->
+                 OperationMetadataV1' <$>
+                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
+                     <*> (o .:? "user")
+                     <*> (o .:? "method")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "warning" .!= mempty)
+                     <*> (o .:? "createVersionMetadata")
+                     <*> (o .:? "target"))
+
+instance ToJSON OperationMetadataV1 where
+        toJSON OperationMetadataV1'{..}
+          = object
+              (catMaybes
+                 [("ephemeralMessage" .=) <$> _omvEphemeralMessage,
+                  ("insertTime" .=) <$> _omvInsertTime,
+                  ("user" .=) <$> _omvUser,
+                  ("method" .=) <$> _omvMethod,
+                  ("endTime" .=) <$> _omvEndTime,
+                  ("warning" .=) <$> _omvWarning,
+                  ("createVersionMetadata" .=) <$>
+                    _omvCreateVersionMetadata,
+                  ("target" .=) <$> _omvTarget])
+
+-- | A Version resource is a specific set of source code and configuration
+-- files that are deployed into a service.
+--
+-- /See:/ 'version' smart constructor.
+data Version =
+  Version'
+    { _verRuntime                   :: !(Maybe Text)
+    , _verNobuildFilesRegex         :: !(Maybe Text)
+    , _verInstanceClass             :: !(Maybe Text)
+    , _verRuntimeChannel            :: !(Maybe Text)
+    , _verRuntimeMainExecutablePath :: !(Maybe Text)
+    , _verVPCAccessConnector        :: !(Maybe VPCAccessConnector)
+    , _verHealthCheck               :: !(Maybe HealthCheck)
+    , _verEndpointsAPIService       :: !(Maybe EndpointsAPIService)
+    , _verEnv                       :: !(Maybe Text)
+    , _verZones                     :: !(Maybe [Text])
+    , _verEntrypoint                :: !(Maybe Entrypoint)
+    , _verDefaultExpiration         :: !(Maybe GDuration)
+    , _verAutomaticScaling          :: !(Maybe AutomaticScaling)
+    , _verErrorHandlers             :: !(Maybe [ErrorHandler])
+    , _verCreatedBy                 :: !(Maybe Text)
+    , _verVM                        :: !(Maybe Bool)
+    , _verHandlers                  :: !(Maybe [URLMap])
+    , _verInboundServices           :: !(Maybe [Text])
+    , _verReadinessCheck            :: !(Maybe ReadinessCheck)
+    , _verNetwork                   :: !(Maybe Network)
+    , _verResources                 :: !(Maybe Resources)
+    , _verName                      :: !(Maybe Text)
+    , _verThreadsafe                :: !(Maybe Bool)
+    , _verBetaSettings              :: !(Maybe VersionBetaSettings)
+    , _verBasicScaling              :: !(Maybe BasicScaling)
+    , _verManualScaling             :: !(Maybe ManualScaling)
+    , _verAPIConfig                 :: !(Maybe APIConfigHandler)
+    , _verId                        :: !(Maybe Text)
+    , _verEnvVariables              :: !(Maybe VersionEnvVariables)
+    , _verLivenessCheck             :: !(Maybe LivenessCheck)
+    , _verRuntimeAPIVersion         :: !(Maybe Text)
+    , _verServingStatus             :: !(Maybe VersionServingStatus)
+    , _verDiskUsageBytes            :: !(Maybe (Textual Int64))
+    , _verCreateTime                :: !(Maybe DateTime')
+    , _verLibraries                 :: !(Maybe [Library])
+    , _verVersionURL                :: !(Maybe Text)
+    , _verDeployment                :: !(Maybe Deployment)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Version' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'verRuntime'
+--
+-- * 'verNobuildFilesRegex'
+--
+-- * 'verInstanceClass'
+--
+-- * 'verRuntimeChannel'
+--
+-- * 'verRuntimeMainExecutablePath'
+--
+-- * 'verVPCAccessConnector'
+--
+-- * 'verHealthCheck'
+--
+-- * 'verEndpointsAPIService'
+--
+-- * 'verEnv'
+--
+-- * 'verZones'
+--
+-- * 'verEntrypoint'
+--
+-- * 'verDefaultExpiration'
+--
+-- * 'verAutomaticScaling'
+--
+-- * 'verErrorHandlers'
+--
+-- * 'verCreatedBy'
+--
+-- * 'verVM'
+--
+-- * 'verHandlers'
+--
+-- * 'verInboundServices'
+--
+-- * 'verReadinessCheck'
+--
+-- * 'verNetwork'
+--
+-- * 'verResources'
+--
+-- * 'verName'
+--
+-- * 'verThreadsafe'
+--
+-- * 'verBetaSettings'
+--
+-- * 'verBasicScaling'
+--
+-- * 'verManualScaling'
+--
+-- * 'verAPIConfig'
+--
+-- * 'verId'
+--
+-- * 'verEnvVariables'
+--
+-- * 'verLivenessCheck'
+--
+-- * 'verRuntimeAPIVersion'
+--
+-- * 'verServingStatus'
+--
+-- * 'verDiskUsageBytes'
+--
+-- * 'verCreateTime'
+--
+-- * 'verLibraries'
+--
+-- * 'verVersionURL'
+--
+-- * 'verDeployment'
+version
+    :: Version
+version =
+  Version'
+    { _verRuntime = Nothing
+    , _verNobuildFilesRegex = Nothing
+    , _verInstanceClass = Nothing
+    , _verRuntimeChannel = Nothing
+    , _verRuntimeMainExecutablePath = Nothing
+    , _verVPCAccessConnector = Nothing
+    , _verHealthCheck = Nothing
+    , _verEndpointsAPIService = Nothing
+    , _verEnv = Nothing
+    , _verZones = Nothing
+    , _verEntrypoint = Nothing
+    , _verDefaultExpiration = Nothing
+    , _verAutomaticScaling = Nothing
+    , _verErrorHandlers = Nothing
+    , _verCreatedBy = Nothing
+    , _verVM = Nothing
+    , _verHandlers = Nothing
+    , _verInboundServices = Nothing
+    , _verReadinessCheck = Nothing
+    , _verNetwork = Nothing
+    , _verResources = Nothing
+    , _verName = Nothing
+    , _verThreadsafe = Nothing
+    , _verBetaSettings = Nothing
+    , _verBasicScaling = Nothing
+    , _verManualScaling = Nothing
+    , _verAPIConfig = Nothing
+    , _verId = Nothing
+    , _verEnvVariables = Nothing
+    , _verLivenessCheck = Nothing
+    , _verRuntimeAPIVersion = Nothing
+    , _verServingStatus = Nothing
+    , _verDiskUsageBytes = Nothing
+    , _verCreateTime = Nothing
+    , _verLibraries = Nothing
+    , _verVersionURL = Nothing
+    , _verDeployment = Nothing
+    }
+
+
+-- | Desired runtime. Example: python27.
+verRuntime :: Lens' Version (Maybe Text)
+verRuntime
+  = lens _verRuntime (\ s a -> s{_verRuntime = a})
+
+-- | Files that match this pattern will not be built into this version. Only
+-- applicable for Go runtimes.Only returned in GET requests if view=FULL is
+-- set.
+verNobuildFilesRegex :: Lens' Version (Maybe Text)
+verNobuildFilesRegex
+  = lens _verNobuildFilesRegex
+      (\ s a -> s{_verNobuildFilesRegex = a})
+
+-- | Instance class that is used to run this version. Valid values are:
+-- AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1,
+-- B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for
+-- ManualScaling or BasicScaling.
+verInstanceClass :: Lens' Version (Maybe Text)
+verInstanceClass
+  = lens _verInstanceClass
+      (\ s a -> s{_verInstanceClass = a})
+
+-- | The channel of the runtime to use. Only available for some runtimes.
+-- Defaults to the default channel.
+verRuntimeChannel :: Lens' Version (Maybe Text)
+verRuntimeChannel
+  = lens _verRuntimeChannel
+      (\ s a -> s{_verRuntimeChannel = a})
+
+-- | The path or name of the app\'s main executable.
+verRuntimeMainExecutablePath :: Lens' Version (Maybe Text)
+verRuntimeMainExecutablePath
+  = lens _verRuntimeMainExecutablePath
+      (\ s a -> s{_verRuntimeMainExecutablePath = a})
+
+-- | Enables VPC connectivity for standard apps.
+verVPCAccessConnector :: Lens' Version (Maybe VPCAccessConnector)
+verVPCAccessConnector
+  = lens _verVPCAccessConnector
+      (\ s a -> s{_verVPCAccessConnector = a})
+
+-- | Configures health checking for instances. Unhealthy instances are
+-- stopped and replaced with new instances. Only applicable in the App
+-- Engine flexible environment.Only returned in GET requests if view=FULL
+-- is set.
+verHealthCheck :: Lens' Version (Maybe HealthCheck)
+verHealthCheck
+  = lens _verHealthCheck
+      (\ s a -> s{_verHealthCheck = a})
+
+-- | Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud
+-- Endpoints Extensible Service Proxy will be provided to serve the API
+-- implemented by the app.
+verEndpointsAPIService :: Lens' Version (Maybe EndpointsAPIService)
+verEndpointsAPIService
+  = lens _verEndpointsAPIService
+      (\ s a -> s{_verEndpointsAPIService = a})
+
+-- | App Engine execution environment for this version.Defaults to standard.
+verEnv :: Lens' Version (Maybe Text)
+verEnv = lens _verEnv (\ s a -> s{_verEnv = a})
+
+-- | The Google Compute Engine zones that are supported by this version in
+-- the App Engine flexible environment. Deprecated.
+verZones :: Lens' Version [Text]
+verZones
+  = lens _verZones (\ s a -> s{_verZones = a}) .
+      _Default
+      . _Coerce
+
+-- | The entrypoint for the application.
+verEntrypoint :: Lens' Version (Maybe Entrypoint)
+verEntrypoint
+  = lens _verEntrypoint
+      (\ s a -> s{_verEntrypoint = a})
+
+-- | Duration that static files should be cached by web proxies and browsers.
+-- Only applicable if the corresponding StaticFilesHandler
+-- (https:\/\/cloud.google.com\/appengine\/docs\/admin-api\/reference\/rest\/v1\/apps.services.versions#StaticFilesHandler)
+-- does not specify its own expiration time.Only returned in GET requests
+-- if view=FULL is set.
+verDefaultExpiration :: Lens' Version (Maybe Scientific)
+verDefaultExpiration
+  = lens _verDefaultExpiration
+      (\ s a -> s{_verDefaultExpiration = a})
+      . mapping _GDuration
+
+-- | Automatic scaling is based on request rate, response latencies, and
+-- other application metrics.
+verAutomaticScaling :: Lens' Version (Maybe AutomaticScaling)
+verAutomaticScaling
+  = lens _verAutomaticScaling
+      (\ s a -> s{_verAutomaticScaling = a})
+
+-- | Custom static error pages. Limited to 10KB per page.Only returned in GET
+-- requests if view=FULL is set.
+verErrorHandlers :: Lens' Version [ErrorHandler]
+verErrorHandlers
+  = lens _verErrorHandlers
+      (\ s a -> s{_verErrorHandlers = a})
+      . _Default
+      . _Coerce
+
+-- | Email address of the user who created this version.\'OutputOnly
+verCreatedBy :: Lens' Version (Maybe Text)
+verCreatedBy
+  = lens _verCreatedBy (\ s a -> s{_verCreatedBy = a})
+
+-- | Whether to deploy this version in a container on a virtual machine.
+verVM :: Lens' Version (Maybe Bool)
+verVM = lens _verVM (\ s a -> s{_verVM = a})
+
+-- | An ordered list of URL-matching patterns that should be applied to
+-- incoming requests. The first matching URL handles the request and other
+-- request handlers are not attempted.Only returned in GET requests if
+-- view=FULL is set.
+verHandlers :: Lens' Version [URLMap]
+verHandlers
+  = lens _verHandlers (\ s a -> s{_verHandlers = a}) .
+      _Default
+      . _Coerce
+
+-- | Before an application can receive email or XMPP messages, the
+-- application must be configured to enable the service.
+verInboundServices :: Lens' Version [Text]
+verInboundServices
+  = lens _verInboundServices
+      (\ s a -> s{_verInboundServices = a})
+      . _Default
+      . _Coerce
+
+-- | Configures readiness health checking for instances. Unhealthy instances
+-- are not put into the backend traffic rotation.Only returned in GET
+-- requests if view=FULL is set.
+verReadinessCheck :: Lens' Version (Maybe ReadinessCheck)
+verReadinessCheck
+  = lens _verReadinessCheck
+      (\ s a -> s{_verReadinessCheck = a})
+
+-- | Extra network settings. Only applicable in the App Engine flexible
+-- environment.
+verNetwork :: Lens' Version (Maybe Network)
+verNetwork
+  = lens _verNetwork (\ s a -> s{_verNetwork = a})
+
+-- | Machine resources for this version. Only applicable in the App Engine
+-- flexible environment.
+verResources :: Lens' Version (Maybe Resources)
+verResources
+  = lens _verResources (\ s a -> s{_verResources = a})
+
+-- | Full path to the Version resource in the API. Example:
+-- apps\/myapp\/services\/default\/versions\/v1.\'OutputOnly
+verName :: Lens' Version (Maybe Text)
+verName = lens _verName (\ s a -> s{_verName = a})
+
+-- | Whether multiple requests can be dispatched to this version at once.
+verThreadsafe :: Lens' Version (Maybe Bool)
+verThreadsafe
+  = lens _verThreadsafe
+      (\ s a -> s{_verThreadsafe = a})
+
+-- | Metadata settings that are supplied to this version to enable beta
+-- runtime features.
+verBetaSettings :: Lens' Version (Maybe VersionBetaSettings)
+verBetaSettings
+  = lens _verBetaSettings
+      (\ s a -> s{_verBetaSettings = a})
+
+-- | A service with basic scaling will create an instance when the
+-- application receives a request. The instance will be turned down when
+-- the app becomes idle. Basic scaling is ideal for work that is
+-- intermittent or driven by user activity.
+verBasicScaling :: Lens' Version (Maybe BasicScaling)
+verBasicScaling
+  = lens _verBasicScaling
+      (\ s a -> s{_verBasicScaling = a})
+
+-- | A service with manual scaling runs continuously, allowing you to perform
+-- complex initialization and rely on the state of its memory over time.
+verManualScaling :: Lens' Version (Maybe ManualScaling)
+verManualScaling
+  = lens _verManualScaling
+      (\ s a -> s{_verManualScaling = a})
+
+-- | Serving configuration for Google Cloud Endpoints
+-- (https:\/\/cloud.google.com\/appengine\/docs\/python\/endpoints\/).Only
+-- returned in GET requests if view=FULL is set.
+verAPIConfig :: Lens' Version (Maybe APIConfigHandler)
+verAPIConfig
+  = lens _verAPIConfig (\ s a -> s{_verAPIConfig = a})
+
+-- | Relative name of the version within the service. Example: v1. Version
+-- names can contain only lowercase letters, numbers, or hyphens. Reserved
+-- names: \"default\", \"latest\", and any name with the prefix \"ah-\".
+verId :: Lens' Version (Maybe Text)
+verId = lens _verId (\ s a -> s{_verId = a})
+
+-- | Environment variables available to the application.Only returned in GET
+-- requests if view=FULL is set.
+verEnvVariables :: Lens' Version (Maybe VersionEnvVariables)
+verEnvVariables
+  = lens _verEnvVariables
+      (\ s a -> s{_verEnvVariables = a})
+
+-- | Configures liveness health checking for instances. Unhealthy instances
+-- are stopped and replaced with new instancesOnly returned in GET requests
+-- if view=FULL is set.
+verLivenessCheck :: Lens' Version (Maybe LivenessCheck)
+verLivenessCheck
+  = lens _verLivenessCheck
+      (\ s a -> s{_verLivenessCheck = a})
+
+-- | The version of the API in the given runtime environment. Please see the
+-- app.yaml reference for valid values at
+-- https:\/\/cloud.google.com\/appengine\/docs\/standard\/\/config\/appref
+verRuntimeAPIVersion :: Lens' Version (Maybe Text)
+verRuntimeAPIVersion
+  = lens _verRuntimeAPIVersion
+      (\ s a -> s{_verRuntimeAPIVersion = a})
+
+-- | Current serving status of this version. Only the versions with a SERVING
+-- status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is
+-- an invalid value. Defaults to SERVING.
+verServingStatus :: Lens' Version (Maybe VersionServingStatus)
+verServingStatus
+  = lens _verServingStatus
+      (\ s a -> s{_verServingStatus = a})
+
+-- | Total size in bytes of all the files that are included in this version
+-- and currently hosted on the App Engine disk.\'OutputOnly
+verDiskUsageBytes :: Lens' Version (Maybe Int64)
+verDiskUsageBytes
+  = lens _verDiskUsageBytes
+      (\ s a -> s{_verDiskUsageBytes = a})
+      . mapping _Coerce
+
+-- | Time that this version was created.\'OutputOnly
+verCreateTime :: Lens' Version (Maybe UTCTime)
+verCreateTime
+  = lens _verCreateTime
+      (\ s a -> s{_verCreateTime = a})
+      . mapping _DateTime
+
+-- | Configuration for third-party Python runtime libraries that are required
+-- by the application.Only returned in GET requests if view=FULL is set.
+verLibraries :: Lens' Version [Library]
+verLibraries
+  = lens _verLibraries (\ s a -> s{_verLibraries = a})
+      . _Default
+      . _Coerce
+
+-- | Serving URL for this version. Example:
+-- \"https:\/\/myversion-dot-myservice-dot-myapp.appspot.com\"\'OutputOnly
+verVersionURL :: Lens' Version (Maybe Text)
+verVersionURL
+  = lens _verVersionURL
+      (\ s a -> s{_verVersionURL = a})
+
+-- | Code and application artifacts that make up this version.Only returned
+-- in GET requests if view=FULL is set.
+verDeployment :: Lens' Version (Maybe Deployment)
+verDeployment
+  = lens _verDeployment
+      (\ s a -> s{_verDeployment = a})
+
+instance FromJSON Version where
+        parseJSON
+          = withObject "Version"
+              (\ o ->
+                 Version' <$>
+                   (o .:? "runtime") <*> (o .:? "nobuildFilesRegex") <*>
+                     (o .:? "instanceClass")
+                     <*> (o .:? "runtimeChannel")
+                     <*> (o .:? "runtimeMainExecutablePath")
+                     <*> (o .:? "vpcAccessConnector")
+                     <*> (o .:? "healthCheck")
+                     <*> (o .:? "endpointsApiService")
+                     <*> (o .:? "env")
+                     <*> (o .:? "zones" .!= mempty)
+                     <*> (o .:? "entrypoint")
+                     <*> (o .:? "defaultExpiration")
+                     <*> (o .:? "automaticScaling")
+                     <*> (o .:? "errorHandlers" .!= mempty)
+                     <*> (o .:? "createdBy")
+                     <*> (o .:? "vm")
+                     <*> (o .:? "handlers" .!= mempty)
+                     <*> (o .:? "inboundServices" .!= mempty)
+                     <*> (o .:? "readinessCheck")
+                     <*> (o .:? "network")
+                     <*> (o .:? "resources")
+                     <*> (o .:? "name")
+                     <*> (o .:? "threadsafe")
+                     <*> (o .:? "betaSettings")
+                     <*> (o .:? "basicScaling")
+                     <*> (o .:? "manualScaling")
+                     <*> (o .:? "apiConfig")
+                     <*> (o .:? "id")
+                     <*> (o .:? "envVariables")
+                     <*> (o .:? "livenessCheck")
+                     <*> (o .:? "runtimeApiVersion")
+                     <*> (o .:? "servingStatus")
+                     <*> (o .:? "diskUsageBytes")
+                     <*> (o .:? "createTime")
+                     <*> (o .:? "libraries" .!= mempty)
+                     <*> (o .:? "versionUrl")
+                     <*> (o .:? "deployment"))
+
+instance ToJSON Version where
+        toJSON Version'{..}
+          = object
+              (catMaybes
+                 [("runtime" .=) <$> _verRuntime,
+                  ("nobuildFilesRegex" .=) <$> _verNobuildFilesRegex,
+                  ("instanceClass" .=) <$> _verInstanceClass,
+                  ("runtimeChannel" .=) <$> _verRuntimeChannel,
+                  ("runtimeMainExecutablePath" .=) <$>
+                    _verRuntimeMainExecutablePath,
+                  ("vpcAccessConnector" .=) <$> _verVPCAccessConnector,
+                  ("healthCheck" .=) <$> _verHealthCheck,
+                  ("endpointsApiService" .=) <$>
+                    _verEndpointsAPIService,
+                  ("env" .=) <$> _verEnv, ("zones" .=) <$> _verZones,
+                  ("entrypoint" .=) <$> _verEntrypoint,
+                  ("defaultExpiration" .=) <$> _verDefaultExpiration,
+                  ("automaticScaling" .=) <$> _verAutomaticScaling,
+                  ("errorHandlers" .=) <$> _verErrorHandlers,
+                  ("createdBy" .=) <$> _verCreatedBy,
+                  ("vm" .=) <$> _verVM,
+                  ("handlers" .=) <$> _verHandlers,
+                  ("inboundServices" .=) <$> _verInboundServices,
+                  ("readinessCheck" .=) <$> _verReadinessCheck,
+                  ("network" .=) <$> _verNetwork,
+                  ("resources" .=) <$> _verResources,
+                  ("name" .=) <$> _verName,
+                  ("threadsafe" .=) <$> _verThreadsafe,
+                  ("betaSettings" .=) <$> _verBetaSettings,
+                  ("basicScaling" .=) <$> _verBasicScaling,
+                  ("manualScaling" .=) <$> _verManualScaling,
+                  ("apiConfig" .=) <$> _verAPIConfig,
+                  ("id" .=) <$> _verId,
+                  ("envVariables" .=) <$> _verEnvVariables,
+                  ("livenessCheck" .=) <$> _verLivenessCheck,
+                  ("runtimeApiVersion" .=) <$> _verRuntimeAPIVersion,
+                  ("servingStatus" .=) <$> _verServingStatus,
+                  ("diskUsageBytes" .=) <$> _verDiskUsageBytes,
+                  ("createTime" .=) <$> _verCreateTime,
+                  ("libraries" .=) <$> _verLibraries,
+                  ("versionUrl" .=) <$> _verVersionURL,
+                  ("deployment" .=) <$> _verDeployment])
+
+-- | Identity-Aware Proxy
+--
+-- /See:/ 'identityAwareProxy' smart constructor.
+data IdentityAwareProxy =
+  IdentityAwareProxy'
+    { _iapEnabled                  :: !(Maybe Bool)
+    , _iapOAuth2ClientSecretSha256 :: !(Maybe Text)
+    , _iapOAuth2ClientSecret       :: !(Maybe Text)
+    , _iapOAuth2ClientId           :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'IdentityAwareProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapEnabled'
+--
+-- * 'iapOAuth2ClientSecretSha256'
+--
+-- * 'iapOAuth2ClientSecret'
+--
+-- * 'iapOAuth2ClientId'
+identityAwareProxy
+    :: IdentityAwareProxy
+identityAwareProxy =
+  IdentityAwareProxy'
+    { _iapEnabled = Nothing
+    , _iapOAuth2ClientSecretSha256 = Nothing
+    , _iapOAuth2ClientSecret = Nothing
+    , _iapOAuth2ClientId = Nothing
+    }
+
+
+-- | Whether the serving infrastructure will authenticate and authorize all
+-- incoming requests.If true, the oauth2_client_id and oauth2_client_secret
+-- fields must be non-empty.
+iapEnabled :: Lens' IdentityAwareProxy (Maybe Bool)
+iapEnabled
+  = lens _iapEnabled (\ s a -> s{_iapEnabled = a})
+
+-- | Hex-encoded SHA-256 hash of the client secret.\'OutputOnly
+iapOAuth2ClientSecretSha256 :: Lens' IdentityAwareProxy (Maybe Text)
+iapOAuth2ClientSecretSha256
+  = lens _iapOAuth2ClientSecretSha256
+      (\ s a -> s{_iapOAuth2ClientSecretSha256 = a})
+
+-- | OAuth2 client secret to use for the authentication flow.For security
+-- reasons, this value cannot be retrieved via the API. Instead, the
+-- SHA-256 hash of the value is returned in the oauth2_client_secret_sha256
+-- field.\'InputOnly
+iapOAuth2ClientSecret :: Lens' IdentityAwareProxy (Maybe Text)
+iapOAuth2ClientSecret
+  = lens _iapOAuth2ClientSecret
+      (\ s a -> s{_iapOAuth2ClientSecret = a})
+
+-- | OAuth2 client ID to use for the authentication flow.
+iapOAuth2ClientId :: Lens' IdentityAwareProxy (Maybe Text)
+iapOAuth2ClientId
+  = lens _iapOAuth2ClientId
+      (\ s a -> s{_iapOAuth2ClientId = a})
+
+instance FromJSON IdentityAwareProxy where
+        parseJSON
+          = withObject "IdentityAwareProxy"
+              (\ o ->
+                 IdentityAwareProxy' <$>
+                   (o .:? "enabled") <*>
+                     (o .:? "oauth2ClientSecretSha256")
+                     <*> (o .:? "oauth2ClientSecret")
+                     <*> (o .:? "oauth2ClientId"))
+
+instance ToJSON IdentityAwareProxy where
+        toJSON IdentityAwareProxy'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _iapEnabled,
+                  ("oauth2ClientSecretSha256" .=) <$>
+                    _iapOAuth2ClientSecretSha256,
+                  ("oauth2ClientSecret" .=) <$> _iapOAuth2ClientSecret,
+                  ("oauth2ClientId" .=) <$> _iapOAuth2ClientId])
+
+-- | Files served directly to the user for a given URL, such as images, CSS
+-- stylesheets, or JavaScript source files. Static file handlers describe
+-- which files in the application directory are static files, and which
+-- URLs serve them.
+--
+-- /See:/ 'staticFilesHandler' smart constructor.
+data StaticFilesHandler =
+  StaticFilesHandler'
+    { _sfhHTTPHeaders         :: !(Maybe StaticFilesHandlerHTTPHeaders)
+    , _sfhPath                :: !(Maybe Text)
+    , _sfhRequireMatchingFile :: !(Maybe Bool)
+    , _sfhExpiration          :: !(Maybe GDuration)
+    , _sfhMimeType            :: !(Maybe Text)
+    , _sfhApplicationReadable :: !(Maybe Bool)
+    , _sfhUploadPathRegex     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StaticFilesHandler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfhHTTPHeaders'
+--
+-- * 'sfhPath'
+--
+-- * 'sfhRequireMatchingFile'
+--
+-- * 'sfhExpiration'
+--
+-- * 'sfhMimeType'
+--
+-- * 'sfhApplicationReadable'
+--
+-- * 'sfhUploadPathRegex'
+staticFilesHandler
+    :: StaticFilesHandler
+staticFilesHandler =
+  StaticFilesHandler'
+    { _sfhHTTPHeaders = Nothing
+    , _sfhPath = Nothing
+    , _sfhRequireMatchingFile = Nothing
+    , _sfhExpiration = Nothing
+    , _sfhMimeType = Nothing
+    , _sfhApplicationReadable = Nothing
+    , _sfhUploadPathRegex = Nothing
+    }
+
+
+-- | HTTP headers to use for all responses from these URLs.
+sfhHTTPHeaders :: Lens' StaticFilesHandler (Maybe StaticFilesHandlerHTTPHeaders)
+sfhHTTPHeaders
+  = lens _sfhHTTPHeaders
+      (\ s a -> s{_sfhHTTPHeaders = a})
+
+-- | Path to the static files matched by the URL pattern, from the
+-- application root directory. The path can refer to text matched in
+-- groupings in the URL pattern.
+sfhPath :: Lens' StaticFilesHandler (Maybe Text)
+sfhPath = lens _sfhPath (\ s a -> s{_sfhPath = a})
+
+-- | Whether this handler should match the request if the file referenced by
+-- the handler does not exist.
+sfhRequireMatchingFile :: Lens' StaticFilesHandler (Maybe Bool)
+sfhRequireMatchingFile
+  = lens _sfhRequireMatchingFile
+      (\ s a -> s{_sfhRequireMatchingFile = a})
+
+-- | Time a static file served by this handler should be cached by web
+-- proxies and browsers.
+sfhExpiration :: Lens' StaticFilesHandler (Maybe Scientific)
+sfhExpiration
+  = lens _sfhExpiration
+      (\ s a -> s{_sfhExpiration = a})
+      . mapping _GDuration
+
+-- | MIME type used to serve all files served by this handler.Defaults to
+-- file-specific MIME types, which are derived from each file\'s filename
+-- extension.
+sfhMimeType :: Lens' StaticFilesHandler (Maybe Text)
+sfhMimeType
+  = lens _sfhMimeType (\ s a -> s{_sfhMimeType = a})
+
+-- | Whether files should also be uploaded as code data. By default, files
+-- declared in static file handlers are uploaded as static data and are
+-- only served to end users; they cannot be read by the application. If
+-- enabled, uploads are charged against both your code and static data
+-- storage resource quotas.
+sfhApplicationReadable :: Lens' StaticFilesHandler (Maybe Bool)
+sfhApplicationReadable
+  = lens _sfhApplicationReadable
+      (\ s a -> s{_sfhApplicationReadable = a})
+
+-- | Regular expression that matches the file paths for all files that should
+-- be referenced by this handler.
+sfhUploadPathRegex :: Lens' StaticFilesHandler (Maybe Text)
+sfhUploadPathRegex
+  = lens _sfhUploadPathRegex
+      (\ s a -> s{_sfhUploadPathRegex = a})
+
+instance FromJSON StaticFilesHandler where
+        parseJSON
+          = withObject "StaticFilesHandler"
+              (\ o ->
+                 StaticFilesHandler' <$>
+                   (o .:? "httpHeaders") <*> (o .:? "path") <*>
+                     (o .:? "requireMatchingFile")
+                     <*> (o .:? "expiration")
+                     <*> (o .:? "mimeType")
+                     <*> (o .:? "applicationReadable")
+                     <*> (o .:? "uploadPathRegex"))
+
+instance ToJSON StaticFilesHandler where
+        toJSON StaticFilesHandler'{..}
+          = object
+              (catMaybes
+                 [("httpHeaders" .=) <$> _sfhHTTPHeaders,
+                  ("path" .=) <$> _sfhPath,
+                  ("requireMatchingFile" .=) <$>
+                    _sfhRequireMatchingFile,
+                  ("expiration" .=) <$> _sfhExpiration,
+                  ("mimeType" .=) <$> _sfhMimeType,
+                  ("applicationReadable" .=) <$>
+                    _sfhApplicationReadable,
+                  ("uploadPathRegex" .=) <$> _sfhUploadPathRegex])
+
+-- | Custom static error page to be served when an error occurs.
+--
+-- /See:/ 'errorHandler' smart constructor.
+data ErrorHandler =
+  ErrorHandler'
+    { _ehMimeType   :: !(Maybe Text)
+    , _ehErrorCode  :: !(Maybe ErrorHandlerErrorCode)
+    , _ehStaticFile :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ErrorHandler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ehMimeType'
+--
+-- * 'ehErrorCode'
+--
+-- * 'ehStaticFile'
+errorHandler
+    :: ErrorHandler
+errorHandler =
+  ErrorHandler'
+    {_ehMimeType = Nothing, _ehErrorCode = Nothing, _ehStaticFile = Nothing}
+
+
+-- | MIME type of file. Defaults to text\/html.
+ehMimeType :: Lens' ErrorHandler (Maybe Text)
+ehMimeType
+  = lens _ehMimeType (\ s a -> s{_ehMimeType = a})
+
+-- | Error condition this handler applies to.
+ehErrorCode :: Lens' ErrorHandler (Maybe ErrorHandlerErrorCode)
+ehErrorCode
+  = lens _ehErrorCode (\ s a -> s{_ehErrorCode = a})
+
+-- | Static file content to be served for this error.
+ehStaticFile :: Lens' ErrorHandler (Maybe Text)
+ehStaticFile
+  = lens _ehStaticFile (\ s a -> s{_ehStaticFile = a})
+
+instance FromJSON ErrorHandler where
+        parseJSON
+          = withObject "ErrorHandler"
+              (\ o ->
+                 ErrorHandler' <$>
+                   (o .:? "mimeType") <*> (o .:? "errorCode") <*>
+                     (o .:? "staticFile"))
+
+instance ToJSON ErrorHandler where
+        toJSON ErrorHandler'{..}
+          = object
+              (catMaybes
+                 [("mimeType" .=) <$> _ehMimeType,
+                  ("errorCode" .=) <$> _ehErrorCode,
+                  ("staticFile" .=) <$> _ehStaticFile])
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+--
+-- /See:/ 'locationLabels' smart constructor.
+newtype LocationLabels =
+  LocationLabels'
+    { _llAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llAddtional'
+locationLabels
+    :: HashMap Text Text -- ^ 'llAddtional'
+    -> LocationLabels
+locationLabels pLlAddtional_ =
+  LocationLabels' {_llAddtional = _Coerce # pLlAddtional_}
+
+
+llAddtional :: Lens' LocationLabels (HashMap Text Text)
+llAddtional
+  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationLabels where
+        parseJSON
+          = withObject "LocationLabels"
+              (\ o -> LocationLabels' <$> (parseJSONObject o))
+
+instance ToJSON LocationLabels where
+        toJSON = toJSON . _llAddtional
+
+-- | Response message for AuthorizedCertificates.ListAuthorizedCertificates.
+--
+-- /See:/ 'listAuthorizedCertificatesResponse' smart constructor.
+data ListAuthorizedCertificatesResponse =
+  ListAuthorizedCertificatesResponse'
+    { _lacrNextPageToken :: !(Maybe Text)
+    , _lacrCertificates  :: !(Maybe [AuthorizedCertificate])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListAuthorizedCertificatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lacrNextPageToken'
+--
+-- * 'lacrCertificates'
+listAuthorizedCertificatesResponse
+    :: ListAuthorizedCertificatesResponse
+listAuthorizedCertificatesResponse =
+  ListAuthorizedCertificatesResponse'
+    {_lacrNextPageToken = Nothing, _lacrCertificates = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+lacrNextPageToken :: Lens' ListAuthorizedCertificatesResponse (Maybe Text)
+lacrNextPageToken
+  = lens _lacrNextPageToken
+      (\ s a -> s{_lacrNextPageToken = a})
+
+-- | The SSL certificates the user is authorized to administer.
+lacrCertificates :: Lens' ListAuthorizedCertificatesResponse [AuthorizedCertificate]
+lacrCertificates
+  = lens _lacrCertificates
+      (\ s a -> s{_lacrCertificates = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListAuthorizedCertificatesResponse
+         where
+        parseJSON
+          = withObject "ListAuthorizedCertificatesResponse"
+              (\ o ->
+                 ListAuthorizedCertificatesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "certificates" .!= mempty))
+
+instance ToJSON ListAuthorizedCertificatesResponse
+         where
+        toJSON ListAuthorizedCertificatesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lacrNextPageToken,
+                  ("certificates" .=) <$> _lacrCertificates])
+
+-- | A single firewall rule that is evaluated against incoming traffic and
+-- provides an action to take on matched requests.
+--
+-- /See:/ 'firewallRule' smart constructor.
+data FirewallRule =
+  FirewallRule'
+    { _frPriority    :: !(Maybe (Textual Int32))
+    , _frAction      :: !(Maybe FirewallRuleAction)
+    , _frSourceRange :: !(Maybe Text)
+    , _frDescription :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FirewallRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frPriority'
+--
+-- * 'frAction'
+--
+-- * 'frSourceRange'
+--
+-- * 'frDescription'
+firewallRule
+    :: FirewallRule
+firewallRule =
+  FirewallRule'
+    { _frPriority = Nothing
+    , _frAction = Nothing
+    , _frSourceRange = Nothing
+    , _frDescription = Nothing
+    }
+
+
+-- | A positive integer between 1, Int32.MaxValue-1 that defines the order of
+-- rule evaluation. Rules with the lowest priority are evaluated first.A
+-- default rule at priority Int32.MaxValue matches all IPv4 and IPv6
+-- traffic when no previous rule matches. Only the action of this rule can
+-- be modified by the user.
+frPriority :: Lens' FirewallRule (Maybe Int32)
+frPriority
+  = lens _frPriority (\ s a -> s{_frPriority = a}) .
+      mapping _Coerce
+
+-- | The action to take on matched requests.
+frAction :: Lens' FirewallRule (Maybe FirewallRuleAction)
+frAction = lens _frAction (\ s a -> s{_frAction = a})
+
+-- | IP address or range, defined using CIDR notation, of requests that this
+-- rule applies to. You can use the wildcard character \"*\" to match all
+-- IPs equivalent to \"0\/0\" and \"::\/0\" together. Examples: 192.168.1.1
+-- or 192.168.0.0\/16 or 2001:db8::\/32 or
+-- 2001:0db8:0000:0042:0000:8a2e:0370:7334.
+--
+-- Truncation will be silently performed on addresses which are not
+-- properly truncated. For example, 1.2.3.4\/24 is accepted as the same
+-- address as 1.2.3.0\/24. Similarly, for IPv6, 2001:db8::1\/32 is accepted
+-- as the same address as 2001:db8::\/32.
+frSourceRange :: Lens' FirewallRule (Maybe Text)
+frSourceRange
+  = lens _frSourceRange
+      (\ s a -> s{_frSourceRange = a})
+
+-- | An optional string description of this rule. This field has a maximum
+-- length of 100 characters.
+frDescription :: Lens' FirewallRule (Maybe Text)
+frDescription
+  = lens _frDescription
+      (\ s a -> s{_frDescription = a})
+
+instance FromJSON FirewallRule where
+        parseJSON
+          = withObject "FirewallRule"
+              (\ o ->
+                 FirewallRule' <$>
+                   (o .:? "priority") <*> (o .:? "action") <*>
+                     (o .:? "sourceRange")
+                     <*> (o .:? "description"))
+
+instance ToJSON FirewallRule where
+        toJSON FirewallRule'{..}
+          = object
+              (catMaybes
+                 [("priority" .=) <$> _frPriority,
+                  ("action" .=) <$> _frAction,
+                  ("sourceRange" .=) <$> _frSourceRange,
+                  ("description" .=) <$> _frDescription])
+
+-- | Metadata for the given google.cloud.location.Location.
+--
+-- /See:/ 'locationMetadata' smart constructor.
+data LocationMetadata =
+  LocationMetadata'
+    { _lmStandardEnvironmentAvailable :: !(Maybe Bool)
+    , _lmFlexibleEnvironmentAvailable :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lmStandardEnvironmentAvailable'
+--
+-- * 'lmFlexibleEnvironmentAvailable'
+locationMetadata
+    :: LocationMetadata
+locationMetadata =
+  LocationMetadata'
+    { _lmStandardEnvironmentAvailable = Nothing
+    , _lmFlexibleEnvironmentAvailable = Nothing
+    }
+
+
+-- | App Engine standard environment is available in the given
+-- location.\'OutputOnly
+lmStandardEnvironmentAvailable :: Lens' LocationMetadata (Maybe Bool)
+lmStandardEnvironmentAvailable
+  = lens _lmStandardEnvironmentAvailable
+      (\ s a -> s{_lmStandardEnvironmentAvailable = a})
+
+-- | App Engine flexible environment is available in the given
+-- location.\'OutputOnly
+lmFlexibleEnvironmentAvailable :: Lens' LocationMetadata (Maybe Bool)
+lmFlexibleEnvironmentAvailable
+  = lens _lmFlexibleEnvironmentAvailable
+      (\ s a -> s{_lmFlexibleEnvironmentAvailable = a})
+
+instance FromJSON LocationMetadata where
+        parseJSON
+          = withObject "LocationMetadata"
+              (\ o ->
+                 LocationMetadata' <$>
+                   (o .:? "standardEnvironmentAvailable") <*>
+                     (o .:? "flexibleEnvironmentAvailable"))
+
+instance ToJSON LocationMetadata where
+        toJSON LocationMetadata'{..}
+          = object
+              (catMaybes
+                 [("standardEnvironmentAvailable" .=) <$>
+                    _lmStandardEnvironmentAvailable,
+                  ("flexibleEnvironmentAvailable" .=) <$>
+                    _lmFlexibleEnvironmentAvailable])
+
+-- | Service-specific metadata associated with the operation. It typically
+-- contains progress information and common metadata such as create time.
+-- Some services might not provide such metadata. Any method that returns a
+-- long-running operation should document the metadata type, if any.
+--
+-- /See:/ 'operationMetadata' smart constructor.
+newtype OperationMetadata =
+  OperationMetadata'
+    { _omAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omAddtional'
+operationMetadata
+    :: HashMap Text JSONValue -- ^ 'omAddtional'
+    -> OperationMetadata
+operationMetadata pOmAddtional_ =
+  OperationMetadata' {_omAddtional = _Coerce # pOmAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+omAddtional :: Lens' OperationMetadata (HashMap Text JSONValue)
+omAddtional
+  = lens _omAddtional (\ s a -> s{_omAddtional = a}) .
+      _Coerce
+
+instance FromJSON OperationMetadata where
+        parseJSON
+          = withObject "OperationMetadata"
+              (\ o -> OperationMetadata' <$> (parseJSONObject o))
+
+instance ToJSON OperationMetadata where
+        toJSON = toJSON . _omAddtional
+
+-- | Response message for Instances.ListInstances.
+--
+-- /See:/ 'listInstancesResponse' smart constructor.
+data ListInstancesResponse =
+  ListInstancesResponse'
+    { _lirNextPageToken :: !(Maybe Text)
+    , _lirInstances     :: !(Maybe [Instance])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lirNextPageToken'
+--
+-- * 'lirInstances'
+listInstancesResponse
+    :: ListInstancesResponse
+listInstancesResponse =
+  ListInstancesResponse' {_lirNextPageToken = Nothing, _lirInstances = Nothing}
+
+
+-- | Continuation token for fetching the next page of results.
+lirNextPageToken :: Lens' ListInstancesResponse (Maybe Text)
+lirNextPageToken
+  = lens _lirNextPageToken
+      (\ s a -> s{_lirNextPageToken = a})
+
+-- | The instances belonging to the requested version.
+lirInstances :: Lens' ListInstancesResponse [Instance]
+lirInstances
+  = lens _lirInstances (\ s a -> s{_lirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListInstancesResponse where
+        parseJSON
+          = withObject "ListInstancesResponse"
+              (\ o ->
+                 ListInstancesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "instances" .!= mempty))
+
+instance ToJSON ListInstancesResponse where
+        toJSON ListInstancesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lirNextPageToken,
+                  ("instances" .=) <$> _lirInstances])
+
+-- | Metadata for the given google.longrunning.Operation.
+--
+-- /See:/ 'operationMetadataV1Alpha' smart constructor.
+data OperationMetadataV1Alpha =
+  OperationMetadataV1Alpha'
+    { _omvaEphemeralMessage      :: !(Maybe Text)
+    , _omvaInsertTime            :: !(Maybe DateTime')
+    , _omvaUser                  :: !(Maybe Text)
+    , _omvaMethod                :: !(Maybe Text)
+    , _omvaEndTime               :: !(Maybe DateTime')
+    , _omvaWarning               :: !(Maybe [Text])
+    , _omvaCreateVersionMetadata :: !(Maybe CreateVersionMetadataV1Alpha)
+    , _omvaTarget                :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationMetadataV1Alpha' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omvaEphemeralMessage'
+--
+-- * 'omvaInsertTime'
+--
+-- * 'omvaUser'
+--
+-- * 'omvaMethod'
+--
+-- * 'omvaEndTime'
+--
+-- * 'omvaWarning'
+--
+-- * 'omvaCreateVersionMetadata'
+--
+-- * 'omvaTarget'
+operationMetadataV1Alpha
+    :: OperationMetadataV1Alpha
+operationMetadataV1Alpha =
+  OperationMetadataV1Alpha'
+    { _omvaEphemeralMessage = Nothing
+    , _omvaInsertTime = Nothing
+    , _omvaUser = Nothing
+    , _omvaMethod = Nothing
+    , _omvaEndTime = Nothing
+    , _omvaWarning = Nothing
+    , _omvaCreateVersionMetadata = Nothing
+    , _omvaTarget = Nothing
+    }
+
+
+-- | Ephemeral message that may change every time the operation is polled.
+-- \'OutputOnly
+omvaEphemeralMessage :: Lens' OperationMetadataV1Alpha (Maybe Text)
+omvaEphemeralMessage
+  = lens _omvaEphemeralMessage
+      (\ s a -> s{_omvaEphemeralMessage = a})
+
+-- | Time that this operation was created.\'OutputOnly
+omvaInsertTime :: Lens' OperationMetadataV1Alpha (Maybe UTCTime)
+omvaInsertTime
+  = lens _omvaInsertTime
+      (\ s a -> s{_omvaInsertTime = a})
+      . mapping _DateTime
+
+-- | User who requested this operation.\'OutputOnly
+omvaUser :: Lens' OperationMetadataV1Alpha (Maybe Text)
+omvaUser = lens _omvaUser (\ s a -> s{_omvaUser = a})
+
+-- | API method that initiated this operation. Example:
+-- google.appengine.v1alpha.Versions.CreateVersion.\'OutputOnly
+omvaMethod :: Lens' OperationMetadataV1Alpha (Maybe Text)
+omvaMethod
+  = lens _omvaMethod (\ s a -> s{_omvaMethod = a})
+
+-- | Time that this operation completed.\'OutputOnly
+omvaEndTime :: Lens' OperationMetadataV1Alpha (Maybe UTCTime)
+omvaEndTime
+  = lens _omvaEndTime (\ s a -> s{_omvaEndTime = a}) .
+      mapping _DateTime
+
+-- | Durable messages that persist on every operation poll. \'OutputOnly
+omvaWarning :: Lens' OperationMetadataV1Alpha [Text]
+omvaWarning
+  = lens _omvaWarning (\ s a -> s{_omvaWarning = a}) .
+      _Default
+      . _Coerce
+
+omvaCreateVersionMetadata :: Lens' OperationMetadataV1Alpha (Maybe CreateVersionMetadataV1Alpha)
+omvaCreateVersionMetadata
+  = lens _omvaCreateVersionMetadata
+      (\ s a -> s{_omvaCreateVersionMetadata = a})
+
+-- | Name of the resource that this operation is acting on. Example:
+-- apps\/myapp\/services\/default.\'OutputOnly
+omvaTarget :: Lens' OperationMetadataV1Alpha (Maybe Text)
+omvaTarget
+  = lens _omvaTarget (\ s a -> s{_omvaTarget = a})
+
+instance FromJSON OperationMetadataV1Alpha where
+        parseJSON
+          = withObject "OperationMetadataV1Alpha"
+              (\ o ->
+                 OperationMetadataV1Alpha' <$>
+                   (o .:? "ephemeralMessage") <*> (o .:? "insertTime")
+                     <*> (o .:? "user")
+                     <*> (o .:? "method")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "warning" .!= mempty)
+                     <*> (o .:? "createVersionMetadata")
+                     <*> (o .:? "target"))
+
+instance ToJSON OperationMetadataV1Alpha where
+        toJSON OperationMetadataV1Alpha'{..}
+          = object
+              (catMaybes
+                 [("ephemeralMessage" .=) <$> _omvaEphemeralMessage,
+                  ("insertTime" .=) <$> _omvaInsertTime,
+                  ("user" .=) <$> _omvaUser,
+                  ("method" .=) <$> _omvaMethod,
+                  ("endTime" .=) <$> _omvaEndTime,
+                  ("warning" .=) <$> _omvaWarning,
+                  ("createVersionMetadata" .=) <$>
+                    _omvaCreateVersionMetadata,
+                  ("target" .=) <$> _omvaTarget])
+
+-- | Health checking configuration for VM instances. Unhealthy instances are
+-- killed and replaced with new instances.
+--
+-- /See:/ 'livenessCheck' smart constructor.
+data LivenessCheck =
+  LivenessCheck'
+    { _lcSuccessThreshold :: !(Maybe (Textual Word32))
+    , _lcFailureThreshold :: !(Maybe (Textual Word32))
+    , _lcPath             :: !(Maybe Text)
+    , _lcCheckInterval    :: !(Maybe GDuration)
+    , _lcHost             :: !(Maybe Text)
+    , _lcInitialDelay     :: !(Maybe GDuration)
+    , _lcTimeout          :: !(Maybe GDuration)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LivenessCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcSuccessThreshold'
+--
+-- * 'lcFailureThreshold'
+--
+-- * 'lcPath'
+--
+-- * 'lcCheckInterval'
+--
+-- * 'lcHost'
+--
+-- * 'lcInitialDelay'
+--
+-- * 'lcTimeout'
+livenessCheck
+    :: LivenessCheck
+livenessCheck =
+  LivenessCheck'
+    { _lcSuccessThreshold = Nothing
+    , _lcFailureThreshold = Nothing
+    , _lcPath = Nothing
+    , _lcCheckInterval = Nothing
+    , _lcHost = Nothing
+    , _lcInitialDelay = Nothing
+    , _lcTimeout = Nothing
+    }
+
+
+-- | Number of consecutive successful checks required before considering the
+-- VM healthy.
+lcSuccessThreshold :: Lens' LivenessCheck (Maybe Word32)
+lcSuccessThreshold
+  = lens _lcSuccessThreshold
+      (\ s a -> s{_lcSuccessThreshold = a})
+      . mapping _Coerce
+
+-- | Number of consecutive failed checks required before considering the VM
+-- unhealthy.
+lcFailureThreshold :: Lens' LivenessCheck (Maybe Word32)
+lcFailureThreshold
+  = lens _lcFailureThreshold
+      (\ s a -> s{_lcFailureThreshold = a})
+      . mapping _Coerce
+
+-- | The request path.
+lcPath :: Lens' LivenessCheck (Maybe Text)
+lcPath = lens _lcPath (\ s a -> s{_lcPath = a})
+
+-- | Interval between health checks.
+lcCheckInterval :: Lens' LivenessCheck (Maybe Scientific)
+lcCheckInterval
+  = lens _lcCheckInterval
+      (\ s a -> s{_lcCheckInterval = a})
+      . mapping _GDuration
+
+-- | Host header to send when performing a HTTP Liveness check. Example:
+-- \"myapp.appspot.com\"
+lcHost :: Lens' LivenessCheck (Maybe Text)
+lcHost = lens _lcHost (\ s a -> s{_lcHost = a})
+
+-- | The initial delay before starting to execute the checks.
+lcInitialDelay :: Lens' LivenessCheck (Maybe Scientific)
+lcInitialDelay
+  = lens _lcInitialDelay
+      (\ s a -> s{_lcInitialDelay = a})
+      . mapping _GDuration
+
+-- | Time before the check is considered failed.
+lcTimeout :: Lens' LivenessCheck (Maybe Scientific)
+lcTimeout
+  = lens _lcTimeout (\ s a -> s{_lcTimeout = a}) .
+      mapping _GDuration
+
+instance FromJSON LivenessCheck where
+        parseJSON
+          = withObject "LivenessCheck"
+              (\ o ->
+                 LivenessCheck' <$>
+                   (o .:? "successThreshold") <*>
+                     (o .:? "failureThreshold")
+                     <*> (o .:? "path")
+                     <*> (o .:? "checkInterval")
+                     <*> (o .:? "host")
+                     <*> (o .:? "initialDelay")
+                     <*> (o .:? "timeout"))
+
+instance ToJSON LivenessCheck where
+        toJSON LivenessCheck'{..}
+          = object
+              (catMaybes
+                 [("successThreshold" .=) <$> _lcSuccessThreshold,
+                  ("failureThreshold" .=) <$> _lcFailureThreshold,
+                  ("path" .=) <$> _lcPath,
+                  ("checkInterval" .=) <$> _lcCheckInterval,
+                  ("host" .=) <$> _lcHost,
+                  ("initialDelay" .=) <$> _lcInitialDelay,
+                  ("timeout" .=) <$> _lcTimeout])
+
+-- | Target scaling by request utilization. Only applicable in the App Engine
+-- flexible environment.
+--
+-- /See:/ 'requestUtilization' smart constructor.
+data RequestUtilization =
+  RequestUtilization'
+    { _ruTargetConcurrentRequests    :: !(Maybe (Textual Int32))
+    , _ruTargetRequestCountPerSecond :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RequestUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ruTargetConcurrentRequests'
+--
+-- * 'ruTargetRequestCountPerSecond'
+requestUtilization
+    :: RequestUtilization
+requestUtilization =
+  RequestUtilization'
+    { _ruTargetConcurrentRequests = Nothing
+    , _ruTargetRequestCountPerSecond = Nothing
+    }
+
+
+-- | Target number of concurrent requests.
+ruTargetConcurrentRequests :: Lens' RequestUtilization (Maybe Int32)
+ruTargetConcurrentRequests
+  = lens _ruTargetConcurrentRequests
+      (\ s a -> s{_ruTargetConcurrentRequests = a})
+      . mapping _Coerce
+
+-- | Target requests per second.
+ruTargetRequestCountPerSecond :: Lens' RequestUtilization (Maybe Int32)
+ruTargetRequestCountPerSecond
+  = lens _ruTargetRequestCountPerSecond
+      (\ s a -> s{_ruTargetRequestCountPerSecond = a})
+      . mapping _Coerce
+
+instance FromJSON RequestUtilization where
+        parseJSON
+          = withObject "RequestUtilization"
+              (\ o ->
+                 RequestUtilization' <$>
+                   (o .:? "targetConcurrentRequests") <*>
+                     (o .:? "targetRequestCountPerSecond"))
+
+instance ToJSON RequestUtilization where
+        toJSON RequestUtilization'{..}
+          = object
+              (catMaybes
+                 [("targetConcurrentRequests" .=) <$>
+                    _ruTargetConcurrentRequests,
+                  ("targetRequestCountPerSecond" .=) <$>
+                    _ruTargetRequestCountPerSecond])
+
+-- | Request message for \'Applications.RepairApplication\'.
+--
+-- /See:/ 'repairApplicationRequest' smart constructor.
+data RepairApplicationRequest =
+  RepairApplicationRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RepairApplicationRequest' with the minimum fields required to make a request.
+--
+repairApplicationRequest
+    :: RepairApplicationRequest
+repairApplicationRequest = RepairApplicationRequest'
+
+
+instance FromJSON RepairApplicationRequest where
+        parseJSON
+          = withObject "RepairApplicationRequest"
+              (\ o -> pure RepairApplicationRequest')
+
+instance ToJSON RepairApplicationRequest where
+        toJSON = const emptyObject
+
+-- | The normal response of the operation in case of success. If the original
+-- method returns no data on success, such as Delete, the response is
+-- google.protobuf.Empty. If the original method is standard
+-- Get\/Create\/Update, the response should be the resource. For other
+-- methods, the response should have the type XxxResponse, where Xxx is the
+-- original method name. For example, if the original method name is
+-- TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
+--
+-- /See:/ 'operationResponse' smart constructor.
+newtype OperationResponse =
+  OperationResponse'
+    { _orAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'orAddtional'
+operationResponse
+    :: HashMap Text JSONValue -- ^ 'orAddtional'
+    -> OperationResponse
+operationResponse pOrAddtional_ =
+  OperationResponse' {_orAddtional = _Coerce # pOrAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)
+orAddtional
+  = lens _orAddtional (\ s a -> s{_orAddtional = a}) .
+      _Coerce
+
+instance FromJSON OperationResponse where
+        parseJSON
+          = withObject "OperationResponse"
+              (\ o -> OperationResponse' <$> (parseJSONObject o))
+
+instance ToJSON OperationResponse where
+        toJSON = toJSON . _orAddtional
+
+-- | Metadata for the given google.longrunning.Operation during a
+-- google.appengine.v1beta.CreateVersionRequest.
+--
+-- /See:/ 'createVersionMetadataV1Beta' smart constructor.
+newtype CreateVersionMetadataV1Beta =
+  CreateVersionMetadataV1Beta'
+    { _cvmvbCloudBuildId :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateVersionMetadataV1Beta' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvmvbCloudBuildId'
+createVersionMetadataV1Beta
+    :: CreateVersionMetadataV1Beta
+createVersionMetadataV1Beta =
+  CreateVersionMetadataV1Beta' {_cvmvbCloudBuildId = Nothing}
+
+
+-- | The Cloud Build ID if one was created as part of the version create.
+-- \'OutputOnly
+cvmvbCloudBuildId :: Lens' CreateVersionMetadataV1Beta (Maybe Text)
+cvmvbCloudBuildId
+  = lens _cvmvbCloudBuildId
+      (\ s a -> s{_cvmvbCloudBuildId = a})
+
+instance FromJSON CreateVersionMetadataV1Beta where
+        parseJSON
+          = withObject "CreateVersionMetadataV1Beta"
+              (\ o ->
+                 CreateVersionMetadataV1Beta' <$>
+                   (o .:? "cloudBuildId"))
+
+instance ToJSON CreateVersionMetadataV1Beta where
+        toJSON CreateVersionMetadataV1Beta'{..}
+          = object
+              (catMaybes
+                 [("cloudBuildId" .=) <$> _cvmvbCloudBuildId])
+
+-- | Response message for DomainMappings.ListDomainMappings.
+--
+-- /See:/ 'listDomainMAppingsResponse' smart constructor.
+data ListDomainMAppingsResponse =
+  ListDomainMAppingsResponse'
+    { _ldmarDomainMAppings :: !(Maybe [DomainMApping])
+    , _ldmarNextPageToken  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListDomainMAppingsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ldmarDomainMAppings'
+--
+-- * 'ldmarNextPageToken'
+listDomainMAppingsResponse
+    :: ListDomainMAppingsResponse
+listDomainMAppingsResponse =
+  ListDomainMAppingsResponse'
+    {_ldmarDomainMAppings = Nothing, _ldmarNextPageToken = Nothing}
+
+
+-- | The domain mappings for the application.
+ldmarDomainMAppings :: Lens' ListDomainMAppingsResponse [DomainMApping]
+ldmarDomainMAppings
+  = lens _ldmarDomainMAppings
+      (\ s a -> s{_ldmarDomainMAppings = a})
+      . _Default
+      . _Coerce
+
+-- | Continuation token for fetching the next page of results.
+ldmarNextPageToken :: Lens' ListDomainMAppingsResponse (Maybe Text)
+ldmarNextPageToken
+  = lens _ldmarNextPageToken
+      (\ s a -> s{_ldmarNextPageToken = a})
+
+instance FromJSON ListDomainMAppingsResponse where
+        parseJSON
+          = withObject "ListDomainMAppingsResponse"
+              (\ o ->
+                 ListDomainMAppingsResponse' <$>
+                   (o .:? "domainMappings" .!= mempty) <*>
+                     (o .:? "nextPageToken"))
+
+instance ToJSON ListDomainMAppingsResponse where
+        toJSON ListDomainMAppingsResponse'{..}
+          = object
+              (catMaybes
+                 [("domainMappings" .=) <$> _ldmarDomainMAppings,
+                  ("nextPageToken" .=) <$> _ldmarNextPageToken])
+
+-- | Scheduler settings for standard environment.
+--
+-- /See:/ 'standardSchedulerSettings' smart constructor.
+data StandardSchedulerSettings =
+  StandardSchedulerSettings'
+    { _sssTargetCPUUtilization        :: !(Maybe (Textual Double))
+    , _sssMinInstances                :: !(Maybe (Textual Int32))
+    , _sssMaxInstances                :: !(Maybe (Textual Int32))
+    , _sssTargetThroughputUtilization :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StandardSchedulerSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sssTargetCPUUtilization'
+--
+-- * 'sssMinInstances'
+--
+-- * 'sssMaxInstances'
+--
+-- * 'sssTargetThroughputUtilization'
+standardSchedulerSettings
+    :: StandardSchedulerSettings
+standardSchedulerSettings =
+  StandardSchedulerSettings'
+    { _sssTargetCPUUtilization = Nothing
+    , _sssMinInstances = Nothing
+    , _sssMaxInstances = Nothing
+    , _sssTargetThroughputUtilization = Nothing
+    }
+
+
+-- | Target CPU utilization ratio to maintain when scaling.
+sssTargetCPUUtilization :: Lens' StandardSchedulerSettings (Maybe Double)
+sssTargetCPUUtilization
+  = lens _sssTargetCPUUtilization
+      (\ s a -> s{_sssTargetCPUUtilization = a})
+      . mapping _Coerce
+
+-- | Minimum number of instances to run for this version. Set to zero to
+-- disable min_instances configuration.
+sssMinInstances :: Lens' StandardSchedulerSettings (Maybe Int32)
+sssMinInstances
+  = lens _sssMinInstances
+      (\ s a -> s{_sssMinInstances = a})
+      . mapping _Coerce
+
+-- | Maximum number of instances to run for this version. Set to zero to
+-- disable max_instances configuration.
+sssMaxInstances :: Lens' StandardSchedulerSettings (Maybe Int32)
+sssMaxInstances
+  = lens _sssMaxInstances
+      (\ s a -> s{_sssMaxInstances = a})
+      . mapping _Coerce
+
+-- | Target throughput utilization ratio to maintain when scaling
+sssTargetThroughputUtilization :: Lens' StandardSchedulerSettings (Maybe Double)
+sssTargetThroughputUtilization
+  = lens _sssTargetThroughputUtilization
+      (\ s a -> s{_sssTargetThroughputUtilization = a})
+      . mapping _Coerce
+
+instance FromJSON StandardSchedulerSettings where
+        parseJSON
+          = withObject "StandardSchedulerSettings"
+              (\ o ->
+                 StandardSchedulerSettings' <$>
+                   (o .:? "targetCpuUtilization") <*>
+                     (o .:? "minInstances")
+                     <*> (o .:? "maxInstances")
+                     <*> (o .:? "targetThroughputUtilization"))
+
+instance ToJSON StandardSchedulerSettings where
+        toJSON StandardSchedulerSettings'{..}
+          = object
+              (catMaybes
+                 [("targetCpuUtilization" .=) <$>
+                    _sssTargetCPUUtilization,
+                  ("minInstances" .=) <$> _sssMinInstances,
+                  ("maxInstances" .=) <$> _sssMaxInstances,
+                  ("targetThroughputUtilization" .=) <$>
+                    _sssTargetThroughputUtilization])
+
+-- | Docker image that is used to create a container and start a VM instance
+-- for the version that you deploy. Only applicable for instances running
+-- in the App Engine flexible environment.
+--
+-- /See:/ 'containerInfo' smart constructor.
+newtype ContainerInfo =
+  ContainerInfo'
+    { _ciImage :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ContainerInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciImage'
+containerInfo
+    :: ContainerInfo
+containerInfo = ContainerInfo' {_ciImage = Nothing}
+
+
+-- | URI to the hosted container image in Google Container Registry. The URI
+-- must be fully qualified and include a tag or digest. Examples:
+-- \"gcr.io\/my-project\/image:tag\" or
+-- \"gcr.io\/my-project\/image\'digest\"
+ciImage :: Lens' ContainerInfo (Maybe Text)
+ciImage = lens _ciImage (\ s a -> s{_ciImage = a})
+
+instance FromJSON ContainerInfo where
+        parseJSON
+          = withObject "ContainerInfo"
+              (\ o -> ContainerInfo' <$> (o .:? "image"))
+
+instance ToJSON ContainerInfo where
+        toJSON ContainerInfo'{..}
+          = object (catMaybes [("image" .=) <$> _ciImage])
+
+-- | An Instance resource is the computing unit that App Engine uses to
+-- automatically scale an application.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance =
+  Instance'
+    { _iMemoryUsage      :: !(Maybe (Textual Int64))
+    , _iVMStatus         :: !(Maybe Text)
+    , _iVMZoneName       :: !(Maybe Text)
+    , _iVMIP             :: !(Maybe Text)
+    , _iStartTime        :: !(Maybe DateTime')
+    , _iVMId             :: !(Maybe Text)
+    , _iAvailability     :: !(Maybe InstanceAvailability)
+    , _iVMName           :: !(Maybe Text)
+    , _iName             :: !(Maybe Text)
+    , _iVMDebugEnabled   :: !(Maybe Bool)
+    , _iRequests         :: !(Maybe (Textual Int32))
+    , _iQps              :: !(Maybe (Textual Double))
+    , _iId               :: !(Maybe Text)
+    , _iErrors           :: !(Maybe (Textual Int32))
+    , _iAverageLatency   :: !(Maybe (Textual Int32))
+    , _iAppEngineRelease :: !(Maybe Text)
+    }
+  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:
+--
+-- * 'iMemoryUsage'
+--
+-- * 'iVMStatus'
+--
+-- * 'iVMZoneName'
+--
+-- * 'iVMIP'
+--
+-- * 'iStartTime'
+--
+-- * 'iVMId'
+--
+-- * 'iAvailability'
+--
+-- * 'iVMName'
+--
+-- * 'iName'
+--
+-- * 'iVMDebugEnabled'
+--
+-- * 'iRequests'
+--
+-- * 'iQps'
+--
+-- * 'iId'
+--
+-- * 'iErrors'
+--
+-- * 'iAverageLatency'
+--
+-- * 'iAppEngineRelease'
+instance'
+    :: Instance
+instance' =
+  Instance'
+    { _iMemoryUsage = Nothing
+    , _iVMStatus = Nothing
+    , _iVMZoneName = Nothing
+    , _iVMIP = Nothing
+    , _iStartTime = Nothing
+    , _iVMId = Nothing
+    , _iAvailability = Nothing
+    , _iVMName = Nothing
+    , _iName = Nothing
+    , _iVMDebugEnabled = Nothing
+    , _iRequests = Nothing
+    , _iQps = Nothing
+    , _iId = Nothing
+    , _iErrors = Nothing
+    , _iAverageLatency = Nothing
+    , _iAppEngineRelease = Nothing
+    }
+
+
+-- | Total memory in use (bytes).\'OutputOnly
+iMemoryUsage :: Lens' Instance (Maybe Int64)
+iMemoryUsage
+  = lens _iMemoryUsage (\ s a -> s{_iMemoryUsage = a})
+      . mapping _Coerce
+
+-- | Status of the virtual machine where this instance lives. Only applicable
+-- for instances in App Engine flexible environment.\'OutputOnly
+iVMStatus :: Lens' Instance (Maybe Text)
+iVMStatus
+  = lens _iVMStatus (\ s a -> s{_iVMStatus = a})
+
+-- | Zone where the virtual machine is located. Only applicable for instances
+-- in App Engine flexible environment.\'OutputOnly
+iVMZoneName :: Lens' Instance (Maybe Text)
+iVMZoneName
+  = lens _iVMZoneName (\ s a -> s{_iVMZoneName = a})
+
+-- | The IP address of this instance. Only applicable for instances in App
+-- Engine flexible environment.\'OutputOnly
+iVMIP :: Lens' Instance (Maybe Text)
+iVMIP = lens _iVMIP (\ s a -> s{_iVMIP = a})
+
+-- | Time that this instance was started.\'OutputOnly
+iStartTime :: Lens' Instance (Maybe UTCTime)
+iStartTime
+  = lens _iStartTime (\ s a -> s{_iStartTime = a}) .
+      mapping _DateTime
+
+-- | Virtual machine ID of this instance. Only applicable for instances in
+-- App Engine flexible environment.\'OutputOnly
+iVMId :: Lens' Instance (Maybe Text)
+iVMId = lens _iVMId (\ s a -> s{_iVMId = a})
+
+-- | Availability of the instance.\'OutputOnly
+iAvailability :: Lens' Instance (Maybe InstanceAvailability)
+iAvailability
+  = lens _iAvailability
+      (\ s a -> s{_iAvailability = a})
+
+-- | Name of the virtual machine where this instance lives. Only applicable
+-- for instances in App Engine flexible environment.\'OutputOnly
+iVMName :: Lens' Instance (Maybe Text)
+iVMName = lens _iVMName (\ s a -> s{_iVMName = a})
+
+-- | Full path to the Instance resource in the API. Example:
+-- apps\/myapp\/services\/default\/versions\/v1\/instances\/instance-1.\'OutputOnly
+iName :: Lens' Instance (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | Whether this instance is in debug mode. Only applicable for instances in
+-- App Engine flexible environment.\'OutputOnly
+iVMDebugEnabled :: Lens' Instance (Maybe Bool)
+iVMDebugEnabled
+  = lens _iVMDebugEnabled
+      (\ s a -> s{_iVMDebugEnabled = a})
+
+-- | Number of requests since this instance was started.\'OutputOnly
+iRequests :: Lens' Instance (Maybe Int32)
+iRequests
+  = lens _iRequests (\ s a -> s{_iRequests = a}) .
+      mapping _Coerce
+
+-- | Average queries per second (QPS) over the last minute.\'OutputOnly
+iQps :: Lens' Instance (Maybe Double)
+iQps
+  = lens _iQps (\ s a -> s{_iQps = a}) .
+      mapping _Coerce
+
+-- | Relative name of the instance within the version. Example:
+-- instance-1.\'OutputOnly
+iId :: Lens' Instance (Maybe Text)
+iId = lens _iId (\ s a -> s{_iId = a})
+
+-- | Number of errors since this instance was started.\'OutputOnly
+iErrors :: Lens' Instance (Maybe Int32)
+iErrors
+  = lens _iErrors (\ s a -> s{_iErrors = a}) .
+      mapping _Coerce
+
+-- | Average latency (ms) over the last minute.\'OutputOnly
+iAverageLatency :: Lens' Instance (Maybe Int32)
+iAverageLatency
+  = lens _iAverageLatency
+      (\ s a -> s{_iAverageLatency = a})
+      . mapping _Coerce
+
+-- | App Engine release this instance is running on.\'OutputOnly
+iAppEngineRelease :: Lens' Instance (Maybe Text)
+iAppEngineRelease
+  = lens _iAppEngineRelease
+      (\ s a -> s{_iAppEngineRelease = a})
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ o ->
+                 Instance' <$>
+                   (o .:? "memoryUsage") <*> (o .:? "vmStatus") <*>
+                     (o .:? "vmZoneName")
+                     <*> (o .:? "vmIp")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "vmId")
+                     <*> (o .:? "availability")
+                     <*> (o .:? "vmName")
+                     <*> (o .:? "name")
+                     <*> (o .:? "vmDebugEnabled")
+                     <*> (o .:? "requests")
+                     <*> (o .:? "qps")
+                     <*> (o .:? "id")
+                     <*> (o .:? "errors")
+                     <*> (o .:? "averageLatency")
+                     <*> (o .:? "appEngineRelease"))
+
+instance ToJSON Instance where
+        toJSON Instance'{..}
+          = object
+              (catMaybes
+                 [("memoryUsage" .=) <$> _iMemoryUsage,
+                  ("vmStatus" .=) <$> _iVMStatus,
+                  ("vmZoneName" .=) <$> _iVMZoneName,
+                  ("vmIp" .=) <$> _iVMIP,
+                  ("startTime" .=) <$> _iStartTime,
+                  ("vmId" .=) <$> _iVMId,
+                  ("availability" .=) <$> _iAvailability,
+                  ("vmName" .=) <$> _iVMName, ("name" .=) <$> _iName,
+                  ("vmDebugEnabled" .=) <$> _iVMDebugEnabled,
+                  ("requests" .=) <$> _iRequests, ("qps" .=) <$> _iQps,
+                  ("id" .=) <$> _iId, ("errors" .=) <$> _iErrors,
+                  ("averageLatency" .=) <$> _iAverageLatency,
+                  ("appEngineRelease" .=) <$> _iAppEngineRelease])
+
+-- | SSL configuration for a DomainMapping resource.
+--
+-- /See:/ 'sslSettings' smart constructor.
+data SSLSettings =
+  SSLSettings'
+    { _ssSSLManagementType           :: !(Maybe SSLSettingsSSLManagementType)
+    , _ssCertificateId               :: !(Maybe Text)
+    , _ssPendingManagedCertificateId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SSLSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssSSLManagementType'
+--
+-- * 'ssCertificateId'
+--
+-- * 'ssPendingManagedCertificateId'
+sslSettings
+    :: SSLSettings
+sslSettings =
+  SSLSettings'
+    { _ssSSLManagementType = Nothing
+    , _ssCertificateId = Nothing
+    , _ssPendingManagedCertificateId = Nothing
+    }
+
+
+-- | SSL management type for this domain. If AUTOMATIC, a managed certificate
+-- is automatically provisioned. If MANUAL, certificate_id must be manually
+-- specified in order to configure SSL for this domain.
+ssSSLManagementType :: Lens' SSLSettings (Maybe SSLSettingsSSLManagementType)
+ssSSLManagementType
+  = lens _ssSSLManagementType
+      (\ s a -> s{_ssSSLManagementType = a})
+
+-- | ID of the AuthorizedCertificate resource configuring SSL for the
+-- application. Clearing this field will remove SSL support.By default, a
+-- managed certificate is automatically created for every domain mapping.
+-- To omit SSL support or to configure SSL manually, specify
+-- SslManagementType.MANUAL on a CREATE or UPDATE request. You must be
+-- authorized to administer the AuthorizedCertificate resource to manually
+-- map it to a DomainMapping resource. Example: 12345.
+ssCertificateId :: Lens' SSLSettings (Maybe Text)
+ssCertificateId
+  = lens _ssCertificateId
+      (\ s a -> s{_ssCertificateId = a})
+
+-- | ID of the managed AuthorizedCertificate resource currently being
+-- provisioned, if applicable. Until the new managed certificate has been
+-- successfully provisioned, the previous SSL state will be preserved. Once
+-- the provisioning process completes, the certificate_id field will
+-- reflect the new managed certificate and this field will be left empty.
+-- To remove SSL support while there is still a pending managed
+-- certificate, clear the certificate_id field with an
+-- UpdateDomainMappingRequest.\'OutputOnly
+ssPendingManagedCertificateId :: Lens' SSLSettings (Maybe Text)
+ssPendingManagedCertificateId
+  = lens _ssPendingManagedCertificateId
+      (\ s a -> s{_ssPendingManagedCertificateId = a})
+
+instance FromJSON SSLSettings where
+        parseJSON
+          = withObject "SSLSettings"
+              (\ o ->
+                 SSLSettings' <$>
+                   (o .:? "sslManagementType") <*>
+                     (o .:? "certificateId")
+                     <*> (o .:? "pendingManagedCertificateId"))
+
+instance ToJSON SSLSettings where
+        toJSON SSLSettings'{..}
+          = object
+              (catMaybes
+                 [("sslManagementType" .=) <$> _ssSSLManagementType,
+                  ("certificateId" .=) <$> _ssCertificateId,
+                  ("pendingManagedCertificateId" .=) <$>
+                    _ssPendingManagedCertificateId])
+
+-- | Code and application artifacts used to deploy a version to App Engine.
+--
+-- /See:/ 'deployment' smart constructor.
+data Deployment =
+  Deployment'
+    { _dZip               :: !(Maybe ZipInfo)
+    , _dCloudBuildOptions :: !(Maybe CloudBuildOptions)
+    , _dContainer         :: !(Maybe ContainerInfo)
+    , _dFiles             :: !(Maybe DeploymentFiles)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Deployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dZip'
+--
+-- * 'dCloudBuildOptions'
+--
+-- * 'dContainer'
+--
+-- * 'dFiles'
+deployment
+    :: Deployment
+deployment =
+  Deployment'
+    { _dZip = Nothing
+    , _dCloudBuildOptions = Nothing
+    , _dContainer = Nothing
+    , _dFiles = Nothing
+    }
+
 
 -- | The zip file for this deployment, if this is a zip deployment.
 dZip :: Lens' Deployment (Maybe ZipInfo)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Create.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Create.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Create.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Create.hs
@@ -64,7 +64,8 @@
 -- | Uploads the specified SSL certificate.
 --
 -- /See:/ 'appsAuthorizedCertificatesCreate' smart constructor.
-data AppsAuthorizedCertificatesCreate = AppsAuthorizedCertificatesCreate'
+data AppsAuthorizedCertificatesCreate =
+  AppsAuthorizedCertificatesCreate'
     { _aaccXgafv          :: !(Maybe Xgafv)
     , _aaccUploadProtocol :: !(Maybe Text)
     , _aaccAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _aaccPayload        :: !AuthorizedCertificate
     , _aaccAppsId         :: !Text
     , _aaccCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedCertificatesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'aaccAppsId'
     -> AppsAuthorizedCertificatesCreate
 appsAuthorizedCertificatesCreate pAaccPayload_ pAaccAppsId_ =
-    AppsAuthorizedCertificatesCreate'
+  AppsAuthorizedCertificatesCreate'
     { _aaccXgafv = Nothing
     , _aaccUploadProtocol = Nothing
     , _aaccAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _aaccCallback = Nothing
     }
 
+
 -- | V1 error format.
 aaccXgafv :: Lens' AppsAuthorizedCertificatesCreate (Maybe Xgafv)
 aaccXgafv
@@ -146,7 +150,8 @@
   = lens _aaccCallback (\ s a -> s{_aaccCallback = a})
 
 instance GoogleRequest
-         AppsAuthorizedCertificatesCreate where
+           AppsAuthorizedCertificatesCreate
+         where
         type Rs AppsAuthorizedCertificatesCreate =
              AuthorizedCertificate
         type Scopes AppsAuthorizedCertificatesCreate =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Delete.hs
@@ -63,7 +63,8 @@
 -- | Deletes the specified SSL certificate.
 --
 -- /See:/ 'appsAuthorizedCertificatesDelete' smart constructor.
-data AppsAuthorizedCertificatesDelete = AppsAuthorizedCertificatesDelete'
+data AppsAuthorizedCertificatesDelete =
+  AppsAuthorizedCertificatesDelete'
     { _aacdAuthorizedCertificatesId :: !Text
     , _aacdXgafv                    :: !(Maybe Xgafv)
     , _aacdUploadProtocol           :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _aacdUploadType               :: !(Maybe Text)
     , _aacdAppsId                   :: !Text
     , _aacdCallback                 :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedCertificatesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'aacdAppsId'
     -> AppsAuthorizedCertificatesDelete
 appsAuthorizedCertificatesDelete pAacdAuthorizedCertificatesId_ pAacdAppsId_ =
-    AppsAuthorizedCertificatesDelete'
+  AppsAuthorizedCertificatesDelete'
     { _aacdAuthorizedCertificatesId = pAacdAuthorizedCertificatesId_
     , _aacdXgafv = Nothing
     , _aacdUploadProtocol = Nothing
@@ -105,6 +108,7 @@
     , _aacdCallback = Nothing
     }
 
+
 -- | Part of \`name\`. See documentation of \`appsId\`.
 aacdAuthorizedCertificatesId :: Lens' AppsAuthorizedCertificatesDelete Text
 aacdAuthorizedCertificatesId
@@ -146,7 +150,8 @@
   = lens _aacdCallback (\ s a -> s{_aacdCallback = a})
 
 instance GoogleRequest
-         AppsAuthorizedCertificatesDelete where
+           AppsAuthorizedCertificatesDelete
+         where
         type Rs AppsAuthorizedCertificatesDelete = Empty
         type Scopes AppsAuthorizedCertificatesDelete =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Get.hs
@@ -66,7 +66,8 @@
 -- | Gets the specified SSL certificate.
 --
 -- /See:/ 'appsAuthorizedCertificatesGet' smart constructor.
-data AppsAuthorizedCertificatesGet = AppsAuthorizedCertificatesGet'
+data AppsAuthorizedCertificatesGet =
+  AppsAuthorizedCertificatesGet'
     { _aacgAuthorizedCertificatesId :: !Text
     , _aacgXgafv                    :: !(Maybe Xgafv)
     , _aacgUploadProtocol           :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _aacgAppsId                   :: !Text
     , _aacgView                     :: !(Maybe Text)
     , _aacgCallback                 :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedCertificatesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -101,7 +104,7 @@
     -> Text -- ^ 'aacgAppsId'
     -> AppsAuthorizedCertificatesGet
 appsAuthorizedCertificatesGet pAacgAuthorizedCertificatesId_ pAacgAppsId_ =
-    AppsAuthorizedCertificatesGet'
+  AppsAuthorizedCertificatesGet'
     { _aacgAuthorizedCertificatesId = pAacgAuthorizedCertificatesId_
     , _aacgXgafv = Nothing
     , _aacgUploadProtocol = Nothing
@@ -111,6 +114,7 @@
     , _aacgView = Nothing
     , _aacgCallback = Nothing
     }
+
 
 -- | Part of \`name\`. See documentation of \`appsId\`.
 aacgAuthorizedCertificatesId :: Lens' AppsAuthorizedCertificatesGet Text
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/List.hs
@@ -68,7 +68,8 @@
 -- | Lists all SSL certificates the user is authorized to administer.
 --
 -- /See:/ 'appsAuthorizedCertificatesList' smart constructor.
-data AppsAuthorizedCertificatesList = AppsAuthorizedCertificatesList'
+data AppsAuthorizedCertificatesList =
+  AppsAuthorizedCertificatesList'
     { _aaclXgafv          :: !(Maybe Xgafv)
     , _aaclUploadProtocol :: !(Maybe Text)
     , _aaclAccessToken    :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _aaclPageToken      :: !(Maybe Text)
     , _aaclPageSize       :: !(Maybe (Textual Int32))
     , _aaclCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedCertificatesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     :: Text -- ^ 'aaclAppsId'
     -> AppsAuthorizedCertificatesList
 appsAuthorizedCertificatesList pAaclAppsId_ =
-    AppsAuthorizedCertificatesList'
+  AppsAuthorizedCertificatesList'
     { _aaclXgafv = Nothing
     , _aaclUploadProtocol = Nothing
     , _aaclAccessToken = Nothing
@@ -116,6 +119,7 @@
     , _aaclPageSize = Nothing
     , _aaclCallback = Nothing
     }
+
 
 -- | V1 error format.
 aaclXgafv :: Lens' AppsAuthorizedCertificatesList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedCertificates/Patch.hs
@@ -76,7 +76,8 @@
 -- also be updated.
 --
 -- /See:/ 'appsAuthorizedCertificatesPatch' smart constructor.
-data AppsAuthorizedCertificatesPatch = AppsAuthorizedCertificatesPatch'
+data AppsAuthorizedCertificatesPatch =
+  AppsAuthorizedCertificatesPatch'
     { _aacpAuthorizedCertificatesId :: !Text
     , _aacpXgafv                    :: !(Maybe Xgafv)
     , _aacpUploadProtocol           :: !(Maybe Text)
@@ -86,8 +87,10 @@
     , _aacpPayload                  :: !AuthorizedCertificate
     , _aacpAppsId                   :: !Text
     , _aacpCallback                 :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedCertificatesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -115,7 +118,7 @@
     -> Text -- ^ 'aacpAppsId'
     -> AppsAuthorizedCertificatesPatch
 appsAuthorizedCertificatesPatch pAacpAuthorizedCertificatesId_ pAacpPayload_ pAacpAppsId_ =
-    AppsAuthorizedCertificatesPatch'
+  AppsAuthorizedCertificatesPatch'
     { _aacpAuthorizedCertificatesId = pAacpAuthorizedCertificatesId_
     , _aacpXgafv = Nothing
     , _aacpUploadProtocol = Nothing
@@ -127,6 +130,7 @@
     , _aacpCallback = Nothing
     }
 
+
 -- | Part of \`name\`. See documentation of \`appsId\`.
 aacpAuthorizedCertificatesId :: Lens' AppsAuthorizedCertificatesPatch Text
 aacpAuthorizedCertificatesId
@@ -180,7 +184,8 @@
   = lens _aacpCallback (\ s a -> s{_aacpCallback = a})
 
 instance GoogleRequest
-         AppsAuthorizedCertificatesPatch where
+           AppsAuthorizedCertificatesPatch
+         where
         type Rs AppsAuthorizedCertificatesPatch =
              AuthorizedCertificate
         type Scopes AppsAuthorizedCertificatesPatch =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedDomains/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedDomains/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedDomains/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/AuthorizedDomains/List.hs
@@ -66,7 +66,8 @@
 -- | Lists all domains the user is authorized to administer.
 --
 -- /See:/ 'appsAuthorizedDomainsList' smart constructor.
-data AppsAuthorizedDomainsList = AppsAuthorizedDomainsList'
+data AppsAuthorizedDomainsList =
+  AppsAuthorizedDomainsList'
     { _aadlXgafv          :: !(Maybe Xgafv)
     , _aadlUploadProtocol :: !(Maybe Text)
     , _aadlAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _aadlPageToken      :: !(Maybe Text)
     , _aadlPageSize       :: !(Maybe (Textual Int32))
     , _aadlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsAuthorizedDomainsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,7 +103,7 @@
     :: Text -- ^ 'aadlAppsId'
     -> AppsAuthorizedDomainsList
 appsAuthorizedDomainsList pAadlAppsId_ =
-    AppsAuthorizedDomainsList'
+  AppsAuthorizedDomainsList'
     { _aadlXgafv = Nothing
     , _aadlUploadProtocol = Nothing
     , _aadlAccessToken = Nothing
@@ -110,6 +113,7 @@
     , _aadlPageSize = Nothing
     , _aadlCallback = Nothing
     }
+
 
 -- | V1 error format.
 aadlXgafv :: Lens' AppsAuthorizedDomainsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Create.hs b/gen/Network/Google/Resource/AppEngine/Apps/Create.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Create.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Create.hs
@@ -72,15 +72,18 @@
 -- (https:\/\/cloud.google.com\/appengine\/docs\/standard\/python\/console\/).
 --
 -- /See:/ 'appsCreate' smart constructor.
-data AppsCreate = AppsCreate'
+data AppsCreate =
+  AppsCreate'
     { _acXgafv          :: !(Maybe Xgafv)
     , _acUploadProtocol :: !(Maybe Text)
     , _acAccessToken    :: !(Maybe Text)
     , _acUploadType     :: !(Maybe Text)
     , _acPayload        :: !Application
     , _acCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,7 +103,7 @@
     :: Application -- ^ 'acPayload'
     -> AppsCreate
 appsCreate pAcPayload_ =
-    AppsCreate'
+  AppsCreate'
     { _acXgafv = Nothing
     , _acUploadProtocol = Nothing
     , _acAccessToken = Nothing
@@ -108,6 +111,7 @@
     , _acPayload = pAcPayload_
     , _acCallback = Nothing
     }
+
 
 -- | V1 error format.
 acXgafv :: Lens' AppsCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Create.hs b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Create.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Create.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Create.hs
@@ -70,7 +70,8 @@
 -- authorized domains, see AuthorizedDomains.ListAuthorizedDomains.
 --
 -- /See:/ 'appsDomainMAppingsCreate' smart constructor.
-data AppsDomainMAppingsCreate = AppsDomainMAppingsCreate'
+data AppsDomainMAppingsCreate =
+  AppsDomainMAppingsCreate'
     { _admacXgafv            :: !(Maybe Xgafv)
     , _admacUploadProtocol   :: !(Maybe Text)
     , _admacAccessToken      :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _admacOverrideStrategy :: !(Maybe Text)
     , _admacAppsId           :: !Text
     , _admacCallback         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsDomainMAppingsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     -> Text -- ^ 'admacAppsId'
     -> AppsDomainMAppingsCreate
 appsDomainMAppingsCreate pAdmacPayload_ pAdmacAppsId_ =
-    AppsDomainMAppingsCreate'
+  AppsDomainMAppingsCreate'
     { _admacXgafv = Nothing
     , _admacUploadProtocol = Nothing
     , _admacAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _admacAppsId = pAdmacAppsId_
     , _admacCallback = Nothing
     }
+
 
 -- | V1 error format.
 admacXgafv :: Lens' AppsDomainMAppingsCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Delete.hs
@@ -67,7 +67,8 @@
 -- resource.
 --
 -- /See:/ 'appsDomainMAppingsDelete' smart constructor.
-data AppsDomainMAppingsDelete = AppsDomainMAppingsDelete'
+data AppsDomainMAppingsDelete =
+  AppsDomainMAppingsDelete'
     { _admadXgafv            :: !(Maybe Xgafv)
     , _admadUploadProtocol   :: !(Maybe Text)
     , _admadAccessToken      :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _admadAppsId           :: !Text
     , _admadDomainMAppingsId :: !Text
     , _admadCallback         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsDomainMAppingsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,7 +102,7 @@
     -> Text -- ^ 'admadDomainMAppingsId'
     -> AppsDomainMAppingsDelete
 appsDomainMAppingsDelete pAdmadAppsId_ pAdmadDomainMAppingsId_ =
-    AppsDomainMAppingsDelete'
+  AppsDomainMAppingsDelete'
     { _admadXgafv = Nothing
     , _admadUploadProtocol = Nothing
     , _admadAccessToken = Nothing
@@ -108,6 +111,7 @@
     , _admadDomainMAppingsId = pAdmadDomainMAppingsId_
     , _admadCallback = Nothing
     }
+
 
 -- | V1 error format.
 admadXgafv :: Lens' AppsDomainMAppingsDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Get.hs
@@ -63,7 +63,8 @@
 -- | Gets the specified domain mapping.
 --
 -- /See:/ 'appsDomainMAppingsGet' smart constructor.
-data AppsDomainMAppingsGet = AppsDomainMAppingsGet'
+data AppsDomainMAppingsGet =
+  AppsDomainMAppingsGet'
     { _admagXgafv            :: !(Maybe Xgafv)
     , _admagUploadProtocol   :: !(Maybe Text)
     , _admagAccessToken      :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _admagAppsId           :: !Text
     , _admagDomainMAppingsId :: !Text
     , _admagCallback         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsDomainMAppingsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'admagDomainMAppingsId'
     -> AppsDomainMAppingsGet
 appsDomainMAppingsGet pAdmagAppsId_ pAdmagDomainMAppingsId_ =
-    AppsDomainMAppingsGet'
+  AppsDomainMAppingsGet'
     { _admagXgafv = Nothing
     , _admagUploadProtocol = Nothing
     , _admagAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _admagDomainMAppingsId = pAdmagDomainMAppingsId_
     , _admagCallback = Nothing
     }
+
 
 -- | V1 error format.
 admagXgafv :: Lens' AppsDomainMAppingsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/List.hs
@@ -66,7 +66,8 @@
 -- | Lists the domain mappings on an application.
 --
 -- /See:/ 'appsDomainMAppingsList' smart constructor.
-data AppsDomainMAppingsList = AppsDomainMAppingsList'
+data AppsDomainMAppingsList =
+  AppsDomainMAppingsList'
     { _admalXgafv          :: !(Maybe Xgafv)
     , _admalUploadProtocol :: !(Maybe Text)
     , _admalAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _admalPageToken      :: !(Maybe Text)
     , _admalPageSize       :: !(Maybe (Textual Int32))
     , _admalCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsDomainMAppingsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,7 +103,7 @@
     :: Text -- ^ 'admalAppsId'
     -> AppsDomainMAppingsList
 appsDomainMAppingsList pAdmalAppsId_ =
-    AppsDomainMAppingsList'
+  AppsDomainMAppingsList'
     { _admalXgafv = Nothing
     , _admalUploadProtocol = Nothing
     , _admalAccessToken = Nothing
@@ -110,6 +113,7 @@
     , _admalPageSize = Nothing
     , _admalCallback = Nothing
     }
+
 
 -- | V1 error format.
 admalXgafv :: Lens' AppsDomainMAppingsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/DomainMAppings/Patch.hs
@@ -74,7 +74,8 @@
 -- the associated domain in order to update a DomainMapping resource.
 --
 -- /See:/ 'appsDomainMAppingsPatch' smart constructor.
-data AppsDomainMAppingsPatch = AppsDomainMAppingsPatch'
+data AppsDomainMAppingsPatch =
+  AppsDomainMAppingsPatch'
     { _admapXgafv            :: !(Maybe Xgafv)
     , _admapUploadProtocol   :: !(Maybe Text)
     , _admapUpdateMask       :: !(Maybe GFieldMask)
@@ -84,8 +85,10 @@
     , _admapAppsId           :: !Text
     , _admapDomainMAppingsId :: !Text
     , _admapCallback         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsDomainMAppingsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -113,7 +116,7 @@
     -> Text -- ^ 'admapDomainMAppingsId'
     -> AppsDomainMAppingsPatch
 appsDomainMAppingsPatch pAdmapPayload_ pAdmapAppsId_ pAdmapDomainMAppingsId_ =
-    AppsDomainMAppingsPatch'
+  AppsDomainMAppingsPatch'
     { _admapXgafv = Nothing
     , _admapUploadProtocol = Nothing
     , _admapUpdateMask = Nothing
@@ -124,6 +127,7 @@
     , _admapDomainMAppingsId = pAdmapDomainMAppingsId_
     , _admapCallback = Nothing
     }
+
 
 -- | V1 error format.
 admapXgafv :: Lens' AppsDomainMAppingsPatch (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/BatchUpdate.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/BatchUpdate.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/BatchUpdate.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/BatchUpdate.hs
@@ -73,7 +73,8 @@
 -- the list.
 --
 -- /See:/ 'appsFirewallIngressRulesBatchUpdate' smart constructor.
-data AppsFirewallIngressRulesBatchUpdate = AppsFirewallIngressRulesBatchUpdate'
+data AppsFirewallIngressRulesBatchUpdate =
+  AppsFirewallIngressRulesBatchUpdate'
     { _afirbuXgafv          :: !(Maybe Xgafv)
     , _afirbuUploadProtocol :: !(Maybe Text)
     , _afirbuAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _afirbuPayload        :: !BatchUpdateIngressRulesRequest
     , _afirbuAppsId         :: !Text
     , _afirbuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesBatchUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     -> Text -- ^ 'afirbuAppsId'
     -> AppsFirewallIngressRulesBatchUpdate
 appsFirewallIngressRulesBatchUpdate pAfirbuPayload_ pAfirbuAppsId_ =
-    AppsFirewallIngressRulesBatchUpdate'
+  AppsFirewallIngressRulesBatchUpdate'
     { _afirbuXgafv = Nothing
     , _afirbuUploadProtocol = Nothing
     , _afirbuAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _afirbuCallback = Nothing
     }
 
+
 -- | V1 error format.
 afirbuXgafv :: Lens' AppsFirewallIngressRulesBatchUpdate (Maybe Xgafv)
 afirbuXgafv
@@ -157,7 +161,8 @@
       (\ s a -> s{_afirbuCallback = a})
 
 instance GoogleRequest
-         AppsFirewallIngressRulesBatchUpdate where
+           AppsFirewallIngressRulesBatchUpdate
+         where
         type Rs AppsFirewallIngressRulesBatchUpdate =
              BatchUpdateIngressRulesResponse
         type Scopes AppsFirewallIngressRulesBatchUpdate =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Create.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Create.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Create.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Create.hs
@@ -65,7 +65,8 @@
 -- | Creates a firewall rule for the application.
 --
 -- /See:/ 'appsFirewallIngressRulesCreate' smart constructor.
-data AppsFirewallIngressRulesCreate = AppsFirewallIngressRulesCreate'
+data AppsFirewallIngressRulesCreate =
+  AppsFirewallIngressRulesCreate'
     { _afircXgafv          :: !(Maybe Xgafv)
     , _afircUploadProtocol :: !(Maybe Text)
     , _afircAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _afircPayload        :: !FirewallRule
     , _afircAppsId         :: !Text
     , _afircCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     -> Text -- ^ 'afircAppsId'
     -> AppsFirewallIngressRulesCreate
 appsFirewallIngressRulesCreate pAfircPayload_ pAfircAppsId_ =
-    AppsFirewallIngressRulesCreate'
+  AppsFirewallIngressRulesCreate'
     { _afircXgafv = Nothing
     , _afircUploadProtocol = Nothing
     , _afircAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _afircAppsId = pAfircAppsId_
     , _afircCallback = Nothing
     }
+
 
 -- | V1 error format.
 afircXgafv :: Lens' AppsFirewallIngressRulesCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Delete.hs
@@ -64,7 +64,8 @@
 -- | Deletes the specified firewall rule.
 --
 -- /See:/ 'appsFirewallIngressRulesDelete' smart constructor.
-data AppsFirewallIngressRulesDelete = AppsFirewallIngressRulesDelete'
+data AppsFirewallIngressRulesDelete =
+  AppsFirewallIngressRulesDelete'
     { _afirdXgafv          :: !(Maybe Xgafv)
     , _afirdUploadProtocol :: !(Maybe Text)
     , _afirdAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _afirdIngressRulesId :: !Text
     , _afirdAppsId         :: !Text
     , _afirdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'afirdAppsId'
     -> AppsFirewallIngressRulesDelete
 appsFirewallIngressRulesDelete pAfirdIngressRulesId_ pAfirdAppsId_ =
-    AppsFirewallIngressRulesDelete'
+  AppsFirewallIngressRulesDelete'
     { _afirdXgafv = Nothing
     , _afirdUploadProtocol = Nothing
     , _afirdAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _afirdAppsId = pAfirdAppsId_
     , _afirdCallback = Nothing
     }
+
 
 -- | V1 error format.
 afirdXgafv :: Lens' AppsFirewallIngressRulesDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Get.hs
@@ -64,7 +64,8 @@
 -- | Gets the specified firewall rule.
 --
 -- /See:/ 'appsFirewallIngressRulesGet' smart constructor.
-data AppsFirewallIngressRulesGet = AppsFirewallIngressRulesGet'
+data AppsFirewallIngressRulesGet =
+  AppsFirewallIngressRulesGet'
     { _afirgXgafv          :: !(Maybe Xgafv)
     , _afirgUploadProtocol :: !(Maybe Text)
     , _afirgAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _afirgIngressRulesId :: !Text
     , _afirgAppsId         :: !Text
     , _afirgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> Text -- ^ 'afirgAppsId'
     -> AppsFirewallIngressRulesGet
 appsFirewallIngressRulesGet pAfirgIngressRulesId_ pAfirgAppsId_ =
-    AppsFirewallIngressRulesGet'
+  AppsFirewallIngressRulesGet'
     { _afirgXgafv = Nothing
     , _afirgUploadProtocol = Nothing
     , _afirgAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _afirgAppsId = pAfirgAppsId_
     , _afirgCallback = Nothing
     }
+
 
 -- | V1 error format.
 afirgXgafv :: Lens' AppsFirewallIngressRulesGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/List.hs
@@ -69,7 +69,8 @@
 -- | Lists the firewall rules of an application.
 --
 -- /See:/ 'appsFirewallIngressRulesList' smart constructor.
-data AppsFirewallIngressRulesList = AppsFirewallIngressRulesList'
+data AppsFirewallIngressRulesList =
+  AppsFirewallIngressRulesList'
     { _afirlXgafv           :: !(Maybe Xgafv)
     , _afirlUploadProtocol  :: !(Maybe Text)
     , _afirlMatchingAddress :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _afirlPageToken       :: !(Maybe Text)
     , _afirlPageSize        :: !(Maybe (Textual Int32))
     , _afirlCallback        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,7 +109,7 @@
     :: Text -- ^ 'afirlAppsId'
     -> AppsFirewallIngressRulesList
 appsFirewallIngressRulesList pAfirlAppsId_ =
-    AppsFirewallIngressRulesList'
+  AppsFirewallIngressRulesList'
     { _afirlXgafv = Nothing
     , _afirlUploadProtocol = Nothing
     , _afirlMatchingAddress = Nothing
@@ -117,6 +120,7 @@
     , _afirlPageSize = Nothing
     , _afirlCallback = Nothing
     }
+
 
 -- | V1 error format.
 afirlXgafv :: Lens' AppsFirewallIngressRulesList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Firewall/IngressRules/Patch.hs
@@ -69,7 +69,8 @@
 -- | Updates the specified firewall rule.
 --
 -- /See:/ 'appsFirewallIngressRulesPatch' smart constructor.
-data AppsFirewallIngressRulesPatch = AppsFirewallIngressRulesPatch'
+data AppsFirewallIngressRulesPatch =
+  AppsFirewallIngressRulesPatch'
     { _afirpXgafv          :: !(Maybe Xgafv)
     , _afirpUploadProtocol :: !(Maybe Text)
     , _afirpUpdateMask     :: !(Maybe GFieldMask)
@@ -79,8 +80,10 @@
     , _afirpIngressRulesId :: !Text
     , _afirpAppsId         :: !Text
     , _afirpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsFirewallIngressRulesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -108,7 +111,7 @@
     -> Text -- ^ 'afirpAppsId'
     -> AppsFirewallIngressRulesPatch
 appsFirewallIngressRulesPatch pAfirpPayload_ pAfirpIngressRulesId_ pAfirpAppsId_ =
-    AppsFirewallIngressRulesPatch'
+  AppsFirewallIngressRulesPatch'
     { _afirpXgafv = Nothing
     , _afirpUploadProtocol = Nothing
     , _afirpUpdateMask = Nothing
@@ -119,6 +122,7 @@
     , _afirpAppsId = pAfirpAppsId_
     , _afirpCallback = Nothing
     }
+
 
 -- | V1 error format.
 afirpXgafv :: Lens' AppsFirewallIngressRulesPatch (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Get.hs
@@ -60,15 +60,18 @@
 -- | Gets information about an application.
 --
 -- /See:/ 'appsGet' smart constructor.
-data AppsGet = AppsGet'
+data AppsGet =
+  AppsGet'
     { _agXgafv          :: !(Maybe Xgafv)
     , _agUploadProtocol :: !(Maybe Text)
     , _agAccessToken    :: !(Maybe Text)
     , _agUploadType     :: !(Maybe Text)
     , _agAppsId         :: !Text
     , _agCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,7 +91,7 @@
     :: Text -- ^ 'agAppsId'
     -> AppsGet
 appsGet pAgAppsId_ =
-    AppsGet'
+  AppsGet'
     { _agXgafv = Nothing
     , _agUploadProtocol = Nothing
     , _agAccessToken = Nothing
@@ -96,6 +99,7 @@
     , _agAppsId = pAgAppsId_
     , _agCallback = Nothing
     }
+
 
 -- | V1 error format.
 agXgafv :: Lens' AppsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Locations/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Locations/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Locations/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Locations/Get.hs
@@ -63,7 +63,8 @@
 -- | Gets information about a location.
 --
 -- /See:/ 'appsLocationsGet' smart constructor.
-data AppsLocationsGet = AppsLocationsGet'
+data AppsLocationsGet =
+  AppsLocationsGet'
     { _algXgafv          :: !(Maybe Xgafv)
     , _algUploadProtocol :: !(Maybe Text)
     , _algAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _algAppsId         :: !Text
     , _algLocationsId    :: !Text
     , _algCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsLocationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'algLocationsId'
     -> AppsLocationsGet
 appsLocationsGet pAlgAppsId_ pAlgLocationsId_ =
-    AppsLocationsGet'
+  AppsLocationsGet'
     { _algXgafv = Nothing
     , _algUploadProtocol = Nothing
     , _algAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _algLocationsId = pAlgLocationsId_
     , _algCallback = Nothing
     }
+
 
 -- | V1 error format.
 algXgafv :: Lens' AppsLocationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Locations/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Locations/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Locations/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Locations/List.hs
@@ -68,7 +68,8 @@
 -- | Lists information about the supported locations for this service.
 --
 -- /See:/ 'appsLocationsList' smart constructor.
-data AppsLocationsList = AppsLocationsList'
+data AppsLocationsList =
+  AppsLocationsList'
     { _allXgafv          :: !(Maybe Xgafv)
     , _allUploadProtocol :: !(Maybe Text)
     , _allAccessToken    :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _allPageToken      :: !(Maybe Text)
     , _allPageSize       :: !(Maybe (Textual Int32))
     , _allCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsLocationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     :: Text -- ^ 'allAppsId'
     -> AppsLocationsList
 appsLocationsList pAllAppsId_ =
-    AppsLocationsList'
+  AppsLocationsList'
     { _allXgafv = Nothing
     , _allUploadProtocol = Nothing
     , _allAccessToken = Nothing
@@ -116,6 +119,7 @@
     , _allPageSize = Nothing
     , _allCallback = Nothing
     }
+
 
 -- | V1 error format.
 allXgafv :: Lens' AppsLocationsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Operations/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Operations/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Operations/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Operations/Get.hs
@@ -67,7 +67,8 @@
 -- API service.
 --
 -- /See:/ 'appsOperationsGet' smart constructor.
-data AppsOperationsGet = AppsOperationsGet'
+data AppsOperationsGet =
+  AppsOperationsGet'
     { _aogXgafv          :: !(Maybe Xgafv)
     , _aogUploadProtocol :: !(Maybe Text)
     , _aogAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _aogAppsId         :: !Text
     , _aogOperationsId   :: !Text
     , _aogCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,7 +102,7 @@
     -> Text -- ^ 'aogOperationsId'
     -> AppsOperationsGet
 appsOperationsGet pAogAppsId_ pAogOperationsId_ =
-    AppsOperationsGet'
+  AppsOperationsGet'
     { _aogXgafv = Nothing
     , _aogUploadProtocol = Nothing
     , _aogAccessToken = Nothing
@@ -108,6 +111,7 @@
     , _aogOperationsId = pAogOperationsId_
     , _aogCallback = Nothing
     }
+
 
 -- | V1 error format.
 aogXgafv :: Lens' AppsOperationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Operations/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Operations/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Operations/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Operations/List.hs
@@ -84,7 +84,8 @@
 -- the parent resource, without the operations collection id.
 --
 -- /See:/ 'appsOperationsList' smart constructor.
-data AppsOperationsList = AppsOperationsList'
+data AppsOperationsList =
+  AppsOperationsList'
     { _aolXgafv          :: !(Maybe Xgafv)
     , _aolUploadProtocol :: !(Maybe Text)
     , _aolAccessToken    :: !(Maybe Text)
@@ -94,8 +95,10 @@
     , _aolPageToken      :: !(Maybe Text)
     , _aolPageSize       :: !(Maybe (Textual Int32))
     , _aolCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -121,7 +124,7 @@
     :: Text -- ^ 'aolAppsId'
     -> AppsOperationsList
 appsOperationsList pAolAppsId_ =
-    AppsOperationsList'
+  AppsOperationsList'
     { _aolXgafv = Nothing
     , _aolUploadProtocol = Nothing
     , _aolAccessToken = Nothing
@@ -132,6 +135,7 @@
     , _aolPageSize = Nothing
     , _aolCallback = Nothing
     }
+
 
 -- | V1 error format.
 aolXgafv :: Lens' AppsOperationsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Patch.hs
@@ -71,7 +71,8 @@
 -- policy for the application.
 --
 -- /See:/ 'appsPatch' smart constructor.
-data AppsPatch = AppsPatch'
+data AppsPatch =
+  AppsPatch'
     { _apXgafv          :: !(Maybe Xgafv)
     , _apUploadProtocol :: !(Maybe Text)
     , _apUpdateMask     :: !(Maybe GFieldMask)
@@ -80,8 +81,10 @@
     , _apPayload        :: !Application
     , _apAppsId         :: !Text
     , _apCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,7 +109,7 @@
     -> Text -- ^ 'apAppsId'
     -> AppsPatch
 appsPatch pApPayload_ pApAppsId_ =
-    AppsPatch'
+  AppsPatch'
     { _apXgafv = Nothing
     , _apUploadProtocol = Nothing
     , _apUpdateMask = Nothing
@@ -116,6 +119,7 @@
     , _apAppsId = pApAppsId_
     , _apCallback = Nothing
     }
+
 
 -- | V1 error format.
 apXgafv :: Lens' AppsPatch (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Repair.hs b/gen/Network/Google/Resource/AppEngine/Apps/Repair.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Repair.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Repair.hs
@@ -24,6 +24,12 @@
 -- application, for example a Cloud Storage bucket or App Engine service
 -- account. Use this method if you receive an error message about a missing
 -- feature, for example, Error retrieving the App Engine service account.
+-- If you have deleted your App Engine service account, this will not be
+-- able to recreate it. Instead, you should attempt to use the IAM undelete
+-- API if possible at
+-- https:\/\/cloud.google.com\/iam\/reference\/rest\/v1\/projects.serviceAccounts\/undelete?apix_params=%7B\"name\"%3A\"projects%2F-%2FserviceAccounts%2Funique_id\"%2C\"resource\"%3A%7B%7D%7D
+-- . If the deletion was recent, the numeric ID can be found in the Cloud
+-- Console Activity Log.
 --
 -- /See:/ <https://cloud.google.com/appengine/docs/admin-api/ App Engine Admin API Reference> for @appengine.apps.repair@.
 module Network.Google.Resource.AppEngine.Apps.Repair
@@ -67,9 +73,16 @@
 -- application, for example a Cloud Storage bucket or App Engine service
 -- account. Use this method if you receive an error message about a missing
 -- feature, for example, Error retrieving the App Engine service account.
+-- If you have deleted your App Engine service account, this will not be
+-- able to recreate it. Instead, you should attempt to use the IAM undelete
+-- API if possible at
+-- https:\/\/cloud.google.com\/iam\/reference\/rest\/v1\/projects.serviceAccounts\/undelete?apix_params=%7B\"name\"%3A\"projects%2F-%2FserviceAccounts%2Funique_id\"%2C\"resource\"%3A%7B%7D%7D
+-- . If the deletion was recent, the numeric ID can be found in the Cloud
+-- Console Activity Log.
 --
 -- /See:/ 'appsRepair' smart constructor.
-data AppsRepair = AppsRepair'
+data AppsRepair =
+  AppsRepair'
     { _arXgafv          :: !(Maybe Xgafv)
     , _arUploadProtocol :: !(Maybe Text)
     , _arAccessToken    :: !(Maybe Text)
@@ -77,8 +90,10 @@
     , _arPayload        :: !RepairApplicationRequest
     , _arAppsId         :: !Text
     , _arCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsRepair' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -101,7 +116,7 @@
     -> Text -- ^ 'arAppsId'
     -> AppsRepair
 appsRepair pArPayload_ pArAppsId_ =
-    AppsRepair'
+  AppsRepair'
     { _arXgafv = Nothing
     , _arUploadProtocol = Nothing
     , _arAccessToken = Nothing
@@ -110,6 +125,7 @@
     , _arAppsId = pArAppsId_
     , _arCallback = Nothing
     }
+
 
 -- | V1 error format.
 arXgafv :: Lens' AppsRepair (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Delete.hs
@@ -63,7 +63,8 @@
 -- | Deletes the specified service and all enclosed versions.
 --
 -- /See:/ 'appsServicesDelete' smart constructor.
-data AppsServicesDelete = AppsServicesDelete'
+data AppsServicesDelete =
+  AppsServicesDelete'
     { _asdXgafv          :: !(Maybe Xgafv)
     , _asdUploadProtocol :: !(Maybe Text)
     , _asdAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _asdAppsId         :: !Text
     , _asdServicesId     :: !Text
     , _asdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'asdServicesId'
     -> AppsServicesDelete
 appsServicesDelete pAsdAppsId_ pAsdServicesId_ =
-    AppsServicesDelete'
+  AppsServicesDelete'
     { _asdXgafv = Nothing
     , _asdUploadProtocol = Nothing
     , _asdAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _asdServicesId = pAsdServicesId_
     , _asdCallback = Nothing
     }
+
 
 -- | V1 error format.
 asdXgafv :: Lens' AppsServicesDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Get.hs
@@ -63,7 +63,8 @@
 -- | Gets the current configuration of the specified service.
 --
 -- /See:/ 'appsServicesGet' smart constructor.
-data AppsServicesGet = AppsServicesGet'
+data AppsServicesGet =
+  AppsServicesGet'
     { _asgXgafv          :: !(Maybe Xgafv)
     , _asgUploadProtocol :: !(Maybe Text)
     , _asgAccessToken    :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _asgAppsId         :: !Text
     , _asgServicesId     :: !Text
     , _asgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> Text -- ^ 'asgServicesId'
     -> AppsServicesGet
 appsServicesGet pAsgAppsId_ pAsgServicesId_ =
-    AppsServicesGet'
+  AppsServicesGet'
     { _asgXgafv = Nothing
     , _asgUploadProtocol = Nothing
     , _asgAccessToken = Nothing
@@ -104,6 +107,7 @@
     , _asgServicesId = pAsgServicesId_
     , _asgCallback = Nothing
     }
+
 
 -- | V1 error format.
 asgXgafv :: Lens' AppsServicesGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/List.hs
@@ -66,7 +66,8 @@
 -- | Lists all the services in the application.
 --
 -- /See:/ 'appsServicesList' smart constructor.
-data AppsServicesList = AppsServicesList'
+data AppsServicesList =
+  AppsServicesList'
     { _aslXgafv          :: !(Maybe Xgafv)
     , _aslUploadProtocol :: !(Maybe Text)
     , _aslAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _aslPageToken      :: !(Maybe Text)
     , _aslPageSize       :: !(Maybe (Textual Int32))
     , _aslCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,7 +103,7 @@
     :: Text -- ^ 'aslAppsId'
     -> AppsServicesList
 appsServicesList pAslAppsId_ =
-    AppsServicesList'
+  AppsServicesList'
     { _aslXgafv = Nothing
     , _aslUploadProtocol = Nothing
     , _aslAccessToken = Nothing
@@ -110,6 +113,7 @@
     , _aslPageSize = Nothing
     , _aslCallback = Nothing
     }
+
 
 -- | V1 error format.
 aslXgafv :: Lens' AppsServicesList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Patch.hs
@@ -70,7 +70,8 @@
 -- | Updates the configuration of the specified service.
 --
 -- /See:/ 'appsServicesPatch' smart constructor.
-data AppsServicesPatch = AppsServicesPatch'
+data AppsServicesPatch =
+  AppsServicesPatch'
     { _aspXgafv          :: !(Maybe Xgafv)
     , _aspUploadProtocol :: !(Maybe Text)
     , _aspUpdateMask     :: !(Maybe GFieldMask)
@@ -81,8 +82,10 @@
     , _aspAppsId         :: !Text
     , _aspServicesId     :: !Text
     , _aspCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,7 +115,7 @@
     -> Text -- ^ 'aspServicesId'
     -> AppsServicesPatch
 appsServicesPatch pAspPayload_ pAspAppsId_ pAspServicesId_ =
-    AppsServicesPatch'
+  AppsServicesPatch'
     { _aspXgafv = Nothing
     , _aspUploadProtocol = Nothing
     , _aspUpdateMask = Nothing
@@ -124,6 +127,7 @@
     , _aspServicesId = pAspServicesId_
     , _aspCallback = Nothing
     }
+
 
 -- | V1 error format.
 aspXgafv :: Lens' AppsServicesPatch (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Create.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Create.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Create.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Create.hs
@@ -66,7 +66,8 @@
 -- | Deploys code and resource files to a new version.
 --
 -- /See:/ 'appsServicesVersionsCreate' smart constructor.
-data AppsServicesVersionsCreate = AppsServicesVersionsCreate'
+data AppsServicesVersionsCreate =
+  AppsServicesVersionsCreate'
     { _asvcXgafv          :: !(Maybe Xgafv)
     , _asvcUploadProtocol :: !(Maybe Text)
     , _asvcAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _asvcAppsId         :: !Text
     , _asvcServicesId     :: !Text
     , _asvcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     -> Text -- ^ 'asvcServicesId'
     -> AppsServicesVersionsCreate
 appsServicesVersionsCreate pAsvcPayload_ pAsvcAppsId_ pAsvcServicesId_ =
-    AppsServicesVersionsCreate'
+  AppsServicesVersionsCreate'
     { _asvcXgafv = Nothing
     , _asvcUploadProtocol = Nothing
     , _asvcAccessToken = Nothing
@@ -112,6 +115,7 @@
     , _asvcServicesId = pAsvcServicesId_
     , _asvcCallback = Nothing
     }
+
 
 -- | V1 error format.
 asvcXgafv :: Lens' AppsServicesVersionsCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Delete.hs
@@ -67,7 +67,8 @@
 -- | Deletes an existing Version resource.
 --
 -- /See:/ 'appsServicesVersionsDelete' smart constructor.
-data AppsServicesVersionsDelete = AppsServicesVersionsDelete'
+data AppsServicesVersionsDelete =
+  AppsServicesVersionsDelete'
     { _asvdXgafv          :: !(Maybe Xgafv)
     , _asvdUploadProtocol :: !(Maybe Text)
     , _asvdAccessToken    :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _asvdAppsId         :: !Text
     , _asvdServicesId     :: !Text
     , _asvdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -103,7 +106,7 @@
     -> Text -- ^ 'asvdServicesId'
     -> AppsServicesVersionsDelete
 appsServicesVersionsDelete pAsvdVersionsId_ pAsvdAppsId_ pAsvdServicesId_ =
-    AppsServicesVersionsDelete'
+  AppsServicesVersionsDelete'
     { _asvdXgafv = Nothing
     , _asvdUploadProtocol = Nothing
     , _asvdAccessToken = Nothing
@@ -113,6 +116,7 @@
     , _asvdServicesId = pAsvdServicesId_
     , _asvdCallback = Nothing
     }
+
 
 -- | V1 error format.
 asvdXgafv :: Lens' AppsServicesVersionsDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Get.hs
@@ -70,7 +70,8 @@
 -- be returned. Specify the FULL_VIEW parameter to get the full resource.
 --
 -- /See:/ 'appsServicesVersionsGet' smart constructor.
-data AppsServicesVersionsGet = AppsServicesVersionsGet'
+data AppsServicesVersionsGet =
+  AppsServicesVersionsGet'
     { _asvgXgafv          :: !(Maybe Xgafv)
     , _asvgUploadProtocol :: !(Maybe Text)
     , _asvgAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _asvgView           :: !(Maybe Text)
     , _asvgServicesId     :: !Text
     , _asvgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'asvgServicesId'
     -> AppsServicesVersionsGet
 appsServicesVersionsGet pAsvgVersionsId_ pAsvgAppsId_ pAsvgServicesId_ =
-    AppsServicesVersionsGet'
+  AppsServicesVersionsGet'
     { _asvgXgafv = Nothing
     , _asvgUploadProtocol = Nothing
     , _asvgAccessToken = Nothing
@@ -120,6 +123,7 @@
     , _asvgServicesId = pAsvgServicesId_
     , _asvgCallback = Nothing
     }
+
 
 -- | V1 error format.
 asvgXgafv :: Lens' AppsServicesVersionsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Debug.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Debug.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Debug.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Debug.hs
@@ -84,7 +84,8 @@
 -- environment.
 --
 -- /See:/ 'appsServicesVersionsInstancesDebug' smart constructor.
-data AppsServicesVersionsInstancesDebug = AppsServicesVersionsInstancesDebug'
+data AppsServicesVersionsInstancesDebug =
+  AppsServicesVersionsInstancesDebug'
     { _asvidXgafv          :: !(Maybe Xgafv)
     , _asvidInstancesId    :: !Text
     , _asvidUploadProtocol :: !(Maybe Text)
@@ -95,8 +96,10 @@
     , _asvidAppsId         :: !Text
     , _asvidServicesId     :: !Text
     , _asvidCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsInstancesDebug' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -128,7 +131,7 @@
     -> Text -- ^ 'asvidServicesId'
     -> AppsServicesVersionsInstancesDebug
 appsServicesVersionsInstancesDebug pAsvidInstancesId_ pAsvidPayload_ pAsvidVersionsId_ pAsvidAppsId_ pAsvidServicesId_ =
-    AppsServicesVersionsInstancesDebug'
+  AppsServicesVersionsInstancesDebug'
     { _asvidXgafv = Nothing
     , _asvidInstancesId = pAsvidInstancesId_
     , _asvidUploadProtocol = Nothing
@@ -141,6 +144,7 @@
     , _asvidCallback = Nothing
     }
 
+
 -- | V1 error format.
 asvidXgafv :: Lens' AppsServicesVersionsInstancesDebug (Maybe Xgafv)
 asvidXgafv
@@ -200,7 +204,8 @@
       (\ s a -> s{_asvidCallback = a})
 
 instance GoogleRequest
-         AppsServicesVersionsInstancesDebug where
+           AppsServicesVersionsInstancesDebug
+         where
         type Rs AppsServicesVersionsInstancesDebug =
              Operation
         type Scopes AppsServicesVersionsInstancesDebug =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Delete.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Delete.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Delete.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Delete.hs
@@ -70,7 +70,8 @@
 -- | Stops a running instance.
 --
 -- /See:/ 'appsServicesVersionsInstancesDelete' smart constructor.
-data AppsServicesVersionsInstancesDelete = AppsServicesVersionsInstancesDelete'
+data AppsServicesVersionsInstancesDelete =
+  AppsServicesVersionsInstancesDelete'
     { _aXgafv          :: !(Maybe Xgafv)
     , _aInstancesId    :: !Text
     , _aUploadProtocol :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _aAppsId         :: !Text
     , _aServicesId     :: !Text
     , _aCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsInstancesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'aServicesId'
     -> AppsServicesVersionsInstancesDelete
 appsServicesVersionsInstancesDelete pAInstancesId_ pAVersionsId_ pAAppsId_ pAServicesId_ =
-    AppsServicesVersionsInstancesDelete'
+  AppsServicesVersionsInstancesDelete'
     { _aXgafv = Nothing
     , _aInstancesId = pAInstancesId_
     , _aUploadProtocol = Nothing
@@ -122,6 +125,7 @@
     , _aCallback = Nothing
     }
 
+
 -- | V1 error format.
 aXgafv :: Lens' AppsServicesVersionsInstancesDelete (Maybe Xgafv)
 aXgafv = lens _aXgafv (\ s a -> s{_aXgafv = a})
@@ -168,7 +172,8 @@
   = lens _aCallback (\ s a -> s{_aCallback = a})
 
 instance GoogleRequest
-         AppsServicesVersionsInstancesDelete where
+           AppsServicesVersionsInstancesDelete
+         where
         type Rs AppsServicesVersionsInstancesDelete =
              Operation
         type Scopes AppsServicesVersionsInstancesDelete =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Get.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Get.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Get.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/Get.hs
@@ -70,7 +70,8 @@
 -- | Gets instance information.
 --
 -- /See:/ 'appsServicesVersionsInstancesGet' smart constructor.
-data AppsServicesVersionsInstancesGet = AppsServicesVersionsInstancesGet'
+data AppsServicesVersionsInstancesGet =
+  AppsServicesVersionsInstancesGet'
     { _asvigXgafv          :: !(Maybe Xgafv)
     , _asvigInstancesId    :: !Text
     , _asvigUploadProtocol :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _asvigAppsId         :: !Text
     , _asvigServicesId     :: !Text
     , _asvigCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsInstancesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Text -- ^ 'asvigServicesId'
     -> AppsServicesVersionsInstancesGet
 appsServicesVersionsInstancesGet pAsvigInstancesId_ pAsvigVersionsId_ pAsvigAppsId_ pAsvigServicesId_ =
-    AppsServicesVersionsInstancesGet'
+  AppsServicesVersionsInstancesGet'
     { _asvigXgafv = Nothing
     , _asvigInstancesId = pAsvigInstancesId_
     , _asvigUploadProtocol = Nothing
@@ -122,6 +125,7 @@
     , _asvigCallback = Nothing
     }
 
+
 -- | V1 error format.
 asvigXgafv :: Lens' AppsServicesVersionsInstancesGet (Maybe Xgafv)
 asvigXgafv
@@ -176,7 +180,8 @@
       (\ s a -> s{_asvigCallback = a})
 
 instance GoogleRequest
-         AppsServicesVersionsInstancesGet where
+           AppsServicesVersionsInstancesGet
+         where
         type Rs AppsServicesVersionsInstancesGet = Instance
         type Scopes AppsServicesVersionsInstancesGet =
              '["https://www.googleapis.com/auth/appengine.admin",
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Instances/List.hs
@@ -76,7 +76,8 @@
 -- (https:\/\/cloud.google.com\/monitoring\/api\/ref_v3\/rest\/v3\/projects.timeSeries\/list).
 --
 -- /See:/ 'appsServicesVersionsInstancesList' smart constructor.
-data AppsServicesVersionsInstancesList = AppsServicesVersionsInstancesList'
+data AppsServicesVersionsInstancesList =
+  AppsServicesVersionsInstancesList'
     { _asvilXgafv          :: !(Maybe Xgafv)
     , _asvilUploadProtocol :: !(Maybe Text)
     , _asvilAccessToken    :: !(Maybe Text)
@@ -87,8 +88,10 @@
     , _asvilServicesId     :: !Text
     , _asvilPageSize       :: !(Maybe (Textual Int32))
     , _asvilCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsInstancesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -118,7 +121,7 @@
     -> Text -- ^ 'asvilServicesId'
     -> AppsServicesVersionsInstancesList
 appsServicesVersionsInstancesList pAsvilVersionsId_ pAsvilAppsId_ pAsvilServicesId_ =
-    AppsServicesVersionsInstancesList'
+  AppsServicesVersionsInstancesList'
     { _asvilXgafv = Nothing
     , _asvilUploadProtocol = Nothing
     , _asvilAccessToken = Nothing
@@ -131,6 +134,7 @@
     , _asvilCallback = Nothing
     }
 
+
 -- | V1 error format.
 asvilXgafv :: Lens' AppsServicesVersionsInstancesList (Maybe Xgafv)
 asvilXgafv
@@ -192,7 +196,8 @@
       (\ s a -> s{_asvilCallback = a})
 
 instance GoogleRequest
-         AppsServicesVersionsInstancesList where
+           AppsServicesVersionsInstancesList
+         where
         type Rs AppsServicesVersionsInstancesList =
              ListInstancesResponse
         type Scopes AppsServicesVersionsInstancesList =
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/List.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/List.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/List.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/List.hs
@@ -71,7 +71,8 @@
 -- | Lists the versions of a service.
 --
 -- /See:/ 'appsServicesVersionsList' smart constructor.
-data AppsServicesVersionsList = AppsServicesVersionsList'
+data AppsServicesVersionsList =
+  AppsServicesVersionsList'
     { _asvlXgafv          :: !(Maybe Xgafv)
     , _asvlUploadProtocol :: !(Maybe Text)
     , _asvlAccessToken    :: !(Maybe Text)
@@ -82,8 +83,10 @@
     , _asvlServicesId     :: !Text
     , _asvlPageSize       :: !(Maybe (Textual Int32))
     , _asvlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,7 +115,7 @@
     -> Text -- ^ 'asvlServicesId'
     -> AppsServicesVersionsList
 appsServicesVersionsList pAsvlAppsId_ pAsvlServicesId_ =
-    AppsServicesVersionsList'
+  AppsServicesVersionsList'
     { _asvlXgafv = Nothing
     , _asvlUploadProtocol = Nothing
     , _asvlAccessToken = Nothing
@@ -124,6 +127,7 @@
     , _asvlPageSize = Nothing
     , _asvlCallback = Nothing
     }
+
 
 -- | V1 error format.
 asvlXgafv :: Lens' AppsServicesVersionsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Patch.hs b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Patch.hs
--- a/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Patch.hs
+++ b/gen/Network/Google/Resource/AppEngine/Apps/Services/Versions/Patch.hs
@@ -129,7 +129,8 @@
 -- (https:\/\/cloud.google.com\/appengine\/docs\/admin-api\/reference\/rest\/v1\/apps.services.versions#Version.FIELDS.automatic_scaling)
 --
 -- /See:/ 'appsServicesVersionsPatch' smart constructor.
-data AppsServicesVersionsPatch = AppsServicesVersionsPatch'
+data AppsServicesVersionsPatch =
+  AppsServicesVersionsPatch'
     { _asvpXgafv          :: !(Maybe Xgafv)
     , _asvpUploadProtocol :: !(Maybe Text)
     , _asvpUpdateMask     :: !(Maybe GFieldMask)
@@ -140,8 +141,10 @@
     , _asvpAppsId         :: !Text
     , _asvpServicesId     :: !Text
     , _asvpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AppsServicesVersionsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -172,7 +175,7 @@
     -> Text -- ^ 'asvpServicesId'
     -> AppsServicesVersionsPatch
 appsServicesVersionsPatch pAsvpPayload_ pAsvpVersionsId_ pAsvpAppsId_ pAsvpServicesId_ =
-    AppsServicesVersionsPatch'
+  AppsServicesVersionsPatch'
     { _asvpXgafv = Nothing
     , _asvpUploadProtocol = Nothing
     , _asvpUpdateMask = Nothing
@@ -184,6 +187,7 @@
     , _asvpServicesId = pAsvpServicesId_
     , _asvpCallback = Nothing
     }
+
 
 -- | V1 error format.
 asvpXgafv :: Lens' AppsServicesVersionsPatch (Maybe Xgafv)
diff --git a/gogol-appengine.cabal b/gogol-appengine.cabal
--- a/gogol-appengine.cabal
+++ b/gogol-appengine.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-appengine
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google App Engine Admin SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -79,5 +79,5 @@
         , Network.Google.AppEngine.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
